周建輝
(江蘇工程職業(yè)技術(shù)學(xué)院,南通 226007)
入庫是倉庫管理的重要一環(huán),人工入庫效率低下,而且容易出錯,人力資源成本較高[1],已經(jīng)不能滿足現(xiàn)代倉儲管理的要求。而隨著物流行業(yè)的迅猛發(fā)展,倉儲規(guī)模的擴(kuò)大,貨物流動性的增強,僅靠增加人力來完成入庫工作已無力應(yīng)付。本文針對以上問題,基于手持式移動終端設(shè)備,綜合運用各種技術(shù),開發(fā)了入庫管理程序,較好地解決了商品入庫過程中數(shù)據(jù)錄入困難、操作煩瑣、采集工作量大等缺點,實現(xiàn)了入庫信息的快速、準(zhǔn)確和及時采集,從而提高了倉庫管理效率。
架構(gòu)設(shè)計如圖1所示。
1)三層架構(gòu)。本程序由3個部分構(gòu)成:Wince程序、Windows打印服務(wù)程序[2]和Web服務(wù)程序[3]。由于三層架構(gòu)可提高程序的可復(fù)用性、可擴(kuò)展性,利于程序的標(biāo)準(zhǔn)化,所以本程序采用三層架構(gòu):即由數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層和表示層[4]構(gòu)成。在Wince程序中,Model是實體層,通過該層可以實現(xiàn)對象數(shù)據(jù)到數(shù)據(jù)庫的持久存儲。另外,還使用到一些第三方組件,例如Iconic.Zip.cf(壓縮圖片)、log4net(記錄日志)。
2)分布式結(jié)構(gòu)。PDA設(shè)備一般采用無線方式接入網(wǎng)絡(luò),網(wǎng)絡(luò)環(huán)境較為復(fù)雜,并且PDA設(shè)備的CPU計算能力和內(nèi)存容量有限,故采用分布式主從數(shù)據(jù)庫設(shè)計。主數(shù)據(jù)庫為SQL Server 2005,架構(gòu)在服務(wù)器上,從數(shù)據(jù)庫為SQLCE 3.5,架構(gòu)在PDA上,是一個簡化版的主數(shù)據(jù)庫[5],主從數(shù)據(jù)庫之間的同步通過Web服務(wù)實現(xiàn),PDA設(shè)備按照一定的業(yè)務(wù)規(guī)則下載基礎(chǔ)數(shù)據(jù)和上傳采集數(shù)據(jù)。
功能設(shè)計如圖2所示。
圖1 架構(gòu)設(shè)計
1)下載基礎(chǔ)數(shù)據(jù)和上傳入庫信息。下載基礎(chǔ)數(shù)據(jù)指的從Web服務(wù)器上下載供PDA使用的基礎(chǔ)數(shù)據(jù),包含供應(yīng)商信息等。上傳入庫信息指將PDA采集的入庫信息上傳到Web服務(wù)器,經(jīng)過處理存放到主數(shù)據(jù)庫中。
2)采集入庫信息。包括入庫操作時間、產(chǎn)品的條形碼、外包裝條碼、入庫數(shù)量、商品的供應(yīng)商ID、操作員ID、流水號。采集模式分外包裝掃描模式和商品掃描模式。
3)報損。通過PDA的自帶攝像頭采集損壞商品的圖
片,并上傳到Web服務(wù)器。報損信息包括報損產(chǎn)品的條形碼、供應(yīng)商ID、圖片。采集完的圖片需自動壓縮。
4)條碼打印。在某些入庫商品條碼缺失的時候,發(fā)送條碼類型及數(shù)據(jù)到Windows服務(wù),Windows服務(wù)完成打印條碼任務(wù)。支持條碼參數(shù)的配置,支持EAN、Code39碼等常用條碼格式[6]。
本程序的開發(fā)環(huán)境采用WIN 7+VS2005SP1+VS2010,其中VS 2005 SP1開發(fā)Wince 5.0程序,VS2010開發(fā)Windows服務(wù)程序和Web服務(wù)程序。Wince程序模擬器使用Wince 5.0 Armv 4i Emulator。模擬器的安裝可以下載DevEmul_SDK.msi,也可以通過PB 5.0定制Wince 5.0操作系統(tǒng)[7],然后生成對應(yīng)的SDK。其他輔助工具包括Data Port Wizard、SDF viewer和動軟代碼生成器。
圖2 功能設(shè)計圖
分布式數(shù)據(jù)庫設(shè)計考慮以下因素:① 表的主鍵均采用全局唯一的UniqueIdentifier類型,因為通過編程可以方便地產(chǎn)生主鍵,避免復(fù)雜的邏輯,簡化了程序。②在從數(shù)據(jù)庫中,盡量將數(shù)據(jù)庫的設(shè)計簡化。通過減少外鍵約束關(guān)系縮減從數(shù)據(jù)庫中的表的數(shù)量[8]。
主數(shù)據(jù)庫中的主要數(shù)據(jù)如表1所示。
表1 主數(shù)據(jù)庫中的主要數(shù)據(jù)列表
從數(shù)據(jù)庫中的主要數(shù)據(jù)如表2所示。
本程序的業(yè)務(wù)流程較為復(fù)雜,涉及多種操作和判斷,如圖3所示。
表2 從數(shù)據(jù)庫中的主要數(shù)據(jù)列表
本程序核心代碼如下:
private void ZipImage(string guid) //該方法調(diào)用第三方壓縮DLL實現(xiàn)毀損產(chǎn)品的圖片壓縮;
private void UploadFile(string filepath) //該方法調(diào)用Web服務(wù)實現(xiàn)毀損產(chǎn)品圖片的壓縮包上傳;
public void Print() //該方法是Windows打印服務(wù)程序的核心方法,獲取條碼類型和條碼數(shù)據(jù),繪制條碼,最后打?。?/p>
private void btnDownSupplierInfo_Click(object sender,EventArgs e) //該方法為下載供應(yīng)商信息方法,通過調(diào)用Web服務(wù)獲取主服務(wù)器上最新的供應(yīng)商信息,然后插入到本地的SQLCE數(shù)據(jù)庫中。
本程序總體上采用B/S和C/S架構(gòu)相結(jié)合的部署方案,Web服務(wù)部署在Windows2003 Server+IIS 6.0服務(wù)器上,Windows服務(wù)部署在普通服務(wù)器上,數(shù)據(jù)庫服務(wù)器可以部署在單獨的服務(wù)器上,也可以部署在Web服務(wù)器上;部署 Wince程序時,先要通過微軟設(shè)備同步軟件將PDA設(shè)備連接到PC機上,然后在VS中選擇該設(shè)備為目標(biāo)設(shè)備,最后部署即可。經(jīng)部署完畢,運行的結(jié)果如圖4所示。
圖3 程序的業(yè)務(wù)流程圖
該程序交付使用后,運行良好,方便用戶使用,數(shù)據(jù)采集快捷準(zhǔn)確。實踐證明,該程序的架構(gòu)合理,思路清晰,在開發(fā)Wince手持式終端設(shè)備程序時具有較強的參考價值和推廣意義。
圖4 PDA上運行的入庫程序
[1] 董哲,林君偉,孫德輝.基于.Net倉庫管理系統(tǒng)的設(shè)計及應(yīng)用[J].自動化技術(shù)與應(yīng)用,2013,32(1):14-15.
[2] 周鵬,高昂,劉超.Windows服務(wù)程序的編碼與分析[J].微計算機應(yīng)用,2011(10):62-65.
[3] 楊嵐,李書琴.基于Web Service的農(nóng)產(chǎn)品交易系統(tǒng)的研究與設(shè)計[J].計算機工程與設(shè)計,2008(8):2118-2120.
[4] 高揚.基于.NET平臺的三層架構(gòu)軟件框架的設(shè)計與實現(xiàn)[J].計算機技術(shù)與發(fā)展,2011,21(2):77-79.
[5] 丁丁,黃成軍,沈昊.基于WINCE.NET操作系統(tǒng)的主從式數(shù)據(jù)庫系統(tǒng)[J].計算機應(yīng)用,2004,24(12):239-241.
[6] 余宏兵,李寶安,申功勛.基于ARM的WINCE系統(tǒng)定制[J].現(xiàn)代電子技術(shù),2008(10):73-75.
[7] 戚瑋瑋,宋朝輝,宋大雷,欒新.B/S模式下條形碼票證自定義打印的設(shè)計和實現(xiàn)[J].計算機應(yīng)用與軟件,2010(12):170-173.
[8] 陳福,周樹杰,林小竹,史廣軍.基于Wince的嵌入式系統(tǒng)數(shù)據(jù)庫訪問技術(shù)研究[J].計算機系統(tǒng)應(yīng)用,2004(4):47-48.