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