專利名稱::物料清單存儲(chǔ)方法及裝置、查詢方法及裝置的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及物料清單存儲(chǔ)技術(shù),具體涉及一種物料清單存儲(chǔ)方法及裝置、查詢方法及裝置。
背景技術(shù):
:采用計(jì)算機(jī)輔助企業(yè)生產(chǎn)管理,首先要使計(jì)算機(jī)能夠讀出企業(yè)所制造的產(chǎn)品構(gòu)成和所有要涉及的物料,為了便于計(jì)算機(jī)識別,需要將圖示表達(dá)的產(chǎn)品結(jié)構(gòu)轉(zhuǎn)化成某種數(shù)據(jù)格式,這種以數(shù)據(jù)格式來描述產(chǎn)品結(jié)構(gòu)的文件就是物料清單,即B0M。它是定義產(chǎn)品結(jié)構(gòu)的技術(shù)文件,因此,它又稱為產(chǎn)品結(jié)構(gòu)表或產(chǎn)品結(jié)構(gòu)樹。在某些工業(yè)領(lǐng)域,可能稱為"配方"、"要素表"或其它名稱。BOM在生產(chǎn)系統(tǒng)中是非常重要的基礎(chǔ)數(shù)據(jù)。在MRP(物料需求計(jì)劃)、生產(chǎn)備料、設(shè)備維修等過程中,需要對BOM的數(shù)據(jù)進(jìn)行頻繁地讀取,以獲取產(chǎn)成品、半成品的結(jié)構(gòu)信息?,F(xiàn)有技術(shù)中,一般對于BOM采用層次存儲(chǔ)的方式,保存在數(shù)據(jù)庫中,一次只維護(hù)一層的數(shù)據(jù),在數(shù)據(jù)庫中使用主、子表的方式存儲(chǔ)。如圖l所示的產(chǎn)品結(jié)構(gòu),對應(yīng)該結(jié)構(gòu),采用層次存儲(chǔ)的B0M結(jié)構(gòu)示意圖如圖2所示。對于這種存儲(chǔ)結(jié)構(gòu),在需要展開的時(shí)候,需要按層次遞歸或者循環(huán)展開。針對系統(tǒng)中的應(yīng)用,一般分為正向展開,反向展開,求解LC(低位碼)等。比如,對于圖2所示的存儲(chǔ)結(jié)構(gòu),如果對A節(jié)點(diǎn)進(jìn)行正向展開,則需要循環(huán)進(jìn)行關(guān)聯(lián)查詢。處理流程如圖3所示步驟301.得到A物料的子項(xiàng)物料D、C,作為當(dāng)前需要處理的物料;步驟302.判斷是否存在當(dāng)前物料作為父項(xiàng)物料的BOM;如果是,則執(zhí)行步驟303;否則,執(zhí)行步驟304;步驟303.繼續(xù)查找當(dāng)前物料的子項(xiàng)物料作為當(dāng)前物料;然后返回步驟302;步驟304.結(jié)束。可見,現(xiàn)有技術(shù)采用層次存儲(chǔ)的方式,在應(yīng)用時(shí)處理邏輯復(fù)雜,查詢效率低。由于在實(shí)際生產(chǎn)中,對于BOM的查詢是非常頻繁的,因此會(huì)導(dǎo)致每次調(diào)用開銷非常大,嚴(yán)重影響了系統(tǒng)的可用性。
發(fā)明內(nèi)容本發(fā)明實(shí)施例一方面提供一種物料清單存儲(chǔ)方法及裝置,以方便對B0M的查詢。本發(fā)明實(shí)施例另一方面還提供一種物料清單查詢方法及裝置,可以降低對B0M展開的系統(tǒng)開銷,提高查詢效率。為此,本發(fā)明實(shí)施例提供如下技術(shù)方案—種物料清單存儲(chǔ)方法,包括正向展開層次存儲(chǔ)的物料清單;遍歷所述物料清單的所有數(shù)據(jù)節(jié)點(diǎn),并記錄所述數(shù)據(jù)節(jié)點(diǎn)的結(jié)構(gòu)信息;根據(jù)所述結(jié)構(gòu)信息建立所述物料清單的查詢結(jié)構(gòu);將所述物料清單的查詢結(jié)構(gòu)存儲(chǔ)到數(shù)據(jù)庫中。優(yōu)選地,所述數(shù)據(jù)節(jié)點(diǎn)包括根節(jié)點(diǎn)和子節(jié)點(diǎn),所述結(jié)構(gòu)信息包括層號、左值、和右值;所述遍歷所述物料清單的所有數(shù)據(jù)節(jié)點(diǎn),并記錄所述數(shù)據(jù)節(jié)點(diǎn)的結(jié)構(gòu)信息包括按照預(yù)定的訪問順序遍歷所述物料清單的所有數(shù)據(jù)節(jié)點(diǎn);獲取到當(dāng)前數(shù)據(jù)節(jié)點(diǎn)后,記錄該節(jié)點(diǎn)的層號,并按照依次遞增的方式記錄所述數(shù)據(jù)節(jié)點(diǎn)的左值和右值。優(yōu)選地,所述預(yù)定的訪問順序包括獲取當(dāng)前數(shù)據(jù)節(jié)點(diǎn),然后按從左到右的順序訪問該數(shù)據(jù)節(jié)點(diǎn)的所有子節(jié)點(diǎn);所述按照依次遞增的方式記錄所述數(shù)據(jù)節(jié)點(diǎn)的左值和右值包括(1)如果所述當(dāng)前節(jié)點(diǎn)為根節(jié)點(diǎn),則記錄所述根節(jié)點(diǎn)的左值為設(shè)定的初始值,并將其作位置變量的值;(2)如果所述當(dāng)前節(jié)點(diǎn)為子節(jié)點(diǎn),則將所述子節(jié)點(diǎn)的左值記錄為位置變量的值加l,并將所述位置變量的值更新為所述子節(jié)點(diǎn)的左值;(3)如果所述子節(jié)點(diǎn)下沒有子節(jié)點(diǎn),則將所述子節(jié)點(diǎn)的右值記錄為所述子節(jié)點(diǎn)的左值加l,并將所述位置變量的值更新為所述子節(jié)點(diǎn)的右值;(4)如果所述當(dāng)前子節(jié)點(diǎn)下有子節(jié)點(diǎn),則返回步驟(2),直到遍歷返回到所述根節(jié)點(diǎn),將所述根節(jié)點(diǎn)的右值記錄為位置變量的值加1。優(yōu)選地,所述根據(jù)所述結(jié)構(gòu)信息建立所述物料清單的查詢結(jié)構(gòu)包括獲取各數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識,根據(jù)所述節(jié)點(diǎn)標(biāo)識從所述層次存儲(chǔ)的物料清單中獲取所述節(jié)點(diǎn)標(biāo)識對應(yīng)的物料;建立物料清單結(jié)構(gòu)描述表,所述物料清單結(jié)構(gòu)描述表包括所述物料清單的所有數(shù)據(jù)節(jié)點(diǎn)、對應(yīng)所述數(shù)據(jù)節(jié)點(diǎn)的物料、層號、左值、和右值?!N物料清單查詢方法,包括確定需要查詢的物料;從所述物料清單的查詢結(jié)構(gòu)中獲取所述物料對應(yīng)的數(shù)據(jù)節(jié)點(diǎn)的位置信息;根據(jù)所述位置信息確定所述數(shù)據(jù)節(jié)點(diǎn)的所有關(guān)聯(lián)節(jié)點(diǎn);從存儲(chǔ)所述查詢結(jié)構(gòu)的數(shù)據(jù)庫中提取出所述數(shù)據(jù)節(jié)點(diǎn)及其所有關(guān)聯(lián)節(jié)點(diǎn)的屬性信息。優(yōu)選地,所述位置信息包括層號、左節(jié)點(diǎn)和右節(jié)點(diǎn);所述關(guān)聯(lián)節(jié)點(diǎn)包括子節(jié)點(diǎn)和/或父節(jié)點(diǎn);所述根據(jù)所述位置信息確定所述數(shù)據(jù)節(jié)點(diǎn)的所有關(guān)聯(lián)節(jié)點(diǎn)包括正向查詢時(shí),確定左值大于所述數(shù)據(jù)節(jié)點(diǎn)的左值、右值小于所述數(shù)據(jù)節(jié)點(diǎn)的右值的子節(jié)點(diǎn)為所述數(shù)據(jù)節(jié)點(diǎn)的子節(jié)點(diǎn);反向查詢時(shí),確定左值小于所述數(shù)據(jù)節(jié)點(diǎn)的左值、右值大于所述數(shù)據(jù)節(jié)點(diǎn)的右值的子節(jié)點(diǎn)為所述數(shù)據(jù)節(jié)點(diǎn)的父節(jié)點(diǎn)。優(yōu)選地,所述方法還包括根據(jù)所述數(shù)據(jù)節(jié)點(diǎn)及其所有關(guān)聯(lián)節(jié)點(diǎn)的層號將提取的所述數(shù)據(jù)節(jié)點(diǎn)及其所有并6聯(lián)節(jié)點(diǎn)的屬性信息展現(xiàn)為樹形結(jié)構(gòu)?!N物料清單存儲(chǔ)裝置,包括展開單元,用于正向展開層次存儲(chǔ)的物料清單;遍歷單元,用于遍歷所述物料清單的所有數(shù)據(jù)節(jié)點(diǎn),并記錄所述數(shù)據(jù)節(jié)點(diǎn)的結(jié)構(gòu)信息;查詢結(jié)構(gòu)建立單元,用于根據(jù)所述結(jié)構(gòu)信息建立所述物料清單的查詢結(jié)構(gòu);存儲(chǔ)單元,用于將所述物料清單的查詢結(jié)構(gòu)存儲(chǔ)到數(shù)據(jù)庫中。優(yōu)選地,所述數(shù)據(jù)節(jié)點(diǎn)包括根節(jié)點(diǎn)和子節(jié)點(diǎn),所述結(jié)構(gòu)信息包括層號、左值、和右值;所述遍歷單元包括節(jié)點(diǎn)訪問子單元,用于按照預(yù)定的訪問順序遍歷所述物料清單的所有數(shù)據(jù)節(jié)點(diǎn);結(jié)構(gòu)信息記錄子單元,用于記錄所述節(jié)點(diǎn)訪問子單元訪問的當(dāng)前數(shù)據(jù)節(jié)點(diǎn)的層號,并按照依次遞增的方式記錄所述數(shù)據(jù)節(jié)點(diǎn)的左值和右值。優(yōu)選地,所述預(yù)定的訪問順序包括獲取當(dāng)前數(shù)據(jù)節(jié)點(diǎn),然后按從左到右的順序訪問該數(shù)據(jù)節(jié)點(diǎn)的所有子節(jié)點(diǎn);所述結(jié)構(gòu)信息記錄子單元包括層號獲取子單元,用于根據(jù)所述層次存儲(chǔ)的物料清單的主表和子表獲取并記錄所述當(dāng)前節(jié)點(diǎn)的層號;位置參數(shù)計(jì)算子單元,用于計(jì)算并記錄所述當(dāng)前節(jié)點(diǎn)的左值和右值,包括(1)如果所述當(dāng)前節(jié)點(diǎn)為根節(jié)點(diǎn),則記錄所述根節(jié)點(diǎn)的左值為設(shè)定的初始值,并將其作位置變量的值;(2)如果所述當(dāng)前節(jié)點(diǎn)為子節(jié)點(diǎn),則將所述子節(jié)點(diǎn)的左值記錄為位置變量的值加l,并將所述位置變量的值更新為所述子節(jié)點(diǎn)的左值;(3)如果所述子節(jié)點(diǎn)下沒有子節(jié)點(diǎn),則將所述子節(jié)點(diǎn)的右值記錄為所述子節(jié)點(diǎn)的左值加l,并將所述位置變量的值更新為所述子節(jié)點(diǎn)的右值;(4)如果所述當(dāng)前子節(jié)點(diǎn)下有子節(jié)點(diǎn),則返回步驟(2),直到遍歷返回到所述根節(jié)點(diǎn),將所述根節(jié)點(diǎn)的右值記錄為位置變量的值加1。優(yōu)選地,所述查詢結(jié)構(gòu)建立單元包括節(jié)點(diǎn)標(biāo)識獲取子單元,用于獲取各數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識;物料信息獲取子單元,用于根據(jù)所述節(jié)點(diǎn)標(biāo)識從所述層次存儲(chǔ)的物料清單中獲取所述節(jié)點(diǎn)標(biāo)識對應(yīng)的物料;結(jié)構(gòu)描述表建立子單元,用于建立物料清單結(jié)構(gòu)描述表,所述物料清單結(jié)構(gòu)描述表包括所述物料清單的所有數(shù)據(jù)節(jié)點(diǎn)、對應(yīng)所述數(shù)據(jù)節(jié)點(diǎn)的物料、層號、左值、和右值?!N物料清單查詢裝置,包括物料確定單元,用于確定需要查詢的物料;位置信息獲取單元,用于從所述物料清單的查詢結(jié)構(gòu)中獲取所述物料對應(yīng)的數(shù)據(jù)節(jié)點(diǎn)的位置信息;關(guān)聯(lián)節(jié)點(diǎn)確定單元,用于根據(jù)所述位置信息確定所述數(shù)據(jù)節(jié)點(diǎn)的所有關(guān)聯(lián)節(jié)點(diǎn);信息提取單元,用于從存儲(chǔ)所述查詢結(jié)構(gòu)的數(shù)據(jù)庫中提取出所述數(shù)據(jù)節(jié)點(diǎn)及其所有關(guān)聯(lián)節(jié)點(diǎn)的相關(guān)信息。優(yōu)選地,所述位置信息包括層號、左節(jié)點(diǎn)和右節(jié)點(diǎn);所述關(guān)聯(lián)節(jié)點(diǎn)包括子節(jié)點(diǎn)和/或父節(jié)點(diǎn);所述關(guān)聯(lián)節(jié)點(diǎn)確定單元包括子節(jié)點(diǎn)確定單元,用于正向查詢時(shí),確定左值大于所述數(shù)據(jù)節(jié)點(diǎn)的左值、右值小于所述數(shù)據(jù)節(jié)點(diǎn)的右值的子節(jié)點(diǎn)為所述數(shù)據(jù)節(jié)點(diǎn)的子節(jié)點(diǎn);父節(jié)點(diǎn)確定單元,用于反向查詢時(shí),確定左值小于所述數(shù)據(jù)節(jié)點(diǎn)的左值、右值大于所述數(shù)據(jù)節(jié)點(diǎn)的右值的子節(jié)點(diǎn)為所述數(shù)據(jù)節(jié)點(diǎn)的父節(jié)點(diǎn)。優(yōu)選地,所述裝置還包括樹形結(jié)構(gòu)展現(xiàn)單元,用于根據(jù)所述數(shù)據(jù)節(jié)點(diǎn)及其所有關(guān)聯(lián)節(jié)點(diǎn)的層號將提取的所述數(shù)據(jù)節(jié)點(diǎn)及其所有關(guān)聯(lián)節(jié)點(diǎn)的相關(guān)信息展現(xiàn)為樹形結(jié)構(gòu)。本發(fā)明實(shí)施例提供的物料清單存儲(chǔ)方法及裝置,對物料清單的傳統(tǒng)存儲(chǔ)結(jié)構(gòu)進(jìn)行了改進(jìn),通過正向展開層次存儲(chǔ)的物料清單,遍歷所述物料清單的所有數(shù)據(jù)節(jié)點(diǎn),并記錄所述數(shù)據(jù)節(jié)點(diǎn)的結(jié)構(gòu)信息;根據(jù)所述結(jié)構(gòu)信息建立所述BOM的查詢結(jié)構(gòu)并存儲(chǔ)到數(shù)據(jù)庫中?;谶@種方式存儲(chǔ)的物料清單,本發(fā)明實(shí)施例提供的物料清單查詢方法及裝置,在需要查詢物料時(shí),從所述物料清單的查詢結(jié)構(gòu)中獲取所述物料對應(yīng)的數(shù)據(jù)節(jié)點(diǎn)的位置信息;根據(jù)所述位置信息確定所述數(shù)據(jù)節(jié)點(diǎn)的所有關(guān)聯(lián)節(jié)點(diǎn);從存儲(chǔ)所述查詢結(jié)構(gòu)的數(shù)據(jù)庫中提取出所述數(shù)據(jù)節(jié)點(diǎn)及其所有關(guān)聯(lián)節(jié)點(diǎn)的屬性信息。由此可見,利用該查詢結(jié)構(gòu),可以將對于一個(gè)物料查詢其上下級物料信息、求物料的低位碼和對于物料清單按樹形展示的處理,簡化為對于結(jié)構(gòu)表的一次簡單的SQL的運(yùn)算,從而可以降低對BOM展開的系統(tǒng)開銷,提高物料查詢效率。圖1是現(xiàn)有技術(shù)中BOM的一種結(jié)構(gòu)示意圖;圖2是現(xiàn)有技術(shù)中對應(yīng)圖1的產(chǎn)品結(jié)構(gòu)采用層次存儲(chǔ)的BOM示意圖;圖3是現(xiàn)有技術(shù)中采用層次存儲(chǔ)的BOM正向展開的流程圖;圖4是本發(fā)明實(shí)施例物料清單存儲(chǔ)方法的流程圖;圖5是本發(fā)明實(shí)施例中BOM中數(shù)據(jù)節(jié)點(diǎn)的遍歷過程示意圖;圖6是本發(fā)明實(shí)施例中BOM的查詢結(jié)構(gòu)示意圖;圖7是本發(fā)明實(shí)施例中記錄BOM中各數(shù)據(jù)節(jié)點(diǎn)的位置信息的過程示意圖;圖8是本發(fā)明實(shí)施例物料清單存儲(chǔ)裝置的一種結(jié)構(gòu)示意圖;圖9是本發(fā)明實(shí)施例物料清單存儲(chǔ)裝置中查詢結(jié)構(gòu)建立單元的一種結(jié)構(gòu)示意圖;圖10是本發(fā)明實(shí)施例物料清單查詢方法的流程圖;圖11是本發(fā)明實(shí)施例物料清單查詢裝置的一種結(jié)構(gòu)示意圖。具體實(shí)施例方式為了使本
技術(shù)領(lǐng)域:
的人員更好地理解本發(fā)明實(shí)施例的方案,下面結(jié)合附圖和實(shí)施方式對本發(fā)明實(shí)施例作進(jìn)一步的詳細(xì)說明。本發(fā)明實(shí)施例物料清單存儲(chǔ)方法及裝置,針對現(xiàn)有技術(shù)中采用層次存儲(chǔ)的BOM在查詢時(shí)處理效率低、開銷大的問題,對于所有BOM的數(shù)據(jù),按照層次存儲(chǔ)的正向展開方法展開所有的子項(xiàng)物料,根據(jù)展開結(jié)果遍歷所述物料清單的所有數(shù)據(jù)節(jié)點(diǎn),并記錄所述數(shù)據(jù)節(jié)點(diǎn)的結(jié)構(gòu)信息,根據(jù)所述結(jié)構(gòu)信息建立所述物料清單的查詢結(jié)構(gòu),將所述查詢結(jié)構(gòu)存儲(chǔ)到數(shù)據(jù)庫中,實(shí)現(xiàn)對BOM快速查詢的支持。如圖4所示,是本發(fā)明實(shí)施例物料清單存儲(chǔ)方法的流程圖,包括以下步驟步驟401,正向展開層次存儲(chǔ)的B0M。所述層次存儲(chǔ)的BOM與現(xiàn)有技術(shù)相同,即一次只維護(hù)一層的數(shù)據(jù),在數(shù)據(jù)庫中使用主、子表的方式存儲(chǔ),所述主、子表中包括BOM主鍵、物料等信息。如下列表1和表2分別為一種常用的主表和子表結(jié)構(gòu)<table>tableseeoriginaldocumentpage9</column></row><table><table>tableseeoriginaldocumentpage10</column></row><table>不變化表2對于這種層次存儲(chǔ)的BOM,首先按照正向展開方式將其展開,具體展開過程與現(xiàn)有技術(shù)相同,展開后所述BOM為樹形結(jié)構(gòu)。步驟402,遍歷所述BOM的所有數(shù)據(jù)節(jié)點(diǎn),并記錄所述數(shù)據(jù)節(jié)點(diǎn)的結(jié)構(gòu)信息。所述數(shù)據(jù)節(jié)點(diǎn)包括根節(jié)點(diǎn)和子節(jié)點(diǎn),所述結(jié)構(gòu)信息包括層號、左值、和右值。具體地,可以按照預(yù)定的訪問順序遍歷所述BOM的所有數(shù)據(jù)節(jié)點(diǎn),獲取到當(dāng)前數(shù)據(jù)節(jié)點(diǎn)后,記錄該節(jié)點(diǎn)的層號,并按照依次遞增的方式記錄所述數(shù)據(jù)節(jié)點(diǎn)的左值和右值。所述預(yù)定的訪問順序可以是獲取當(dāng)前數(shù)據(jù)節(jié)點(diǎn),然后按從左到右的順序訪問該數(shù)據(jù)節(jié)點(diǎn)的所有子節(jié)點(diǎn)。以圖1所示結(jié)構(gòu)的BOM為例,其遍歷過程如圖5所示。其中,曲線表示訪問的方向,旁邊的數(shù)字代表訪問的順序。具體遍歷過程如下起始節(jié)點(diǎn)為A,即根節(jié)點(diǎn),首先訪問其第一個(gè)子節(jié)點(diǎn)B,此時(shí)訪問結(jié)果為A-B;當(dāng)前節(jié)點(diǎn)為B,由于其存在子節(jié)點(diǎn),訪問其第一個(gè)子節(jié)點(diǎn)D,此時(shí)訪問路徑為A_B_D;當(dāng)前節(jié)點(diǎn)為D,由于其沒有子節(jié)點(diǎn),則需要訪問其父節(jié)點(diǎn)的下一個(gè)子節(jié)點(diǎn)E,此時(shí)的訪問路徑為A-B-D-E;當(dāng)前節(jié)點(diǎn)為E,由于E沒有子節(jié)點(diǎn),所以需要訪問其父節(jié)點(diǎn)的下一個(gè)子節(jié)點(diǎn);當(dāng)前節(jié)點(diǎn)為B,由于其沒有未訪問的子節(jié)點(diǎn),需要訪問其父節(jié)點(diǎn)的下一個(gè)子節(jié)點(diǎn)C,此時(shí)的訪問路徑為A-B-D-E-C;當(dāng)前節(jié)點(diǎn)為C,由于其沒有子節(jié)點(diǎn),所有需要訪問其父節(jié)點(diǎn)的下一個(gè)子節(jié)點(diǎn);當(dāng)前節(jié)點(diǎn)為根節(jié)點(diǎn)A,其沒有未訪問的子節(jié)點(diǎn),所以遍歷終止。最后的遍歷結(jié)果即遍歷路徑為A-B-D-E-C。當(dāng)然,本發(fā)明實(shí)施例并不僅限于這種訪問順序,還可以設(shè)定其他訪問順序,比如按以下順序進(jìn)行訪問A-B-C-D-E,或者A-C-B-F-D等。在遍歷過程中,需要記錄每個(gè)數(shù)據(jù)節(jié)點(diǎn)的結(jié)構(gòu)信息,其中,節(jié)點(diǎn)的層號信息可以從所述主表和子表中獲得,位置信息即左值和右值需要根據(jù)遍歷的路徑及設(shè)定的初始值來確定,比如,可以在初始值的基礎(chǔ)上,按照依次遞增的方式記錄各數(shù)據(jù)節(jié)點(diǎn)的左值和右值,具體包括以下步驟(1)如果所述當(dāng)前節(jié)點(diǎn)為根節(jié)點(diǎn),則記錄所述根節(jié)點(diǎn)的左值為設(shè)定的初始值,并將其作位置變量的值;(2)如果所述當(dāng)前節(jié)點(diǎn)為子節(jié)點(diǎn),則將所述子節(jié)點(diǎn)的左值記錄為位置變量的值加l,并將所述位置變量的值更新為所述子節(jié)點(diǎn)的左值;(3)如果所述子節(jié)點(diǎn)下沒有子節(jié)點(diǎn),則將所述子節(jié)點(diǎn)的右值記錄為所述子節(jié)點(diǎn)的左值加l,并將所述位置變量的值更新為所述子節(jié)點(diǎn)的右值;(4)如果所述當(dāng)前子節(jié)點(diǎn)下有子節(jié)點(diǎn),則返回步驟(2),直到遍歷返回到所述根節(jié)點(diǎn),將所述根節(jié)點(diǎn)的右值記錄為位置變量的值加1。當(dāng)然,本發(fā)明實(shí)施例并不僅限于上述這種方式來記錄各數(shù)據(jù)節(jié)點(diǎn)的位置信息,還可以有其他方式,只要能夠正確表明各節(jié)點(diǎn)的關(guān)聯(lián)關(guān)系即可。具體過程將在后面舉例詳細(xì)說明。步驟403,根據(jù)所述結(jié)構(gòu)信息建立所述BOM的查詢結(jié)構(gòu)。具體地,可以獲取各數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識,根據(jù)所述節(jié)點(diǎn)標(biāo)識從所述層次存儲(chǔ)的物料清單中獲取所述節(jié)點(diǎn)標(biāo)識對應(yīng)的物料;然后,建立物料清單結(jié)構(gòu)描述表,所述物料清單結(jié)構(gòu)描述表包括所述物料清單的所有數(shù)據(jù)節(jié)點(diǎn)、對應(yīng)所述數(shù)據(jù)節(jié)點(diǎn)的物料、層號、左值、和右值。對于BOM的每個(gè)數(shù)據(jù)節(jié)點(diǎn),其查詢結(jié)構(gòu)如圖6所示。所述物料清單結(jié)構(gòu)描述表的一種示例如下表3所示<table>tableseeoriginaldocumentpage12</column></row><table>50個(gè)節(jié)點(diǎn),則此50個(gè)節(jié)點(diǎn)的序號分別為1-50,和此物料在單層BOM中,所在BOM字表的序號不一定一致FPARENT1D對應(yīng)于此物并牛的父項(xiàng)物津牛在本表中的主4定NUMBER對應(yīng)于此物津十的父項(xiàng)物沖牛在本表中的主4走表3步驟404,將所述BOM的查詢結(jié)構(gòu)存儲(chǔ)到數(shù)據(jù)庫中。下面以圖7所示正向展開后的BOM進(jìn)一步詳細(xì)說明本發(fā)明實(shí)施例中記錄所述數(shù)據(jù)節(jié)點(diǎn)的左值和右值的過程。可以設(shè)置變量CURSEQ,為當(dāng)前遍歷節(jié)點(diǎn)的一個(gè)計(jì)數(shù)。采用前序遍歷的非遞歸算法,遍歷每個(gè)數(shù)據(jù)節(jié)點(diǎn)。在遍歷的過程中,對于每個(gè)數(shù)據(jù)節(jié)點(diǎn),需要設(shè)置兩個(gè)值,LEFT和RIGHT,對于遍歷到的當(dāng)前節(jié)點(diǎn),如果該節(jié)點(diǎn)為首次遍歷到,則當(dāng)前節(jié)點(diǎn)LEFT=CURSEQ,CURSEQ+=1;如果當(dāng)前節(jié)點(diǎn)所有子節(jié)點(diǎn)都遍歷完畢,則當(dāng)前節(jié)點(diǎn)的RIGHT=CURSEQ,CURSEQ+=1;從而可以得到圖7中所示各節(jié)點(diǎn)左邊和右邊對應(yīng)的值,即LEFT和RIGHT。從圖中可以看出,對于任意數(shù)據(jù)節(jié)點(diǎn),其子節(jié)點(diǎn)的左值都大于該數(shù)據(jù)節(jié)點(diǎn)的左值,其子節(jié)點(diǎn)的右值都小于該數(shù)據(jù)節(jié)點(diǎn)的右值。根據(jù)這種特性,可以進(jìn)行快速的BOM的查詢。本發(fā)明實(shí)施例物料清單存儲(chǔ)方法,對BOM的傳統(tǒng)存儲(chǔ)結(jié)構(gòu)進(jìn)行了改進(jìn),通過正向展開層次存儲(chǔ)的B0M,遍歷所述BOM的所有數(shù)據(jù)節(jié)點(diǎn),并記錄所述數(shù)據(jù)節(jié)點(diǎn)的結(jié)構(gòu)信息;根據(jù)所述結(jié)構(gòu)信息建立所述BOM的查詢結(jié)構(gòu)并存儲(chǔ)到數(shù)據(jù)庫中。利用該查詢結(jié)構(gòu),可以將對于一個(gè)物料查詢其上下級物料信息、求物料的低位碼和對于BOM按樹形展示的處理,簡化為對于結(jié)構(gòu)表的一次簡單的SQL(StructuredQueryLanguage,結(jié)構(gòu)化查詢語言)的運(yùn)算,從而可以降低對BOM展開的系統(tǒng)開銷,提高物料查詢效率。相應(yīng)地,本發(fā)明實(shí)施例還提供一種物料清單存儲(chǔ)裝置,如圖8所示,是該裝置的一種結(jié)構(gòu)示意圖。在該實(shí)施例中,所述裝置包括展開單元801,用于正向展開層次存儲(chǔ)的物料清單;遍歷單元802,用于遍歷所述物料清單的所有數(shù)據(jù)節(jié)點(diǎn),并記錄所述數(shù)據(jù)節(jié)點(diǎn)的結(jié)構(gòu)信息;查詢結(jié)構(gòu)建立單元803,用于根據(jù)所述結(jié)構(gòu)信息建立所述物料清單的查詢結(jié)構(gòu);存儲(chǔ)單元804,用于將所述查詢結(jié)構(gòu)存儲(chǔ)到數(shù)據(jù)庫中。在本發(fā)明實(shí)施例中,所述數(shù)據(jù)節(jié)點(diǎn)包括根節(jié)點(diǎn)和子節(jié)點(diǎn),所述結(jié)構(gòu)信息包括層號、左值、和右值。所述遍歷單元的一種優(yōu)選結(jié)構(gòu)包括節(jié)點(diǎn)訪問子單元821和結(jié)構(gòu)信息記錄子單元822。其中節(jié)點(diǎn)訪問子單元821,用于按照預(yù)定的訪問順序遍歷所述物料清單的所有數(shù)據(jù)節(jié)點(diǎn);所述預(yù)定的訪問順序可以是獲取當(dāng)前數(shù)據(jù)節(jié)點(diǎn),然后按從左到右的順序訪問該數(shù)據(jù)節(jié)點(diǎn)的所有子節(jié)點(diǎn)。當(dāng)然,本發(fā)明實(shí)施例并不僅限于這種訪問順序,還可以設(shè)定其他訪問順序。結(jié)構(gòu)信息記錄子單元822,用于記錄所述節(jié)點(diǎn)訪問子單元訪問的當(dāng)前節(jié)點(diǎn)的層號,并按照依次遞增的方式記錄所述數(shù)據(jù)節(jié)點(diǎn)的左值和右值。所述結(jié)構(gòu)信息記錄子單元822的一種優(yōu)選結(jié)構(gòu)包括層號獲取子單元和位置參數(shù)計(jì)算子單元(未圖示)。其中所述層號獲取子單元,用于根據(jù)所述層次存儲(chǔ)的物料清單的主表和子表獲取并記錄所述當(dāng)前節(jié)點(diǎn)的層號;所述位置參數(shù)計(jì)算子單元,用于計(jì)算并記錄所述當(dāng)前節(jié)點(diǎn)的左值和右值,其需要根據(jù)遍歷的路徑及設(shè)定的初始值來確定,比如,可以在初始值的基礎(chǔ)上,按照依次遞增的方式記錄各數(shù)據(jù)節(jié)點(diǎn)的左值和右值,具體包括以下步驟(1)如果所述當(dāng)前節(jié)點(diǎn)為根節(jié)點(diǎn),則記錄所述根節(jié)點(diǎn)的左值為設(shè)定的初始值,并將其作位置變量的值;(2)如果所述當(dāng)前節(jié)點(diǎn)為子節(jié)點(diǎn),則將所述子節(jié)點(diǎn)的左值記錄為位置變量的值加l,并將所述位置變量的值更新為所述子節(jié)點(diǎn)的左值;(3)如果所述子節(jié)點(diǎn)下沒有子節(jié)點(diǎn),則將所述子節(jié)點(diǎn)的右值記錄為所述子節(jié)點(diǎn)的左值加l,并將所述位置變量的值更新為所述子節(jié)點(diǎn)的右值;(4)如果所述當(dāng)前子節(jié)點(diǎn)下有子節(jié)點(diǎn),則返回步驟(2),直到遍歷返回到所述根節(jié)點(diǎn),將所述根節(jié)點(diǎn)的右值記錄為位置變量的值加1。當(dāng)然,本發(fā)明實(shí)施例并不僅限于上述這種方式來記錄各數(shù)據(jù)節(jié)點(diǎn)的位置信息,還可以有其他方式,只要能夠正確表明各節(jié)點(diǎn)的關(guān)聯(lián)關(guān)系即可。具體過程將在后面舉例詳細(xì)說明。如圖9所示,在本發(fā)明實(shí)施例中,所述查詢結(jié)構(gòu)建立單元803的一種優(yōu)選結(jié)構(gòu)包括節(jié)點(diǎn)標(biāo)識獲取子單元901,用于獲取各數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識;物料信息獲取子單元902,用于根據(jù)所述節(jié)點(diǎn)標(biāo)識從所述層次存儲(chǔ)的物料清單中獲取所述節(jié)點(diǎn)標(biāo)識對應(yīng)的物料;結(jié)構(gòu)描述表建立子單元903,用于建立物料清單結(jié)構(gòu)描述表,所述物料清單結(jié)構(gòu)描述表包括所述物料清單的所有數(shù)據(jù)節(jié)點(diǎn)、對應(yīng)所述數(shù)據(jù)節(jié)點(diǎn)的物料、層號、左值、和右值。本發(fā)明實(shí)施例物料清單存儲(chǔ)裝置,對BOM的傳統(tǒng)存儲(chǔ)結(jié)構(gòu)進(jìn)行了改進(jìn),通過正向展開層次存儲(chǔ)的BOM,遍歷所述BOM的所有數(shù)據(jù)節(jié)點(diǎn),并記錄所述數(shù)據(jù)節(jié)點(diǎn)的結(jié)構(gòu)信息;根據(jù)所述結(jié)構(gòu)信息建立所述BOM的查詢結(jié)構(gòu)并存儲(chǔ)到數(shù)據(jù)庫中。利用該查詢結(jié)構(gòu),可以將對于一個(gè)物料查詢其上下級物料信息、求物料的低位碼和對于BOM按樹形展示的處理,簡化為對于結(jié)構(gòu)表的一次簡單的SQL的運(yùn)算,從而可以降低對BOM展開的系統(tǒng)開銷,提高物料查詢效率。基于前面本發(fā)明實(shí)施例物料清單的存儲(chǔ)方法存儲(chǔ)的物料清單,相應(yīng)地,本發(fā)明實(shí)施例還提供針對這種物料清單的一種查詢方法。如圖10所示,是本發(fā)明實(shí)施例物料清單查詢方法的流程圖,包括以下步驟步驟1001,確定需要查詢的物料。步驟1002,從所述物料清單的查詢結(jié)構(gòu)中獲取所述物料對應(yīng)的數(shù)據(jù)節(jié)點(diǎn)的位置信息。步驟1003,根據(jù)所述位置信息確定所述數(shù)據(jù)節(jié)點(diǎn)的所有關(guān)聯(lián)節(jié)點(diǎn)。所述位置信息包括層號、左節(jié)點(diǎn)和右節(jié)點(diǎn);所述關(guān)聯(lián)節(jié)點(diǎn)包括子節(jié)點(diǎn)和/或父節(jié)點(diǎn)。需要正向查詢時(shí),確定左值大于所述數(shù)據(jù)節(jié)點(diǎn)的左值、右值小于所述數(shù)據(jù)節(jié)點(diǎn)的右值的子節(jié)點(diǎn)為所述數(shù)據(jù)節(jié)點(diǎn)的子節(jié)點(diǎn);反向查詢時(shí),確定左值小于所述數(shù)據(jù)節(jié)點(diǎn)的左值、右值大于所述數(shù)據(jù)節(jié)點(diǎn)的右值的子節(jié)點(diǎn)為所述數(shù)據(jù)節(jié)點(diǎn)的父節(jié)點(diǎn)。步驟1004,從存儲(chǔ)所述查詢結(jié)構(gòu)的數(shù)據(jù)庫中提取出所述數(shù)據(jù)節(jié)點(diǎn)及其所有關(guān)聯(lián)節(jié)點(diǎn)的屬性信息。例如,對于圖7所示的BOM,假設(shè)任意節(jié)點(diǎn)的左值以L表示,右值以R表示。需要正向查詢M601時(shí),其L=1,1=44,則其所有子節(jié)點(diǎn)需滿足條件丄>1,R<44;根據(jù)該條件即可從數(shù)據(jù)庫中提取出M601的所有子節(jié)點(diǎn)的屬性信息。需要反向查詢M614時(shí),其L二8,R二9,則其直接和間接的父節(jié)點(diǎn)一定符合L〈8,R>9;根據(jù)該條件即可從數(shù)據(jù)庫中提取出M614的所有父節(jié)點(diǎn)的屬性信息。為了為用戶提供更直觀的展現(xiàn)結(jié)構(gòu),在本發(fā)明實(shí)施例中,還可進(jìn)一步包括以下步驟根據(jù)所述數(shù)據(jù)節(jié)點(diǎn)及其所有關(guān)聯(lián)節(jié)點(diǎn)的層號將提取的所述數(shù)據(jù)節(jié)點(diǎn)及其所有并聯(lián)節(jié)點(diǎn)的屬性信息展現(xiàn)為樹形結(jié)構(gòu)。例如,從M601構(gòu)造樹形結(jié)構(gòu)來展現(xiàn)時(shí),只需要按照每個(gè)查詢結(jié)構(gòu)的左值排序,并且按照層號進(jìn)行適當(dāng)?shù)目s進(jìn),就可以構(gòu)造出相應(yīng)的節(jié)點(diǎn)樹。由于BOM數(shù)據(jù)一般存在于數(shù)據(jù)庫中,所以以上三種應(yīng)用對應(yīng)于三句簡單的SQL語句即可實(shí)現(xiàn),并且SQL語句中條件判斷所使用的列均為數(shù)字類型,建立索引以后,查詢速度很快。相應(yīng)地,本發(fā)明實(shí)施例還提供一種物料清單查詢裝置,如圖11所示,是該裝置的一種結(jié)構(gòu)示意圖。在該實(shí)施例中,所述裝置包括物料確定單元lll,用于確定需要查詢的物料;位置信息獲取單元112,用于從所述物料清單的查詢結(jié)構(gòu)中獲取所述物料對應(yīng)的數(shù)據(jù)節(jié)點(diǎn)的位置信息;關(guān)聯(lián)節(jié)點(diǎn)確定單元113,用于根據(jù)所述位置信息確定所述數(shù)據(jù)節(jié)點(diǎn)的所有關(guān)聯(lián)節(jié)點(diǎn);信息提取單元114,用于從存儲(chǔ)所述查詢結(jié)構(gòu)的數(shù)據(jù)庫中提取出所述數(shù)據(jù)節(jié)點(diǎn)及其所有關(guān)聯(lián)節(jié)點(diǎn)的相關(guān)信息。在本發(fā)明實(shí)施例中,所述位置信息包括層號、左節(jié)點(diǎn)和右節(jié)點(diǎn);所述關(guān)聯(lián)節(jié)點(diǎn)包括子節(jié)點(diǎn)和/或父節(jié)點(diǎn);所述關(guān)聯(lián)節(jié)點(diǎn)確定單元113的一種優(yōu)選結(jié)構(gòu)包括子節(jié)點(diǎn)確定單元131和父節(jié)點(diǎn)確定單元132。其中子節(jié)點(diǎn)確定單元131,用于正向查詢時(shí),確定左值大于所述數(shù)據(jù)節(jié)點(diǎn)的左值、右值小于所述數(shù)據(jù)節(jié)點(diǎn)的右值的子節(jié)點(diǎn)為所述數(shù)據(jù)節(jié)點(diǎn)的子節(jié)點(diǎn);父節(jié)點(diǎn)確定單元132,用于反向查詢時(shí),確定左值小于所述數(shù)據(jù)節(jié)點(diǎn)的左值、右值大于所述數(shù)據(jù)節(jié)點(diǎn)的右值的子節(jié)點(diǎn)為所述數(shù)據(jù)節(jié)點(diǎn)的父節(jié)點(diǎn)。為了為用戶提供更直觀的展現(xiàn)結(jié)構(gòu),在本發(fā)明實(shí)施例中,所述裝置還可進(jìn)一步包括樹形結(jié)構(gòu)展現(xiàn)單元115,用于根據(jù)所述數(shù)據(jù)節(jié)點(diǎn)及其所有關(guān)聯(lián)節(jié)點(diǎn)的層號將提取的所述數(shù)據(jù)節(jié)點(diǎn)及其所有并聯(lián)節(jié)點(diǎn)的屬性信息展現(xiàn)為樹形結(jié)構(gòu)。例如,從M601構(gòu)造樹形結(jié)構(gòu)來展現(xiàn)時(shí),只需要按照每個(gè)查詢結(jié)構(gòu)的左值排序,并且按照層號進(jìn)行適當(dāng)?shù)目s進(jìn),就可以構(gòu)造出相應(yīng)的節(jié)點(diǎn)樹。由于BOM數(shù)據(jù)一般存在于數(shù)據(jù)庫中,所以利用本發(fā)明實(shí)施例物料清單查詢裝置,可以從所述物料清單的查詢結(jié)構(gòu)中獲取所述物料對應(yīng)的數(shù)據(jù)節(jié)點(diǎn)的位置信息,根據(jù)所述位置信息確定所述數(shù)據(jù)節(jié)點(diǎn)的所有關(guān)聯(lián)節(jié)點(diǎn),從而可以方便地從存儲(chǔ)所述查詢結(jié)構(gòu)的數(shù)據(jù)庫中提取出所述數(shù)據(jù)節(jié)點(diǎn)及其所有關(guān)聯(lián)節(jié)點(diǎn)的屬性信息,可以降低對BOM展開的系統(tǒng)開銷,提高查詢效率。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,所述的存儲(chǔ)介質(zhì),如ROM/RAM、磁碟、光盤等。以上對本發(fā)明實(shí)施例進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體實(shí)施方式對本發(fā)明進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及設(shè)備;同時(shí),對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。權(quán)利要求一種物料清單存儲(chǔ)方法,其特征在于,包括正向展開層次存儲(chǔ)的物料清單;遍歷所述物料清單的所有數(shù)據(jù)節(jié)點(diǎn),并記錄所述數(shù)據(jù)節(jié)點(diǎn)的結(jié)構(gòu)信息;根據(jù)所述結(jié)構(gòu)信息建立所述物料清單的查詢結(jié)構(gòu);將所述物料清單的查詢結(jié)構(gòu)存儲(chǔ)到數(shù)據(jù)庫中。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述數(shù)據(jù)節(jié)點(diǎn)包括根節(jié)點(diǎn)和子節(jié)點(diǎn),所述結(jié)構(gòu)信息包括層號、左值、和右值;所述遍歷所述物料清單的所有數(shù)據(jù)節(jié)點(diǎn),并記錄所述數(shù)據(jù)節(jié)點(diǎn)的結(jié)構(gòu)信息包括按照預(yù)定的訪問順序遍歷所述物料清單的所有數(shù)據(jù)節(jié)點(diǎn);獲取到當(dāng)前數(shù)據(jù)節(jié)點(diǎn)后,記錄該節(jié)點(diǎn)的層號,并按照依次遞增的方式記錄所述數(shù)據(jù)節(jié)點(diǎn)的左值和右值。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述預(yù)定的訪問順序包括獲取當(dāng)前數(shù)據(jù)節(jié)點(diǎn),然后按從左到右的順序訪問該數(shù)據(jù)節(jié)點(diǎn)的所有子節(jié)點(diǎn);所述按照依次遞增的方式記錄所述數(shù)據(jù)節(jié)點(diǎn)的左值和右值包括(1)如果所述當(dāng)前節(jié)點(diǎn)為根節(jié)點(diǎn),則記錄所述根節(jié)點(diǎn)的左值為設(shè)定的初始值,并將其作位置變量的值;(2)如果所述當(dāng)前節(jié)點(diǎn)為子節(jié)點(diǎn),則將所述子節(jié)點(diǎn)的左值記錄為位置變量的值加l,并將所述位置變量的值更新為所述子節(jié)點(diǎn)的左值;(3)如果所述子節(jié)點(diǎn)下沒有子節(jié)點(diǎn),則將所述子節(jié)點(diǎn)的右值記錄為所述子節(jié)點(diǎn)的左值加l,并將所述位置變量的值更新為所述子節(jié)點(diǎn)的右值;(4)如果所述當(dāng)前子節(jié)點(diǎn)下有子節(jié)點(diǎn),則返回步驟(2),直到遍歷返回到所述根節(jié)點(diǎn),將所述根節(jié)點(diǎn)的右值記錄為位置變量的值加1。4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述結(jié)構(gòu)信息建立所述物料清單的查詢結(jié)構(gòu)包括獲取各數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識,根據(jù)所述節(jié)點(diǎn)標(biāo)識從所述層次存儲(chǔ)的物料清單中獲取所述節(jié)點(diǎn)標(biāo)識對應(yīng)的物料;建立物料清單結(jié)構(gòu)描述表,所述物料清單結(jié)構(gòu)描述表包括所述物料清單的所有數(shù)據(jù)節(jié)點(diǎn)、對應(yīng)所述數(shù)據(jù)節(jié)點(diǎn)的物料、層號、左值、和右值。5.—種基于權(quán)利要求1至4任一項(xiàng)所述的方法存儲(chǔ)的物料清單查詢方法,其特征在于,包括確定需要查詢的物料;從所述物料清單的查詢結(jié)構(gòu)中獲取所述物料對應(yīng)的數(shù)據(jù)節(jié)點(diǎn)的位置信息;根據(jù)所述位置信息確定所述數(shù)據(jù)節(jié)點(diǎn)的所有關(guān)聯(lián)節(jié)點(diǎn);從存儲(chǔ)所述查詢結(jié)構(gòu)的數(shù)據(jù)庫中提取出所述數(shù)據(jù)節(jié)點(diǎn)及其所有關(guān)聯(lián)節(jié)點(diǎn)的屬性信息。6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述位置信息包括層號、左節(jié)點(diǎn)和右節(jié)點(diǎn);所述關(guān)聯(lián)節(jié)點(diǎn)包括子節(jié)點(diǎn)和/或父節(jié)點(diǎn);所述根據(jù)所述位置信息確定所述數(shù)據(jù)節(jié)點(diǎn)的所有關(guān)聯(lián)節(jié)點(diǎn)包括正向查詢時(shí),確定左值大于所述數(shù)據(jù)節(jié)點(diǎn)的左值、右值小于所述數(shù)據(jù)節(jié)點(diǎn)的右值的子節(jié)點(diǎn)為所述數(shù)據(jù)節(jié)點(diǎn)的子節(jié)點(diǎn);反向查詢時(shí),確定左值小于所述數(shù)據(jù)節(jié)點(diǎn)的左值、右值大于所述數(shù)據(jù)節(jié)點(diǎn)的右值的子節(jié)點(diǎn)為所述數(shù)據(jù)節(jié)點(diǎn)的父節(jié)點(diǎn)。7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述方法還包括根據(jù)所述數(shù)據(jù)節(jié)點(diǎn)及其所有關(guān)聯(lián)節(jié)點(diǎn)的層號將提取的所述數(shù)據(jù)節(jié)點(diǎn)及其所有并聯(lián)節(jié)點(diǎn)的屬性信息展現(xiàn)為樹形結(jié)構(gòu)。8.—種物料清單存儲(chǔ)裝置,其特征在于,包括展開單元,用于正向展開層次存儲(chǔ)的物料清單;遍歷單元,用于遍歷所述物料清單的所有數(shù)據(jù)節(jié)點(diǎn),并記錄所述數(shù)據(jù)節(jié)點(diǎn)的結(jié)構(gòu)信息;查詢結(jié)構(gòu)建立單元,用于根據(jù)所述結(jié)構(gòu)信息建立所述物料清單的查詢結(jié)構(gòu);存儲(chǔ)單元,用于將所述物料清單的查詢結(jié)構(gòu)存儲(chǔ)到數(shù)據(jù)庫中。9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述數(shù)據(jù)節(jié)點(diǎn)包括根節(jié)點(diǎn)和子節(jié)點(diǎn),所述結(jié)構(gòu)信息包括層號、左值、和右值;所述遍歷單元包括節(jié)點(diǎn)訪問子單元,用于按照預(yù)定的訪問順序遍歷所述物料清單的所有數(shù)據(jù)節(jié)點(diǎn);結(jié)構(gòu)信息記錄子單元,用于記錄所述節(jié)點(diǎn)訪問子單元訪問的當(dāng)前數(shù)據(jù)節(jié)點(diǎn)的層號,并按照依次遞增的方式記錄所述數(shù)據(jù)節(jié)點(diǎn)的左值和右值。10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述預(yù)定的訪問順序包括獲取當(dāng)前數(shù)據(jù)節(jié)點(diǎn),然后按從左到右的順序訪問該數(shù)據(jù)節(jié)點(diǎn)的所有子節(jié)點(diǎn);所述結(jié)構(gòu)信息記錄子單元包括層號獲取子單元,用于根據(jù)所述層次存儲(chǔ)的物料清單的主表和子表獲取并記錄所述當(dāng)前節(jié)點(diǎn)的層號;位置參數(shù)計(jì)算子單元,用于計(jì)算并記錄所述當(dāng)前節(jié)點(diǎn)的左值和右值,包括(1)如果所述當(dāng)前節(jié)點(diǎn)為根節(jié)點(diǎn),則記錄所述根節(jié)點(diǎn)的左值為設(shè)定的初始值,并將其作位置變量的值;(2)如果所述當(dāng)前節(jié)點(diǎn)為子節(jié)點(diǎn),則將所述子節(jié)點(diǎn)的左值記錄為位置變量的值加l,并將所述位置變量的值更新為所述子節(jié)點(diǎn)的左值;(3)如果所述子節(jié)點(diǎn)下沒有子節(jié)點(diǎn),則將所述子節(jié)點(diǎn)的右值記錄為所述子節(jié)點(diǎn)的左值加l,并將所述位置變量的值更新為所述子節(jié)點(diǎn)的右值;(4)如果所述當(dāng)前子節(jié)點(diǎn)下有子節(jié)點(diǎn),則返回步驟(2),直到遍歷返回到所述根節(jié)點(diǎn),將所述根節(jié)點(diǎn)的右值記錄為位置變量的值加1。11.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述查詢結(jié)構(gòu)建立單元包括節(jié)點(diǎn)標(biāo)識獲取子單元,用于獲取各數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識;物料信息獲取子單元,用于根據(jù)所述節(jié)點(diǎn)標(biāo)識從所述層次存儲(chǔ)的物料清單中獲取所述節(jié)點(diǎn)標(biāo)識對應(yīng)的物料;結(jié)構(gòu)描述表建立子單元,用于建立物料清單結(jié)構(gòu)描述表,所述物料清單結(jié)構(gòu)描述表包括所述物料清單的所有數(shù)據(jù)節(jié)點(diǎn)、對應(yīng)所述數(shù)據(jù)節(jié)點(diǎn)的物料、層號、左值、和右值。12.—種基于權(quán)利要求1至4任一項(xiàng)所述的方法存儲(chǔ)的物料清單查詢裝置,其特征在于,包括物料確定單元,用于確定需要查詢的物料;位置信息獲取單元,用于從所述物料清單的查詢結(jié)構(gòu)中獲取所述物料對應(yīng)的數(shù)據(jù)節(jié)點(diǎn)的位置信息;關(guān)聯(lián)節(jié)點(diǎn)確定單元,用于根據(jù)所述位置信息確定所述數(shù)據(jù)節(jié)點(diǎn)的所有關(guān)聯(lián)節(jié)點(diǎn);信息提取單元,用于從存儲(chǔ)所述查詢結(jié)構(gòu)的數(shù)據(jù)庫中提取出所述數(shù)據(jù)節(jié)點(diǎn)及其所有關(guān)聯(lián)節(jié)點(diǎn)的相關(guān)信息。13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述位置信息包括層號、左節(jié)點(diǎn)和右節(jié)點(diǎn);所述關(guān)聯(lián)節(jié)點(diǎn)包括子節(jié)點(diǎn)和/或父節(jié)點(diǎn);所述關(guān)聯(lián)節(jié)點(diǎn)確定單元包括子節(jié)點(diǎn)確定單元,用于正向查詢時(shí),確定左值大于所述數(shù)據(jù)節(jié)點(diǎn)的左值、右值小于所述數(shù)據(jù)節(jié)點(diǎn)的右值的子節(jié)點(diǎn)為所述數(shù)據(jù)節(jié)點(diǎn)的子節(jié)點(diǎn);父節(jié)點(diǎn)確定單元,用于反向查詢時(shí),確定左值小于所述數(shù)據(jù)節(jié)點(diǎn)的左值、右值大于所述數(shù)據(jù)節(jié)點(diǎn)的右值的子節(jié)點(diǎn)為所述數(shù)據(jù)節(jié)點(diǎn)的父節(jié)點(diǎn)。14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述裝置還包括樹形結(jié)構(gòu)展現(xiàn)單元,用于根據(jù)所述數(shù)據(jù)節(jié)點(diǎn)及其所有關(guān)聯(lián)節(jié)點(diǎn)的層號將提取的所述數(shù)據(jù)節(jié)點(diǎn)及其所有關(guān)聯(lián)節(jié)點(diǎn)的相關(guān)信息展現(xiàn)為樹形結(jié)構(gòu)。全文摘要本發(fā)明涉及物料清單存儲(chǔ)技術(shù),公開了一種物料清單存儲(chǔ)方法及裝置,所述方法包括正向展開層次存儲(chǔ)的物料清單;遍歷所述物料清單的所有數(shù)據(jù)節(jié)點(diǎn),并記錄所述數(shù)據(jù)節(jié)點(diǎn)的結(jié)構(gòu)信息;根據(jù)所述結(jié)構(gòu)信息建立所述物料清單的查詢結(jié)構(gòu);將所述物料清單的查詢結(jié)構(gòu)存儲(chǔ)到數(shù)據(jù)庫中。相應(yīng)地,本發(fā)明還公開了一種物料清單查詢方法及裝置。利用本發(fā)明,可以實(shí)現(xiàn)對物料清單的快速查詢,降低對物料清單展開的系統(tǒng)開銷,提高查詢效率。文檔編號G06Q10/00GK101706820SQ20091025074公開日2010年5月12日申請日期2009年12月10日優(yōu)先權(quán)日2009年12月10日發(fā)明者白智勇申請人:金蝶軟件(中國)有限公司