1 鍏堝畾涔変竴涓被錛岃褰曢儴浠訛紝閮ㄤ歡鐨勪嬌鐢ㄥ叧緋伙紝閮ㄤ歡灞傜駭銆傚畾涔夊涓嬶細
public class BOMElement {
//index 閮ㄤ歡鍦˙OM涓殑灞傛暟
private int index;
//part BOM涓殑閮ㄤ歡
private WTPart part;
//link 閮ㄤ歡鐨刲ink(link 鎻忚堪褰撳墠閮ㄤ歡)
private WTPartUsageLink link;
//鏍硅妭鐐瑰厓绱犵殑鍒濆鍖?/span>
public BOMElement(WTPart part){
this.index = 0;
this.part = part;
this.link = null;
}
//鎵鏈夊瓙鑺傜偣鍏冪礌鐨勫垵濮嬪寲
public BOMElement(int index,WTPart part,WTPartUsageLink link){
this.index = index;
this.part = part;
this.link = link;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public WTPart getPart() {
return part;
}
public void setPart(WTPart part) {
this.part = part;
}
public WTPartUsageLink getLink() {
return link;
}
public void setLink(WTPartUsageLink link) {
this.link = link;
}
}
2 浼犲叆欏跺眰閮ㄤ歡錛屽疄鐜伴掑綊鏌ヨ瀛愰儴浠訛紝騫跺畾涔夊彉閲忥紝璁板綍閫掑綊娣卞害錛?br /> public List<BOMElement> queryBOM(WTPart part) throws WTException{
BOMElement root = new BOMElement(part);
List<BOMElement> list = new ArrayList<BOMElement>();
ConfigSpec configSpec = WTPartHelper.service.findWTPartConfigSpec();
int index = 0;
list = querySubBOMList(root,configSpec,list,index);
return list;
}
private List<BOMElement> querySubBOMList(BOMElement element,ConfigSpec configSpec,List<BOMElement> list,int index) throws WTException{
list.add(element);
QueryResult qr = WTPartHelper.service.getUsesWTParts(element.getPart(),configSpec);
Vector<Object> vector = qr.getObjectVectorIfc().getVector();
for(int i=0;i<vector.size();i++){
Persistable[] persist = (Persistable[]) vector.get(i);
index++;
BOMElement subElement = new BOMElement(index,(WTPart)persist[1],(WTPartUsageLink)persist[0]);
querySubBOMList(subElement,configSpec,list,index);
index--;
}
return list;
}
3 涓婇潰瀹氫箟涓紝index鍙橀噺璁板綍閫掑綊娣卞害錛屽湪閫掑綊璋冪敤涔嬪墠錛岃鍙橀噺鑷1錛岃〃紺洪掑綊璋冪敤涓嬈★紝閫掑綊璋冪敤鍚庯紝璇ュ彉閲忚嚜鍑?錛岃〃紺洪掑綊璋冪敤鍑忓皯涓嬈°備互姝ゆ潵璁板綍閫掑綊璋冪敤鐨勬鏁般傚茍鍦ㄦ瀯閫燘OMElement涓紝浠ユ鏉ヨ褰曢浂浠剁殑灞傜駭銆?nbsp;

]]>