在windchill中,BOM管理作为一种核心的业务功能存在,但是在windchill10.0版本的系统OOTB功能中,BOM无法提取零件的分类属性,因此一般情况下,都会进行克制化开发,获取BOM结构以及零件的层级是导出BOM报表的关键代码。获取BOM一般通过递归进行处理,往往都是传入顶层的部件,通过深度优先遍历,即可获取BOM结构,但是零件的层级,在系统的数据库中并没有进行记录,因此需要我们通过代码来计算。其实,零件的层级计算可以转换成递归算法的深度,因此实现BOM报表功能的核心代码就是要实现递归,以及计算递归深度。
1 先定义一个类,记录部件,部件的使用关系,部件层级。定义如下:
public class BOMElement {
//index 部件在BOM中的层数
private int index;
/