本發(fā)明涉及一種物料清單數(shù)據(jù)的操作方法及裝置。
背景技術(shù):
bom也叫產(chǎn)品結(jié)構(gòu)或配方指物料(通常是完成品或半成品,部品)的組成情況——該物料有哪些下級物料組成,每一下級物料的用量是多少,其對應(yīng)的屬性等。物料清單表明了產(chǎn)品→部件→組件→零件→原材料之間的結(jié)構(gòu)關(guān)系,以及每個組裝件包含的下屬部件(或零件)的數(shù)量。
由產(chǎn)品結(jié)構(gòu)生成的bom是精確bom,是其他類型bom的源頭數(shù)據(jù)。bom作為企業(yè)進行設(shè)計、生產(chǎn)、管理的核心,不同部門有不同的形式和要求。例如,生產(chǎn)部門只需要描述自制件情況的制造bom表,采購部門需要原材料及其標準件的采購bom表,財務(wù)部門關(guān)心的是反映零部件成本核算情況的財務(wù)bom表。這種針對不同的部門對bom信息進行的重新編排,比如在設(shè)計bom生成工藝bom并調(diào)整了工藝bom的結(jié)構(gòu)后,進行拆分或剪切移動節(jié)點之后,往往不能識別或查找到變化的節(jié)點,無法實現(xiàn)對現(xiàn)有產(chǎn)品結(jié)構(gòu)數(shù)據(jù)的精確管理。
技術(shù)實現(xiàn)要素:
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的一種物料清單數(shù)據(jù)的操作方法及裝置。
作為本發(fā)明實施例的一個方面,提供一種物料清單數(shù)據(jù)的操作方法,包括:
按照預(yù)設(shè)的順序遍歷物料清單的所有數(shù)據(jù)節(jié)點,獲取所述數(shù)據(jù)節(jié)點的層次和數(shù)量;所述物料清單為樹形結(jié)構(gòu);
為所述物料清單中每個數(shù)據(jù)節(jié)點設(shè)置對應(yīng)的標識;每個數(shù)據(jù)節(jié)點的標識包含至少一個子id或者子id組,且上一級數(shù)據(jù)節(jié)點和本級數(shù)據(jù)節(jié)點的標識滿足:上級節(jié)點的每個子id,在本級節(jié)點中有對應(yīng)的一個子id組;所述子id組為n個子id的組合;n為從根節(jié)點到本級數(shù)據(jù)節(jié)點路徑上的所有節(jié)點的數(shù)量依次相乘的積;所述每個數(shù)據(jù)節(jié)點的標識中,子id預(yù)設(shè)的數(shù)據(jù)位按照遍歷的順序順次遞增;
讀取所有數(shù)據(jù)節(jié)點的標識,并根據(jù)所有數(shù)據(jù)節(jié)點的標識展示所述物料清單中各數(shù)據(jù)節(jié)點之間的結(jié)構(gòu)。
在一個實施例中,所述數(shù)據(jù)節(jié)點包括:根節(jié)點、中間節(jié)點和葉子節(jié)點;
所述根節(jié)點和中間節(jié)點,用于表征所述物料清單中部件;
所述葉子節(jié)點,用于表征所述物料清單中零件。
在一個實施例中,所述每個數(shù)據(jù)節(jié)點的標識中還包括:節(jié)點類型標識位;
所述根節(jié)點和中間節(jié)點的標識中的節(jié)點類型標識位相同,且與所述葉子節(jié)點的標識中的節(jié)點類型標識位不同。
在一個實施例中,所述節(jié)點類型標識位位于所述標識的首位。
在一個實施例中,所述標識中,還包括子id與子id之間的間隔符、子id組與子id組之間的間隔符。
在一個實施例中,當所述中間節(jié)點或葉子節(jié)點的數(shù)量大于1,且接收到拆分所述中間節(jié)點或葉子節(jié)點的拆分指令時,所述方法還包括:
當拆分所述中間節(jié)點時,根據(jù)所述中間節(jié)點數(shù)量,拆分為與所述中間節(jié)點數(shù)量相同個數(shù)的節(jié)點,拆分所述中間節(jié)點的下一級節(jié)點為與所述中間節(jié)點數(shù)量相同個數(shù)的節(jié)點;更新所述中間節(jié)點以及中間節(jié)點的下一級節(jié)點的標識;
根據(jù)所述葉子節(jié)點數(shù)量,拆分為與所述葉子節(jié)點數(shù)量相同個數(shù)的節(jié)點;
更新所述葉子節(jié)點的標識。
在一個實施例中,所述更新所述中間節(jié)點以及中間節(jié)點的下一級節(jié)點的標識,包括:
中間節(jié)點以及下一級節(jié)點的標識滿足:
拆分后的每一個中間節(jié)點的子id,在下一級節(jié)點中有對應(yīng)的一個子id組;
所述子id組為m個子id的組合;m為從中間節(jié)點到本級數(shù)據(jù)節(jié)點路徑上的所有節(jié)點的數(shù)量依次相乘的積。
在一個實施例中,更新所述葉子節(jié)點的標識,包括:
所述葉子節(jié)點數(shù)量為q;拆分后的每一個葉子節(jié)點的子id組,所述子id個數(shù)為p;所述p=n/q。
在一個實施例中,當接收到剪切中間節(jié)點或葉子節(jié)點的剪切指令時,所述方法還包括:
查找目標節(jié)點與待剪切的數(shù)據(jù)節(jié)點的共同父節(jié)點,當從所述父節(jié)點到目標節(jié)點的路徑上所有數(shù)據(jù)節(jié)點的節(jié)點數(shù)量均為1時;
或所述父節(jié)點和所述目標節(jié)點是同一節(jié)點時;
將所述待剪切的數(shù)據(jù)節(jié)點移動到所述目標節(jié)點下,更新剪切后的數(shù)據(jù)節(jié)點;
所述目標節(jié)點為接收所述剪切節(jié)點的節(jié)點。
在一個實施例中,所述更新剪切后的數(shù)據(jù)節(jié)點,包括:
更新剪切后的數(shù)據(jù)節(jié)點的標識滿足:
本級數(shù)據(jù)節(jié)點的每一個子id組在上級節(jié)點中有對應(yīng)的子id,所述子id組的個數(shù)為上級節(jié)點的數(shù)量。
作為本發(fā)明實施例的另一個方面,提供一種物料清單數(shù)據(jù)的操作裝置,包括:
獲取模塊,用于按照預(yù)設(shè)的順序遍歷物料清單的所有數(shù)據(jù)節(jié)點,獲取所述數(shù)據(jù)節(jié)點的層次和數(shù)量;所述物料清單為樹形結(jié)構(gòu);
設(shè)置模塊,用于為所述物料清單中每個數(shù)據(jù)節(jié)點設(shè)置對應(yīng)的標識;每個數(shù)據(jù)節(jié)點的標識包含至少一個子id或者子id組,且上一級數(shù)據(jù)節(jié)點和本級數(shù)據(jù)節(jié)點的標識滿足:上級節(jié)點的每個子id,在本級節(jié)點中有對應(yīng)的一個子id組;所述子id組為n個子id的組合;n為從根節(jié)點到本級數(shù)據(jù)節(jié)點路徑上的所有節(jié)點的數(shù)量依次相乘的積;所述每個數(shù)據(jù)節(jié)點的標識中,子id預(yù)設(shè)的數(shù)據(jù)位按照遍歷的順序順次遞增;
展示模塊,用于讀取所有數(shù)據(jù)節(jié)點的標識,并根據(jù)所有數(shù)據(jù)節(jié)點的標識展示所述物料清單中各數(shù)據(jù)節(jié)點之間的結(jié)構(gòu)。
在一個實施例中,所述數(shù)據(jù)節(jié)點包括:根節(jié)點、中間節(jié)點和葉子節(jié)點;
所述根節(jié)點和中間節(jié)點,用于表征所述物料清單中部件;
所述葉子節(jié)點,用于表征所述物料清單中零件。
在一個實施例中,所述每個數(shù)據(jù)節(jié)點的標識中還包括:節(jié)點類型標識位;
所述根節(jié)點和中間節(jié)點的標識中的節(jié)點類型標識位相同,且與所述葉子節(jié)點的標識中的節(jié)點類型標識位不同。
在一個實施例中,所述節(jié)點類型標識位位于所述標識的首位。
在一個實施例中,所述標識中,還包括子id與子id之間的間隔符、子id組與子id組之間的間隔符。
在一個實施例中,當所述中間節(jié)點或葉子節(jié)點的數(shù)量大于1,且接收到拆分所述中間節(jié)點或葉子節(jié)點的拆分指令時,所述裝置還包括:
拆分模塊,用于當拆分所述中間節(jié)點時,根據(jù)所述中間節(jié)點數(shù)量,拆分為與所述中間節(jié)點數(shù)量相同個數(shù)的節(jié)點,拆分所述中間節(jié)點的下一級節(jié)點為與所述中間節(jié)點數(shù)量相同個數(shù)的節(jié)點;以及用于根據(jù)所述葉子節(jié)點數(shù)量,拆分為與所述葉子節(jié)點數(shù)量相同個數(shù)的節(jié)點;
更新模塊,更新所述中間節(jié)點以及中間節(jié)點的下一級節(jié)點的標識;以及用于更新所述葉子節(jié)點的標識。
在一個實施例中,所述更新模塊,包括:
中間節(jié)點以及下一級節(jié)點的標識滿足:
拆分后的每一個中間節(jié)點的子id,在下一級節(jié)點中有對應(yīng)的一個子id組;
所述子id組為m個子id的組合;m為從中間節(jié)點到本級數(shù)據(jù)節(jié)點路徑上的所有節(jié)點的數(shù)量依次相乘的積。
在一個實施例中,所述更新模塊,還包括:
所述葉子節(jié)點數(shù)量為q;拆分后的每一個葉子節(jié)點的子id組,所述子id個數(shù)為p;所述p=n/q。
在一個實施例中,當接收到剪切中間節(jié)點或葉子節(jié)點的剪切指令時,所述裝置還包括:
剪切模塊,用于查找目標節(jié)點與待剪切的數(shù)據(jù)節(jié)點的共同父節(jié)點,當從所述父節(jié)點到目標節(jié)點的路徑上所有數(shù)據(jù)節(jié)點的節(jié)點數(shù)量均為1時;或所述父節(jié)點和所述目標節(jié)點是同一節(jié)點時;將所述待剪切的數(shù)據(jù)節(jié)點移動到所述目標節(jié)點下,
所述更新模塊,還用于更新剪切后的數(shù)據(jù)節(jié)點;所述目標節(jié)點為接收所述剪切節(jié)點的節(jié)點。
在一個實施例中,所述更新模塊,還包括:
更新剪切后的數(shù)據(jù)節(jié)點的標識滿足:
本級數(shù)據(jù)節(jié)點的每一個子id組在上級節(jié)點中有對應(yīng)的子id,所述子id組的個數(shù)為上級節(jié)點的數(shù)量。
作為本發(fā)明實施例的再一個方面,提供一種物料清單數(shù)據(jù)的操作裝置,包括:
處理器;
用于存儲處理器可執(zhí)行命令的存儲器;
其中,所述處理器被配置為:
按照預(yù)設(shè)的順序遍歷物料清單的所有數(shù)據(jù)節(jié)點,獲取所述數(shù)據(jù)節(jié)點的層次和數(shù)量;所述物料清單為樹形結(jié)構(gòu);
為所述物料清單中每個數(shù)據(jù)節(jié)點設(shè)置對應(yīng)的標識;每個數(shù)據(jù)節(jié)點的標識包含至少一個子id或者子id組,且上一級數(shù)據(jù)節(jié)點和本級數(shù)據(jù)節(jié)點的標識滿足:上級節(jié)點的每個子id,在本級節(jié)點中有對應(yīng)的一個子id組;所述子id組為n個子id的組合;n為從根節(jié)點到本級數(shù)據(jù)節(jié)點路徑上的所有節(jié)點的數(shù)量依次相乘的積;所述每個數(shù)據(jù)節(jié)點的標識中,子id預(yù)設(shè)的數(shù)據(jù)位按照遍歷的順序順次遞增;
讀取所有數(shù)據(jù)節(jié)點的標識,并根據(jù)所有數(shù)據(jù)節(jié)點的標識展示所述物料清單中各數(shù)據(jù)節(jié)點之間的結(jié)構(gòu)。
本發(fā)明實施例提供的上述技術(shù)方案的有益效果至少包括:
本發(fā)明實施例提供的物料清單數(shù)據(jù)的操作方法及裝置,所述方法包括,按照預(yù)設(shè)的順序遍歷物料清單的所有數(shù)據(jù)節(jié)點,獲取所述數(shù)據(jù)節(jié)點的層次和數(shù)量;所述物料清單為樹形結(jié)構(gòu);為所述物料清單中每個數(shù)據(jù)節(jié)點設(shè)置對應(yīng)的標識;每個數(shù)據(jù)節(jié)點的標識包含至少一個子id或者子id組,且上一級數(shù)據(jù)節(jié)點和本級數(shù)據(jù)節(jié)點的標識滿足:上級節(jié)點的每個子id,在本級節(jié)點中有對應(yīng)的一個子id組;所述子id組為n個子id的組合;n為從根節(jié)點到本級數(shù)據(jù)節(jié)點路徑上的所有節(jié)點的數(shù)量依次相乘的積;所述每個數(shù)據(jù)節(jié)點的標識中,子id預(yù)設(shè)的數(shù)據(jù)位按照遍歷的順序順次遞增;讀取所有數(shù)據(jù)節(jié)點的標識,并根據(jù)所有數(shù)據(jù)節(jié)點的標識展示所述物料清單中各數(shù)據(jù)節(jié)點之間的結(jié)構(gòu)。本發(fā)明采用的方法提供的數(shù)據(jù)標識格式,在設(shè)計bom生成工藝bom并調(diào)整了工藝bom的結(jié)構(gòu)后,用來標識節(jié)點數(shù)據(jù),可以查看調(diào)整的節(jié)點所對應(yīng)的產(chǎn)品模型位置,實現(xiàn)對產(chǎn)品結(jié)構(gòu)數(shù)據(jù)的精確管理。
本發(fā)明的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點可通過在所寫的說明書、權(quán)利要求書、以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。
下面通過附圖和實施例,對本發(fā)明的技術(shù)方案做進一步的詳細描述。
附圖說明
附圖用來提供對本發(fā)明的進一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實施例一起用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中:
圖1為本發(fā)明實施例提供的物料清單數(shù)據(jù)的操作方法的流程圖;
圖2為本發(fā)明實施例提供的物料清單展開示意圖;
圖3為本發(fā)明實施例提供的物料清單數(shù)據(jù)節(jié)點標識示意圖;
圖4為本發(fā)明實施例提供的物料清單拆分節(jié)點b示意圖;
圖5為本發(fā)明實施例提供的物料清單拆分節(jié)點c示意圖;
圖6為本發(fā)明實施例提供的物料清單拆分節(jié)點d示意圖;
圖7為本發(fā)明實施例提供的物料清單同時拆分節(jié)點b與節(jié)點c展開示意圖;
圖8為本發(fā)明實施例提供的物料清單d1剪切到b下示意圖;
圖9為本發(fā)明實施例提供的物料清單節(jié)點c2,c3合并示意圖;
圖10為本發(fā)明實施例提供的物料清單數(shù)據(jù)的操作裝置的框圖。
具體實施方式
這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本發(fā)明相一致的所有實施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本發(fā)明的一些方面相一致的裝置和方法的例子。
本發(fā)明實施例提供了一種物料清單數(shù)據(jù)的操作方法,下面結(jié)合附圖說明。
圖1是根據(jù)一示例性實施例示出的一種的方法流程圖,參照圖1所示,
s101、按照預(yù)設(shè)的順序遍歷物料清單的所有數(shù)據(jù)節(jié)點,獲取所述數(shù)據(jù)節(jié)點的層次和數(shù)量;所述物料清單為樹形結(jié)構(gòu);
s102、為所述物料清單中每個數(shù)據(jù)節(jié)點設(shè)置對應(yīng)的標識;每個數(shù)據(jù)節(jié)點的標識包含至少一個子id或者子id組,且上一級數(shù)據(jù)節(jié)點和本級數(shù)據(jù)節(jié)點的標識滿足:上級節(jié)點的每個子id,在本級節(jié)點中有對應(yīng)的一個子id組;所述子id組為n個子id的組合;n為從根節(jié)點到本級數(shù)據(jù)節(jié)點路徑上的所有節(jié)點的數(shù)量依次相乘的積;所述每個數(shù)據(jù)節(jié)點的標識中,子id預(yù)設(shè)的數(shù)據(jù)位按照遍歷的順序順次遞增;
s103、讀取所有數(shù)據(jù)節(jié)點的標識,并根據(jù)所有數(shù)據(jù)節(jié)點的標識展示所述物料清單中各數(shù)據(jù)節(jié)點之間的結(jié)構(gòu)
在本實施例中,物料清單數(shù)據(jù)的操作方法,可以采用手工建樹,也可以復(fù)制已有的節(jié)點結(jié)構(gòu)。比如手工建樹,產(chǎn)品結(jié)構(gòu)樹的節(jié)點可由手工建立,各節(jié)點的類型由系統(tǒng)初始化時在節(jié)點屬性設(shè)置中確定。輸入節(jié)點名稱、節(jié)點代號、數(shù)量及序號等信息。根據(jù)企業(yè)實際情況完成部件一級的產(chǎn)品結(jié)構(gòu)樹。
例如復(fù)制已有的節(jié)點結(jié)構(gòu),如果產(chǎn)品某部件或組件與以往設(shè)計的產(chǎn)品雷同或結(jié)構(gòu)相似,可以通過節(jié)點復(fù)制、粘貼的方式將該節(jié)點以下的結(jié)構(gòu)復(fù)制過來,再通過節(jié)點屬性值修改的方式調(diào)整相應(yīng)節(jié)點的代號、名稱數(shù)量等值。
步驟s101中,按照預(yù)設(shè)的順序遍歷物料清單的所有數(shù)據(jù)節(jié)點,其中預(yù)設(shè)的順序可以按照前序遍歷、中序遍歷和后序遍歷,其中前序遍歷首先訪問根結(jié)點然后遍歷左子樹,最后遍歷右子樹。在遍歷左、右子樹時,仍然先訪問根結(jié)點,然后遍歷左子樹,最后遍歷右子樹。
若二叉樹為空則結(jié)束返回,否則:
(1)訪問根結(jié)點。
(2)前序遍歷左子樹。
(3)前序遍歷右子樹。
需要注意的是:遍歷左右子樹時仍然采用前序遍歷方法。
參照圖2所示,前序遍歷,遍歷的順序是,根,左子樹,右子樹;遍歷結(jié)果:abdecf;
中序遍歷,也叫中根遍歷,順序是左子樹,根,右子樹;遍歷結(jié)果:dbeafc;
后序遍歷,也叫后根遍歷,遍歷順序,左子樹,右子樹,根;遍歷結(jié)果:debfca;
本公開實施例對遍歷順序不做限定。
本公開實施例提供的方法,為物料清單設(shè)置標識,在裝配工藝編制中,工藝數(shù)據(jù)會與cad裝配結(jié)構(gòu)、裝配路線等保持一致,當選擇某道工序時,根據(jù)設(shè)置的標識,cad環(huán)境中會高亮顯示相應(yīng)的零部件;本發(fā)明采用的方法提供一種物料清單數(shù)據(jù)的操作方法,對數(shù)據(jù)節(jié)點設(shè)置標識,在設(shè)計bom生成工藝bom并調(diào)整了工藝bom的結(jié)構(gòu)后,用來標識節(jié)點數(shù)據(jù),可以查看調(diào)整的節(jié)點所對應(yīng)的產(chǎn)品模型位置,可以實現(xiàn)對產(chǎn)品結(jié)構(gòu)數(shù)據(jù)的精確管理。
下面分別對上述各步驟進行詳細的說明。
步驟s102中,為物料清單中每個數(shù)據(jù)節(jié)點設(shè)置對應(yīng)的標識,其中標識包含至少一個子id或者子id組;每一個子id組為n個子id的組合,其中n為從根節(jié)點到本級數(shù)據(jù)節(jié)點路徑上的所有節(jié)點的數(shù)量依次相乘的積。
例如:參照圖3所示,在其括號內(nèi)的數(shù)字表示每個節(jié)點相對于單個上一級節(jié)點的數(shù)量。
每個節(jié)點在物料清單中的數(shù)量為:n,其中n為從根節(jié)點到本級數(shù)據(jù)節(jié)點路徑上的所有節(jié)點的數(shù)量依次相乘的積。
a:根節(jié)點,默認數(shù)量為1
b:數(shù)量為2
c:數(shù)量為2*3=6
d:數(shù)量為2*3*2=12
e:數(shù)量為2
f:數(shù)量為1
g:數(shù)量為2*2=4
此工藝bom每個節(jié)點的數(shù)據(jù)標識id如下所示,數(shù)據(jù)標識id的個數(shù)等于節(jié)點的數(shù)量。所述每個數(shù)據(jù)節(jié)點的標識中,子id預(yù)設(shè)的數(shù)據(jù)位按照遍歷的順序順次遞增;參照圖3所示,例如:
a:300000001
b:(300000002,300000003)
c:((300000004,300000005,300000006),(300000007,300000008,300000009))
d:(((200000001,200000002),(200000003,200000004),(200000005,200000006)),((200000007,200000008),(200000009,200000010),(200000011,200000012)))
e:(200000017,200000018)
f:(200000019)
g:((200000013,200000014),(200000015,200000016))
上述數(shù)據(jù)節(jié)點包括:根節(jié)點、中間節(jié)點和葉子節(jié)點;其中根節(jié)點為a,b和c為中間節(jié)點,d為葉子節(jié)點。
其中上述a、b、c節(jié)點,用于表征物料清單中部件;d,用于表征所述物料清單中零件。
在一個實施例中,每個數(shù)據(jù)節(jié)點的標識中還包括:節(jié)點類型標識位;為了便于區(qū)分部件和零件,將根節(jié)點和中間節(jié)點的標識中的節(jié)點類型標識位相同,且將與所述葉子節(jié)點的標識中的節(jié)點類型標識位設(shè)置為不同;例如:a、b、c的標識中的節(jié)點類型標識位相同,如數(shù)字“3”,d的標識中的節(jié)點類型,如數(shù)字“2”。
在一個實施例中,上述標識中,還包括子id與子id之間的間隔符、子id組與子id組之間的間隔符,間隔符比如“,”“#”或其他符號等等。
在一個實施例中,部件是由相互關(guān)聯(lián)的一組零件按照特定的裝配關(guān)系組裝起來的,一系列的部件有機的裝配在一起就構(gòu)成了產(chǎn)品。按照部件對產(chǎn)品進行分解,再將部件進行分解,產(chǎn)生零件與子部件,經(jīng)過層層的分解,直到無法分解。
在拆分過程中,當中間節(jié)點或葉子節(jié)點的數(shù)量大于1,且接收到拆分所述中間節(jié)點或葉子節(jié)點的拆分指令時,當拆分所述中間節(jié)點時,根據(jù)所述中間節(jié)點數(shù)量,拆分為與所述中間節(jié)點數(shù)量相同個數(shù)的節(jié)點,拆分所述中間節(jié)點的下一級節(jié)點為與所述中間節(jié)點數(shù)量相同個數(shù)的節(jié)點;更新所述中間節(jié)點以及中間節(jié)點的下一級節(jié)點的標識;根據(jù)所述葉子節(jié)點數(shù)量,拆分為與所述葉子節(jié)點數(shù)量相同個數(shù)的節(jié)點;更新所述葉子節(jié)點的標識。
例如還是以圖3為例,拆分節(jié)點b,拆分后參照圖4所示,
此時b,c,d,g的實例id發(fā)生變化,如下:
b1:(300000002);
b2:(300000003);
c1:((300000004,300000005,300000006));
c2:((300000007,300000008,300000009));
d1:
(((200000001,200000002),(200000003,200000004),(200000005,200000006)));
d2:
(((200000007,200000008),(200000009,200000010),(200000011,200000012)));
g1:((200000013,200000014));
g2:((200000015,200000016));
更新上述中間節(jié)點和中間節(jié)點的下一級節(jié)點的標識,滿足下述條件:拆分后的每一個中間節(jié)點的子id,在下一級節(jié)點中有對應(yīng)的一個子id組;比如:b1:(300000002);對應(yīng)c1:((300000004,300000005,300000006))。
上述子id組為m個子id的組合;m為從中間節(jié)點到本級數(shù)據(jù)節(jié)點路徑上的所有節(jié)點的數(shù)量依次相乘的積,即:c1為包含3個子id的組合,從b1到c1,m=1*3。
上述葉子節(jié)點數(shù)量為q(相對于上一級節(jié)點);拆分后的每一個葉子節(jié)點的子id組,所述子id個數(shù)為p;所述p=n/q,即:上述葉子節(jié)點d的節(jié)點數(shù)量為2(即q),拆分后的d為d1和d2,d1和d2的子id個數(shù)均為6(即p)個,從根節(jié)點到葉子節(jié)點的數(shù)量為n(n=1*2*3*2),p=n/q,6=1*2*3*2/2。
例如:以圖3為例,拆分節(jié)點c,拆分后參照圖5所示,
此時c,d的實例id發(fā)生變化,如下:
c1:((300000004),(300000007));
c2:((300000005),(300000008));
c3:((300000006),(300000009));
d1:(((200000001,200000002)),((200000007,200000008)));
d2:(((200000003,200000004)),((200000009,200000010)));
d3:(((200000005,200000006)),((200000011,200000012)));
再比如,以圖3為例,拆分節(jié)點d,拆分后參照圖6所示;
此時d的實例id發(fā)生變化,如下:
d1:
(((200000001),(200000003),(200000005)),((200000007),(200000009),(200000011)));
d2:(((200000002),(200000004),(200000006)),((200000008),(200000010),(200000012)));
在本實施例中,還可以同時拆分2個或多個節(jié)點,本公開實施例對此不做限定,例如:還是以圖3為例,同時拆分節(jié)點b與節(jié)點c,拆分參照圖7所示:
此時b,c,d,g的實例id發(fā)生變化,如下:
b1:(300000002);
b2:(300000003);
c1:((300000004));
c2:((300000005));
c3:((300000006));
c4:((300000007));
c5:((300000008));
c6:((300000009));
d1:(((200000001,200000002)));
d2:(((200000003,200000004)));
d3:(((200000005,200000006)));
d4:(((200000007,200000008)));
d5:(((200000009,200000010)));
d6:(((200000011,200000012)));
g1:((200000013,200000014));
g2:((200000015,200000016));
在一個實施例中,節(jié)點也可以被剪切,剪切有如下條件:
1.根節(jié)點不能被剪切;
2.找到目標節(jié)點與剪切節(jié)點的共同父節(jié)點,從共同父節(jié)點出發(fā)(不包含共
同父節(jié)點)到目標節(jié)點(包含目標節(jié)點),此路徑上的所有節(jié)點的數(shù)量必
須為1。
參照圖3所示,例如:剪切節(jié)點d,粘貼到f下,此操作可以完成,因為它們的共同父節(jié)點a,從a(不包含a)到f,這條路徑上的節(jié)點的數(shù)量為1。但不能粘貼到e下,因為從a(不包含a)到e,這條路徑上有數(shù)量大于1的節(jié)點,可以將e拆分,然后粘貼到其中一個e節(jié)點下??梢哉迟N到b節(jié)點下,它們的共同父節(jié)點為b,目標節(jié)點也為b,但需要去掉共同父節(jié)點,所以可以認為路徑上沒有節(jié)點數(shù)量大于1。
剪切節(jié)點后,節(jié)點的實例id發(fā)生變化,更新剪切后的數(shù)據(jù)節(jié)點。還是以圖3為例:通過6個實施例來說明,剪切節(jié)點的情況。
1.將d剪切到f下
d的實例id發(fā)生變化,如下:
d:((200000001,200000002,200000003,200000004,200000005,200000006,200000007,200000008,200000009,200000010,200000011,200000012));
2.將d剪切到b下
d的實例id發(fā)生變化,如下:
d:((200000001,200000002,200000003,200000004,200000005,200000006),(200000007,200000008,200000009,200000010,200000011,200000012))
3.將e拆分成e1,e2;再將d剪切到e1下
e,d的實例id發(fā)生變化,如下:
e1:(200000017)
e2:(200000018)
d:((200000001,200000002,200000003,200000004,200000005,200000006,200000007,200000008,200000009,200000010,200000011,200000012))
4.將c拆分成c1,c2,c3,參照圖5所示,再將c1剪切到f下,c,d的實例id發(fā)生變化,如下:
c1:((300000004,300000007));
c2:((300000005),(300000008));
c3:((300000006),(300000009));
d1:(((200000001,200000002),(200000007,200000008)));
d2:(((200000003,200000004)),((200000009,200000010)));
d3:(((200000005,200000006)),((200000011,200000012)));
5.將c拆分成c1,c2,c3,參照圖5所示,再將d1剪切到b下,參照圖8所示:
6.由于d1剪切后,c1的結(jié)構(gòu)發(fā)生了變化,不能與c2,c3合并,僅能合并c2,c3,合并后,參照圖9所示:
c,d的實例id發(fā)生變化,如下:
c1:((300000004),(300000007));
c2:((300000005,300000006),(300000008,300000009));
d1:((200000001,200000002),(200000007,200000008));
d2:(((200000003,200000004),(200000005,200000006)),((200000009,200000010),(200000011,200000012)));
基于同一發(fā)明構(gòu)思,本發(fā)明實施例還提供了了一種物料清單數(shù)據(jù)的操作裝置,由于該裝置所解決問題的原理與前述實施例一種物料清單數(shù)據(jù)的操作方法相似,因此該裝置的實施可以參見前述方法的實施,重復(fù)之處不再贅述。
根據(jù)本公開實施例的第二方面,提供一種物料清單數(shù)據(jù)的操作裝置,參照圖10所示,包括:
獲取模塊101,用于按照預(yù)設(shè)的順序遍歷物料清單的所有數(shù)據(jù)節(jié)點,獲取所述數(shù)據(jù)節(jié)點的層次和數(shù)量;所述物料清單為樹形結(jié)構(gòu);
設(shè)置模塊102,用于為所述物料清單中每個數(shù)據(jù)節(jié)點設(shè)置對應(yīng)的標識;每個數(shù)據(jù)節(jié)點的標識包含至少一個子id或者子id組,且上一級數(shù)據(jù)節(jié)點和本級數(shù)據(jù)節(jié)點的標識滿足:上級節(jié)點的每個子id,在本級節(jié)點中有對應(yīng)的一個子id組;所述子id組為n個子id的組合;n為從根節(jié)點到本級數(shù)據(jù)節(jié)點路徑上的所有節(jié)點的數(shù)量依次相乘的積;所述每個數(shù)據(jù)節(jié)點的標識中,子id預(yù)設(shè)的數(shù)據(jù)位按照遍歷的順序順次遞增;
展示模塊103,用于讀取所有數(shù)據(jù)節(jié)點的標識,并根據(jù)所有數(shù)據(jù)節(jié)點的標識展示所述物料清單中各數(shù)據(jù)節(jié)點之間的結(jié)構(gòu)。
所述數(shù)據(jù)節(jié)點包括:根節(jié)點、中間節(jié)點和葉子節(jié)點;
所述根節(jié)點和中間節(jié)點,用于表征所述物料清單中部件;
所述葉子節(jié)點,用于表征所述物料清單中零件。
在一個實施例中,所述每個數(shù)據(jù)節(jié)點的標識中還包括:節(jié)點類型標識位;
所述根節(jié)點和中間節(jié)點的標識中的節(jié)點類型標識位相同,且與所述葉子節(jié)點的標識中的節(jié)點類型標識位不同。
在一個實施例中,所述節(jié)點類型標識位位于所述標識的首位。
在一個實施例中,所述標識中,還包括子id與子id之間的間隔符、子id組與子id組之間的間隔符。
在一個實施例中,當所述中間節(jié)點或葉子節(jié)點的數(shù)量大于1,且接收到拆分所述中間節(jié)點或葉子節(jié)點的拆分指令時,參照圖10所述裝置還包括:
拆分模塊104,用于當拆分所述中間節(jié)點時,根據(jù)所述中間節(jié)點數(shù)量,拆分為與所述中間節(jié)點數(shù)量相同個數(shù)的節(jié)點,拆分所述中間節(jié)點的下一級節(jié)點為與所述中間節(jié)點數(shù)量相同個數(shù)的節(jié)點;以及用于根據(jù)所述葉子節(jié)點數(shù)量,拆分為與所述葉子節(jié)點數(shù)量相同個數(shù)的節(jié)點;
更新模塊105,更新所述中間節(jié)點以及中間節(jié)點的下一級節(jié)點的標識;以及用于更新所述葉子節(jié)點的標識。
在一個實施例中,所述更新模塊,包括:
中間節(jié)點以及下一級節(jié)點的標識滿足:
拆分后的每一個中間節(jié)點的子id,在下一級節(jié)點中有對應(yīng)的一個子id組;
所述子id組為m個子id的組合;m為從中間節(jié)點到本級數(shù)據(jù)節(jié)點路徑上的所有節(jié)點的數(shù)量依次相乘的積。
在一個實施例中,所述更新模塊105,還包括:
所述葉子節(jié)點數(shù)量為q;拆分后的每一個葉子節(jié)點的子id組,所述子id個數(shù)為p;所述p=n/q。
在一個實施例中,當接收到剪切中間節(jié)點或葉子節(jié)點的剪切指令時,所述裝置還包括:
剪切模塊106,用于查找目標節(jié)點與待剪切的數(shù)據(jù)節(jié)點的共同父節(jié)點,當從所述父節(jié)點到目標節(jié)點的路徑上所有數(shù)據(jù)節(jié)點的節(jié)點數(shù)量均為1時;或所述父節(jié)點和所述目標節(jié)點是同一節(jié)點時;將所述待剪切的數(shù)據(jù)節(jié)點移動到所述目標節(jié)點下,
所述更新模塊105,還用于更新剪切后的數(shù)據(jù)節(jié)點;所述目標節(jié)點為接收所述剪切節(jié)點的節(jié)點。
在一個實施例中,所述更新模塊105,還包括:
更新剪切后的數(shù)據(jù)節(jié)點的標識滿足:
本級數(shù)據(jù)節(jié)點的每一個子id組在上級節(jié)點中有對應(yīng)的子id,所述子id組的個數(shù)上級節(jié)點的數(shù)量。
關(guān)于上述實施例中的裝置,其中各個模塊執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實施例中進行了詳細描述,此處將不做詳細闡述說明。
根據(jù)本公開實施例的第三方面,本發(fā)明實施例提供一種物料清單數(shù)據(jù)的操作裝置,包括:
處理器;
用于存儲處理器可執(zhí)行命令的存儲器;
其中,所述處理器被配置為:
按照預(yù)設(shè)的順序遍歷物料清單的所有數(shù)據(jù)節(jié)點,獲取所述數(shù)據(jù)節(jié)點的層次和數(shù)量;所述物料清單為樹形結(jié)構(gòu);
為所述物料清單中每個數(shù)據(jù)節(jié)點設(shè)置對應(yīng)的標識;每個數(shù)據(jù)節(jié)點的標識包含至少一個子id或者子id組,且上一級數(shù)據(jù)節(jié)點和本級數(shù)據(jù)節(jié)點的標識滿足:上級節(jié)點的每個子id,在本級節(jié)點中有對應(yīng)的一個子id組;所述子id組為n個子id的組合;n為從根節(jié)點到本級數(shù)據(jù)節(jié)點路徑上的所有節(jié)點的數(shù)量依次相乘的積;所述每個數(shù)據(jù)節(jié)點的標識中,子id預(yù)設(shè)的數(shù)據(jù)位按照遍歷的順序順次遞增;
讀取所有數(shù)據(jù)節(jié)點的標識,并根據(jù)所有數(shù)據(jù)節(jié)點的標識展示所述物料清單中各數(shù)據(jù)節(jié)點之間的結(jié)構(gòu)。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器和光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。