刘敏 王桂兰
(华中科技大学 湖北省武汉市 430074)
近年来工业领域的全球竞争越来越激烈,提升制造业竞争力已经成为国家战略需求,只有信息化与工业化深度融合才能实现制造到智造的转型[1],管理信息化是企业信息化的重要内容[2]。目前大多数中小型企业仅实现了局部信息化,各部门使用专项软件来处理业务,例如财务部门使用金蝶财务系统[3],生产部门采用开目系统管理制造过程,人事部门可能利用其它软件系统来计算工资、统计绩效等业务,这种部门局部信息化系统能够灵活的适应市场环境的变化和业务模式的调整,随着企业核心定位的调整,生产规模的扩大,员工和部门的增加,业务流程的清晰和稳定,局部的信息化系统已经不能满足企业的发展了,企业需要一个集成的信息化平台,解决局部信息化形成的信息孤岛问题[4]。
本文以某制造企业为研究对象,首先分析了企业现有的信息化平台、企业主要业务、部门之间数据交流需求以及面临的问题,然后结合ERP理论,提出将制造、设备、项目、人事、采购、销售、库存、财务管理模块集成在同一个平台上,设计并开发了界面友好、实用性强、成本低廉的中型制造企业信息管理ERP系统,通过该系统整合生产数据和管理数据,规范生产和管理流程。开发过程中形成一套标准开发模板,有效缩短系统后期开发周期,降低开发成本。
通过对企业目前信息化程度的调查得出,企业目前使用的金蝶系统仅仅满足财务方面的管理,采购、销售、库存、生产等业务并没有系统的管理,长期局部信息化造成大量生产数据和管理数据缺失,企业面临以下几个方面的问题:
图1:系统功能结构图
(1)生产数据的缺失,无法为二次生产提供有效的参考;
(2)管理数据的缺失,不能为员工绩效考核提供准确的数据;
(3)员工无法掌握生产资源信息实时状态,不能及时的调整生产计划;
(4)项目进展状态不能及时传达,项目子任务开始时间滞后,造成项目无法按时完成;
(5)业务流程不规范,审批耗时,严重影响生产进度;
(6)工单手工排程,不能合理调度生产资源,容易造成设备空闲。
针对企业面临的问题,ERP系统功能模块设计目标是首先具备的功能是收集对应部门完整数据,其次是对这些数据进行分析处理,最后按用户需求展示。依据企业组织架构,ERP功能划分为生产、采购、销售、库存、财务、设备、人事、资产、项目、档案等模块[3],每一个模块对应完整的业务流程,不仅能单独完成任务,而且为其他模块提供数据支撑。生产业务需要生产部门、采购部门、销售部门、库存管理部门、财务部门、人事管理部门、设备部门协同合作完成,因此系统模块之间的集成尤为重要。
根据对部门需求以及企业未来发展趋势的分析,对系统的开发提出下面的目标:
(1)确保系统不间断运行中系统的稳定性和数据的安全性。
(2)满足20-50人进行同时访问。
(3)保证系统的可扩展性,可以进行二次开发及与第三方系统集成。
根据上文系统需求分析,设计系统核心功能模块,其中客户管理集成在销售管理模块,供应商管理集成在采购管理模块,便于依靠权限分配保护客户信息和供应商信息,销售模块、库存模块和采购模块模块通过产品信息管理联系一起,打通供应链,项目管理和人事管理都需要用到工时表信息,设备实时信息为资产管理提供数据,各模块通过数据依赖集成在一起,相互协作完成的系统功能。模块化的设计,有利于系统的开发和维护。系统功能结构如图1所示。
生产管理包括生产订单管理、工单管理、工艺路线、物料清单、工作中心看板管理子模块。生产订单管理可以对订单基本信息进行增删改查,并且与产品基本信息、产品BOM、工艺路线、工作中心等建立数据联系,通过订单管理模块可以进行物料追踪,计算产品物料成本跟踪订单生产进度。工单管理是根据生产订单制定具体的生产任务计划,包括生产任务内容、时间、车间、负责人、数量、生产实时状态等信息的管理,可以对生产全流程进行跟踪。工艺路线管理主要对产品生产过程中所有工序信息的记录,包括工艺路线名称、工序名称、工作车间、工作时间、负责人工时等信息,形成工艺路线库,当用户创建产品生产订单时,首先查询工艺路线库是否有该产品工艺路线,若该工艺路线有,则直接添加,如果没有根据生产计划创建新的工艺路线保存到工艺路线库中,可以为产品下次生产提供数据支持。物料清单BOM描述产品的组装结构以及生产该产品的物料需求,实现生产过程中物料的追踪,为产品成本计算提供数据依据。工作中心用来记录工作中心设备的工作时间、工作实时状态以及订单安排,这些数据为设备效能、生产力损失和工作中心负载统计分析提供依据。
图2:MVC结构图
图3:基于MVC模式的系统架构图
图4:SQL直接访问数据库
采购管理包括询价单、采购订单、供货商、产品信息子模块。询价单模块将同一产品不同供货商供货价格形成清晰的列表并且智能排序,用户结合供货商供货质量对比,能够迅速找到合适的产品,从而控制生产成本。采购订单数据包括产品名称、型号、数量、交货日期、单价、供货商、单据日期等信息,通过这些信息可以查询采购订单。供应商管理包括供货商基本信息的增删改查、供货商账单查询以及企业内部对供货商的评价备注。产品管理模块主要负责建立产品基本信息,根据库存实时更新产品数量、状态等信息。
销售管理包括报价单、销售订单、客户和销售团队子模块。报价单模块有报价单增删改查功能,通过输入编号、日期、客户、产品等信息查询报价单,并且对该报价单信息进行相应的操作。销售订单模块可以对销售订单进行增删改查,还可以根据订单数据进行销售情况数据分析。客户模块包括对客户基本信息维护,客户评价建立。销售团队模块对销售团队成员、领导、销售渠道等信息进行编辑。
库存管理包括库存统计、库存移动和补货提醒子模块。库存统计通过输入产品名称、类别、位置等信息查询当前库存信息。库存移动记录产品出库入库信息,包括领用人、领用单号、领用日期等数据,并可以对这些数据进行查询。补货提醒模块可以根据补货规则对少于库存最少库存数量的产品进行补货提醒。
财务管理包括销售账单和采购账单子模块。销售账单有客户发票、销售收据、收付款信息的查询和编辑功能,并对这些信息进行导出操作;采购账单有供应商账单、采购收据、收付款信息的增删改查功能,并且可以导出这些数据。
设备管理包括设备信息、设备维护、设备维修子模块。该设备信息主要功能有设备基本信息增删改查;设备维护具备维护申请信息编辑和查询的功能;设备修理包括设备修理单的编辑、提交、管理员审核等功能。
人力资源管理包括人员基本信息、合同信息的录入、增删改查,招聘信息的记录,休假信息的统计,工资计算和统计。
资产管理包括资产基本信息管理,资产状态实时更新,资产状态看板。
项目管理可以执行项目基本信息增删改查,项目任务计划,项目进展跟踪,项目子任务进度查看,项目内部信息共享,项目计划甘特图根据项目计划自动生成,项目任务时间分析。
档案管理主要功能有档案管理框架的设计,文档信息的录入,包括上传人,版本、时间等信息,文档的增删改查、预览、如果有下载权限的用户还可以下载该文档。
系统管理模块,该模块主要功能有用户登录信息设置,系统访问记录,数据库自动和手动备份与恢复。用户登录信息管理包括管理员对用户初始登录账户和密码创建、删除、用户权限的配置。用户第一次登录的账号由系统管理员分配,登录成功以后可以自己修改重新设定登录密码等,系统日志会记录用户登录访问信息。数据库的备份和恢复,管理员每天定时备份当前的数据,如果系统出现问题,可以利用备份数据进行系统恢复,避免企业造成较大损失。
本系统设计采用B/S(浏览器/服务器)结构,可以在局域网内运行,同时满足多用户访问。基于B/S的ERP系统,系统安装、模块添加和维护都在服务器端进行,不同权限的用户仅需要通过客户端的浏览器就可以访问对应模块,共享服务器上的数据资源,普通用户不需要维护,大大减少了开发和维护成本。目前B/S结构的信息管理系统占据管理软件领域的主导地位。
整个系统遵循MVC模式进行设计,MVC是一个非常成熟的大型程序设计的分层框架,目的是分离底层数据库数据,中间层业务规则和上层的信息展示,修改了底层数据结构,不会影响数据展示方式,MVC这种松耦合有助于保持表现层的灵活性。开发过程中视图定义在XML文件中,模型类由数据表映射,控制器定义在Python文件中,系统运行时,模型(Model)向控制器(Controller)传达(notify)数据变化消息,控制器更新(update)视图的数据展示,视图向控制器传达用户执行的操作,控制器用XML定义响应,功能相似springMVC,根据URL来控制请求,把请求处理映射到某个具体的方法上,在请求处理方法中处理数据,控制视图页面跳转,更新模型层数据或者从模型层获取用户需要的数据给视图层。图2是MVC结构图。
系统架构分为三层分别为表现层、逻辑层、数据层,每层服务可以单独部署,具有强大的扩展功能,分层后,前端和后端分离,避免开发时造成业务纠纷[3]。基于MVC模式的系统架构图如图3所示。下面简单介绍各层功能。
(1)展示层(Presentation Tier)负责展示数据以及与用户直接数据交互,完成所有的用户体验。使用远程过程调用模型对象(Model object)、视图对象(View object)、动作对象(Actions object),然后服务器根据获取的请求返回响应,展示层获取响应数据后进行后续处理。
(2)逻辑层(Logic Tier)负责与数据层的直接交互,逻辑与数据之间的关系复杂多变,利用ORM接口(API),可以整合逻辑层和数据层。只需要利用后台开发语言编写create和read等方法,调用方法实现业务逻辑,例如验证(Check)和自动计算(Computer)等。
(3)数据层(Data Tier)是最低级别的一层,直接与数据库交互并进行增删改查操作,解决了数据存取问题,在本系统架构中采用PostgreSQL。逻辑层调用数据访问层所提供数据服务接口时,数据层返回给上层数据模型类的实例。
系统在实现过程中,界面层使用HTML、CSS、XML和JS结合的方法,HTML定义页面内容,CSS设计页面布局,JS描述行为,XML用于批量数据传输和存储结构化的数据。在中间层采用ORM对数据模型和业务逻辑模型进行了封装。在这里数据存储层就是数据库,采用的是开源数据库PostgreSQL,用来存储企业数据。
企业数据库特点是数据量大,录入、调用、存储的操作频率非常高,SQL只能针对数据库进行操作,在实际开发应用中,需要引用其他程序语言调用SQL[8],来实现软件具体功能,编程语言将SQL语句当作字符串,作为参数传递给函数,这种方式访问数据库是以数据记录为单位的,不仅工作量较大,而且容易出现错误,并不适合大型软件的开发,系统开发通常会利用ORM框架。ORM抽象掉数据库层,通过描述对象与数据库之间的映射,将程序中的对象关联到关系数据库中,表映射成类,字段映射为属性,数据记录映射成对象,解决了面向对象与数据库存在不匹配的现象。ORM有以下这些优点:
(1)数据模型定义在一个文件内,代码更加清晰,便于更新和维护,代码重用率高;
(2)使用对象,封装了数据库操作,避免手工编写大部门基本SQL语言,通过编程语言与数据对象直接交互,不用再关心底层数据库。
图4为直接用SQL操作数据库,图5描述通过ORM操作数据库步骤。
ORM框架有很多,常见的有用的有Peewee和SQLAlchemy,通常在实际应用中也会根据开发需求写简洁、适用性强的ORM框架。本系统在开发过程中,数据模型可以分为三类,基本数据模型、瞬态数据模型、抽象数据模型,其中基础模型对应数据库表,数据长期存储;瞬态数据模型数据也存储在数据表中,但是只是临时存储,抽象数据模型不存储数据也没有数据库表。三种数据模型通过ORM框架映射成python类,通过继承可以在新类中增加属性和方法,也就是在表中添加新字段。这些数据模型的关系有多对对和多对一,多对多关系需要增加第三个表来维护模型关系。系统实现过程中利用ORM框架提供读写操作方法,完成数据库的CRUD,提高了开发速度。
图5:通过ORM操作数据库
ERP系统的开发核心主要有两部分,一是业务数据和业务逻辑,二视图设计。在Python文件中定义业务数据和业务逻辑方法,XML文件定义视图,前端框架解析XML文件,生成HTML文件,浏览器执行HTML文件。视图数据存储在数据库中的模型中,在XML中用
XML文件可以定义用户视图,包括菜单,列表,表单,看板等,通过
图6:服务器启动
图7:登录后首页
图8:项目计划管理页面
系统访问稳定性、数据安全性、功能完整性测试是必不可少的步骤,通过可靠的测试用例尽可能找到系统存在的缺项,提高系统的可靠性。利用交换机搭建访问网络结构,模拟企业内部局域网,对系统多用户并发访问进行测试,各功能模块数据操作命令成功执行,响应时间在预期范围内,系统运行稳定,达到设计目标。下图6后台数据库服务器启动。启动服务器,功能模块成功加载。通过浏览器本地访问系统,管理员登录后首页如图7所示,项目管理如图8所示,从该界面可以清晰掌握项目阶段性计划等信息。
信息化是企业提高核心竞争力的必然之路,通过对某制造企业管理内容、管理模式、业务流程、信息数据进行全面系统分析和建模,设计开发了ERP系统,通过应用测试该系统可以整合企业生产数据和管理数据,规范生产和管理流程。系统框架的可扩展性可以很好的适应企业的后续发展,开发中形成一套标准模板,提高了代码可读性,有效降低系统二次开发的周期和成本,为小型企业开发低成本管理系统提供新思路。