劉敏 王桂蘭
(華中科技大學(xué) 湖北省武漢市 430074)
近年來工業(yè)領(lǐng)域的全球競爭越來越激烈,提升制造業(yè)競爭力已經(jīng)成為國家戰(zhàn)略需求,只有信息化與工業(yè)化深度融合才能實現(xiàn)制造到智造的轉(zhuǎn)型[1],管理信息化是企業(yè)信息化的重要內(nèi)容[2]。目前大多數(shù)中小型企業(yè)僅實現(xiàn)了局部信息化,各部門使用專項軟件來處理業(yè)務(wù),例如財務(wù)部門使用金蝶財務(wù)系統(tǒng)[3],生產(chǎn)部門采用開目系統(tǒng)管理制造過程,人事部門可能利用其它軟件系統(tǒng)來計算工資、統(tǒng)計績效等業(yè)務(wù),這種部門局部信息化系統(tǒng)能夠靈活的適應(yīng)市場環(huán)境的變化和業(yè)務(wù)模式的調(diào)整,隨著企業(yè)核心定位的調(diào)整,生產(chǎn)規(guī)模的擴(kuò)大,員工和部門的增加,業(yè)務(wù)流程的清晰和穩(wěn)定,局部的信息化系統(tǒng)已經(jīng)不能滿足企業(yè)的發(fā)展了,企業(yè)需要一個集成的信息化平臺,解決局部信息化形成的信息孤島問題[4]。
本文以某制造企業(yè)為研究對象,首先分析了企業(yè)現(xiàn)有的信息化平臺、企業(yè)主要業(yè)務(wù)、部門之間數(shù)據(jù)交流需求以及面臨的問題,然后結(jié)合ERP理論,提出將制造、設(shè)備、項目、人事、采購、銷售、庫存、財務(wù)管理模塊集成在同一個平臺上,設(shè)計并開發(fā)了界面友好、實用性強(qiáng)、成本低廉的中型制造企業(yè)信息管理ERP系統(tǒng),通過該系統(tǒng)整合生產(chǎn)數(shù)據(jù)和管理數(shù)據(jù),規(guī)范生產(chǎn)和管理流程。開發(fā)過程中形成一套標(biāo)準(zhǔn)開發(fā)模板,有效縮短系統(tǒng)后期開發(fā)周期,降低開發(fā)成本。
通過對企業(yè)目前信息化程度的調(diào)查得出,企業(yè)目前使用的金蝶系統(tǒng)僅僅滿足財務(wù)方面的管理,采購、銷售、庫存、生產(chǎn)等業(yè)務(wù)并沒有系統(tǒng)的管理,長期局部信息化造成大量生產(chǎn)數(shù)據(jù)和管理數(shù)據(jù)缺失,企業(yè)面臨以下幾個方面的問題:
圖1:系統(tǒng)功能結(jié)構(gòu)圖
(1)生產(chǎn)數(shù)據(jù)的缺失,無法為二次生產(chǎn)提供有效的參考;
(2)管理數(shù)據(jù)的缺失,不能為員工績效考核提供準(zhǔn)確的數(shù)據(jù);
(3)員工無法掌握生產(chǎn)資源信息實時狀態(tài),不能及時的調(diào)整生產(chǎn)計劃;
(4)項目進(jìn)展?fàn)顟B(tài)不能及時傳達(dá),項目子任務(wù)開始時間滯后,造成項目無法按時完成;
(5)業(yè)務(wù)流程不規(guī)范,審批耗時,嚴(yán)重影響生產(chǎn)進(jìn)度;
(6)工單手工排程,不能合理調(diào)度生產(chǎn)資源,容易造成設(shè)備空閑。
針對企業(yè)面臨的問題,ERP系統(tǒng)功能模塊設(shè)計目標(biāo)是首先具備的功能是收集對應(yīng)部門完整數(shù)據(jù),其次是對這些數(shù)據(jù)進(jìn)行分析處理,最后按用戶需求展示。依據(jù)企業(yè)組織架構(gòu),ERP功能劃分為生產(chǎn)、采購、銷售、庫存、財務(wù)、設(shè)備、人事、資產(chǎn)、項目、檔案等模塊[3],每一個模塊對應(yīng)完整的業(yè)務(wù)流程,不僅能單獨完成任務(wù),而且為其他模塊提供數(shù)據(jù)支撐。生產(chǎn)業(yè)務(wù)需要生產(chǎn)部門、采購部門、銷售部門、庫存管理部門、財務(wù)部門、人事管理部門、設(shè)備部門協(xié)同合作完成,因此系統(tǒng)模塊之間的集成尤為重要。
根據(jù)對部門需求以及企業(yè)未來發(fā)展趨勢的分析,對系統(tǒng)的開發(fā)提出下面的目標(biāo):
(1)確保系統(tǒng)不間斷運行中系統(tǒng)的穩(wěn)定性和數(shù)據(jù)的安全性。
(2)滿足20-50人進(jìn)行同時訪問。
(3)保證系統(tǒng)的可擴(kuò)展性,可以進(jìn)行二次開發(fā)及與第三方系統(tǒng)集成。
根據(jù)上文系統(tǒng)需求分析,設(shè)計系統(tǒng)核心功能模塊,其中客戶管理集成在銷售管理模塊,供應(yīng)商管理集成在采購管理模塊,便于依靠權(quán)限分配保護(hù)客戶信息和供應(yīng)商信息,銷售模塊、庫存模塊和采購模塊模塊通過產(chǎn)品信息管理聯(lián)系一起,打通供應(yīng)鏈,項目管理和人事管理都需要用到工時表信息,設(shè)備實時信息為資產(chǎn)管理提供數(shù)據(jù),各模塊通過數(shù)據(jù)依賴集成在一起,相互協(xié)作完成的系統(tǒng)功能。模塊化的設(shè)計,有利于系統(tǒng)的開發(fā)和維護(hù)。系統(tǒng)功能結(jié)構(gòu)如圖1所示。
生產(chǎn)管理包括生產(chǎn)訂單管理、工單管理、工藝路線、物料清單、工作中心看板管理子模塊。生產(chǎn)訂單管理可以對訂單基本信息進(jìn)行增刪改查,并且與產(chǎn)品基本信息、產(chǎn)品BOM、工藝路線、工作中心等建立數(shù)據(jù)聯(lián)系,通過訂單管理模塊可以進(jìn)行物料追蹤,計算產(chǎn)品物料成本跟蹤訂單生產(chǎn)進(jìn)度。工單管理是根據(jù)生產(chǎn)訂單制定具體的生產(chǎn)任務(wù)計劃,包括生產(chǎn)任務(wù)內(nèi)容、時間、車間、負(fù)責(zé)人、數(shù)量、生產(chǎn)實時狀態(tài)等信息的管理,可以對生產(chǎn)全流程進(jìn)行跟蹤。工藝路線管理主要對產(chǎn)品生產(chǎn)過程中所有工序信息的記錄,包括工藝路線名稱、工序名稱、工作車間、工作時間、負(fù)責(zé)人工時等信息,形成工藝路線庫,當(dāng)用戶創(chuàng)建產(chǎn)品生產(chǎn)訂單時,首先查詢工藝路線庫是否有該產(chǎn)品工藝路線,若該工藝路線有,則直接添加,如果沒有根據(jù)生產(chǎn)計劃創(chuàng)建新的工藝路線保存到工藝路線庫中,可以為產(chǎn)品下次生產(chǎn)提供數(shù)據(jù)支持。物料清單BOM描述產(chǎn)品的組裝結(jié)構(gòu)以及生產(chǎn)該產(chǎn)品的物料需求,實現(xiàn)生產(chǎn)過程中物料的追蹤,為產(chǎn)品成本計算提供數(shù)據(jù)依據(jù)。工作中心用來記錄工作中心設(shè)備的工作時間、工作實時狀態(tài)以及訂單安排,這些數(shù)據(jù)為設(shè)備效能、生產(chǎn)力損失和工作中心負(fù)載統(tǒng)計分析提供依據(jù)。
圖2:MVC結(jié)構(gòu)圖
圖3:基于MVC模式的系統(tǒng)架構(gòu)圖
圖4:SQL直接訪問數(shù)據(jù)庫
采購管理包括詢價單、采購訂單、供貨商、產(chǎn)品信息子模塊。詢價單模塊將同一產(chǎn)品不同供貨商供貨價格形成清晰的列表并且智能排序,用戶結(jié)合供貨商供貨質(zhì)量對比,能夠迅速找到合適的產(chǎn)品,從而控制生產(chǎn)成本。采購訂單數(shù)據(jù)包括產(chǎn)品名稱、型號、數(shù)量、交貨日期、單價、供貨商、單據(jù)日期等信息,通過這些信息可以查詢采購訂單。供應(yīng)商管理包括供貨商基本信息的增刪改查、供貨商賬單查詢以及企業(yè)內(nèi)部對供貨商的評價備注。產(chǎn)品管理模塊主要負(fù)責(zé)建立產(chǎn)品基本信息,根據(jù)庫存實時更新產(chǎn)品數(shù)量、狀態(tài)等信息。
銷售管理包括報價單、銷售訂單、客戶和銷售團(tuán)隊子模塊。報價單模塊有報價單增刪改查功能,通過輸入編號、日期、客戶、產(chǎn)品等信息查詢報價單,并且對該報價單信息進(jìn)行相應(yīng)的操作。銷售訂單模塊可以對銷售訂單進(jìn)行增刪改查,還可以根據(jù)訂單數(shù)據(jù)進(jìn)行銷售情況數(shù)據(jù)分析??蛻裟K包括對客戶基本信息維護(hù),客戶評價建立。銷售團(tuán)隊模塊對銷售團(tuán)隊成員、領(lǐng)導(dǎo)、銷售渠道等信息進(jìn)行編輯。
庫存管理包括庫存統(tǒng)計、庫存移動和補(bǔ)貨提醒子模塊。庫存統(tǒng)計通過輸入產(chǎn)品名稱、類別、位置等信息查詢當(dāng)前庫存信息。庫存移動記錄產(chǎn)品出庫入庫信息,包括領(lǐng)用人、領(lǐng)用單號、領(lǐng)用日期等數(shù)據(jù),并可以對這些數(shù)據(jù)進(jìn)行查詢。補(bǔ)貨提醒模塊可以根據(jù)補(bǔ)貨規(guī)則對少于庫存最少庫存數(shù)量的產(chǎn)品進(jìn)行補(bǔ)貨提醒。
財務(wù)管理包括銷售賬單和采購賬單子模塊。銷售賬單有客戶發(fā)票、銷售收據(jù)、收付款信息的查詢和編輯功能,并對這些信息進(jìn)行導(dǎo)出操作;采購賬單有供應(yīng)商賬單、采購收據(jù)、收付款信息的增刪改查功能,并且可以導(dǎo)出這些數(shù)據(jù)。
設(shè)備管理包括設(shè)備信息、設(shè)備維護(hù)、設(shè)備維修子模塊。該設(shè)備信息主要功能有設(shè)備基本信息增刪改查;設(shè)備維護(hù)具備維護(hù)申請信息編輯和查詢的功能;設(shè)備修理包括設(shè)備修理單的編輯、提交、管理員審核等功能。
人力資源管理包括人員基本信息、合同信息的錄入、增刪改查,招聘信息的記錄,休假信息的統(tǒng)計,工資計算和統(tǒng)計。
資產(chǎn)管理包括資產(chǎn)基本信息管理,資產(chǎn)狀態(tài)實時更新,資產(chǎn)狀態(tài)看板。
項目管理可以執(zhí)行項目基本信息增刪改查,項目任務(wù)計劃,項目進(jìn)展跟蹤,項目子任務(wù)進(jìn)度查看,項目內(nèi)部信息共享,項目計劃甘特圖根據(jù)項目計劃自動生成,項目任務(wù)時間分析。
檔案管理主要功能有檔案管理框架的設(shè)計,文檔信息的錄入,包括上傳人,版本、時間等信息,文檔的增刪改查、預(yù)覽、如果有下載權(quán)限的用戶還可以下載該文檔。
系統(tǒng)管理模塊,該模塊主要功能有用戶登錄信息設(shè)置,系統(tǒng)訪問記錄,數(shù)據(jù)庫自動和手動備份與恢復(fù)。用戶登錄信息管理包括管理員對用戶初始登錄賬戶和密碼創(chuàng)建、刪除、用戶權(quán)限的配置。用戶第一次登錄的賬號由系統(tǒng)管理員分配,登錄成功以后可以自己修改重新設(shè)定登錄密碼等,系統(tǒng)日志會記錄用戶登錄訪問信息。數(shù)據(jù)庫的備份和恢復(fù),管理員每天定時備份當(dāng)前的數(shù)據(jù),如果系統(tǒng)出現(xiàn)問題,可以利用備份數(shù)據(jù)進(jìn)行系統(tǒng)恢復(fù),避免企業(yè)造成較大損失。
本系統(tǒng)設(shè)計采用B/S(瀏覽器/服務(wù)器)結(jié)構(gòu),可以在局域網(wǎng)內(nèi)運行,同時滿足多用戶訪問?;贐/S的ERP系統(tǒng),系統(tǒng)安裝、模塊添加和維護(hù)都在服務(wù)器端進(jìn)行,不同權(quán)限的用戶僅需要通過客戶端的瀏覽器就可以訪問對應(yīng)模塊,共享服務(wù)器上的數(shù)據(jù)資源,普通用戶不需要維護(hù),大大減少了開發(fā)和維護(hù)成本。目前B/S結(jié)構(gòu)的信息管理系統(tǒng)占據(jù)管理軟件領(lǐng)域的主導(dǎo)地位。
整個系統(tǒng)遵循MVC模式進(jìn)行設(shè)計,MVC是一個非常成熟的大型程序設(shè)計的分層框架,目的是分離底層數(shù)據(jù)庫數(shù)據(jù),中間層業(yè)務(wù)規(guī)則和上層的信息展示,修改了底層數(shù)據(jù)結(jié)構(gòu),不會影響數(shù)據(jù)展示方式,MVC這種松耦合有助于保持表現(xiàn)層的靈活性。開發(fā)過程中視圖定義在XML文件中,模型類由數(shù)據(jù)表映射,控制器定義在Python文件中,系統(tǒng)運行時,模型(Model)向控制器(Controller)傳達(dá)(notify)數(shù)據(jù)變化消息,控制器更新(update)視圖的數(shù)據(jù)展示,視圖向控制器傳達(dá)用戶執(zhí)行的操作,控制器用XML定義響應(yīng),功能相似springMVC,根據(jù)URL來控制請求,把請求處理映射到某個具體的方法上,在請求處理方法中處理數(shù)據(jù),控制視圖頁面跳轉(zhuǎn),更新模型層數(shù)據(jù)或者從模型層獲取用戶需要的數(shù)據(jù)給視圖層。圖2是MVC結(jié)構(gòu)圖。
系統(tǒng)架構(gòu)分為三層分別為表現(xiàn)層、邏輯層、數(shù)據(jù)層,每層服務(wù)可以單獨部署,具有強(qiáng)大的擴(kuò)展功能,分層后,前端和后端分離,避免開發(fā)時造成業(yè)務(wù)糾紛[3]。基于MVC模式的系統(tǒng)架構(gòu)圖如圖3所示。下面簡單介紹各層功能。
(1)展示層(Presentation Tier)負(fù)責(zé)展示數(shù)據(jù)以及與用戶直接數(shù)據(jù)交互,完成所有的用戶體驗。使用遠(yuǎn)程過程調(diào)用模型對象(Model object)、視圖對象(View object)、動作對象(Actions object),然后服務(wù)器根據(jù)獲取的請求返回響應(yīng),展示層獲取響應(yīng)數(shù)據(jù)后進(jìn)行后續(xù)處理。
(2)邏輯層(Logic Tier)負(fù)責(zé)與數(shù)據(jù)層的直接交互,邏輯與數(shù)據(jù)之間的關(guān)系復(fù)雜多變,利用ORM接口(API),可以整合邏輯層和數(shù)據(jù)層。只需要利用后臺開發(fā)語言編寫create和read等方法,調(diào)用方法實現(xiàn)業(yè)務(wù)邏輯,例如驗證(Check)和自動計算(Computer)等。
(3)數(shù)據(jù)層(Data Tier)是最低級別的一層,直接與數(shù)據(jù)庫交互并進(jìn)行增刪改查操作,解決了數(shù)據(jù)存取問題,在本系統(tǒng)架構(gòu)中采用PostgreSQL。邏輯層調(diào)用數(shù)據(jù)訪問層所提供數(shù)據(jù)服務(wù)接口時,數(shù)據(jù)層返回給上層數(shù)據(jù)模型類的實例。
系統(tǒng)在實現(xiàn)過程中,界面層使用HTML、CSS、XML和JS結(jié)合的方法,HTML定義頁面內(nèi)容,CSS設(shè)計頁面布局,JS描述行為,XML用于批量數(shù)據(jù)傳輸和存儲結(jié)構(gòu)化的數(shù)據(jù)。在中間層采用ORM對數(shù)據(jù)模型和業(yè)務(wù)邏輯模型進(jìn)行了封裝。在這里數(shù)據(jù)存儲層就是數(shù)據(jù)庫,采用的是開源數(shù)據(jù)庫PostgreSQL,用來存儲企業(yè)數(shù)據(jù)。
企業(yè)數(shù)據(jù)庫特點是數(shù)據(jù)量大,錄入、調(diào)用、存儲的操作頻率非常高,SQL只能針對數(shù)據(jù)庫進(jìn)行操作,在實際開發(fā)應(yīng)用中,需要引用其他程序語言調(diào)用SQL[8],來實現(xiàn)軟件具體功能,編程語言將SQL語句當(dāng)作字符串,作為參數(shù)傳遞給函數(shù),這種方式訪問數(shù)據(jù)庫是以數(shù)據(jù)記錄為單位的,不僅工作量較大,而且容易出現(xiàn)錯誤,并不適合大型軟件的開發(fā),系統(tǒng)開發(fā)通常會利用ORM框架。ORM抽象掉數(shù)據(jù)庫層,通過描述對象與數(shù)據(jù)庫之間的映射,將程序中的對象關(guān)聯(lián)到關(guān)系數(shù)據(jù)庫中,表映射成類,字段映射為屬性,數(shù)據(jù)記錄映射成對象,解決了面向?qū)ο笈c數(shù)據(jù)庫存在不匹配的現(xiàn)象。ORM有以下這些優(yōu)點:
(1)數(shù)據(jù)模型定義在一個文件內(nèi),代碼更加清晰,便于更新和維護(hù),代碼重用率高;
(2)使用對象,封裝了數(shù)據(jù)庫操作,避免手工編寫大部門基本SQL語言,通過編程語言與數(shù)據(jù)對象直接交互,不用再關(guān)心底層數(shù)據(jù)庫。
圖4為直接用SQL操作數(shù)據(jù)庫,圖5描述通過ORM操作數(shù)據(jù)庫步驟。
ORM框架有很多,常見的有用的有Peewee和SQLAlchemy,通常在實際應(yīng)用中也會根據(jù)開發(fā)需求寫簡潔、適用性強(qiáng)的ORM框架。本系統(tǒng)在開發(fā)過程中,數(shù)據(jù)模型可以分為三類,基本數(shù)據(jù)模型、瞬態(tài)數(shù)據(jù)模型、抽象數(shù)據(jù)模型,其中基礎(chǔ)模型對應(yīng)數(shù)據(jù)庫表,數(shù)據(jù)長期存儲;瞬態(tài)數(shù)據(jù)模型數(shù)據(jù)也存儲在數(shù)據(jù)表中,但是只是臨時存儲,抽象數(shù)據(jù)模型不存儲數(shù)據(jù)也沒有數(shù)據(jù)庫表。三種數(shù)據(jù)模型通過ORM框架映射成python類,通過繼承可以在新類中增加屬性和方法,也就是在表中添加新字段。這些數(shù)據(jù)模型的關(guān)系有多對對和多對一,多對多關(guān)系需要增加第三個表來維護(hù)模型關(guān)系。系統(tǒng)實現(xiàn)過程中利用ORM框架提供讀寫操作方法,完成數(shù)據(jù)庫的CRUD,提高了開發(fā)速度。
圖5:通過ORM操作數(shù)據(jù)庫
ERP系統(tǒng)的開發(fā)核心主要有兩部分,一是業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)邏輯,二視圖設(shè)計。在Python文件中定義業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)邏輯方法,XML文件定義視圖,前端框架解析XML文件,生成HTML文件,瀏覽器執(zhí)行HTML文件。視圖數(shù)據(jù)存儲在數(shù)據(jù)庫中的模型中,在XML中用
XML文件可以定義用戶視圖,包括菜單,列表,表單,看板等,通過
圖6:服務(wù)器啟動
圖7:登錄后首頁
圖8:項目計劃管理頁面
系統(tǒng)訪問穩(wěn)定性、數(shù)據(jù)安全性、功能完整性測試是必不可少的步驟,通過可靠的測試用例盡可能找到系統(tǒng)存在的缺項,提高系統(tǒng)的可靠性。利用交換機(jī)搭建訪問網(wǎng)絡(luò)結(jié)構(gòu),模擬企業(yè)內(nèi)部局域網(wǎng),對系統(tǒng)多用戶并發(fā)訪問進(jìn)行測試,各功能模塊數(shù)據(jù)操作命令成功執(zhí)行,響應(yīng)時間在預(yù)期范圍內(nèi),系統(tǒng)運行穩(wěn)定,達(dá)到設(shè)計目標(biāo)。下圖6后臺數(shù)據(jù)庫服務(wù)器啟動。啟動服務(wù)器,功能模塊成功加載。通過瀏覽器本地訪問系統(tǒng),管理員登錄后首頁如圖7所示,項目管理如圖8所示,從該界面可以清晰掌握項目階段性計劃等信息。
信息化是企業(yè)提高核心競爭力的必然之路,通過對某制造企業(yè)管理內(nèi)容、管理模式、業(yè)務(wù)流程、信息數(shù)據(jù)進(jìn)行全面系統(tǒng)分析和建模,設(shè)計開發(fā)了ERP系統(tǒng),通過應(yīng)用測試該系統(tǒng)可以整合企業(yè)生產(chǎn)數(shù)據(jù)和管理數(shù)據(jù),規(guī)范生產(chǎn)和管理流程。系統(tǒng)框架的可擴(kuò)展性可以很好的適應(yīng)企業(yè)的后續(xù)發(fā)展,開發(fā)中形成一套標(biāo)準(zhǔn)模板,提高了代碼可讀性,有效降低系統(tǒng)二次開發(fā)的周期和成本,為小型企業(yè)開發(fā)低成本管理系統(tǒng)提供新思路。