隨著我國長遠洋事業的發展,大型船舶的海上活動日益頻繁,航行時間也越來越長,船舶上工作人員與乘客數量通常達數千人,攜行的主副食品數量增多,庫存量加大,而庫存管理方式仍以手工統計或是Excel統計為主。由于主副食品庫存信息處于不斷變化狀態,倉庫管理員無法及時掌握庫存信息,往往造成主副食品存放過期和浪費;而庫存信息不清晰,餐廚人員在領料時多采用“隨用隨取”的作業方式,常碰到所需物資已無庫存的情況,需與倉庫管理員重新溝通,易造成重復性工作。
本系統結合條形碼識別技術,配合使用手持PDA,借助計算機網絡技術,高效實現船舶倉庫管理信息的錄入和采集,充分進行數據分析、數據優化,提升倉庫管理效率,實現精確化管理。
在B/S(Browser/Server)體系結構[1]下,用戶界面完全通過Web瀏覽器實現,一部分事務邏輯在前端實現,但是主要事務邏輯在服務器端實現。三層的B/S結構如圖1所示:
它將顯示部分移到了功能層,用戶通過本地的瀏覽器用HTTP來訪問功能服務器[2]?;贐/S結構[3,4]的系統最大優點是可以在任何地方進行操作而不用安裝任何專門的軟件。只要有一臺能上網的電腦就能使用,客戶端零維護[5]。系統的擴展非常容易,只要能上網,再由系統管理員分配一個用戶名和密碼,就可以使用了。
Oracle數據庫,英文全名為Oracle Database,又名Oracle RDBMS,或簡稱Oracle,是美國ORACLE公司(甲骨文)提供的以分布式數據庫為核心的一組軟件產品[6],在數據庫管理功能、完整性檢查、安全性、一致性方面具有良好表現,可通過網絡方便地讀寫遠端數據庫里的數據。在B/S體系結構中,用戶使用Web瀏覽器訪問Web服務器,由Web服務器將用戶在網頁上進行的操作處理提交給數據庫服務器,再把從數據庫獲取的信息以文本、圖像、表格等形式送回給用戶的Web瀏覽器[7,8,9,10]。本系統采用Oracle10g作為數據庫服務器,主要用來存儲船舶食品倉庫管理的動靜態信息和處理客戶端的http請求。
Tomcat是在Oracle公司的JSWDK(Java Server Web Development Kit,是Oracle公司推出的小型Servlet/JSP調試工具)基礎上發展起來的一個優秀的Servlet容器,是Apache開源組織的一個軟件項目。Tomcat是一個免費的開放源代碼應用服務器[11],提供了作為Web服務器[11]的一些實用功能,如Tomcat管理和控制平臺、安全域管理和Tomcat閥等,它運行穩定、可靠,并且效率高[12,13]。本系統中,Tomcat是系統客戶端與應用服務器間通信的橋梁??蛻舳藶g覽器發出的http請求經過Tomcat中間件,轉發到最終的目的服務器上,響應消息再通過Tomcat以靜態頁面的形式返回到客戶端,完成對客戶端請求的響應。
需求分析是系統設計的主要前提,同時也是數據庫設計的重要基礎[14]。船舶食品倉庫管理信息系統主要按照提出食品采購需求,然后購買、入庫,直至消耗的業務流程,實現船舶食品倉庫信息化管理。其具體業務流程為:航行前,采購管理員綜合餐廚工作人員提供的原料需求和倉庫管理員提供的當前庫存情況制訂采購訂單,經領導審核后,根據訂單進行市場采購;采購上船的食品物資按照倉庫管理員制定的入庫計劃快速入庫;船舶航行期間,餐廚工作人員每日提出領料申請單,倉庫管理員根據申請單結合庫存情況進行物資出庫;在進行出入庫操作時,倉庫管理員可根據需要配合使用手持PDA,并可對庫存物資進行盤點、倒庫等操作,船舶食品物資采購-消耗流程見圖2所示。
從系統的整體需求分析可見,系統主要應用在大型船舶上,其用戶為船舶上采購管理員、倉庫管理員、餐廚工作人員以及船舶領導等,用戶使用個人PC機通過船舶局域網訪問數據庫服務器,并根據不同角色賦予的操作權限進行不同的操作功能。硬件架構上,主要設備包括服務器、客戶端、移動設備、移動設備與服務器的通信等[15],系統硬件架構設計見圖3:
通過對系統的整體需求分析情況,并結合系統框架設計,可以將船舶食品倉庫管理信息系統分為基本信息管理、訂單管理、原料申領單管理、物資庫存管理、統計查詢與綜合管理6個功能模塊[16,17],其功能模塊如圖4所示。
包括物資字典、倉庫字典、供應商字典等,物資字典管理維護食品物資的基本信息,如編碼、名稱、供應商、單位、價格、規格、拼音簡碼及有效狀態等信息,并可對物資字典進行檢索與導出等操作,對批號效期是否需要管理進行設置;倉庫字典維護倉庫的基本信息,如倉庫編號、倉庫名稱、倉庫類型、倉庫面積、倉庫容積等信息。對這些信息可進行添加、編輯、刪除、導出等操作;在維護供應商字典時,食品物資按類別進行分類,供應商基本信息表主要包括供應商名稱、公司資質、聯系人、聯系方式、法人代表等基本信息。供應商基本信息表模塊的功能主要包括數據添加、數據修改和刪除等;
綜合考慮就餐人數、航行時間、餐費標準等信息,制定航行期間需要采購的食品物資的訂單品量表??蛇M行任意時間段內訂單的統計查詢與打印輸出,并支持對采購訂單進行手工增加、刪除、修改、確定等操作;
在客戶端,由餐廚工作人員提前一天根據次日食譜在客戶端填寫申領單,當申領數量大于庫存數量時,系統提示庫存量不足。工作人員結合庫存量提示與次日食譜進行修改,直至同時滿足庫存與食譜要求??蛇M行任意時間段內的申領單查詢與打印,在確認前可對申領單進行添加、編輯、刪除等操作;
是整個船舶食品倉庫管理信息系統的核心部分,包括物資入庫、物資出庫、物資盤點、物資倒庫,可使用手持PDA進行物資庫存管理相關數據的離線采集,同時,物資管理模塊實現預警管理,當發生物資庫存量低于設定的倉庫量值時,出現庫存量不足警告信息;當發生物資有效期快要臨近失效時,出現有效期將至預警信息。物資入庫方式有PDA導入、Excel導入與手工填入三種方式,三種方式均支持編輯、修改、追加、刪除、瀏覽等操作;物資盤點時,先進行盤點封庫,并形成盤點前庫存表,將盤點前庫存表導入PDA,使用PDA進入需盤點倉庫中進行盤點。將盤點數據錄入PDA中,將實際的盤點數據從PDA中導入系統,系統自動計算盤點差異數,按照差異數自動完成盤盈盤虧;物資出庫方式有逐日消耗出庫、PDA出庫、倒入物資出庫和手工填寫四種,逐日消耗出庫時,倉庫管理員在庫房庫存信息中根據餐廚工作人員的原料申領單信息進行出庫處理;PDA出庫時采用條碼掃描方式將物資出庫信息錄入PDA,并及時更新至軟件系統;
包括物資庫存信息、入庫匯總信息、出庫匯總信息及物資收發存信息的統計查詢,可按照物資名稱、倉庫名稱等條件檢索,并支持導出信息表操作;
包括安全設置、數據管理、系統日志和系統幫助。安全設置主要對系統用戶及用戶的角色與權限進行配置與設置。系統具有便捷的用戶增加、權限角色設置、用戶查找等功能;數據管理主要提供數據的局部與全部備份、轉貯、合并、刪除等功能;系統日志自動記錄登錄者的用戶名、使用的終端識別號,記錄操作者進入系統后進行的操作功能模塊、具體功能點和進行操作的類別等;系統幫助在應用軟件系統運行過程中提供功能模塊幫助。
本系統采用B/S三層架構方式開發,以Java、JSP等作為開發語言,在Jbuilder開發平臺下完成,交互界面設計同時使用Dreamweaver工具。Web服務器采用免費的Apache,應用服務器采用Tomcat,數據庫采用Oracle11g R2,客戶端只需使用瀏覽器即可。
數據庫連接[18]技術是衡量系統性能的重要指標之一,尤其在多用戶應用程序中,對數據庫連接的管理更能顯著影響到整個系統的伸縮性和健壯性。船舶食品倉庫管理信息系統使用Java編碼建立數據庫連接池[19]實現數據的存取。其基本思想是:在系統初始化時建立管理類Database Bean來支持對一個或多個的數據庫連接池訪問。同時,將數據庫連接作為對象存儲在內存中,用戶訪問數據庫中,連接的建立和斷開都由連接池自身來管理,極大地提高了數據庫的訪問能力。
限于篇幅有限,僅以物資入庫為例來說明系統的具體實現。倉庫管理員用戶通過系統登錄界面輸入正確的用戶名和密碼,進入系統。單擊系統左側庫存管理下拉菜單,隨后單擊手工入庫,若需要查詢時間段內入庫單信息,在開始時間與結束時間框內選擇相應時間,單擊檢索,出現圖5所示的手工入庫界面。用戶可根據實際需求情況對所有入庫單表進行編輯、確認、刪除、打印等操作。
數據表格查詢不使用傳統的ResultSet在前臺頁面顯示,而是通過建立一個DataSet類來進行顯示,在用戶進行查詢的時候,先初始化DataSet類,通過ResultSet查詢數據后給DataSet進行賦值,在前臺網頁顯示時使用DataSet類來循環顯示。錄入入庫數據時,使用JavaScript對文本框的輸入格式進行控制。利用form控件提交數據,保存物資時自動刷新表格。提交數據時使用JspCommit接口類進行統一調用,關鍵代碼如下:
public boolean SaveRKDB(modRKDB mod) {
//接口類調用業務邏輯層中的類進行保存入庫單物資
share.connDb(conndb)
RKDBEAI eai = new RKDBEAI(conndb)
boolean flg = eai.SaveRKDB(mod)
share.closeDb(conndb)
return flg
}
public boolean SaveRKDB(modRKDB mod) {
//業務邏輯層調用數據訪問層中的類進行插入和更新
boolean flg = false
String isql = "SELECT * FROM WZGL.入庫單表 WHERE 自動編號="+mod.getZDBH()+""
if (pub.chkTblExists(isql)) {
flg = updateRKDBZDBH(mod)
} else {
flg = insertRKDB(mod)
flg = flg && updateRKDB(mod)
}
return flg
}
上述過程實現了入庫數據的采集,以入庫為例,主要測試入庫數據采集的時效性與精確性。
針對入庫數據采集,進行多種采集方式測試,并與傳統Excel統計進行對比測試。為了盡可能地保證測試數據的真實性,將入庫數據設置為某一次出海前的實際入庫量。該次共計132種食品物資入庫,其中超市采購53種,供貨商供應72種,其它方式采購7種。對這3類采購方式分別使用3種方式進行數據采集,第一種方式為PDA上傳,適用于超市采購食品。借助當前通用EAN一維條形碼技術,使用手持PDA掃描每種食品包裝上的條形碼,然后輸入數量,選擇倉庫,點擊確認鍵,將入庫數據采集到手持PDA上。由于大多數船舶上尚未實現無線通訊,因此,還需在客戶端使用USB接口將手持PDA中的入庫數據導入到信息系統中;第二種方式為Excel導入,適用于指定供貨商供應的食品。供貨商在交貨時,根據指定格式提供包含所供食品編碼、名稱、數量等信息的光盤,倉庫管理員將光盤內容一次性導入系統;在既沒有固定供貨商,也沒有商品條形碼的情況下使用第三種方式手工添加。
在對比測試中,使用Excel統計進行入庫數據錄入時,為了保證測試的公平性,所有的食品名稱均有電子版本,測試時,只需要將紙質送貨單上對應的食品數量錄入到Excel即可。
采用系統3種方式進行入庫數據采集的耗時與準確率如表1所示。
表1 系統3種方式入庫數據采集耗時與準確率表 導出到EXCEL
物資數量 |
入庫數據采集方式 | 耗時 | 準確率 |
53 |
PDA上傳 | 5分32秒 | 100% |
72 |
Excel導入 | 5秒 | 100% |
7 |
手工添加 | 1分18秒 | 100% |
|
從表1中可以看出,對于132種不同采購方式的食品物資,采用3種數據采集方式,其數據準確率均可達到100%。在耗時方面,總共用時6分55秒,其中Excel用時最短,72種物資只需5秒鐘就可完成入庫數據采集:PDA上傳居中,53種物資用時5分32秒,平均采集每種物資入庫數據耗時不到7秒;手工添加耗時稍長,每種物資入庫數據采集不到10秒。因此,船舶食品在實際采購時,越來越傾向于尋找指定供應商作為長期合作伙伴,這樣不但有利于規范食品包裝,而且便于食品溯源,更加有助于做好船舶食品倉庫管理的前期準備工作。
采用系統進行入庫數據采集與傳統Excel統計進行數據錄入的時效性與準確率對比測試結果如表2所示。
從表2中可以看出,采用Excel進行入庫數據錄入時,其耗時久,準確率不到85%。究其原因,是持久、重復性的手工勞動帶來的人員疲勞與厭煩情緒,導致看錯行、想休息等現象的產生。經過實際計算可以認定,入庫數據整體采集速率提高了12.8倍,準確率上升15%。
船舶食品倉庫管理的計算機化和網絡化順應倉儲物流精細化管理的發展趨勢。系統采用B/S體系結構,客戶端界面友好,操作簡單,同時系統軟件采用構件化設計,在系統的開發中使用標準接口,使得系統具有良好的復用性及可擴展性。該系統的研究與實施,有效減少了人工操作帶來的誤差,提高了長遠航船舶食品保障效率,實現了船舶倉庫信息化管理,對我軍大型水面艦艇食品倉庫信息化管理具有一定的研究價值。
標簽:
上一篇: 基于VB和Access的倉庫管理系統
下一篇: 基于數據倉庫的無線電管理數據中心建設研究