物流管理系統(tǒng)中封倉(cāng)功能的設(shè)計(jì)與實(shí)現(xiàn)模板_第1頁(yè)
物流管理系統(tǒng)中封倉(cāng)功能的設(shè)計(jì)與實(shí)現(xiàn)模板_第2頁(yè)
物流管理系統(tǒng)中封倉(cāng)功能的設(shè)計(jì)與實(shí)現(xiàn)模板_第3頁(yè)
物流管理系統(tǒng)中封倉(cāng)功能的設(shè)計(jì)與實(shí)現(xiàn)模板_第4頁(yè)
物流管理系統(tǒng)中封倉(cāng)功能的設(shè)計(jì)與實(shí)現(xiàn)模板_第5頁(yè)
已閱讀5頁(yè),還剩53頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

物流管理系統(tǒng)中封倉(cāng)功能的設(shè)計(jì)與實(shí)現(xiàn)資料內(nèi)容僅供參考,如有不當(dāng)或者侵權(quán),請(qǐng)聯(lián)系本人改正或者刪除。南開(kāi)大學(xué)本科生畢業(yè)論文(設(shè)計(jì))題目:津菱物流管理系統(tǒng)中封倉(cāng)功能的設(shè)計(jì)與實(shí)現(xiàn)學(xué)號(hào):0010301姓名:韓曉瑋年級(jí):級(jí)學(xué)院:軟件學(xué)院系別:軟件工程專(zhuān)業(yè):軟件工程完成日期:5指導(dǎo)教師:張波副教授津菱物流系統(tǒng)庫(kù)內(nèi)管理封倉(cāng)部分的改進(jìn)軟件學(xué)院軟件工程系軟件工程專(zhuān)業(yè)韓曉瑋學(xué)號(hào):0010301指導(dǎo)教師:張波副教授摘要:津菱物流管理系統(tǒng)對(duì)良菱物流管理系統(tǒng)的二次開(kāi)發(fā),筆者主要負(fù)責(zé)對(duì)封倉(cāng)部分的改進(jìn)設(shè)計(jì)和實(shí)現(xiàn)。主要是根據(jù)津菱物流公司的實(shí)際業(yè)務(wù)流程修改了原有的手動(dòng)封倉(cāng)解封功能,并在此基礎(chǔ)上增加了過(guò)保質(zhì)期自動(dòng)封倉(cāng)以及解封的功能。并對(duì)整個(gè)封倉(cāng)部分做了功能測(cè)試,保證了與其它各個(gè)部分的兼容性。本文主要從項(xiàng)目背景和對(duì)原有系統(tǒng)的描述入手,介紹了津菱物流系統(tǒng)的總體業(yè)務(wù)流程,根據(jù)封倉(cāng)部分的需求分析,分析并描述了所需使用的主要技術(shù)。著重對(duì)封倉(cāng)部分設(shè)計(jì),系統(tǒng)實(shí)現(xiàn)進(jìn)行了介紹,并簡(jiǎn)單介紹了對(duì)系統(tǒng)所進(jìn)行的功能測(cè)試以及完成項(xiàng)目后的一些心得。關(guān)鍵字:物流系統(tǒng),封倉(cāng),Sybase,PowerBuilderAbstractJinLingLogisticsManagementSystemisarevisionversionoftheLiangLinLogisticsManagementSystem.Redesigningandimplementingthewarehousefrozeningistheobjectiveofthisthesis.BasedonJinLingCorp’sbusinessflow,wemainlymodifytheoriginmanualwarehousefreezingandunfrozeningfunctions,andaddthewarehouseauto-frozeningandauto-unfrozeningfunctionswhenthegoodspassedtheperiodofvalidationintothesystem.Wealsodothetestingofthewarehousefrozeningsub-system,andmakesuremyworkswon’thaveanycompatibilityproblemswiththeotherpartsofthewholesystem.Thisthesisstartswiththeintroductionoftheprojectbackgroundandtheoriginsystem,followedbythedescriptionofthemainbusinessflowofJinLingCorp.Basedontherequirementofwarehousefrozening,itanalysestheprimarytechniqueswhicharedemanded,andemphasizesonthepartsofsystemdesigningandimplementation.Atlast,thesystemtestingandprospectpartsaretouchedupon.KeyWords:LogisticsSystem,Warehousefrozening,Sybase,PowerBuilder目錄TOC\o"1-2"\h\z\u第一章緒論 11.1項(xiàng)目背景 11.2津菱物流管理系統(tǒng)概述 1第二章系統(tǒng)功能及需求 52.1封倉(cāng)部分功能概述 52.2封倉(cāng)部分原有功能描述 52.3封倉(cāng)部分需求分析 6第三章系統(tǒng)改進(jìn)設(shè)計(jì) 83.1開(kāi)發(fā)環(huán)境描述 83.2津菱系統(tǒng)總體設(shè)計(jì) 83.3封倉(cāng)部分主要技術(shù) 93.4PowerBuilder窗口設(shè)計(jì) 113.5數(shù)據(jù)庫(kù)相關(guān)設(shè)計(jì) 13第四章系統(tǒng)開(kāi)發(fā)實(shí)現(xiàn) 164.1PowerBuilder窗口實(shí)現(xiàn) 164.2存儲(chǔ)過(guò)程實(shí)現(xiàn) 21第五章系統(tǒng)功能測(cè)試 265.1封倉(cāng)及解封功能測(cè)試 265.2Sybasse數(shù)據(jù)庫(kù)的復(fù)制技術(shù) 30第六章項(xiàng)目總結(jié)與展望 336.1項(xiàng)目心得 336.2項(xiàng)目開(kāi)發(fā)展望 33致謝 35參考文獻(xiàn) 36第一章緒論1.1項(xiàng)目背景20世紀(jì)90年代中期,第三方物流(3PL)的概念開(kāi)始傳入中國(guó)。什么是第三方物流呢?第三方物流是由物品供、需兩方以外的企業(yè)提供物流服務(wù)的業(yè)務(wù)模式,是在供應(yīng)鏈中,企業(yè)以合同的形式在一定期限內(nèi)提供用戶(hù)所需的全部或部分物流服務(wù)。第三方物流企業(yè)的利潤(rùn)不是來(lái)自運(yùn)費(fèi)、倉(cāng)儲(chǔ)等直接費(fèi)用收入,而是來(lái)源于信息和知識(shí)。它可能包括、也可能不包括運(yùn)費(fèi)、倉(cāng)儲(chǔ)資產(chǎn)的所有權(quán)。津菱物流公司就是一個(gè)以第三方物流為主,兼營(yíng)其它幾種物流方式的現(xiàn)代物流公司。物流產(chǎn)業(yè)的發(fā)展已經(jīng)到了這樣一個(gè)階段:現(xiàn)代物流的信息系統(tǒng)已經(jīng)成為企業(yè)物流管理和操作的一個(gè)不可或缺的要件。到底,中國(guó)的IT業(yè)和電子商務(wù)市場(chǎng)約達(dá)到150億美元,供應(yīng)鏈管理的軟件和服務(wù)市場(chǎng)也達(dá)到40億美元。實(shí)際上,有沒(méi)有IT系統(tǒng)的支持已經(jīng)成為現(xiàn)代物流運(yùn)作的重要標(biāo)志之一。許多企業(yè)在選擇第三方物流服務(wù)供應(yīng)商的時(shí)候往往把它作為重要的前提條件。因此,企業(yè)選擇物流IT系統(tǒng),與其說(shuō)是一種信息技術(shù)選擇,不如說(shuō)是一種企業(yè)管理模式和市場(chǎng)競(jìng)爭(zhēng)戰(zhàn)略的選擇。一般來(lái)說(shuō),物流/供應(yīng)鏈管理系統(tǒng)的建立有兩條路徑:一是量身定制的開(kāi)發(fā);二是集成系統(tǒng)的導(dǎo)入。眾所周知,物流IT系統(tǒng)量身定制開(kāi)發(fā)的前提是企業(yè)物流運(yùn)作流程的設(shè)計(jì);集成系統(tǒng)的導(dǎo)入也往往要求企業(yè)改變現(xiàn)有的物流運(yùn)作流程。因此,無(wú)論走哪條路,企業(yè)建立物流IT系統(tǒng)的前提都是要確定其物流運(yùn)作流程。津菱物流管理系統(tǒng)就是在這種背景下從原有良菱物流管理系統(tǒng)的基礎(chǔ)上按照津菱物流公司業(yè)務(wù)流程度身改造而來(lái)。1.2津菱物流管理系統(tǒng)概述 津菱物流管理系統(tǒng)是為津菱物流公司度身改造的全方位物流管理軟件。它的原型是上海良菱物流公司所采用的物流管理軟件,其功能涵蓋了津菱物流公司的所有業(yè)務(wù)流程,從進(jìn)貨,到庫(kù)內(nèi)管理、盤(pán)點(diǎn),到出貨、退貨,均可在此軟件中完成。且此軟件可按照公司內(nèi)不同的角色提供不同的功能和權(quán)限。且此軟件對(duì)于公司簡(jiǎn)化工作流程,加快工作進(jìn)度,以適應(yīng)日益發(fā)展的業(yè)務(wù)以及企業(yè)信息化起到了非常積極的作用。津菱物流管理系統(tǒng)按其角色可分為庫(kù)內(nèi)管理操作員,系統(tǒng)操作員,采購(gòu)操作員,其中庫(kù)內(nèi)管理功能操作頻率可分為系統(tǒng)操作、進(jìn)貨、門(mén)店要貨、配送、倉(cāng)庫(kù)管理、各類(lèi)查詢(xún)和基本信息管理,如圖1-1所示:圖1-1:津菱系統(tǒng)庫(kù)內(nèi)管理操作員用例圖 系統(tǒng)操作部分的功能分為系統(tǒng)操作、基本信息管理、物價(jià)管理、結(jié)算、各類(lèi)查詢(xún)和統(tǒng)計(jì)分析。如圖1-2所示:圖1-2:系統(tǒng)操作員用例圖 采購(gòu)操作部分的功能分為系統(tǒng)操作、基本信息管理、進(jìn)貨和各類(lèi)查詢(xún),如下圖1-3所示:圖1-3:采購(gòu)操作員用例圖 倉(cāng)庫(kù)(即庫(kù)內(nèi)管理)又分為配送中心庫(kù)存維護(hù),配送中心商品封倉(cāng),配送中心移庫(kù),配送中心庫(kù)存盤(pán)點(diǎn),倉(cāng)庫(kù)損益,分揀倉(cāng)位優(yōu)化6個(gè)部分的操作以及庫(kù)存查詢(xún)功能。如下圖1-4所示:倉(cāng)庫(kù)倉(cāng)庫(kù)管理配送中心庫(kù)存維護(hù)配送中心商品封倉(cāng)配送中心移庫(kù)配送中心庫(kù)存盤(pán)點(diǎn)倉(cāng)庫(kù)損溢分揀倉(cāng)位優(yōu)化配送中心庫(kù)存查詢(xún)圖1-4:倉(cāng)庫(kù)內(nèi)管理模塊第二章系統(tǒng)功能及需求2.1封倉(cāng)部分功能概述封倉(cāng)是津菱物流管理系統(tǒng)庫(kù)內(nèi)管理中相當(dāng)重要的一部分。當(dāng)物流公司倉(cāng)庫(kù)內(nèi)的商品保質(zhì)期臨近,而商品按照正常的配送出庫(kù)方式尚需一定時(shí)間,因此即使立即出庫(kù),當(dāng)商品運(yùn)達(dá)要貨門(mén)店的時(shí)候已經(jīng)過(guò)了保質(zhì)期。因此對(duì)于即將到達(dá)保質(zhì)期的商品,需要進(jìn)行封倉(cāng)操作,使其不能參加出庫(kù)。而當(dāng)改進(jìn)了運(yùn)輸路線或者由于其它原因使得商品能夠在保質(zhì)期前送達(dá)的時(shí)候,又需要對(duì)指定日期之前過(guò)期的商品進(jìn)行解封,使其能夠參加配送出庫(kù)。由于可能在指定日期過(guò)期的商品進(jìn)行封倉(cāng)和解封操作的商品較多,因此需要對(duì)此操作實(shí)現(xiàn)批處理,即能夠一次性對(duì)多個(gè)商品進(jìn)行封倉(cāng)和解封。另外,由于一些其它原因,可能有一些個(gè)別商品不能參加配送,因此需要對(duì)這些商品進(jìn)行單獨(dú)的封倉(cāng)操作。由于不能參加配送,因此稱(chēng)此類(lèi)封倉(cāng)為”配送封倉(cāng)”。2.2封倉(cāng)部分原有功能描述 現(xiàn)系統(tǒng)中封倉(cāng)部分只有”配送中心封倉(cāng)商品查詢(xún)”,”配送中心自動(dòng)封倉(cāng)解封”,”配送中心手工封倉(cāng)解封”三個(gè)界面。只能對(duì)單個(gè)商品進(jìn)行個(gè)別的封倉(cāng)。其用例圖如圖2-1所示:圖2-1:原有的封倉(cāng)部分用例圖 操作員:即由系統(tǒng)提供的配送經(jīng)理郭頌的權(quán)限登陸配送封倉(cāng):對(duì)倉(cāng)庫(kù)內(nèi)存儲(chǔ)倉(cāng)位上的貨物進(jìn)行封倉(cāng),使其不能參加配送出庫(kù),一次只能操作一條記錄的商品。點(diǎn)菜封倉(cāng):對(duì)倉(cāng)庫(kù)內(nèi)存儲(chǔ)倉(cāng)位上的貨物進(jìn)行封倉(cāng),使其不能參加點(diǎn)菜配送,一次只能操作一條記錄的商品。解封:解封能夠?qū)σ呀?jīng)被封倉(cāng)的商品進(jìn)行解封操作,能夠一次解封一條商品記錄,或者用Ctrl或Shift鍵選擇多條記錄進(jìn)行解封。封倉(cāng)查詢(xún):能夠查詢(xún)出被任何封倉(cāng)類(lèi)型所封的商品記錄(包括配送封倉(cāng),保留庫(kù)存封倉(cāng),調(diào)換封倉(cāng),反品封倉(cāng),退貨封倉(cāng)等)。2.3封倉(cāng)部分需求分析總體描述:增加保質(zhì)期封倉(cāng)功能,并根據(jù)實(shí)際業(yè)務(wù)情況修改手工封倉(cāng)部分的功能,并保證封倉(cāng)部分與配送部分能夠兼容。其用例圖如圖2-2所示:圖2-2:改進(jìn)后的封倉(cāng)部分用例圖自動(dòng)封倉(cāng):對(duì)所有商品按照有效期進(jìn)行查詢(xún),并對(duì)距離有效期在一定時(shí)間之內(nèi)(默認(rèn)值為14天,可根據(jù)實(shí)際情況進(jìn)行修改)的商品進(jìn)行批處理封倉(cāng)。自動(dòng)封倉(cāng)解封:對(duì)所有被保質(zhì)期自動(dòng)封倉(cāng)的商品根據(jù)其有效期在某一時(shí)間段內(nèi)進(jìn)行查詢(xún),并對(duì)這些商品進(jìn)行批處理解封。也能夠?qū)Σ樵?xún)出來(lái)的商品進(jìn)行選中單個(gè)或多個(gè)商品進(jìn)行解封。配送封倉(cāng):與原有功能相同,檢查其兼容性。根據(jù)津菱公司的實(shí)際業(yè)務(wù)情況,取消點(diǎn)菜封倉(cāng)一項(xiàng),使手動(dòng)封倉(cāng)只能對(duì)商品進(jìn)行配送封倉(cāng),而不能進(jìn)行點(diǎn)菜封倉(cāng)。手工解封:在維持原有功能的基礎(chǔ)上,將手工解封的功能擴(kuò)大至既能夠解封手工封倉(cāng)的商品,也能夠解封自動(dòng)封倉(cāng)的商品。封倉(cāng)查詢(xún):在維持原有功能的基礎(chǔ)上,在封倉(cāng)查詢(xún)功能中添加自動(dòng)封倉(cāng)欄,并取消點(diǎn)菜封倉(cāng)相關(guān)欄目。如圖2-3所示:圖2-3:封倉(cāng)與配送出庫(kù)狀態(tài)圖

第三章系統(tǒng)改進(jìn)設(shè)計(jì)3.1開(kāi)發(fā)環(huán)境描述3.1.1服務(wù)器端環(huán)境硬件環(huán)境:穩(wěn)定服務(wù)器軟件環(huán)境:RedhatLinux7.3,Sybase客戶(hù)端環(huán)境硬件環(huán)境:普通PC機(jī)軟件環(huán)境:Microsoft公司W(wǎng)indows操作系統(tǒng)3.1.3開(kāi)發(fā)環(huán)境硬件環(huán)境:奔騰2.4GHzCPU,512MDDR內(nèi)存,17寸純平顯示器、顯存64M,80G硬盤(pán)。軟件環(huán)境:WindowsServer,Powbuilder7,SybaseCentral3.1,ERWin4.03.2津菱系統(tǒng)總體設(shè)計(jì)津菱物流管理系統(tǒng)的是專(zhuān)門(mén)針對(duì)公司內(nèi)部資源進(jìn)行管理,業(yè)務(wù)邏輯比較復(fù)雜,而且局限在公司局域網(wǎng)內(nèi)部使用,因此此管理系統(tǒng)在總體結(jié)構(gòu)設(shè)計(jì)上采取C/S的模式即能比較好的滿(mǎn)足客戶(hù)需求,采用此架構(gòu)模式能充分發(fā)揮客戶(hù)端PC的處理能力,很多工作能夠在客戶(hù)端處理后再提交給服務(wù)器,減輕了服務(wù)器的負(fù)擔(dān),因而客戶(hù)端響應(yīng)速度快。相比較于當(dāng)前流行的B/S架構(gòu)模式,在開(kāi)發(fā)上更簡(jiǎn)單易行,系統(tǒng)的安全性也更高。其體系架構(gòu)如圖3-1所示: RedhatLinux7.3服務(wù)器RedhatLinux7.3服務(wù)器Sybase12.5數(shù)據(jù)庫(kù)Windows操作系統(tǒng)客戶(hù)端發(fā)出SQL到服務(wù)器返回查詢(xún)結(jié)果到客戶(hù)端TCP/IP3.3封倉(cāng)部分主要技術(shù)3.3.1 縱觀PowerBuilder技術(shù),數(shù)據(jù)窗口(DataWindow)可是說(shuō)是其核心的核心,它使得數(shù)據(jù)庫(kù)的開(kāi)發(fā)和應(yīng)用變得更加簡(jiǎn)單,快捷。DataWindow能夠讓用戶(hù)在輸入數(shù)據(jù)和制作報(bào)表時(shí),以多種不同的風(fēng)格來(lái)顯示數(shù)據(jù)。DataWindow是一種為正在被觀察的數(shù)據(jù)保留數(shù)據(jù)信息的特有對(duì)象,因此,它為生成一個(gè)帶有高質(zhì)量的數(shù)據(jù)庫(kù)事務(wù)應(yīng)用程序提供了強(qiáng)大的處理工具。數(shù)據(jù)窗口對(duì)象的主要功能是顯示數(shù)據(jù)并允許用戶(hù)修改,因?yàn)樵跀?shù)據(jù)窗口對(duì)象中包含兩個(gè)主要組件:數(shù)據(jù)信息和顯示格式。數(shù)據(jù)窗口需要數(shù)據(jù)庫(kù)和其它非數(shù)據(jù)庫(kù)的數(shù)據(jù)資源來(lái)組裝自己,它按照定義時(shí)制定的表現(xiàn)風(fēng)格顯示。用戶(hù)定義了表現(xiàn)風(fēng)格后,能夠?qū)ζ溥M(jìn)行進(jìn)一步的修改,以增強(qiáng)數(shù)據(jù)窗口的功能。數(shù)據(jù)窗口不但自身顯示數(shù)據(jù)還能夠作為生成所有報(bào)表的數(shù)據(jù)源。在一個(gè)實(shí)際的應(yīng)用程序處理過(guò)程中,數(shù)據(jù)窗口一般位于應(yīng)用程序和數(shù)據(jù)庫(kù)中間,按應(yīng)用程序的要求來(lái)檢索,操縱并顯示數(shù)據(jù)。除了數(shù)據(jù)庫(kù)之外,數(shù)據(jù)窗口還能夠經(jīng)過(guò)ODBC,DDE(動(dòng)態(tài)數(shù)據(jù)交換),OLE(對(duì)象嵌入與連接)等方法訪問(wèn)文件中的數(shù)據(jù)。 數(shù)據(jù)窗口為應(yīng)用程序提供了數(shù)據(jù)源和檢索,操縱數(shù)據(jù)的方法與途徑。它包括數(shù)據(jù)窗口對(duì)象和數(shù)據(jù)窗口控件兩個(gè)方面。1.?dāng)?shù)據(jù)窗口對(duì)象 數(shù)據(jù)窗口對(duì)象是由數(shù)據(jù)窗口畫(huà)板創(chuàng)立,并作為一個(gè)獨(dú)立的對(duì)象存入PowerBuilder庫(kù)文件中。在實(shí)際應(yīng)用中,數(shù)據(jù)窗口對(duì)象經(jīng)過(guò)數(shù)據(jù)窗口控件被放置在窗口中。數(shù)據(jù)窗口對(duì)象能夠看成是封裝數(shù)據(jù)的容器,數(shù)據(jù)窗口控件能夠看作是窗口和數(shù)據(jù)窗口之間的連接件。數(shù)據(jù)窗口控件擁有自己獨(dú)立的屬性,函數(shù)和事件,擁有讀取和修改數(shù)據(jù)窗口對(duì)象屬性的函數(shù)(Describe和Modify)。數(shù)據(jù)窗口畫(huà)板是創(chuàng)立和修改數(shù)據(jù)窗口對(duì)象的地方。數(shù)據(jù)窗口對(duì)象創(chuàng)立以后,被定義為獨(dú)立對(duì)象,而不必將它們限定到某個(gè)特殊窗口,甚至不必將它們限定到某個(gè)應(yīng)用程序中。數(shù)據(jù)窗口對(duì)象能夠在窗口間進(jìn)行共享,能夠在需要訪問(wèn)相同表的不同應(yīng)用程序中使用相同的數(shù)據(jù)窗口對(duì)象,這體現(xiàn)了PowerBuilder的可重復(fù)使用性。2.?dāng)?shù)據(jù)窗口控件數(shù)據(jù)窗口對(duì)象是經(jīng)過(guò)一個(gè)數(shù)據(jù)窗口控件來(lái)引用的,經(jīng)過(guò)數(shù)據(jù)窗口控件將數(shù)據(jù)窗口對(duì)象放置到窗口中,并經(jīng)過(guò)數(shù)據(jù)窗口控件實(shí)現(xiàn)對(duì)數(shù)據(jù)窗口對(duì)象的操縱。在窗口中添加放置數(shù)據(jù)窗口控件和添加放置其它控件一樣。將數(shù)據(jù)窗口控件放置到窗口上,設(shè)定其位置和大小。將數(shù)據(jù)窗口控件連接到某個(gè)特定的數(shù)據(jù)窗口對(duì)象。編寫(xiě)腳本代碼,處理數(shù)據(jù)窗口控件和操縱數(shù)據(jù)窗口對(duì)象。3.3.2 存儲(chǔ)過(guò)程是存儲(chǔ)在數(shù)據(jù)庫(kù)中的一段存儲(chǔ)程序。當(dāng)創(chuàng)立存儲(chǔ)過(guò)程時(shí),系統(tǒng)會(huì)對(duì)其進(jìn)行編譯,并將執(zhí)行代碼存儲(chǔ)到數(shù)據(jù)庫(kù)中。存儲(chǔ)過(guò)程的優(yōu)點(diǎn):1)安全性當(dāng)創(chuàng)立了存儲(chǔ)過(guò)程之后,能夠?qū)?zhí)行該過(guò)程的權(quán)限授予其它用戶(hù),從而使得她能夠執(zhí)行特定的數(shù)據(jù)庫(kù)操作,而不能訪問(wèn)其它模式對(duì)象(例如表)。例如,你能夠?qū)?zhí)行過(guò)程(更新表)的權(quán)限授予其它用戶(hù),但不授予它們直接訪問(wèn)該表的權(quán)限。2)性能存儲(chǔ)過(guò)程只被發(fā)送到數(shù)據(jù)庫(kù)一次,相對(duì)于SQL語(yǔ)句或PL/SQL塊而言,其網(wǎng)絡(luò)通信量更小。當(dāng)調(diào)用存儲(chǔ)過(guò)程時(shí),數(shù)據(jù)庫(kù)會(huì)直接運(yùn)行該存儲(chǔ)過(guò)程,無(wú)需進(jìn)行編譯。相對(duì)于SQL語(yǔ)句而言,其執(zhí)行速度更快。3)內(nèi)存分配

存儲(chǔ)過(guò)程充分利用了Sybase共享內(nèi)存的能力。在將存儲(chǔ)過(guò)程裝載到內(nèi)存中后,多個(gè)用戶(hù)能夠同時(shí)調(diào)用該存儲(chǔ)過(guò)程,從而降低了應(yīng)用對(duì)Sybase的實(shí)際內(nèi)存需求。 3.3.3 由于PowerBuilder是完全支持面向?qū)ο蟮拈_(kāi)發(fā)工具,因此此系統(tǒng)的開(kāi)發(fā)運(yùn)用了大量的面向?qū)ο蟮乃枷?。如系統(tǒng)中的大部分窗口以及按鈕都是從同一個(gè)基類(lèi)繼承下來(lái),大大減少了重復(fù)的工作量,增強(qiáng)了軟件的復(fù)用性,加快了開(kāi)發(fā)進(jìn)程。3.4PowerBuilder窗口設(shè)計(jì)3.4.1過(guò)保質(zhì)期自動(dòng)封倉(cāng)窗口設(shè)計(jì)此窗口能夠?qū)︻A(yù)警天數(shù)進(jìn)行設(shè)定(默認(rèn)值是14天),設(shè)定完畢后能夠?qū)x定倉(cāng)庫(kù)編號(hào)和倉(cāng)位編號(hào)進(jìn)行查詢(xún)未被封倉(cāng)的商品。預(yù)警日期顯示的為系統(tǒng)當(dāng)前日期與預(yù)警天數(shù)相加的日期。在數(shù)據(jù)窗口中能夠?qū)Σ樵?xún)所得的商品進(jìn)行判斷,經(jīng)過(guò)checkbox決定是否將此商品自動(dòng)封倉(cāng)(默認(rèn)值為選中),點(diǎn)擊封倉(cāng)按鈕則可將約束條件下的商品進(jìn)行批處理封倉(cāng)。窗口對(duì)象:w_stkloc_autoclose_alarm數(shù)據(jù)窗口控件:dw_1數(shù)據(jù)窗口對(duì)象:d_stkloc_autoclose_alarm數(shù)據(jù)源存儲(chǔ)過(guò)程:Spq_Stk_CloseAlarm涉及表:Tbb_StkLoc

表3-1:封倉(cāng)窗口總體設(shè)計(jì)PB中的對(duì)象含義類(lèi)型w_stkloc_autoclose_alarm主窗口sy_w_sheetsle_2預(yù)警天數(shù)錄入框singlelineeditst_4預(yù)警天數(shù)statictextcbx_1打印復(fù)選框sy_u_cbxdw_2倉(cāng)庫(kù)編號(hào)數(shù)據(jù)窗口sy_u_dwdw_1數(shù)據(jù)輸出窗口sy_u_dwem_1預(yù)警日期顯示框sy_u_emst_3進(jìn)度條statictextsle_1倉(cāng)位編號(hào)輸入框sy_u_slest_2倉(cāng)位編號(hào)statictextst_1倉(cāng)庫(kù)編號(hào)statictext3.4.2過(guò)保自動(dòng)封倉(cāng)解封設(shè)計(jì)此窗口能夠設(shè)置解封起始日期和解封終止日期(默認(rèn)值解封起始日期為系統(tǒng)當(dāng)前日期,解封終止日期為系統(tǒng)當(dāng)前日期14天以后的日期),并在選定倉(cāng)庫(kù)信息和倉(cāng)位編號(hào)(能夠不填)后,點(diǎn)擊查詢(xún),能夠在數(shù)據(jù)窗口中得到當(dāng)前倉(cāng)庫(kù)和倉(cāng)位中有效期在解封起始日期和解封終止日期之間的被自動(dòng)封倉(cāng)商品。按住Ctrl和Shift鍵可對(duì)此數(shù)據(jù)窗口中的記錄進(jìn)行單選或者多選,點(diǎn)擊解封按鈕能夠?qū)⑦x中商品解封。窗口對(duì)象:w_stkloc_autoclose_unclose數(shù)據(jù)窗口控件:dw_list數(shù)據(jù)窗口對(duì)象:d_stkloc_autoclose_unclose涉及存儲(chǔ)過(guò)程:Spu_stkloc_unclose涉及表:Tbb_StkLoc

表3-2:解封窗口總體設(shè)計(jì)PB中的對(duì)象:含義類(lèi)型w_stkloc_autoclose_unclose主窗口sy_w_sheetdw_storage倉(cāng)庫(kù)信息下拉框dw_u_storage_queryst_1”倉(cāng)位編號(hào)”statictextsle_stkcell倉(cāng)位編號(hào)輸入框sy_u_sledw_list數(shù)據(jù)輸出窗口sy_u_dwst_2進(jìn)度條外框statictextst_3進(jìn)度條statictextem_1起始日期輸入窗口editmaskem_2終止日期輸入窗口editmaskst_4解封起始日期statictextst_5解封終止日期statictext3.4.3其它窗口的修改 1.在”配送中心手工封倉(cāng)”窗口w_stkloc_close中去掉”點(diǎn)菜封倉(cāng)”選項(xiàng):主要對(duì)其數(shù)據(jù)窗口控件d_stkloc_list進(jìn)行修改,使其中的”點(diǎn)菜封倉(cāng)”選項(xiàng)為不可見(jiàn),可是保留代碼,以留作以后的接口之用。2.在”配送中心封倉(cāng)商品查詢(xún)”窗口w_stkloc_close_query中去掉”點(diǎn)菜封倉(cāng)”復(fù)選框:主要對(duì)其數(shù)據(jù)窗口d_stkloc_close_query進(jìn)行修改,去掉”點(diǎn)菜封倉(cāng)”一欄。3.5數(shù)據(jù)庫(kù)相關(guān)設(shè)計(jì)3.5.1 封倉(cāng)部分功能的實(shí)現(xiàn)主要是編寫(xiě)存儲(chǔ)過(guò)程對(duì)數(shù)據(jù)庫(kù)中配送中心商品庫(kù)存表(Tbd_StkLoc)的進(jìn)行修改操作。表Tbd_StkLoc包含的各個(gè)字段:表示商品所屬標(biāo)識(shí)的字段:DeptId(配送中心部門(mén)標(biāo)識(shí)),StkLocId(配送中心庫(kù)存標(biāo)識(shí)),StkRegId(配送中心進(jìn)貨登記標(biāo)識(shí)),StorageId(配送中心倉(cāng)庫(kù)標(biāo)識(shí)),StkCellId(配送中心倉(cāng)位標(biāo)識(shí)),ProvId(供應(yīng)商標(biāo)識(shí)),ArtiId(基商品標(biāo)識(shí)),ImpArtiId(進(jìn)貨類(lèi)商品標(biāo)識(shí))表示商品基本信息的字段:ArtiClassCode(商品分類(lèi)碼),ImpInclQty(進(jìn)貨包裝基商品含量),ImpUnit(進(jìn)貨包裝計(jì)量單位),DistInclQty(配送包裝基商品含量),DistUnit(配送包裝計(jì)量單位)表示現(xiàn)存該商品信息的字段:StkQty(配送中心庫(kù)存單品數(shù)量),TolQty(配送中心庫(kù)存單品可配送數(shù)量),TaxPrice(庫(kù)存商品含稅進(jìn)價(jià)),UnTaxPrice(庫(kù)存商品無(wú)稅進(jìn)價(jià)),ITaxRate(商品進(jìn)項(xiàng)稅率),ImpDate(配送中心入庫(kù)日期),ProcDate(配送中心商品生產(chǎn)日期),ValidDate(配送中心商品有效日期),BatchCode(配送中心商品批號(hào)),GiftTypeId(贈(zèng)品類(lèi)型標(biāo)識(shí))表示庫(kù)內(nèi)該商品狀態(tài)的字段:AutoCloseMark(自動(dòng)封倉(cāng)允許標(biāo)志),CloseDate(封倉(cāng)日期),EmptyDate(倉(cāng)卡結(jié)零日期),StkStatus(配送中心庫(kù)存狀態(tài)),Note(配送中心庫(kù)存說(shuō)明),OptrId(操作員標(biāo)識(shí))此表中的StkStatus為商品的庫(kù)存狀態(tài)值,其具體含義如下:0-正常(可配送)1-正在配送(不可出庫(kù))2-手工點(diǎn)菜封倉(cāng)(可配送)4-手工配送封倉(cāng)(不可點(diǎn)菜,不可配送)8-到有效期自動(dòng)封倉(cāng)(不可點(diǎn)菜,不可配送)16-配送中心內(nèi)部返品封倉(cāng)(不可點(diǎn)菜,不可配送)32-配送返品封倉(cāng)(不可點(diǎn)菜,不可配送)64-保留庫(kù)存封倉(cāng)(不可點(diǎn)菜,不可配送)128-退貨封倉(cāng)(不可點(diǎn)菜,不可配送)256-與供應(yīng)商調(diào)換封倉(cāng)(不可點(diǎn)菜,不可配送)512-配送中心內(nèi)部移庫(kù)過(guò)程封倉(cāng)(中間狀態(tài))注:由于現(xiàn)有需求中對(duì)于點(diǎn)菜封倉(cāng)不做要求,因此在用戶(hù)操作界面上將與點(diǎn)菜封倉(cāng)有關(guān)的操作取消,可是考慮到由于公司以后業(yè)務(wù)的發(fā)展或者別的需求,點(diǎn)菜封倉(cāng)可能會(huì)在以后有所要求,因此在系統(tǒng)內(nèi)部實(shí)現(xiàn)中保留與點(diǎn)菜封倉(cāng)有關(guān)的字段及屬性,以留作做將來(lái)功能擴(kuò)展之用。3.5.2存儲(chǔ)過(guò)程 存儲(chǔ)過(guò)程主要完成對(duì)表的各種操作和修改,根據(jù)需求分析的要求,增加或修改了以下存儲(chǔ)過(guò)程:Spu_StkLoc_AutoClose:實(shí)現(xiàn)過(guò)保質(zhì)期封倉(cāng)操作Spq_Stk_CloseAlarm:d_stkloc_autoclose_alarm的數(shù)據(jù)源Spu_stkloc_unclose:實(shí)現(xiàn)了對(duì)單個(gè)商品的解封操作第四章系統(tǒng)開(kāi)發(fā)實(shí)現(xiàn)4.1PowerBuilder窗口實(shí)現(xiàn)4.1.1過(guò)保質(zhì)期自動(dòng)封倉(cāng)窗口主要實(shí)現(xiàn) 1.創(chuàng)立窗口主體w_stkloc_autoclose_alarm在PB中創(chuàng)立Object->Window->w_stkloc_autoclose_alarm,按照設(shè)計(jì),增各個(gè)控件:sle_2(singlelineedit),st_4(statictext),cbx_1(sy_u_cbx),dw_2(sy_u_dw),dw_1(sy_u_dw),em_1(sy_u_em),st_3(statictext),sle_1(sy_u_sle),st_2(statictext),st_1(statictext)。 2.?dāng)?shù)據(jù)窗口的構(gòu)建 編寫(xiě)存儲(chǔ)過(guò)程Spq_Stk_CloseAlarm,根據(jù)存儲(chǔ)過(guò)程的設(shè)計(jì)確定傳遞參數(shù): @m_DeptId int, /*配送中心部門(mén)標(biāo)識(shí)*/@m_StorageId int, /*配送中心倉(cāng)庫(kù)標(biāo)識(shí)*/@m_StkCellNo varchar(20), /*配送中心倉(cāng)位編碼*/@m_ValidDays datetime /*預(yù)計(jì)封倉(cāng)日*/在實(shí)現(xiàn)查詢(xún)功能的事件sy_query中調(diào)用此數(shù)據(jù)窗口控件的retrieve函數(shù),并確定定此四個(gè)參數(shù)后數(shù)據(jù)窗口即調(diào)用存儲(chǔ)過(guò)程進(jìn)行查詢(xún),并將結(jié)果顯示在數(shù)據(jù)窗口控件dw_1。參數(shù)值均從主窗口中的輸入控件取得,主要代碼如下: li_storageid=dw_2.object.storageid[dw_2.getrow()] s_stkcellno=sle_1.text ls_stkcellno=sle_1.textld_em1=date(em_1.text)ld_date=datetime(ld_em1)li_bak=dw_1.retrieve(il_storeid,li_storageid,'%'+trim(ls_stkcellno)+'%',ld_date) 3.封倉(cāng)功能的實(shí)現(xiàn)(sy_autofengcang)封倉(cāng)功能是經(jīng)過(guò)事件sy_autofengcang實(shí)現(xiàn)的,在此事件中調(diào)用存儲(chǔ)過(guò)程Spu_Stkloc_AutoClose,傳遞兩個(gè)參數(shù):@m_AlarmDayint,--過(guò)保預(yù)警天數(shù)@m_CloseDatedatetime=null --當(dāng)前日期該存儲(chǔ)過(guò)程實(shí)現(xiàn)對(duì)有效期在封倉(cāng)日期之前的商品進(jìn)行封倉(cāng)操作。事件在調(diào)用存儲(chǔ)過(guò)程完畢之后,再次調(diào)用查詢(xún)函數(shù),刷新數(shù)據(jù)窗口:this.triggerevent('sy_query') 4.關(guān)閉窗口事件(closequery)當(dāng)用戶(hù)改變了商品的自動(dòng)封倉(cāng)狀態(tài)后如果沒(méi)有保存就關(guān)閉窗口,則系統(tǒng)回提示用戶(hù)進(jìn)行保存:ifdw_1.getnextmodified(0,primary!)>0thenll_result=messagebox('提示','數(shù)據(jù)已經(jīng)修改,是否保存?',Question!,yesnocancel!,3)5.其它功能此窗口中的其它功能按鈕均從系統(tǒng)中的父類(lèi)繼承,分別實(shí)現(xiàn)了復(fù)位,保存,另存,預(yù)覽,打印,關(guān)閉等功能。并能對(duì)數(shù)據(jù)窗口中的選中記錄進(jìn)行到首,向前,向后,到尾操作。4.1.2過(guò)保質(zhì)期自動(dòng)封倉(cāng)解封窗口主要實(shí)現(xiàn)1.創(chuàng)立窗口主體w_stkloc_autoclose_unclose在PB中創(chuàng)立Object->Window->w_stkloc_autoclose_unclose,按照設(shè)計(jì),增各個(gè)控件:dw_storage(dw_u_storage_query),st_1(statictext),sle_stkcell(sy_u_sle),dw_list(sy_u_dw),st_2(statictext),st_3(statictext),em_1(editmask),em_2(editmask),st_4(statictext),st_5(statictext)。2.?dāng)?shù)據(jù)窗口的構(gòu)建經(jīng)過(guò)SQLQuery形式構(gòu)造數(shù)據(jù)窗口對(duì)象d_stkloc_autoclose_unclose,從表:dbo.Tbb_Article(商品基表)dbo.Tbd_StkCell(倉(cāng)位類(lèi)型表)dbo.Tbd_StkLoc(配送中心商品庫(kù)存明細(xì)表)dbo.Tbd_StkStorage(配送中心倉(cāng)庫(kù)表) 中選取數(shù)據(jù),返回給數(shù)據(jù)窗口控件,作為查詢(xún)調(diào)用的結(jié)果。檢索參數(shù): li_deptidnumber 配送中心部門(mén)標(biāo)識(shí) li_storgeidnumber 配送中心倉(cāng)庫(kù)標(biāo)識(shí) ls_stkcellnostring 配送中心倉(cāng)位編號(hào) ld_datestartDatetime 解封起始日期 ld_dateendDatetime 解封終止日期確定檢索條件(即已被封倉(cāng),且有效期在規(guī)定的時(shí)間段內(nèi)的商品):Where(dbo.Tbd_StkLoc.StkStatus&8<>0))AND/*按位操作取StkStatus為8的商品*/(dbo.Tbd_StkLoc.ValidDate>=:ld_datestartanddbo.Tbd_StkLoc.ValidDate<=:ld_dateend) /*即有效期在解封其實(shí)日期與解封終止日期之間*/3.查詢(xún)事件(sy_query)的實(shí)現(xiàn):取得用戶(hù)輸入的”解封起始日期”和”解封終止日期”,并轉(zhuǎn)化稱(chēng)字符串: ld_em1=date(em_1.text)ld_datestart=datetime(ld_em1)ls_datestart=string(ld_datestart,'yyyy/mm/dd')ld_em2=date(em_2.text)ld_dateend=datetime(ld_em2)ls_dateend=string(ld_dateend,'yyyy/mm/dd')對(duì)用戶(hù)輸入的日期進(jìn)行判斷其正確性ifls_datestart<='1900/01/01'then /*起始日期不得早于191月1日*/ messagebox('提示信息','起始日期不合法') em_1.setfocus() return-1endififls_dateend<ls_datestartthen /*終止日期不得早于起始日期*/ messagebox('提示信息','終止日期不能夠比起始日期小') em_2.setfocus() return-1endififls_dateend>'2050/12/31'orls_dateend='1900/01/01'then /*終止日期不得晚于2050年12月31日或者等于191月1日*/ messagebox('提示信息','終止日期不合法') em_2.setfocus() return-1endif根據(jù)用戶(hù)輸入的檢索信息對(duì)數(shù)據(jù)庫(kù)進(jìn)行檢索,主要由調(diào)用數(shù)據(jù)窗口控件,并傳給其參數(shù)實(shí)現(xiàn):ifisnull(ls_stkcellno)orls_stkcellno=''then ls_stkcellno='' li_bak=dw_list.retrieve(ll_deptid,ll_storageid,ls_stkcellno,ld_datestart,ld_dateend)else li_bak=dw_list.retrieve(ll_deptid,ll_storageid,'%'+ls_stkcellno+'%',ld_datestart,ld_dateend)endif對(duì)于窗口菜單及工具欄按鈕是否可用的設(shè)置:lm_menu.of_disable(lm_menu.m_oper.m_next)lm_menu.of_disable(lm_menu.m_oper.m_bottom)lm_menu.of_disable(lm_menu.m_oper.m_previous)lm_menu.of_disable(lm_menu.m_oper.m_top) 4.解封事件(sy_jiefeng)的實(shí)現(xiàn):主要由存儲(chǔ)過(guò)程Spu_Stkloc_unclose實(shí)現(xiàn)對(duì)單個(gè)商品的解封,由于需要實(shí)現(xiàn)能夠?qū)蝹€(gè)或者多各選中商品的批處理解封,故需要在解封事件中循環(huán)調(diào)用此存儲(chǔ)過(guò)程。與存儲(chǔ)過(guò)程Spu_Stkloc_unclose的參數(shù)傳遞:DECLAREfengcangPROCEDUREFORdbo.Spu_stkloc_unclose@m_DeptId=:li_deptid, /*配送中心部門(mén)標(biāo)識(shí)*/@m_StkLocId=:ll_stklocid, /*配送中心庫(kù)存標(biāo)識(shí)*/ @m_StkStatus=:li_stkstatus, /*配送中心庫(kù)存狀態(tài)*/ @m_Note=:ls_note, /*配送中心庫(kù)存說(shuō)明*/ @m_OptrId=:li_optrid, /*操作員編號(hào)*/ @m_error=:li_bakoutput; /*出錯(cuò)信息*/sqlca.autocommit=trueexecutefengcang;循環(huán)調(diào)用存儲(chǔ)過(guò)程:forll_row=1toll_maxrow ifdw_list.isselected(ll_row)then /*調(diào)用存儲(chǔ)過(guò)程具體實(shí)現(xiàn)代碼*/ endif next解封結(jié)果處理:ifll_rowpoint=ii_rowallthen /*解封成功*/ messagebox('提示信息','解封成功!') st_3.visible=false lm_menu.of_disable(lm_menu.m_edit.m_item_1) ib_firstquery=false this.triggerevent('sy_query') return1else ifll_rowpoint=1then /*解封失敗*/ messagebox('提示信息','解封失敗!') elseifll_rowpoint>1then messagebox('提示信息','所選中的記錄沒(méi)有完全解封成功!') ib_firstquery=false this.triggerevent('sy_query') endif st_3.visible=false lm_menu.of_disable(lm_menu.m_edit.m_item_1) return-1endif5.其它功能此窗口中的其它功能按鈕亦從系統(tǒng)中的父類(lèi)繼承,分別實(shí)現(xiàn)了復(fù)位,保存,另存,預(yù)覽,打印,關(guān)閉等功能。并能對(duì)數(shù)據(jù)窗口中的選中記錄進(jìn)行到首,向前,向后,到尾操作。4.1.3手工封倉(cāng)解封及查詢(xún)主要實(shí)現(xiàn) 1.在手工封倉(cāng)中去掉點(diǎn)菜封倉(cāng)的下拉菜單項(xiàng): 打開(kāi)數(shù)據(jù)窗口控件d_stkloc_list,修改其中下拉列表控件tbd_stkloc_stkstatus的edit屬性中的codetable內(nèi)容,去掉”點(diǎn)菜封倉(cāng)”。 2.在配送中心封倉(cāng)商品查詢(xún)中去掉點(diǎn)菜封倉(cāng)的復(fù)選框 打開(kāi)數(shù)據(jù)窗口控件的d_stkloc_close_query,去掉其中的obj_34688604控件即可。4.2存儲(chǔ)過(guò)程實(shí)現(xiàn)4.2.1Spq_Stk_CloseAlarm 此存儲(chǔ)過(guò)程被窗口w_stkloc_autoclose_alarm中的數(shù)據(jù)窗口對(duì)象調(diào)用,實(shí)現(xiàn)了對(duì)有效期在預(yù)警日期之前的存儲(chǔ)倉(cāng)位商品進(jìn)行查詢(xún)的功能。其功能實(shí)現(xiàn)如下: 1)由用戶(hù)在窗口輸入框中的輸入確定查詢(xún)范圍,如果有些輸入框沒(méi)有輸入,則默認(rèn)為這些輸入框中的內(nèi)容不受限制,及全部選中。將結(jié)果放入臨時(shí)表#StkCell中: select @m_StorageId=isnull(@m_StorageId,0),@m_ValidDays=isnull(@m_ValidDays,dateadd(dd,1,getdate()))if@m_StkCellNoisNULLselect@m_StkCellNo='%'elseifcharindex(@m_StkCellNo,'%')=0select @m_StkCellNo=rtrim(@m_StkCellNo)+'%'select c.DeptId,c.StorageId,StorageNo,StkCellId,StkCellNointo #StkCell 2)由于在分揀倉(cāng)位以及傾斜貨架(津菱系統(tǒng)不要求,但作為以后的擴(kuò)展接口保留此類(lèi)型貨架)上的商品不能被封倉(cāng),因此不能在此窗口中顯示這些商品:Wherec.StkCellTypeIdnotin(100,110)/*StkCellTypeId為100和110,為放在分揀倉(cāng)位和傾斜貨架上的商品*/ 3)Tbb_Article表中LInclQty定義為==商品的提前報(bào)警天數(shù)將庫(kù)存Tbd_StkLoc中ValidDate-LInclQty<@m_ValidDays沒(méi)有封倉(cāng)的商品查詢(xún)出來(lái)from Tbd_StkLoca,#StkCellb,Tbb_Articlecwhere a.DeptId=b.DeptIdand a.StkCellId=b.StkCellIdand a.ArtiId=c.ArtiIdand a.StorageId=b.StorageIdand StkStatus<4 /*即選擇沒(méi)有被封倉(cāng)的商品*/and a.StkQty>0 /*選擇庫(kù)存商品數(shù)量不為零的商品*/and a.ValidDate<=@m_ValidDays 4)檢索得到的結(jié)果返回給數(shù)據(jù)窗口對(duì)象d_stkloc_listselect DeptId,StkLocId,StkCellNo,ArtiCode,ArtiName,ArtiSpec,Qty=convert(int,StkQty/DistInclQty),ArtiSpec,DistSubQty=StkQty–convert(int,StkQty/DistInclQty)*DistInclQty,ProcDate,ValidDate,AutoCloseMark,StkStatus,StorageNo,DistInclQty,DistUnit,LInclQtyasWarnDatefrom #StkLocs,Tbb_Articleawhere s.ArtiId=a.ArtiIdreturn14.2.2Spu_Stkloc_AutoClose 此存儲(chǔ)過(guò)程被窗口w_stkloc_autoclose_alarm中的自動(dòng)封倉(cāng)事件sy_autofengcang調(diào)用,主要實(shí)現(xiàn)了將庫(kù)內(nèi)商品中有效期在預(yù)警日期之前的商品全部封倉(cāng),其功能實(shí)現(xiàn)如下: 1)定義變量@m_StkStatus和@m_Note,為改變商品庫(kù)存狀態(tài)(即將Tbd_StkLoc表中該商品的StkStatus字段值改為8)以及庫(kù)存狀態(tài)說(shuō)明(即將Tbd_StkLoc表中該商品的Note字段值改為”過(guò)保自動(dòng)封倉(cāng)”)作準(zhǔn)備: declare@m_StkStatus smallint, /*封倉(cāng)狀態(tài)*/@m_Notevarchar(100)select@m_StkStatus=8,@m_Note='過(guò)保自動(dòng)封倉(cāng)' 2)改變封倉(cāng)狀態(tài)和商品庫(kù)存狀態(tài)說(shuō)明:update Tbd_StkLocset StkStatus=StkStatus|@m_StkStatus,Note=@m_Note,CloseDate=getdate()fromTbb_Articlea,Tbd_StkLocl,Tbd_StkCells 其更改條件為:wheredateadd(dd,@m_AlarmDay,@m_CloseDate)>=l.ValidDate /*選擇有效期在預(yù)警日期之前的商品*/and a.ArtiId=l.ArtiIdand AutoCloseMark=1/*即允許自動(dòng)封倉(cāng)*/and StkStatus<4 /*0-正常(可配送),1-正在配送(不可出庫(kù)),2工點(diǎn)菜封倉(cāng)(可配送)均可自動(dòng)封倉(cāng)*/and l.StkQty <>0 /*配送中心庫(kù)存單品數(shù)量為0的商品不能進(jìn)行自動(dòng)封倉(cāng)*/ands.DeptId=l.DeptIdands.StkCellId=l.StkCellIdands.StorageId=l.StorageIdands.StkCellTypeIdnotin(100,110) /*分撿倉(cāng)位和傾斜貨架上的商品不能進(jìn)行自動(dòng)封倉(cāng)*/ 3)若操作失敗,則事務(wù)自動(dòng)回滾: begintransactionsavetransactionstkloc_close/*具體操作內(nèi)容*/if @@error<>0beginprint'過(guò)保自動(dòng)封倉(cāng)過(guò)程修改庫(kù)存狀態(tài)失敗'rollbacktransactionstkloc_closecommittransactionraiserror556677,'過(guò)保自動(dòng)封倉(cāng)過(guò)程修改庫(kù)存狀態(tài)失敗.'end committransaction4.2.3Spu_Stkloc_unclose 此存儲(chǔ)過(guò)程主要實(shí)現(xiàn)了對(duì)指定庫(kù)存標(biāo)識(shí)的單個(gè)商品的解封,并可將用戶(hù)輸入的說(shuō)明,作為系統(tǒng)數(shù)據(jù)庫(kù)內(nèi)對(duì)該商品的配送中心庫(kù)存說(shuō)明,主要實(shí)現(xiàn)如下: 1)設(shè)置該商品的配送中心庫(kù)存狀態(tài)為正常,并將用戶(hù)輸入的說(shuō)明作為表內(nèi)配送中心庫(kù)存說(shuō)明字段的值: setStkStatus=StkStatus&(~@m_StkStatus),Note=@m_NotewhereDeptId=@m_DeptIdandStkLocId=@m_StkLocId 2)如果數(shù)據(jù)庫(kù)出錯(cuò),設(shè)置事務(wù)自動(dòng)回滾,并返回出錯(cuò)信息: begintransactionupdateTbd_StkLoc/*對(duì)數(shù)據(jù)庫(kù)的表操作*/if@@rowcount<>1beginrollbacktransactionraiserror40033"數(shù)據(jù)庫(kù)出錯(cuò)(updateTbd_StkLoc)"select@m_error=-1return@m_errorendcommittransactionselect@m_error=0return0第五章系統(tǒng)功能測(cè)試5.1封倉(cāng)及解封功能測(cè)試5.1.1測(cè)試環(huán)境描述測(cè)試環(huán)境與開(kāi)發(fā)環(huán)境采用相同的軟硬件配置,其平臺(tái)構(gòu)架如圖5-1:ClientClientServerServerDatabase圖5-1:測(cè)試環(huán)境平臺(tái)構(gòu)架5.1.2測(cè)試數(shù)據(jù)設(shè)計(jì)1)測(cè)試整體構(gòu)思設(shè)計(jì)由于開(kāi)發(fā)工具PowerBuilder是一個(gè)完全的可視化開(kāi)發(fā)環(huán)境,它采用事件驅(qū)動(dòng)的工作方式。在這種工作方式中,程序的運(yùn)行沒(méi)有固定的流程,程序中的代碼也是為各種可能發(fā)生的事件而編寫(xiě),用戶(hù)能夠經(jīng)過(guò)編寫(xiě)腳原來(lái)說(shuō)明當(dāng)事件被觸發(fā)時(shí)所要完成的處理過(guò)程,這樣程序便被寫(xiě)成許多獨(dú)立的片段。當(dāng)程序開(kāi)始運(yùn)行之后,它就能夠接受來(lái)自系統(tǒng),用戶(hù)或者其它應(yīng)用程序觸發(fā)的事件,然后執(zhí)行相應(yīng)的事件代碼。這種事件驅(qū)動(dòng)的開(kāi)發(fā)環(huán)境方便了程序的開(kāi)發(fā),可是給測(cè)試帶來(lái)了一定的困難。由于代碼分布在各個(gè)獨(dú)立的事件之中,因此很難對(duì)系統(tǒng)進(jìn)行結(jié)構(gòu)性測(cè)試。故決定對(duì)該系統(tǒng)采用單元測(cè)試和集成測(cè)試。單元測(cè)試在開(kāi)發(fā)時(shí)完成,主要是對(duì)完成的代碼進(jìn)行功能性測(cè)試,在完成所有的開(kāi)發(fā)任務(wù)后,進(jìn)行集成測(cè)試,本文測(cè)試部分主要側(cè)重集成測(cè)試。2)測(cè)試模塊的設(shè)計(jì)集成測(cè)試深入要集成的模塊順序有四種選擇:自頂向下集成,自底向上集成,三明治集成,大爆炸集成。其中大爆炸集成最容易:這種集成將所有單元放在一起編譯并進(jìn)行一次性測(cè)試。這種方法缺點(diǎn)是,當(dāng)(不是如果!)發(fā)現(xiàn)失敗時(shí),沒(méi)有多少線索能夠用來(lái)幫助確定缺陷位置,故不采用。鑒于本人所開(kāi)發(fā)的部分為原系統(tǒng)的一部分,而該部分內(nèi)容又由一些相關(guān)的功能模塊組成,且這些功能模塊總體上的功能為平行的,因此采用三明治集成。三明治集成是自頂向下和自底向上集成的組合,如果經(jīng)過(guò)分解樹(shù)考慮三明治集成,則只需在子樹(shù)上真正進(jìn)行大爆炸集成。又由于本部分為原系統(tǒng)的一部分,因此在進(jìn)行集成測(cè)試時(shí)不需專(zhuān)門(mén)開(kāi)發(fā)樁和驅(qū)動(dòng)模塊,可直接采用原系統(tǒng)的調(diào)用該部分和被該部分調(diào)用的功能模塊。根據(jù)不同的功能實(shí)現(xiàn),將封倉(cāng)部分三明治集成測(cè)試主要結(jié)構(gòu)設(shè)計(jì)如圖5-2:配送出庫(kù)部分與封倉(cāng)關(guān)系密切配送配送出庫(kù)部分與封倉(cāng)關(guān)系密切配送出庫(kù)自動(dòng)封倉(cāng)手工封倉(cāng)手工解封封倉(cāng)查詢(xún)自動(dòng)解封查詢(xún)解封圖5-2:封倉(cāng)部分三明治集成圖在進(jìn)行完三明治集成測(cè)試之后,再對(duì)整個(gè)系統(tǒng)進(jìn)行系統(tǒng)測(cè)試,其流程如圖5-3:進(jìn)貨進(jìn)貨庫(kù)內(nèi)管理配送出庫(kù)采購(gòu)定單錄入進(jìn)貨登記入庫(kù):封倉(cāng)部分要貨單錄入配送啟動(dòng)配送出庫(kù)圖5-3:系統(tǒng)測(cè)試流程圖3)測(cè)試數(shù)據(jù)的設(shè)計(jì):I.三明治集成:自動(dòng)封倉(cāng)部分:采用庫(kù)內(nèi)已有商品進(jìn)行查詢(xún),然后對(duì)指定商品封倉(cāng)。自動(dòng)解封部分:此用庫(kù)內(nèi)已自動(dòng)封倉(cāng)的商品進(jìn)行查詢(xún),然后對(duì)指定商品進(jìn)行解封。手動(dòng)封倉(cāng)解封與配送出庫(kù)的集成:在”配送中心庫(kù)存商品封倉(cāng)(w_stkloc_close)”窗口中對(duì)某一商品進(jìn)行”配送封倉(cāng)”,并在”配送中心手工封倉(cāng)解封”將該商品解封,并測(cè)試這些操作對(duì)該商品的配送產(chǎn)生怎樣的影響。自動(dòng)封倉(cāng)解封與配送出庫(kù)的集成:在”配送中心商品封倉(cāng)預(yù)警”中對(duì)一批商品進(jìn)行封倉(cāng),并在”配送中心自動(dòng)封倉(cāng)解封”進(jìn)行解封,并測(cè)試這些操作對(duì)該商品的配送產(chǎn)生怎樣的影響。II.系統(tǒng)測(cè)試:將一批商品從整個(gè)系統(tǒng)的業(yè)務(wù)流程:進(jìn)貨->庫(kù)內(nèi)管理->出庫(kù),進(jìn)行測(cè)試。5.1.3測(cè)試過(guò)程I.三明治集成:自動(dòng)封倉(cāng)部分:打開(kāi)”配送中心商品封倉(cāng)預(yù)警”窗口,設(shè)置預(yù)警天數(shù)為90天,查詢(xún)所得數(shù)據(jù)為有效期在系統(tǒng)日期后90天以?xún)?nèi)的所有存儲(chǔ)倉(cāng)位未被封倉(cāng)商品,查詢(xún)功能正常。b.將查詢(xún)所得所有商品進(jìn)行過(guò)保質(zhì)期自動(dòng)封倉(cāng)。打開(kāi)”配送中心自動(dòng)封倉(cāng)解封”查詢(xún)已自動(dòng)封倉(cāng)商品,發(fā)現(xiàn)所封商品均在此處出現(xiàn),封倉(cāng)功能正常。自動(dòng)解封部分:a.打開(kāi)”配送中心自動(dòng)封倉(cāng)解封”窗口,設(shè)置”解封起始日期”為”/03/10”,”解封終止日期”為”/09/10b.選中其中一條記錄,點(diǎn)擊”解封”,然后打開(kāi)”配送中心商品封倉(cāng)預(yù)警”窗口查詢(xún),發(fā)現(xiàn)此商品均已解封?;氐浇夥獯翱?選中所商品,點(diǎn)擊”解封”,再回到預(yù)警窗口,發(fā)現(xiàn)所有所有商品均已解封,解封功能正常。手動(dòng)封倉(cāng)解封與配送出庫(kù)的集成: 測(cè)試使用商品數(shù)據(jù): 10001 利民釀造醬油 a.倉(cāng)庫(kù)->配送中心商品封倉(cāng)->配送中心庫(kù)存商品封倉(cāng)(w_stkloc_close) b.門(mén)店要貨->要貨單錄入(w_out_entry) c.配送->配送啟動(dòng)->配送啟動(dòng)(w_dist_multimanner): d.配送->配送出庫(kù)->配送出庫(kù)(w_distribution)自動(dòng)封倉(cāng)解封與配送出庫(kù)的集成:說(shuō)明:此部分記錄了與封倉(cāng)有關(guān)的配送測(cè)試數(shù)據(jù),發(fā)現(xiàn)已封倉(cāng)商品將不能參與配送出庫(kù),且已封倉(cāng)商品的出庫(kù)單號(hào)將不被記錄在數(shù)據(jù)庫(kù)中當(dāng)前測(cè)試計(jì)算機(jī)系統(tǒng)時(shí)間:-系統(tǒng)自動(dòng)封倉(cāng)預(yù)警天數(shù):90,封倉(cāng)日期:/07/03測(cè)試使用商品數(shù)據(jù):商品編號(hào)商品名稱(chēng)庫(kù)存數(shù)量倉(cāng)位編號(hào)倉(cāng)卡號(hào)有效期1000001喜之郎10粒高纖1*4810袋CA08-2-024947/03/12a.配送中心商品封倉(cāng)預(yù)警w_stkloc_autoclose_alarmb.要貨單錄入w_out_entryc.配送啟動(dòng)w_dist_multimannerd.配送出庫(kù)w_distributionII.系統(tǒng)測(cè)試此部分文檔記錄了一次從進(jìn)貨-要貨-配送-出庫(kù)全過(guò)程的數(shù)據(jù)流程,主要目的是發(fā)現(xiàn)當(dāng)修改了封倉(cāng)部分代碼后系統(tǒng)的其它部分是否能正常工作,即是否破壞原有功能,故倉(cāng)庫(kù)內(nèi)部管理部分沒(méi)有算在這次測(cè)試業(yè)務(wù)流程之內(nèi)。進(jìn)貨->進(jìn)貨與登記入庫(kù)->采購(gòu)訂單錄入進(jìn)貨->進(jìn)貨與登記入庫(kù)->進(jìn)貨登記與入庫(kù)門(mén)店要貨->要貨單錄入配送->配送啟動(dòng)->配送啟動(dòng)配送->配送出庫(kù)->配送出庫(kù)5.1.4測(cè)試結(jié)果1)三明治集成測(cè)試結(jié)果分析配送中心自動(dòng)封倉(cāng)解封功能正常,配送中心手動(dòng)封倉(cāng)解封功能正常,且被封倉(cāng)商品雖然能夠被要貨可是最終不能被配送出庫(kù),被解封后能參加配送出庫(kù)。2)系統(tǒng)測(cè)試結(jié)果分析封倉(cāng)部分更改基本不會(huì)影響系統(tǒng)原有功能的實(shí)現(xiàn)。5.2Sybasse數(shù)據(jù)庫(kù)的復(fù)制技術(shù)5.2.1為什么要進(jìn)行數(shù)據(jù)庫(kù)復(fù)制?當(dāng)項(xiàng)目在進(jìn)行手工封倉(cāng)解封和配送出庫(kù)的集成測(cè)試的時(shí)候,測(cè)試變得難以進(jìn)行,因?yàn)榘l(fā)現(xiàn)雖然把存儲(chǔ)倉(cāng)位中某種商品全部都配送封倉(cāng),可是在配送出庫(kù)階段總能出庫(kù),可是在代碼中我又找不到錯(cuò)誤,令人百思不得其解。后來(lái)發(fā)現(xiàn),原來(lái)同組財(cái)務(wù)部分的開(kāi)發(fā)人員正在往倉(cāng)庫(kù)里進(jìn)貨,因此盡管把庫(kù)中現(xiàn)存的商品全部封倉(cāng),可是在這之后負(fù)責(zé)財(cái)務(wù)的開(kāi)發(fā)人員由于開(kāi)發(fā)需要又將此商品進(jìn)貨,而配送出庫(kù)成功即是將這些進(jìn)來(lái)的貨又出去了。由于對(duì)數(shù)據(jù)庫(kù)的同時(shí)操作導(dǎo)致了不同部分開(kāi)發(fā)人員的測(cè)試與開(kāi)發(fā)工作同時(shí)進(jìn)行變得十分困難,有時(shí)甚至?xí)a(chǎn)生臟數(shù)據(jù)。在導(dǎo)師的建議下,我對(duì)本項(xiàng)目組所使用的數(shù)據(jù)庫(kù)sytrade60復(fù)制,產(chǎn)生新的數(shù)據(jù)庫(kù)sytrade70,開(kāi)發(fā)的時(shí)候使用數(shù)據(jù)庫(kù)sytrade60,測(cè)試的時(shí)候使用復(fù)制的新數(shù)據(jù)庫(kù)sytrade70,保證了開(kāi)發(fā)和測(cè)試工作的順利進(jìn)行。5.2.2數(shù)據(jù)庫(kù)復(fù)制的環(huán)境和用到的工具 SybaseCentral3.1:這是Sybase公司的產(chǎn)品系列產(chǎn)品之一,此工具主要實(shí)現(xiàn)了對(duì)一個(gè)數(shù)據(jù)庫(kù)中所有表結(jié)構(gòu)以及存儲(chǔ)過(guò)程的導(dǎo)出,且在開(kāi)發(fā)過(guò)程中對(duì)修改存儲(chǔ)過(guò)程也提供了十分方便的實(shí)現(xiàn)平臺(tái)。bcp工具:Sybase數(shù)據(jù)庫(kù)自帶的一個(gè)數(shù)據(jù)導(dǎo)入導(dǎo)出工具,主要實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)中表數(shù)據(jù)的導(dǎo)入導(dǎo)出。與其說(shuō)bcp是一個(gè)命令,不如說(shuō)它是一個(gè)十分好用的附帶工具。PowerBuilder:用來(lái)生成導(dǎo)出所有表數(shù)據(jù)的bcp命令。由于系統(tǒng)所使用的數(shù)據(jù)庫(kù)中表太多,而每導(dǎo)入導(dǎo)出一個(gè)表的數(shù)據(jù)均需要使用一條bcp命令,因此最好能夠使用一個(gè)工具能夠批處理一次性生成所有的bcp命令,在PowerBuilder中生成是我從網(wǎng)上找到的一個(gè)好方法。isql命令:向數(shù)據(jù)庫(kù)導(dǎo)入所有的表結(jié)構(gòu),存儲(chǔ)過(guò)程,觸發(fā)器,用戶(hù)等信息。5.2.3復(fù)制過(guò)程1)創(chuàng)立新數(shù)據(jù)庫(kù)sytrade70在SybaseCentral中創(chuàng)立新的數(shù)據(jù)庫(kù)sytrade70,分配邏輯空間和數(shù)據(jù)空間。2)原數(shù)據(jù)庫(kù)表結(jié)構(gòu)以及數(shù)據(jù)的導(dǎo)出在SybaseCentral中將數(shù)據(jù)庫(kù)Sybase60中點(diǎn)中所有的表或者存儲(chǔ)過(guò)程,從右鍵選項(xiàng)中選擇GenerateDDL,生成所有創(chuàng)立用戶(hù)表,系統(tǒng)表,代理表,存儲(chǔ)過(guò)程,視圖,用戶(hù),組,用戶(hù)定義的數(shù)據(jù)類(lèi)型,J

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論