王旭東,葉昕炯,祁 力
(1.湖州電力局,浙江 湖州 313000;2.湖州泰侖電力自動化工程有限公司,浙江 湖州 313000)
隨著國家電網公司物資集約化工作的逐步推進,對于物資需求部門來說,相應的管理要求也越來越高。湖州電力局傳統的物資需求申報模式是由需求部門定期上報需求計劃(每月1~2次),特殊緊急的物資采購允許臨時申報。對于物資計劃申報之后的流程跟蹤,現有的ERP-SAP系統、國家電網公司電子商務平臺的設計理念是基于物料管理和合同管控,在物料需求計劃前期管理方面尚缺乏有效的手段。在總結湖州電力局物資管理經驗、充分調研相關部門實際工作需求的基礎上,設計了物資管控系統(含需求計劃跟蹤和預約領料等模塊)。系統結合湖州電力局物資管理工作的實際,基于已有的完善的內部局域網系統和信息化辦公硬件條件,旨在為各相關部門提供計劃申報、計劃審核、計劃執行、采購信息反饋、預約領料各環節的狀態信息和信息交流平臺,便于需求部門和計劃部門實時掌控計劃流轉情況和可領料情況,是對目前應用的SAP系統的補充,能有效提高湖州電力局的物資前期管理工作水平。
系統總體開發思路是采用B/S模式,基于MVC和SSH2技術。隨著物資需求計劃文件在各個處理環節的流轉,文件處理狀態也相應改變。需求部門、計劃管理部門通過查看計劃和物料狀態的改變情況,跟蹤需求計劃流轉狀態和物資采購、入庫、領用的情況。系統功能及結構如圖1所示。

圖1 系統功能結構
預約領料是本系統的一大亮點。傳統的物資領用方式是需求部門憑領料單直接去倉庫領料,倉庫保管員根據領料單和庫存情況發貨。在實際工作中,經常會出現一些問題,比如需求部門急需的物料由于采購、入庫不及時而領不到,造成人員、車輛的浪費。又如,如果需求部門要大批量領用物資,而倉庫保管員又事先不知道領用情況,容易引起誤發貨或備貨不足的情況。基于以上種種情況,設計開發了該系統。
根據工作流程和部門信息管理的需要,系統共設置了9個職能模塊:需求管理、計劃管理、招標管理、采購管理、合同管理、倉庫管理、公用信息、信息通告和系統管理。
需求模塊:物料需求計劃的申報,包括集中采購目錄范圍內的物資和零星采購物資,以及物資預約領料、物資領用等。
計劃模塊:物流服務中心計劃管理人員對上報計劃中零星采購物資的審核,確定采購原則。
招標模塊:集中采購物資需求計劃和物資專項招標采購計劃的審核,招標完成后的招標結果信息反饋。
采購模塊:零星采購物料訂單的創建,采購合同的掛接,預約領料單的信息處理。
合同模塊:集中采購物資合同文檔的掛接,預約領料的處理。
倉庫模塊:預約領料信息處理和針對領料單的發料。
各模塊根據實際工作需要將多種統計報表納入其中,有利于各個時間段對各種相關數據的統計匯總。
系統依據計劃申報、審批、招標、采購、收貨等不同途徑,分為3個流程:集中采購流程、平衡利庫采購流程和非平衡利庫采購流程。相應的物資需求計劃文件有以下狀態:
(1)需求部門:未提交、待修改、已提交、可預約。
(2)計劃管理:未審核、已下達。
(3)招標管理:未審核、已完成。
(4)采購管理:未采購、已采購。
(5)合同管理:未簽訂、已簽訂。
2.2.1 集中采購流程
集中采購流程是指由需求部門準備物料需求計劃,并進行單位內部審核。屬于集中招標采購目錄范圍的,就按照集中采購流程上報至物流服務中心招標專職,由招標專職組織計劃審查專家組進行內審。如果合格就提交至省電力公司,若不合格則退回需求單位,經修改后重新提報。集中招標完成合同簽訂后,在該系統內掛接合同文檔,填寫合同計劃交貨期,在計劃交貨期前需求部門可依據初始填報的需求計劃發送預約領料單至合同管理人員或配網物資倉庫保管員,進行預約領料操作。集中采購流程如圖2所示。

圖2 集中采購流程
2.2.2 平衡利庫和非平衡利庫物資采購
生產運維物資、勞保、辦公用品、表計、低值易耗品等物資,一般都有一定量的庫存儲備,需要平衡利庫,然后下達采購計劃。對于項目類物資需求計劃,則沒有平衡利庫過程。鑒于此,設計了圖3所示的平衡利庫和非平衡利庫物資采購流程。
2.2.3 預約領料管理
基于目前應用的ERP-SAP系統在預約領料方面尚無相應功能模塊,物資的可領用信息也不能及時反饋到需求部門,故開發了預約領料系統,流程如圖4所示。

圖3 平衡利庫和非平衡利庫采購流程

圖4 預約領料流程
對于集中采購物資和零星采購物資,當采購訂單已創建或合同已簽訂后,采購員或合同管理員即可將計劃交貨期輸入系統,在系統內設定合理的供貨時間。當供貨時間到達后,系統允許需求部門預約領料,在系統內提交預約領料單至倉庫保管員,由倉庫保管員根據物資到貨情況回復可否領料的反饋信息。對于直接送至需求部門或工地現場的物資,將預約領料單發送至采購員,由采購員回復可否領料信息。需求部門根據倉庫保管員或采購員的回復意見確定領料方式和時間,倉庫保管員根據回復信息做好備貨工作。以上的流程設計加快了物料領用效率,也保障了物資裝卸的安全。
在初期調研和技術討論階段,結合系統的應用范圍和實際辦公條件,決定采用IE6界面。因為Web模式不需要安裝專用軟件就可以直接使用,適合與辦公系統OA,SAP及協同辦公等系統相互結合使用,簡單實用,避免了客戶端安裝和升級維護的麻煩。
由于該系統涉及的業務處理流程較多,因此系統中需求計劃文件的處理狀態成為整個流程的核心。為了使系統能流轉順暢并實現信息集成統計、分析功能,確定采用兩大模式的狀態,即“聯系函”(即需求文件)狀態、“物料”狀態。通過“聯系函”狀態,實時追蹤需求計劃的流轉進度,通過高級檢索中的多種查詢條件,以最快的速度定位最有用的信息;通過“物料”的采購狀態及領用狀態,自動計算采購率、領料率,不僅為物資的管理和統計帶來方便,而且也提高了需求部門領料和倉庫備貨以及物資配送的效率。
集中采購模塊和合同管理中的計劃交貨期均采用了Java定時器技術,集成Spring定時器在SSH2框架中的應用。在Spring中有兩種流行的配置方式來執行調度任務,即Java的Timer類和openSymphony的Quartz,考慮技術的成熟與穩定性,本系統采用后者。Quartz調度器執行工作不僅能精確到毫秒,還允許調度某個工作在某個特定的時間或日期中執行。繼承QuartzJobBean類實現executeInternal方法,處理Java業務,在Spring配置文件中配置啟動時間點。
此外,根據物資采購情況自動生成預約領料單是系統的另一大特色。結合采購率計算,實時反饋物料的采購狀態,自動生成預約領料單,使需求部門能在第一時間領取所需物料。考慮到反饋信息呈現方式的美觀及實用性要求,本系統采用JQuery技術實現淡入淡出的消息框功能,可智能提請用戶注意。針對用戶輸入的物料編碼,又采用了Ajax技術調用Action并生成JSON再傳遞到客戶端。考慮到安全因素,使用了POSET表單提交方式。當客戶端發起一個Ajax請求,執行不同的Action來返回不同格式的JSON字符串,最后在JSP頁面上用Javascript解析出來。通過JSON的應用,速度大大提高,比常規的XML快得多,與此同時返回的對象應用靈活性也很大。
Excel作為廣泛應用的數據統計、文檔處理文件,倍受用戶青睞。本系統的庫存平衡也采用了 Java Excel API(JExcelAPI)技術,從 Excle 數據導入,到數據庫保存,最后導出打印,實現系統之間的良好通信,對企業的發展、生產效率的提高起到很好的作用。
在系統的展現風格上,采用EXTJS富客戶端技術,搭建了交互性強、色彩絢麗、界面華美的平臺。EXTJS是比較開放的開發者接口,可擴展性強,數據和表現分離,顯示的選擇方式靈活。
本系統采用Strus2+Hibernate+Spring整合架構,Spring起到了JavaBean容器的作用。Spring使用IOC和AOP接管了Hibernate的DAO(數據訪問對象層)、事務和Struts2的action對象以及service業務層,從而能有效管理事務和request請求。經過IOC容器的處理后,針對面向接口程序的層次更為分明。
MVC 是指模型(Modeal)、 視圖(View)和控制(Controlle)。
(1)M層:Spring對Hibernate的DAO進行了非常的封裝。實現AOP面向切面編程功能,支持不綁定到特定的JAVAEE服務容器的可重用業務和DAO。
(2)V層:JSP是Servlet的擴展,利用輸出流動態生成html頁面。
(3)C層:Struts2體現在解耦上,在struts.xml配置文件中進行配置后,通過邏輯名稱訪問真實的物理JSP頁面。提供攔截器,實現權限攔截等功能。
(4)持久層:Hibernate是開源的對象關系映射(ORM)框架。對JDBC輕量級對象封裝,大大減少了重復的代碼。系統靈活運用逆向工程學,反向映射Bean和DAO層,提高了開發效率。
加入Struts2過濾器后,web.xml文件的代碼如下:
……
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepare-AndExe
cuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/login.jsp</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
……
在項目SRC目錄下,創建的struts.xml文件代碼如下:
<struts>
<constant>
name="struts.enable.DynamicMethodInvocation"value="false"/>
<constant>
name="struts.custom.i18n.resources"value="globalMessages"/>
<constant name="struts.i18n.encoding"value="UTF-8"/>
<include file="struts-login.xml"/>
<include file="struts-system.xml"/>
<include file="struts-flow.xml"/>
<package name="default"extends="struts-default">
......
</package>
</struts>
開發人員可以通過DAO持久化層,以對象的方式操作數據文件,免除了JDBC對數據庫SQL的語句操作。以下是保存聯系函的代碼:
......
public void save(SysContactletter transientInstance){
log.debug("saving SysContactletter instance");
try{
getHibernateTemplate().save(transientInstance);
log.debug("save successful");
}catch(RuntimeException re){
log.error("save failed",re);
throw re;
}
}
......
表現層的實現主要由JSP完成。為了提高較強的交互性,采用RIA(富客戶端)EXT技術,集成操作方便、界面風格統一、效果絢麗的瀏覽器式框架。
本系統完成開發并投入試用后,解決了物資前期管理工作中長期存在的難點問題。從各部門試用后的反饋情況來看,達到了預期效果。
隨著國家電網公司和省電力公司集約化管理工作的逐步推進,接下來還要逐步推進電力物資定額儲備工作,市、縣電力局本部設置區域庫,由市、縣電力局物流服務中心負責管理;工區、供電營業所按照生產實際需要設置周轉庫,由市、縣電力局物流服務中心負責業務管理,人員和設施由工區、供電營業所配置和管理,因而會涉及物資配送體系的建立,因此在該系統開發初期調研階段便預先設置了適合今后物資配送體系的接口。因為區域庫、周轉庫數量較多,在實施物資配送模式后,必然涉及物資的配送周期、物料配送種類的搭配、配送車輛的合理選擇及配送路徑的合理規劃等一系列問題。鑒于此,在目前該系統預約領料的基礎上開發物料配送信息系統,將極大地提高物資管理水平。
[1] 王凱,石冰心.三層體系結構在一個ERP系統中的應用[J].計算機與現代,2002,3(4)∶33-36.
[2] 李剛.輕量級J2EE企業應用實戰—Struts+Spring+Hibern ate整合開發[M].北京:電子工業出版社,2007.