王鴻飛,李 娜
(河南工業(yè)大學 漯河工學院,河南 漯河 462000)
目前,國內(nèi)線纜行業(yè)信息化程度和智能化程度普遍不高,出庫管理采用半自動庫存管理系統(tǒng),線纜企業(yè)70%以上的成本來自原材料,每年原材料的低效管理造成大量浪費,現(xiàn)有的C/S 架構管理系統(tǒng)無法很好地適應日益變化的市場需求,因此高效穩(wěn)定的智能化出庫管理系統(tǒng)在線纜行業(yè)有著較高的價值。為了解決庫存管理系統(tǒng)的拓展性和可用性問題,本文采用B/S架構,根據(jù)某企業(yè)的具體數(shù)據(jù)和實際需求,設計了一套線纜管理系統(tǒng)。該系統(tǒng)主要根據(jù)派送任務和線輪庫存信息,選擇合適的線輪和截取合適的線輪,并將選擇線輪和截取線輪的結果輸出,以便完成出庫派送任務。
B/S即瀏覽器、服務器架構,通過瀏覽器就能訪問出庫管理系統(tǒng)的功能,并且當業(yè)務變更時也只需更改服務端代碼,不需更新客戶端。在Web應用構建上,本文采用了MVC設計模式,將業(yè)務邏輯和客戶端頁面分離。整個系統(tǒng)遵循三層架構的設計原則,分別為數(shù)據(jù)訪問層、業(yè)務邏輯層和表現(xiàn)層,系統(tǒng)架構最終可以將頁面交互、數(shù)據(jù)庫操作、業(yè)務邏輯和中間控制層完全解耦,每層專注于各自的功能,這樣可以極大地提高軟件的可拓展性。
SpringBoot 是由Pivotal 團隊提供的全新框架,其設計目的是用來簡化新Spring 應用的初始搭建及開發(fā)過程。Spring 通過控制反轉實現(xiàn)了松散耦合,該框架使用了特定的配置方式,從而使開發(fā)人員不再需要定義樣板化的配置,只需要非常少的幾個配置就可以迅速搭建Web 項目或構建一個微服務,提供方便的API把具體技術相關的異常轉化為一致的unchecked 異常。
EasyUI是一個簡單的用戶界面組件的集合,是基于jQuery、Angular、Vue和React 的非常簡單好用但功能強大的輕量級Web 前端javascript 框架。由于EasyUI已經(jīng)封裝好大部分UI基本功能,能幫用戶減少大量的js 和css 代碼,使用EasyUI 不需要寫很多代碼,僅需要通過編寫一些簡單的html 標記,就可以開發(fā)用戶界面。EasyUI是個完美支持html5網(wǎng)頁的完整框架,使用EasyUI可以節(jié)省網(wǎng)頁開發(fā)的時間和規(guī)模。項目實現(xiàn)中SpringBoot整合EasyUI僅按需加載,并沒有引入所有的EasyUI特性。
通過對某線纜企業(yè)的調(diào)研,獲取了用戶的詳細需求信息,包括發(fā)貨時是按目的地逐個發(fā)貨,還是以線纜類型進行分類發(fā)貨;對于發(fā)往同一目的地的多種規(guī)格的線纜有同一生產(chǎn)廠家的要求限定;正常情況下某個目的地對于電纜長度的需求一般為多少,精確到的最小單位是什么;正常情況下生產(chǎn)廠家提供的整輪線纜長度是多少,精確到的最小單位是多少;如果某個目的地對某種型號電纜的總長度需求在現(xiàn)有庫存中不能滿足,該如何處理等。根據(jù)以上因素,設計了幾種線輪的選取和截取算法,以提高系統(tǒng)的智能化程度。該出庫管理系統(tǒng)的核心功能由庫存情況導入、截取線輪任務導入、線輪截取算法、信息導出四部分組成。
以Excel表形式導入庫存信息,導入字段包括排號、輪號、型號、廠家、長度、是否整輪六個部分內(nèi)容,具體如表1所示。
表1 庫存信息
要求:庫存信息可以覆蓋導入,一次截取任務可以包含多行庫存信息。
導入字段包括派送單位、型號、長度三部分內(nèi)容,具體如表2所示。
表2 任務信息
根據(jù)導入的庫存信息和任務信息進行線輪的選擇和截取操作。采用的線輪截取算法如下:
一是整輪截取法,即先截整輪線,再截不整輪的線。該方法的好處是截取次數(shù)較少,但是非整輪線利用率較差。
(1)如果a1+a2+...+an 正好是整輪線的整數(shù)倍(設整輪線長度為s,x為整數(shù),即a1+...+an=s*x),則依次從整輪線纜截取,這樣每段線纜截取的次數(shù)為1。
(2)如果s*(x+1)>a1+a2+...+an>s*x,即要截取的總長度超過了x個整輪線,小于x+1個整輪線,多出來的長度即s*(x+1)-(a1+...+an),考慮從b1,b2,...,bm中找最佳匹配線輪(與b輪線相比差距最小的),從這個線輪中截取。如果沒有找到合適的長度,則從b1+b2,b1+b3,...,b1+bm中尋找兩兩最佳組合線輪。以此類推,找三三組合最佳,直至找到,然后截取,如果b1+b2+...+bm的長度不夠,則選擇從整輪線纜中截取。
二是非整輪優(yōu)先截取法,即先找到符合要求的非整輪線輪,非整輪線纜長度不夠時從整輪線輪中截取。該算法的好處是非整輪線纜的利用率較高,不足之處是截取的次數(shù)較多。
(1)先找與a1 最佳匹配的線輪(這里要設定一個最佳的標準,比如10 m),即從b1到bm中進行遍歷,找差距在10 m 內(nèi)的線,找不到則從b1+b2,b1+b3,...,b1+bm 兩兩組合中查找,依次類推直到b1+b2+b3+...+bm,在查找過程中記錄每次比較的差距,如果找不到10 m的差距,就選差距最小的線輪組合作為截取對象,截取符合a1要求的線輪。
(2)依次尋找a2,a3,...,am截線的線輪,如果am線段截取時剩余的線輪長度不夠,則從整輪線輪中截取。
導出完成派送任務所選擇的線輪及截取的線輪,信息導出字段包括單位編號、型號、長度、排號、輪號、是否截取等信息。導出形式為Excel表,具體數(shù)據(jù)如表3所示。
表3 導出信息
本系統(tǒng)的主要實體有線輪、訂單、客戶,依據(jù)前面的需求,設計了線輪信息表、訂單表和客戶表,主要屬性分別如表4、表5、表6所示。
表4 線輪信息表結構
表5 訂單明細表結構
表6 客戶信息表結構
出庫管理頁面上主要包括兩個Excel導入按鈕、一個計算按鈕、一個計算結果顯示列表和一個導出Excle按鈕。
用EasyUI實現(xiàn)的核心代碼如下:
頁面效果如圖1所示。
圖1 出庫管理
截取的上傳庫存信息頁面如圖2所示。
圖2 上傳庫存信息
截取的上傳任務信息頁面如圖3所示。
圖3 上傳任務信息
如果訪問看不到列表頁面,打開F12 再請求一次,看請求資源是否報錯,如果資源報“404”,就是html文件中引入的EasyUI文件路徑不對;如果全部正常,接口也返回了數(shù)據(jù),而列表仍然展示不了數(shù)據(jù),需要查看接口返回參數(shù)與EasyUI 格式是否一致,封裝接口的返回參數(shù)為EasyUI需要的格式才可以正常展示。
線纜企業(yè)每年因為出庫管理不善造成很大的損失,而物料開支是目前該行業(yè)的主要成本來源,所以選取合適的線纜進行截取,完成任務派發(fā),減少線纜的浪費,提升出庫管理的效率,進而提高企業(yè)的數(shù)字化、信息化和智能化水平。本文對傳統(tǒng)的線纜管理系統(tǒng)進行重構,并根據(jù)具體的業(yè)務流程對線輪的截取算法做了一定的優(yōu)化,通過對系統(tǒng)各項功能的使用及性能測試表明,能夠較好地滿足用戶需求。