基于Django的规划勘测设计单位经营管理系统开发

2015-07-04 11:50杨庆海赵自力王瑞青郑州市规划勘测设计研究院河南郑州45005珠海市规划设计研究院广东珠海5900
城市勘测 2015年5期

杨庆海,赵自力,王瑞青(.郑州市规划勘测设计研究院,河南郑州 45005; .珠海市规划设计研究院,广东珠海 5900)

基于Django的规划勘测设计单位经营管理系统开发

杨庆海1∗,赵自力2,王瑞青1
(1.郑州市规划勘测设计研究院,河南郑州 450052; 2.珠海市规划设计研究院,广东珠海 5190011)

摘 要:在信息技术不断发展的背景下,如何用各种技术手段,提高规划勘测设计单位的管理水平,建设成功的经营管理系统,是一个值得探讨的话题。利用互联网技术,结合规划勘测设计单位实际情况,建设覆盖企业业务全生命周期的经营管理系统,可以辅助跟踪企业管理运营状态,提高经营管理效率。

关键词:经营管理系统;ERP;Django;Python

1 引 言

随着信息技术的不断发展,企业信息化系统建设受到越来越大的挑战。企业业务不断丰富,流程更加复杂,传统的业务流程管理越来越不适应企业的发展。采用信息技术将业务抽象,将线下的工作流程搬到线上,将传统的签字审批转移到系统中,并建立经营管理系统,可以大大提高经营管理的效率,及时跟踪单位管理运营状态,并且方便管理层及时发现运营中的问题,对现有管理模式加以改进,提高管理水平,提升企业资源利用效率[1]。企业经营管理信息化虽然是一个必然经历的过程,然而另一个明显的事实是,根据国内近几十年企业资源管理信息化的经验,企业经营管理系统的实施有着不可忽略的高风险和高失败率,这其中自然有很多执行层面的因素,但是也不乏因为体制原因或者管理原因导致的失败[2,3]。如何成功的建立企业经营管理系统,如何降低失败的风险,对企业而言,是一个巨大的挑战[4]。

本文针对规划勘测设计企业现状,充分利用现在开源技术和软件,设计和构建了一套适合本行业使用的经营管理系统,覆盖了人事、项目、合同、档案、绩效等企业事务,为规划勘测设计单位的信息化管理提供了一个良好的开端。

在本文中所涉及的此次经营管理系统建设,需求分析用时三个月,开发部署用时三个月,距成功投入运营已经接近一年,系统运营良好,是一次规划勘测设计单位经营管理信息化的成功探索。

2 功能模块设计

2.1权限模块

权限模块是经营管理系统的核心模块,负责管理用户对模块、链接、页面的各项权限,包括用户管理、用户组管理、用户权限分配、用户组权限分配、对象权限管理等功能。

2.2人事模块

人事模块包括部门管理、人事管理、工作日管理、请假管理、离退休管理等功能,人事模块由人事科和经营科共同进行管理。

2.3项目模块

项目模块提供了项目管理、项目进度管理、合同管理、项目归档等功能,项目的管理由生产部门负责,经营科有项目审核权限,档案室负责设置项目是否归档。

2.4款项模块

款项模块主要包括收入管理和绩效管理两部分。收入管理包括收入进账、收入分配、档案保证金扣除返还、院管项目收入、外协费、产值调整等功能,绩效管理包括绩效申请、绩效审核等功能,收入管理由财务科负责,绩效管理由生产部门申请,经营科和相关领导进行审核。

2.5成本模块

成本数据由财务科、办公室、打印室共同提供,汇总后进行成本核算。

2.6报告模块

报告模块提供实时收入报告、收入报告、年度收入报告、累计收入报告、可提绩效报告、人事实时报告、人事报告、绩效报告、盈余报告、成本详细报告、成本控制报告、绩效统计报告、累计绩效统计报告、报告管理、自定义报告等功能。

2.7消息模块

所有模块的数据添加或修改都会通知消息模块,实现数据可追溯,并且实现消息流功能,同时可以提供短信提醒功能。

3 经营管理系统工作流程

图1 经营管理系统工作流程

4 实现平台与程序源码

4.1平台选择

项目首先确定了BS构架,BS构架是未来的趋势,在开发速度、跨平台性、互联网连接性、安全性等方面都有很大的优势。

确定BS构架之后,我们选择了使用Python语言下的Django框架。Django是一个开源的Web应用框架,采用了MVC的软件设计模式,即模型、视图和控制器。Django注重组件的重用性,同时拥有成千上万的开源重用模块库可供使用,非常适合敏捷开发,使得开发复杂的、数据库驱动的网站变得非常简单和快速。此外Django的跨平台特性,使得我们在选择服务器时也非常的灵活,并且在以后进行升级、维护、迁移时,也会非常的方便[5]。

在综合考量现有资源、成本、性能各方面因素之后,我们选择了使用Windows服务器、Apache Web服务器、MySQL数据库作为我们的运行平台。

4.2系统安全构架

系统安全方面的考虑贯彻经营管理系统设计和开发的始终,我们采用多种方式从多种维度保障系统安全和数据安全:

(1)主从数据库实时备份

系统同步运行两套数据库服务,有效防止数据丢失的同时,大大提高了系统可用性,在主数据库发生故障时可以立即切换到从数据库保证系统正常使用。

(2)每日异地备份

每天凌晨时自动创建数据库快照到本地磁盘,同时拷贝到异地的备份服务器,保障数据安全不丢失。

(3)办公专网保障数据安全

经营管理系统在办公专网中运行,不接入互联网,杜绝了系统被攻击的可能,大大降低了数据被窃取的风险,不同办公地点之间租用运营商专线进行连接,方便用户使用。

(4)SSL加密保障数据传输过程防窃听

采用SSL256位安全加密手段保证数据安全,大大加强了数据传输过程中的安全性。

(5)客户端证书验证禁止未授权客户端登录

使用自颁发根证书向授权客户端颁发客户端证书,在登录系统前进行客户端证书验证,有效防止了匿名客户端的未授权登录行为。

(6)保存登录和访问日志

系统保存所有的登录日志和访问日志,在发生任何异常行为时保证事件的可回放性和可追溯性,做到了系统风险安全可控。

4.3程序代码摘录

以下代码是项目模块的模型建立片段,模型建立好之后,即可由Django全自动生成后台

class Project(models.Model):#项目模型

code=models.SlugField(max_length=100,null=True,unique=True,verbose_name=_(u'工程号'),help_text = u'由经营科分配')

htcode=models.CharField(null=True,blank=True,max _length=100,verbose_name=_(u'合同编号'))

title=models.CharField(max_length=100,verbose_name =_(u'项目名称'))

short_title = models.CharField(max_length = 100,null = True,blank=True,verbose_name=_(u'项目别名'))

description=models.TextField(null=True,blank=True, verbose_name=_(u'项目介绍'))

amount = models.FloatField(null = True,default = 0.0, verbose_name=_(u'合同总额'),help_text=u'元')

amount_income=models.FloatField(null=True,default= 0.0,verbose_name=_(u'已到帐'),help_text=u'元')

clientname = models.CharField(max_length= 100,null = True,blank=True,verbose_name=_(u'委托单位名称'))

ht_date=models.DateField(null=True,blank=True,verbose_name=_(u'合同签订日期'))

preend_date = models.DateField (null = True,blank = True,verbose_name=_(u'合同预计完成日期'))

catalog = models.ForeignKey ( ProjectCatalog, related _ name='catalog_projects',null = True,verbose_name = _(u'项目分类'))

percentcatalog = models.ForeignKey(ProjectPercentCatalog,related_name='percent_projects',null=True,verbose_name=_ (u'项目类型'))

detailcatalog=models.ForeignKey(DetailCatalog,related_ name='detailcatalog_projects',null = True,blank = True,verbose_ name=_(u'项目细类'))

author=models.ForeignKey('hr.Employee',related_name ='created_projects',null=True,blank=True,verbose_name=_(u'创建人'))

authordepartment=models.ForeignKey('hr.Department', related_name= 'createddepart_projects',null = True,blank = False, verbose_name=_(u'生产部门'))

created = models.DateTimeField(auto_now_add = True, verbose_name=_(u'创建时间'))

isreviewed=models.BooleanField(default=False,blank= True,verbose_name=_(u'是否审核'))

whoreviewed=models.ForeignKey('hr.Employee',related _name='managed_projects',null=True,blank=True,verbose_name =_(u'审核人'))

reviewedtime = models.DateTimeField ( null = True, blank = True,verbose_name=_(u'审核时间'))

定义好url映射文件和View页面,该模块即可访问。urlpatterns=patterns('projects.views',

#项目模块URL映射关系

url(r'^projects/ $ ',view='projects.project_list',name=' project_list'),

url(r'^projects/ dep/ (? P<id> d+) / $ ',view = 'projects.project_dep_list',name='projects_dep_list'),

url(r'^projects/ moneylack/ $ ',view = 'projects.project_ list_moneylack',name='project_list_moneylack'),

url(r'^projects/ moneylack/ dep/ (? P<id> d+) / $ ', view='projects.project_dep_list_moneylack',name='projects_dep_ list_moneylack'),

url(r'^projects4review/ $ ',view='projects.project4review _list',name='project4review_list'),

url(r'^projects4review/ dep/ (? P<id>d+) / $ ',view=' projects.project4review_dep_list',name = 'project4review_dep_list '),

url(r'^projects_closed/ $ ',view='projects.project_closed _list',name='project_closed_list'),

url(r'^projects_closed/ dep/ (? P<id>d+) / $ ',view=' projects.project_closed_dep_list',name = 'project_closed_dep_list '),

url(r'^projects4arch/ $ ',view = 'projects.project4arch_ list',name='project4arch_list'),

4.4系统运行截图

图2为经营管理系统后台截图,该后台由Django全自动生成,大大减少了程序员的工作量。

4.5系统运行情况

经营管理系统自从上线运行以后,运营情况良好,同时接收用户反馈和建议几十项,系统改进上百项,主要运行情况如下:

(1)用接受度较高

因为在设计时充分考虑了现有线下流程,对于流程性的事物尽量保留了原有的流程和体验,所以用户上手较快,接受度较高,经营管理系统试用一个月后即投入正式运行,并且反馈良好。

(2)报表功能丰富

报表模块将大量线下的报表迁移到线上,保留原有报表格式的同时,将全部报表生成自动化,受到了多个部门的好评。

图2 经营管理系统后台截图

(3)迭代开发迅速

由于采用了Django框架,代码量大大减少,用户在使用过程中提出任何反馈,都可以积极响应、迅速定位并解决问题,随着迭代速度的加快,用户满意度也大大增加。

(4)性能良好

因为使用了自购服务器托管在自建机房,所有用户设备加入自建局域网,不同地理位置间租用运营商加密通道进行连接,所以访问速度很快,大大提升了访问时的用户体验。

4.6系统运行发展展望

经营管理系统仅仅是企业管理信息化的一次初步尝试,为企业管理平台化开创了一个良好的开端,系统成熟稳定之后,下一步发展方向如下:

(1)向内整合

整合现有网络资源,例如档案数据、项目成果数据、知识资源数据库、部门内部资源,建立资源索引,扩大系统覆盖用户范围,提供一站式项目资源门户,

(2)向外拓展

整合企业办公网络,逐步拓展为企业办公平台,整合现有线下流程,建立长效信息化机制,逐渐覆盖企业所有管理资源,升级为企业资源管理系统。

(3)互联网+

接入互联网是大势所趋,在合理的解决保密问题和政策问题之后,依托云计算平台和智能移动设备平台,经营管理系统将迎来跨越性的发展[8,9]。

5 结 语

规划勘测设计单位业务类型多样,实现经营管理系统需要大量的需求分析和实地调研,并且在投入运行后需要不断收集用户反馈意见并迅速迭代开发。本次经营管理系统的成功开发和运行主要得出以下经验:

(1)一把手重视,亲自督促项目进展。经营管理信息化的阻力并不是来自技术方面,而是来自行政管理方面,只有一把手亲自干预,才能保障项目的顺利推进。

(2)需求分析做足工作,立足实际,灵活设置各项流程和参数,尽量保持线下工作流程不变,优先保证系统正常运行,减小系统推行阻力。

(3)敏捷开发,尽快试运行,多次征集用户反馈意见,快速迭代开发,不断改进并优化系统工作流程。

(4)专人运营,设置沟通专员,帮助各方用户解决困惑,减少用户体验的迁移成本。

参考文献

[1] 苏涛.基于企业参考模型的ERP开发模式[J].科技信息,2012(24):264~264.

[2] 佟仁城,张玲玲.对我国ERP开发与建设中若干问题的思考[J].管理评论,2003(9):36~39.

[3] 赵艳楠.抚顺第五十中学信息管理系统设计与实现[D].成都:电子科技大学,2012.

[4] 闫晓萍.ERP开发应用的问题研究[J].河北企业,2011 (5):117~118.

[5] T Calmant,JC Americo,O Gattaz,etal.A dynamic and service-oriented component model for python long-lived applications[C].Proceedings of the 15th ACM SIGSOFT symposium on Component Based Software Engineering.ACM New York,NY,USA.2012:35~40.

[6] Patrizia Garengoa,Stefano Biazzo.From ISO quality standards to an integrated management system:an implementation process in SME[J].Total Quality Management & Business Excellence,2013(24):310~335.

[7] Miguel A.Carmonaa, Julio Barbanchob.Applying case based reasoning for prioritizing areas of business management [J].Expert Systems with Applications,2013(40):3450~3458.

[8] R Buyya,C Vecchiola,ST Selvi.Mastering cloud computing: foundations and applications programming[M].Mcgraw hill education pvt.Ltd.,2013:916~918.

[9] Raj Kumar Somani,Dr.Reena Dadhich.Design of Cloud Computing based ERP model[J].International Journal of IT,Engineering and Applied Sciences Research (IJIEASR), 2013(2):39~43.

Development of a Business Management System for Planning Design & Survey Units Based on Django

Yang Qinghai1,Zhao Zili2,Wang Ruiqing1
(1.Zhengzhou Urban Planning Design & Survey Research Institute,Zhengzhou 450052,China; 2.Zhuhai City Planning and Design Institute,Zhuhai 519001,China)

Abstract:Under the background of information technology,it becomes a challenge how to improve the management level of planning design and survey units.With the using of internet technology,combined with the actual situation of planning design and survey units,to build a business management system covering the whole business life cycle,can assist to track the state of corporate govermance and improve management effciency.

Key words:business management system;ERP;Django;python

文章编号:1672-8262(2015)05-20-04中图分类号:P208.2,P205

文献标识码:A

收稿日期:∗2015—05—27

作者简介:杨庆海(1987—),男,助理工程师,主要从事城市地理信息系统建设工作。