夏 金, 黃烈生, 孫立民
(1 煙臺大學(xué) 計算機與控制工程學(xué)院, 山東 煙臺 264005; 2 山東工商學(xué)院 信息化建設(shè)辦公室, 山東 煙臺 264005)
離散制造業(yè),其產(chǎn)品的生產(chǎn)過程通??煞纸鉃楹芏嗉庸と蝿?wù)來完成,并且所需的原材料多是經(jīng)由采購而來,通過對多種原材料物理形狀的改變、組裝使其變換升值為一個產(chǎn)品[1]。企業(yè)主要以客戶訂單驅(qū)動生產(chǎn),這一過程可描述為:接受客戶訂單,采購原材料,進行生產(chǎn), 最終交付客戶訂單。現(xiàn)代企業(yè)大都屬于根據(jù)訂單生產(chǎn)(Make-To-Order, MTO)[2]企業(yè)。 這類企業(yè),客戶訂單是整個企業(yè)的運作核心,也是企業(yè)賴以生存的根本。一般情況下,企業(yè)是以滿足客戶需求為主要目標,同時也要兼顧企業(yè)成本和利潤等問題。企業(yè)會借鑒準時生產(chǎn) (Just-In-Time, JIT)[3]方式設(shè)計活動行為, 根據(jù)客戶訂單中產(chǎn)品的數(shù)量及時對生產(chǎn)計劃做出調(diào)整,從而適應(yīng)市場的變化和最新需求。
客戶訂單本應(yīng)該具有法律屬性[4],但是客戶訂單在執(zhí)行過程中需要考慮各種可能因素,企業(yè)也需要滿足客戶的變更請求,來爭取利潤的最大化。因此就要求ERP系統(tǒng)具備客戶訂單變更功能,從而滿足各種可能出現(xiàn)的變更情形。
傳統(tǒng)的客戶訂單變更處理方法有全重排式和凈改變式[5]。其中,全重排式是將所有接受的客戶訂單全部提交重新計劃再另行排產(chǎn), 此種方法可以使得變更策略切實準確,但是需要的變更周期長,變動成本大。凈改變式是進行局部的更改,此種方式靈活,但大量頻繁的局部修改會產(chǎn)生全局性的差錯,并帶來未知問題。文獻[6]提出,及時統(tǒng)計因客戶訂單變更導(dǎo)致的相關(guān)損失是能夠達到客戶滿意的重點。本文研究的算法模型結(jié)合并改進傳統(tǒng)的處理方法,提出了一種基于減少損失,快速響應(yīng)的模型,而且還聯(lián)系某具體企業(yè)生產(chǎn)鏈實現(xiàn)了軟件開發(fā)。
客戶訂單的生命周期可以簡單理解為客戶訂單實現(xiàn)的全過程[7]。在本系統(tǒng)中,一張客戶訂單可以包含多種貨品, 需要對客戶訂單按照貨品進行種類拆分,故一張客戶訂單可以拆分成幾張子單, 每張子單可以獨立開展計劃,并安排生產(chǎn)。系統(tǒng)會對每一張客戶訂單進行監(jiān)控,客戶訂單在系統(tǒng)中的執(zhí)行流程如圖1所示。

圖1 客戶訂單的執(zhí)行流程Fig. 1 Execution process of customer order
對圖1中重要流程進行闡釋分析如下:
(1)客戶訂單錄入??蛻粲唵武浫隕RP系統(tǒng),需要填寫客戶訂單以及客戶訂單明細,每一張客戶訂單對應(yīng)多張客戶訂單明細, 每一張客戶訂單明細都包含一種不同的貨品。
(2)客戶訂單計劃(排產(chǎn))。客戶訂單經(jīng)過生產(chǎn)決策系統(tǒng)(即排產(chǎn)模塊),生產(chǎn)決策系統(tǒng)進行分析,此時已經(jīng)有了生產(chǎn)計劃,即將進行實際產(chǎn)品生產(chǎn)。
(3)客戶訂單執(zhí)行。根據(jù)生成的排產(chǎn)結(jié)果,對客戶訂單的產(chǎn)品進行生產(chǎn)。
(4)生產(chǎn)過程監(jiān)控。對于已經(jīng)開始生產(chǎn)的客戶訂單進行監(jiān)控,主要包括客戶訂單的生產(chǎn)狀態(tài),以及對原材料的采購進度監(jiān)控等。
(5)狀態(tài)巡查。對客戶訂單的整體執(zhí)行狀態(tài)進行巡查,實時監(jiān)控客戶訂單的執(zhí)行進度等。
綜上所述, 客戶訂單的生命周期可大致分為以下4個部分:
(1)客戶訂單未計劃。企業(yè)已經(jīng)接受客戶訂單, 并且已經(jīng)錄入系統(tǒng),但是還未制定生產(chǎn)決策(即排產(chǎn),以下均簡稱為排產(chǎn)),此狀態(tài)下客戶訂單變更對系統(tǒng)不產(chǎn)生實質(zhì)性影響。
(2)客戶訂單已計劃未執(zhí)行??蛻粲唵我呀?jīng)發(fā)送排產(chǎn),但是還未執(zhí)行,包括采購原材料未購回, 已領(lǐng)原材料未進行生產(chǎn),已申請工序托工產(chǎn)品未托工和已申請成品托工產(chǎn)品未托工。此狀態(tài)下客戶訂單變更對成本不產(chǎn)生實質(zhì)性影響,但是涉及設(shè)備使用時間及后續(xù)排產(chǎn)的改變等。
(3)客戶訂單已執(zhí)行未完成。客戶訂單已經(jīng)上線生產(chǎn),但是并未完成生產(chǎn),包括自制產(chǎn)品未完成,工序托工產(chǎn)品未驗收和成品托工產(chǎn)品未驗收。此狀態(tài)下客戶訂單變更將影響成本、設(shè)備使用時間以及后續(xù)排產(chǎn)的改變等。
(4)客戶訂單已完成??蛻粲唵萎a(chǎn)品已經(jīng)制造完成,不能進行變更,只能驗收入庫。
綜上研究可知,客戶訂單的生命周期如圖2所示。

圖2 客戶訂單的生命周期Fig. 2 The life cycle of customer orders
客戶對于客戶訂單的變更請求是隨機的,可能出現(xiàn)在客戶訂單生命周期中的任何一個狀態(tài),并且可能提出多種類型的變更[8],企業(yè)無法準確預(yù)知會出現(xiàn)何種變更。對于企業(yè)來說,既要滿足客戶的請求,又要追求成本損失最小,也要達到效率最高。 經(jīng)過對企業(yè)實地調(diào)研和深入的分析研究,客戶訂單變更類型可表現(xiàn)為如下內(nèi)容:
(1)產(chǎn)品類型改變。客戶對于產(chǎn)品的種類、參數(shù)提出變更要求。
(2)工期提前。這種變更往往意味著企業(yè)要加班生產(chǎn)或者變更生產(chǎn)時間。
(3)工期延后。企業(yè)有可能收到工期延后的變更需求,這種變更企業(yè)一般會執(zhí)行原來的排產(chǎn)計劃, 并按照延后的交貨日期來進行發(fā)貨。
(4)產(chǎn)品數(shù)量增加。即發(fā)生增產(chǎn)的情況,客戶要求增加貨物數(shù)量。
(5)產(chǎn)品數(shù)量減少。這種變更對于企業(yè)來說往往影響最大,需要及時響應(yīng)變更,減少企業(yè)的損失。
(6)付款方式改變。這種變更對于企業(yè)的正常生產(chǎn)不產(chǎn)生實質(zhì)性影響。
(7)交貨地點改變。這種變更需要企業(yè)及時更新客戶訂單信息。
(8)發(fā)票抬頭改變。這種變更不涉及企業(yè)生產(chǎn)的改變。
上述變更問題可用形式化方式做出如下描述:
研究中,設(shè)T(τ1,τ2,τ3,τ4)表示客戶訂單生命周期,其中τi(1≤i≤4) 表示客戶訂單生命周期中不同的狀態(tài),例如τ1表示客戶訂單未計劃,R(r1,r2,…,r8)表示客戶對于客戶訂單的變更請求,其中ri(1≤i≤8) 表示客戶不同的變更請求類型,例如r1表示產(chǎn)品類型改變。建立關(guān)系矩陣A=f(τ,r),表示客戶訂單生命周期和變更請求之間的關(guān)系。
A=f(τ,r)=[τ1,τ2,τ3,τ4]T×[r1,r2,...,r8]=
(1)
用0-1矩陣表示A=[aij]4×8(1≤i≤4,1≤j≤8),其中0表示對生產(chǎn)無影響,1表示對生產(chǎn)存在影響。研究結(jié)果即如表1所示。
表1客戶訂單狀態(tài)與變更請求之間的關(guān)系
Tab.1Therelationshipbetweenthecustomerorderstateandthechangerequest

客戶訂單狀態(tài)變更請求τ1τ2τ3τ4r10110r20110r30000r40110r50110r60000r70000r80000
這里,就以r5τ3為例來給出分析說明。此種情況表示客戶訂單已經(jīng)進行生產(chǎn),收到客戶的減產(chǎn)變更需求,這種情況會對生產(chǎn)造成一系列的影響,例如,需要對未排產(chǎn)的貨品實施適當?shù)娜∠托薷模?以及對于正在生產(chǎn)的則應(yīng)對以強制繳庫或者留作庫存等操作, 所以此種情況的結(jié)果值為1,即表示對生產(chǎn)會產(chǎn)生影響。又如r1τ1,表示客戶訂單未計劃,收到客戶變更產(chǎn)品類型的需求,此種情況下,不會對產(chǎn)品的生產(chǎn)造成影響, 只需要修改客戶訂單重新錄入即可,所以此種情況的結(jié)果值為0,即表示對生產(chǎn)不會產(chǎn)生影響。
由表1可以看出,有些變更請求只對客戶訂單信息進行變更,并不涉及生產(chǎn)決策的改變,企業(yè)處理此類變更就比較簡單,也不會對公司的生產(chǎn)成本造成損失;有些變更請求會對公司的生產(chǎn)決策發(fā)生影響,公司的成本計算和設(shè)備使用也會出現(xiàn)較大變化。此外,有些變更請求是否對產(chǎn)品的生產(chǎn)產(chǎn)生影響與客戶訂單的狀態(tài)有關(guān)。因此,對于客戶訂單的狀態(tài)巡查即顯得尤為重要。
實現(xiàn)客戶訂單變更的首要步驟,需要準確地獲取發(fā)生變更時, 客戶訂單在其生命周期中所處的狀態(tài),準確繪制出指定客戶訂單的狀態(tài)樹,如圖3所示。

圖3 客戶訂單狀態(tài)樹Fig. 3 Customer order status tree
圖3中,可以清晰地看到需要變更客戶單的執(zhí)行狀態(tài)。由圖中可以得知,所繪制的客戶單已拆分成3張子單。其中,1號子單還沒有生成計劃,2號子單已經(jīng)開始生產(chǎn),但是并未達到完成, 3號子單已經(jīng)生產(chǎn)完成。狀態(tài)樹可以直觀反映一個客戶單的完整狀態(tài),以便開展后續(xù)工作。
定義1客戶訂單C= {H,T,S,E,M}, 其中H集合包含客戶訂單的主信息,例如付款方式、交貨地點、客戶訂單抬頭等信息;T集合表示客戶訂單的生命周期;S集合表示客戶訂單的各種成本, 包含原料成本、人工成本、設(shè)備成本等;E集合表示客戶訂單所占用的設(shè)備使用時間,在排產(chǎn)之前都是φ(即空集)。M集合包含客戶訂單貨品數(shù)量。C'= {H,T,S,E,M}表示客戶訂單的變更歷史,即存儲變更之前的單據(jù)信息。
客戶訂單變更的整體流程可以抽象為如下的算法表示,該算法整合了各種變更在生命周期中的響應(yīng)處理。其中客戶的變更需求為r,這里只是做出了單一變更需求的研究描述。
算法1客戶訂單整體變更算法
(1) 輸入變更需求r。
(2) 將客戶訂單C信息復(fù)制到客戶訂單變更歷史C′中。
(3) 如果變更需求r∈H(客戶訂單主信息)則執(zhí)行下一步,否則執(zhí)行第(5)步。
(4) 修改客戶訂單C執(zhí)行第(14)步。
(5) 掛起指定客戶訂單C,繪制客戶訂單狀態(tài)樹。
(6) 如果客戶訂單生命周期τ=τ4,τ∈T(客戶訂單已完成)執(zhí)行第(14)步。否則執(zhí)行下一步。
(7) 如果τ=τ1,τ∈T(客戶訂單未計劃)則執(zhí)行第(10)步。否則執(zhí)行下一步。
(8) 如果τ=τ2,τ∈T(客戶訂單已計劃未執(zhí)行)則進行下一步分析:如果r=r2(工期提前)或者r=r5(產(chǎn)品數(shù)量減少)或者r=r1(產(chǎn)品類型改變)則執(zhí)行第(11)步;如果r=r4(產(chǎn)品數(shù)量增加)則執(zhí)行第(13)步;如果r=r3(工期延后)則執(zhí)行第(12)步,否則執(zhí)行下一步。
(9) 如果τ=τ3,τ∈T(客戶訂單已執(zhí)行未完成)則進行下一步分析:如果r=r1(產(chǎn)品類型改變)則執(zhí)行第(11)步;如果r=r4(產(chǎn)品數(shù)量增加)則執(zhí)行第(13)步;如果r=r3(工期延后)則執(zhí)行第(12)步;如果r=r2(工期提前)則進行判斷:如果計劃完工時間 ≤變更需求時間 則執(zhí)行第(12)步,否則變更生產(chǎn)計劃;如果r=r5(產(chǎn)品數(shù)量減少)則進行人為決策:如果執(zhí)行原計劃則多余產(chǎn)品留作庫存,否則多余產(chǎn)品強制繳庫。
(10) 取消相關(guān)客戶訂單,重新定制客戶訂單。
(11) 歸還設(shè)備使用時間,取消相關(guān)客戶訂單,重新定制客戶訂單。
(12) 執(zhí)行原計劃。
(13) 新增子客戶訂單,相應(yīng)客戶訂單成本增加S=S+S′。
(14) 變更完成。
以上給出各種狀態(tài)下變更的概述性解決方案,并不涉及具體處理操作。其中,對于減產(chǎn)變更的處理最為復(fù)雜,接下來將重點描述減產(chǎn)變更的處理模型。
一般地, 客戶訂單C= {H,T,S,E,M}可以拆分成幾個子客戶訂單, 則可得到:
(2)
其中,i表示貨品種類數(shù)。Ci通??梢苑譃閿?shù)次進行排產(chǎn), 則存在:
(3)
其中,j表示排產(chǎn)的次數(shù)。 每個Cij對應(yīng)一個標識τ,τ取值為{0, 1, 2, 3}, 0表示已計劃未排產(chǎn),1表示已排產(chǎn)未生產(chǎn),2表示正在生產(chǎn),3表示已生產(chǎn)完成。則客戶訂單可定量描述為:
(4)
對于減產(chǎn)變更,需要先確定式(4)包含的所有子客戶訂單所處的狀態(tài),準確繪制一棵狀態(tài)樹,對所有子客戶訂單以標識τ進行逐層計算,直至達到所需變更數(shù)目為止。對于每一種狀態(tài)都要進行準確分析并形成合理的處理方案,具體步驟可表述如下。
算法2客戶訂單減產(chǎn)變更算法
(1)輸入變更需求r,獲取減產(chǎn)數(shù)量m′。
(2)將客戶訂單C信息復(fù)制到客戶訂單變更歷史C′中。
(3)掛起指定客戶訂單C,繪制客戶訂單狀態(tài)樹。

(6)如果mτ=3≥mnow(已完成量大于需求量)則進行下一步分析:如果τ= 0(未計劃部分),則執(zhí)行第(10)步;如果τ= 1(已計劃未生產(chǎn)部分),則執(zhí)行第(11)步;如果τ= 2(已生產(chǎn)未完成部分),則執(zhí)行第(12)步,否則執(zhí)行下一步。



(10)取消相應(yīng)客戶訂單,修改客戶訂單C信息。

(13) 變更完成。
上述算法詳述了減產(chǎn)變更的整體過程,逐層深入計算,不但可以減少變更時間,也可以使得變更相對準確,第(12)步加入了人工干預(yù),使得減產(chǎn)變更日趨靈活,更加適應(yīng)實際的企業(yè)生產(chǎn),也可以使得有經(jīng)驗的調(diào)度員全面地掌握生產(chǎn)的動態(tài),從而進行合理控制安排生產(chǎn)調(diào)度。
此部分將以上文研究的減產(chǎn)變更為例,運行結(jié)果均為前文研發(fā)的算法實現(xiàn)。本文涉及的項目為客戶機/服務(wù)器結(jié)構(gòu)(Client/Server,C/S)[9]。使用的數(shù)據(jù)庫為Oracle 11g。采用目前較流行的Java語言進行開發(fā)[10]。整體設(shè)計架構(gòu)采用mybatis-spring框架[11]。變更系統(tǒng)界面如圖4所示。變更實例是對客戶訂單號為20的客戶訂單進行減產(chǎn)變更??蛻粢髮⒖蛻粲唵沃械呢浧窋?shù)量由原數(shù)量5變更為2。由上述流程可知。需要先確定所需變更的類型。
在如圖4所示的界面中,可以由操作人員判斷選擇所需的變更類型,后臺將對數(shù)據(jù)庫中所選客戶訂單進行搜索遍歷,執(zhí)行客戶訂單狀態(tài)巡查的步驟,最終將巡查結(jié)果以一棵狀態(tài)樹的形式展示給操作人員,如圖5所示。
由圖5可以看出,客戶訂單產(chǎn)品為活塞桿組件,在實際的生產(chǎn)過程中,將會拆分為許多子產(chǎn)品及相關(guān)的工序,并將當前的生產(chǎn)情況以狀態(tài)樹的形式在系統(tǒng)中展示出來。通過客戶訂單狀態(tài)巡查,操作人員可以更加清晰地了解公司當前的生產(chǎn)進度,幫助管理員做出科學(xué)的調(diào)度方案,提高企業(yè)的生產(chǎn)效率。

圖4 客戶訂單變更系統(tǒng)界面Fig. 4 Customer order change system interface

圖5 客戶訂單狀態(tài)巡查Fig. 5 Customer order status inspection
基于前述研究可知,此次需要處置變更的客戶訂單經(jīng)算法運行后,后臺將啟動執(zhí)行取消未計劃的相應(yīng)的子客戶訂單并修改原客戶訂單的操作,對于在制品則由操作人員選擇需要強制繳庫的數(shù)量,對于本次實例來說, 操作人員只能選擇小于等于1的數(shù)量,結(jié)果界面如圖6所示。

圖6 強制繳庫界面Fig. 6 Forced entry interface
此處選擇強制繳庫數(shù)量為1,后臺系統(tǒng)將會計算得到強制繳庫的損失比率,計算結(jié)果如圖7所示。

圖7 選擇處理方案的損失及設(shè)備使用情況Fig. 7 Loss and equipment usage of choosing treatment options
參照圖7將會表明,選擇強制繳庫的變更處理方案,對原客戶訂單在制產(chǎn)品造成的損失較大, 是一種較為失當?shù)淖兏桨?。企業(yè)在實際的生產(chǎn)過程中,往往需要根據(jù)經(jīng)驗權(quán)衡產(chǎn)品的生產(chǎn),對于發(fā)生減產(chǎn)變更情形時,可以將多余的在制產(chǎn)品生產(chǎn)完成,作為企業(yè)的備貨入庫存儲。當其它客戶提出同樣的產(chǎn)品需求時,則直接從倉庫進行裝箱發(fā)貨,將無需再籌劃安排產(chǎn)品的生產(chǎn)。在設(shè)備加工能力允許的情況下,這類選擇可以減少企業(yè)的損失,提高企業(yè)的市場競爭力。
ERP系統(tǒng)的發(fā)展為企業(yè)提供了一個科學(xué)高效的管理方式。本文描述了在客戶訂單的生命周期中,客戶訂單的執(zhí)行流程和完成方式;通過深入企業(yè)結(jié)合實地的考察調(diào)研分析,提煉得出了幾種客戶訂單變更類型。利用形式化的描述,找出客戶訂單狀態(tài)與變更請求之間的關(guān)系。在客戶訂單變更系統(tǒng)中,針對減產(chǎn)這一復(fù)雜的變更類型開展詳盡研究,使用抽象算法描述了減產(chǎn)的變更流程,建立變更模型用于計算變更后的損失情況、設(shè)備占用量和庫存使用情況。
根據(jù)本文算法和變更模型設(shè)計的客戶訂單變更系統(tǒng),在投入企業(yè)用于實際生產(chǎn)時,計算損失和設(shè)備使用率方面可能會存在一定的誤差。在今后的工作中,需要對此進行后續(xù)的完善和優(yōu)化,使客戶訂單變更系統(tǒng)達到最佳的效果。
[1] 張永澤,馬駿. 流程制造業(yè)與離散制造業(yè)物流特點[J]. 北京郵電大學(xué)學(xué)報(社會科學(xué)版),2010,12(6):72-76.
[2] 舒良友,邵俊崗. 基于MTO的制造商產(chǎn)品運輸決策模型[J]. 上海海事大學(xué)學(xué)報,2006,27(2):60-62.
[3] 李昆鵬,馬士華. 基于JIT配送的3PL運輸協(xié)調(diào)調(diào)度問題建模與分析[J]. 中國管理科學(xué),2008,16(1):73-79.
[4] 黃浩. 訂單變更對離散制造業(yè)產(chǎn)生的影響和應(yīng)對機制綜述[J]. 經(jīng)濟研究導(dǎo)刊,2013(5):27-28, 33.
[5] 黃浩. 基于客戶需求的離散制造業(yè)訂單變更響應(yīng)研究[D]. 哈爾濱:哈爾濱商業(yè)大學(xué),2013.
[6] 倪小兵,馮毅雄,譚建榮. 定制產(chǎn)品合同變更損失統(tǒng)計快速響應(yīng)技術(shù)[J]. 機械工程師,2010 (2):81-84.
[7] 黃永濤. 面向產(chǎn)品生命周期供應(yīng)鏈及延遲策略研究[D]. 哈爾濱:哈爾濱理工大學(xué),2009.
[8] 李曉婉. MSO生產(chǎn)方式下響應(yīng)訂單變更的柔性作業(yè)車間調(diào)度研究[D]. 重慶:重慶大學(xué),2016.
[9] 歐陽明. Client/Server體系結(jié)構(gòu)的發(fā)展[J]. 計算機系統(tǒng)應(yīng)用,1997,3(11):50-53.
[10]歐鋒,鄒敏,李曉楨. Java 技術(shù)框架概述[J]. 計算機系統(tǒng)應(yīng)用,2012,21(8):236-239.
[11]榮艷冬. 關(guān)于Mybatis持久層框架的應(yīng)用研究[J]. 信息安全與技術(shù),2015,6(12):86-88.