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