package com.connor.jk.plm.exportBOM; import java.awt.Color; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFCellStyle; import org.apache.poi.xssf.usermodel.XSSFFont; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import com.teamcenter.rac.aif.AbstractAIFOperation; import com.teamcenter.rac.aif.kernel.AIFComponentContext; import com.teamcenter.rac.form.ItemRevisionMasterForm; import com.teamcenter.rac.kernel.TCComponent; import com.teamcenter.rac.kernel.TCComponentBOMLine; import com.teamcenter.rac.kernel.TCComponentDataset; import com.teamcenter.rac.kernel.TCComponentForm; import com.teamcenter.rac.kernel.TCComponentICO; import com.teamcenter.rac.kernel.TCComponentItem; import com.teamcenter.rac.kernel.TCComponentItemRevision; import com.teamcenter.rac.kernel.TCComponentTcFile; import com.teamcenter.rac.kernel.TCException; import com.teamcenter.rac.kernel.TCPreferenceService; import com.teamcenter.rac.kernel.TCSession; import com.teamcenter.rac.kernel.ics.ICSProperty; import com.teamcenter.rac.util.MessageBox; public class exportHardwareBOM_Operation extends AbstractAIFOperation { private String text; private String path; private ProgressBarThread wait; private TCSession session; private TCComponentBOMLine comp; private FileInputStream fis; private XSSFWorkbook workbook; private FileOutputStream out; private TCPreferenceService preferenceService; private List list = new ArrayList<>(); private exportHardwareBOM_Bean bean; private TCComponentBOMLine child; private String jbName = "";// 基板组件名称 private String SBH = "";// 识别号 public exportHardwareBOM_Operation(String text, String path, ProgressBarThread wait, TCSession session, TCComponentBOMLine comp) { this.text = text; this.path = path; this.wait = wait; this.session = session; this.comp = comp; } Integer[] keys = null; String[] vals = null; private String realNumber = ""; @Override public void executeOperation() throws Exception { //编制人抓取fnd0ActuatedInteractiveTsks fnd0Performer fnd0EndDate fnd0AliasTaskName String name1="";//编制 String name2="";//审核 String name3="";//批准 TCComponent[] component=comp.getItemRevision().getTCProperty("fnd0ActuatedInteractiveTsks").getReferenceValueArray(); // System.out.println(component.length); for (int i = 0; i < component.length; i++) { //任务名称 if(component[i].getTCProperty("fnd0AliasTaskName").getStringValue().contains("编制")) { name1=component[i].getTCProperty("fnd0Performer").getDisplayValue().split("\\(")[0]; name1=name1+"/"+component[i].getTCProperty("fnd0EndDate").getDisplayValue(); }else if(component[i].getTCProperty("fnd0AliasTaskName").getStringValue().contains("审核")) { name2=component[i].getTCProperty("fnd0Performer").getDisplayValue().split("\\(")[0]; name2=name2+"/"+component[i].getTCProperty("fnd0EndDate").getDisplayValue(); }else if(component[i].getTCProperty("fnd0AliasTaskName").getStringValue().contains("批准")) { name3=component[i].getTCProperty("fnd0Performer").getDisplayValue().split("\\(")[0]; name3=name3+"/"+component[i].getTCProperty("fnd0EndDate").getDisplayValue(); } } // if(true) { // return; // } long start = System.currentTimeMillis(); int colsCount = 15;//2017.10.18新增一列 // 获取分类属性 TCComponentItemRevision itemRevision = comp.getItemRevision(); TCComponentICO[] icoS = itemRevision.getClassificationObjects(); int count = 0; int count1 = 0; for (int i = 0; i < icoS.length; i++) { ICSProperty[] cPropS = icoS[i].getICSProperties(true); for (int j = 0; j < cPropS.length; j++) { // System.out.println(count); count++; } keys = new Integer[count]; vals = new String[count]; for (int j = 0; j < cPropS.length; j++) { // System.out.println(count); keys[count1] = cPropS[j].getId(); // System.out.println("keys[" + count1 + "]================>" + keys[count1]); vals[count1] = cPropS[j].getValue(); // System.out.println("vals[" + count1 + "]================>" + vals[count1]); if (keys[count1] == -500293) { jbName = vals[count1]; } else if (keys[count1] == -500301) { SBH = vals[count1]; } count1++; } } String sxx = "jk_bom2_uid";// G8TlM0X6YvbLjA G8TlM0X6YvbLjA TJXl8kmSYvbLjA File file = getExcel(sxx); if (file == null) { return; } getBomline(comp,realNumber); System.out.println("共有BOM" + list.size() + "条"); int rowCount = list.size(); fis = new FileInputStream(file); workbook = new XSSFWorkbook(fis); //最后一行的字体 XSSFFont font2 = workbook.createFont(); font2.setFontName("宋体"); font2.setFontHeightInPoints((short) 11);// 设置字体大小 //物料名称,位号等的字体格式 XSSFFont font4 = workbook.createFont(); font4.setFontName("宋体"); font4.setFontHeightInPoints((short) 10);// 设置字体大小 //B列序号的字体 XSSFFont font = workbook.createFont(); font.setFontName("微软雅黑"); font.setFontHeightInPoints((short) 9);// 设置字体大小 // // XSSFFont font3 = workbook.createFont(); // font3.setFontName("微软雅黑"); // font3.setFontHeightInPoints((short) 10);// 设置字体大小 XSSFSheet sheet = workbook.getSheet("硬件清单"); XSSFRow row = sheet.getRow(1); XSSFCell cell_0 = row.getCell(3); cell_0.setCellValue(comp.getItemRevision().getTCProperty("item_id").getStringValue()); cell_0 = row.getCell(11); cell_0.setCellValue(comp.getItemRevision().getTCProperty("item_revision_id").getStringValue()); row = sheet.getRow(2); cell_0 = row.getCell(3); cell_0.setCellValue(jbName); cell_0 = row.getCell(11); cell_0.setCellValue(SBH); row = sheet.getRow(4); cell_0 = row.getCell(3); Date date=new Date(); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); String time= sdf.format(date); time=time.replace("-", "."); cell_0.setCellValue(time);//生效日期 int startRow = 6; XSSFCellStyle sty = workbook.createCellStyle();// 新建单元格的格式 XSSFCellStyle style = workbook.createCellStyle();// C列物料编码单元格的格式 // XSSFCellStyle sty2 = sheet.getRow(7).getCell(1).getCellStyle(); XSSFCellStyle sty2 = workbook.createCellStyle();//B列单元格的样式 sty2.setBorderBottom((short) 1); sty2.setBorderLeft((short) 2); sty2.setBorderRight((short) 1); sty2.setBorderTop((short) 1); sty2.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER); sty2.setFont(font); // XSSFCellStyle sty3 = sheet.getRow(6).getCell(13).getCellStyle();// N列单元格的格式 XSSFCellStyle sty3 = workbook.createCellStyle();// O列备注单元格的格式 XSSFCellStyle sty4 = workbook.createCellStyle();// 倒数第五行和最后一行的格式 XSSFCellStyle sty5 = workbook.createCellStyle();// 第一个备注的格式 sty5.setBorderTop((short) 2); sty5.setBorderRight((short) 2); XSSFCellStyle sty6 = workbook.createCellStyle();// 更改人单元格的格式 XSSFCellStyle sty7 = workbook.createCellStyle();// 更改人/日期单元格的格式 // XSSFCellStyle sty8 = workbook.createCellStyle();// 倒数第五行中间的格式 // sty8.setBorderBottom((short) 2); // sty8.setBorderLeft((short) 0); // sty8.setBorderRight((short) 0); sty6.setBorderBottom((short) 2); sty6.setBorderLeft((short) 2); sty6.setBorderRight((short) 1); sty7.setBorderLeft((short) 1); sty7.setBorderBottom((short) 2); sty7.setBorderRight((short) 2); // sty = sheet.getRow(7).getCell(11).getCellStyle(); // sty.setBorderBottom(CellStyle.BORDER_THIN); sty.setBorderBottom((short) 1); sty.setBorderLeft((short) 1); sty.setBorderRight((short) 1); sty.setBorderTop((short) 1); // sty.setBottomBorderColor(IndexedColors.BLACK.getIndex()); sty.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);// 垂直居中 sty.setAlignment(XSSFCellStyle.ALIGN_LEFT);// 水平居左 style.setBorderBottom(CellStyle.BORDER_THIN); // style.setBottomBorderColor(IndexedColors.BLACK.getIndex()); style.setAlignment(XSSFCellStyle.ALIGN_CENTER); // 居中 style.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER); // 居中 style.setFont(font); // sty2.setFont(font); sty3.setBorderBottom((short) 1); sty3.setBorderLeft((short) 1); sty3.setBorderRight((short) 2); // sty3.setBottomBorderColor(IndexedColors.BLACK.getIndex()); sty3.setBorderTop((short) 1); // sty3.setTopBorderColor(IndexedColors.BLACK.getIndex()); sty4.setBorderBottom((short)2); sty4.setBorderLeft((short)1); sty4.setBorderRight((short)1); // sty4.setBottomBorderColor(IndexedColors.BLACK.getIndex()); // sty4.setBorderTop(CellStyle.BORDER_THIN); // sty4.setTopBorderColor(IndexedColors.BLACK.getIndex()); // sty4.setBorderLeft(CellStyle.BORDER_THIN); // sty4.setLeftBorderColor(IndexedColors.BLACK.getIndex()); // sty4.setBorderRight(CellStyle.BORDER_THIN); // sty4.setRightBorderColor(IndexedColors.BLACK.getIndex()); sty4.setFont(font2); sty4.setAlignment(XSSFCellStyle.ALIGN_CENTER); for (int i = 0; i < rowCount + 7; i++) { XSSFRow r = null; boolean isCreate = false; // System.out.println("sheet.getLastRowNum()-------->" + sheet.getLastRowNum()); if ((i + startRow) > sheet.getLastRowNum()) { r = sheet.createRow(i + startRow); isCreate = true; } else { r = sheet.getRow(i + startRow); isCreate = false; } if (i < rowCount + 3 && isCreate) { CellRangeAddress cra = new CellRangeAddress(i + startRow, i + startRow, 8, 9); sheet.addMergedRegion(cra); cra = new CellRangeAddress(i + startRow, i + startRow, 6, 7); sheet.addMergedRegion(cra); cra = new CellRangeAddress(i + startRow, i + startRow, 4, 5); sheet.addMergedRegion(cra); cra = new CellRangeAddress(i + startRow, i + startRow, 2, 3); sheet.addMergedRegion(cra); cra = new CellRangeAddress(i + startRow, i + startRow, 11, 12); sheet.addMergedRegion(cra); } for (int cols = 1; cols < colsCount; cols++) { XSSFCell cell = null; if (isCreate) { cell = r.createCell(cols); cell.setCellStyle(sty); if (cols == 1) { cell.setCellStyle(sty2); } else if (cols == 14) { cell.setCellStyle(sty3); } // TODO 格式定义 } else { // if (r == null) { // r = sheet.createRow(i + startRow); // System.out.println("行没有创建"); // } cell = r.getCell(cols); } if (cell == null) { // cell = r.createCell(cols); // cell.setCellStyle(sty); } cell.setCellType(XSSFCell.CELL_TYPE_STRING);// 文本格式 // XSSFCellStyle sty0=sheet.getRow(9).getCell(11).getCellStyle(); //设置行高 if (i < rowCount) { int rwsTemp = list.get(i).getSpecCode().length()/10+1; int rwsTemp1 = list.get(i).getRef_designator().length()/10+1; int rwsTemp2 = list.get(i).getPackaging().length()/10+1; int rwsTemp3 = list.get(i).getBl_substitute_list().length()/10+1; int temp; int a[]=new int[]{rwsTemp,rwsTemp1,rwsTemp2,rwsTemp3}; Arrays.sort(a); for(int i1=0;i1 0) { cell.setCellStyle(sty2); } cell.setCellValue(list.get(i).getNumber()); break; } case 2:// 物料编码 // if(i>2) { // sty0=sheet.getRow(9).getCell(cols).getCellStyle(); // cell.setCellStyle(sty0); // } if (i >= 2) { cell.setCellStyle(style); } cell.setCellValue(list.get(i).getMaterialCode());// 写入序号 break; case 4:// 物料名称 cell.getCellStyle().setFont(font4); cell.getCellStyle().setAlignment(CellStyle.ALIGN_LEFT); cell.setCellValue(list.get(i).getMaterialName()); break; case 6:// 技术型号 cell.getCellStyle().setFont(font4); cell.setCellValue(list.get(i).getRef_designator()); System.out.println("位号-------------》"+list.get(i).getRef_designator()); break; case 8:// 规格型号 cell.getCellStyle().setFont(font4); cell.setCellValue(list.get(i).getSpecCode()); // cell.setCellStyle(styG); break; case 10:// 数量 cell.getCellStyle().setFont(font4); cell.setCellType(Cell.CELL_TYPE_STRING); cell.setCellValue(list.get(i).getQuantity()); System.out.println("--------------->"+list.get(i).getQuantity()); break; case 11:// 封装 cell.getCellStyle().setFont(font4); cell.getCellStyle().setAlignment(CellStyle.ALIGN_LEFT); cell.setCellValue(list.get(i).getPackaging()); break; case 13:// 替代料 cell.setCellValue(list.get(i).getBl_substitute_list()); break; case 14:// 备注 cell.setCellStyle(sty3); break; } } } } XSSFCell cell14=sheet.getRow(6).getCell(14); cell14.setCellStyle(sty5); // 设置最后一行的的下边框 XSSFCell cellLast = null; for (int cols = 1; cols < colsCount; cols++) { cellLast = sheet.getRow(startRow + rowCount + 6).getCell(cols); switch (cols) { case 1:// 序号 cellLast.setCellValue("编制/日期"); cellLast.setCellStyle(sty2); break; case 2:// 序号 cellLast.setCellStyle(sty4); break; case 3:// 序号 cellLast.setCellValue("审核/日期"); cellLast.setCellStyle(sty4); break; case 4:// 序号 cellLast.setCellStyle(sty4); break; case 5:// 序号 cellLast.setCellValue("批准/日期"); cellLast.setCellStyle(sty4); break; case 6:// 序号 cellLast.setCellStyle(sty4); break; case 7:// 序号 cellLast.setCellValue("更改单号"); cellLast.setCellStyle(sty4); break; case 8:// 序号 cellLast.setCellStyle(sty4); break; case 9:// 序号 cellLast.setCellValue("标记"); cellLast.setCellStyle(sty4); break; case 10:// 序号 cellLast.setCellValue("数量"); cellLast.setCellStyle(sty4); break; case 11:// 序号 cellLast.setCellValue("更改人/日期"); cellLast.setCellStyle(sty4); break; case 12:// 序号 cellLast.setCellStyle(sty4); break; case 13:// 序号 cellLast.setCellStyle(sty4); break; case 14:// 备注 cellLast.setCellStyle(sty3); break; } } // 设置最后一行的最两端两个单元格的颜色边框 for (int i = startRow + rowCount+6; i < startRow + rowCount + 7; i++) { XSSFCell cell = null; for (int cols = 1; cols < colsCount; cols++) { cell = sheet.getRow(i).getCell(cols); switch (cols) { case 1:// 序号 cell.setCellStyle(sty6); break; case 14:// 备注 if (i > 0) { cell.setCellStyle(sty7); } break; } } } // 合并签名的单元格 CellRangeAddress cra = new CellRangeAddress(rowCount + startRow + 3, rowCount + startRow + 5, 1, 2); sheet.addMergedRegion(cra); cra = new CellRangeAddress(rowCount + startRow + 3, rowCount + startRow + 5, 3, 4); sheet.addMergedRegion(cra); cra = new CellRangeAddress(rowCount + startRow + 3, rowCount + startRow + 5, 5, 6); sheet.addMergedRegion(cra); cra = new CellRangeAddress(rowCount + startRow + 3, rowCount + startRow + 5, 7, 8); sheet.addMergedRegion(cra); cra = new CellRangeAddress(rowCount + startRow + 3, rowCount + startRow + 5, 9, 9); sheet.addMergedRegion(cra); cra = new CellRangeAddress(rowCount + startRow + 3, rowCount + startRow + 5, 10, 10); sheet.addMergedRegion(cra); cra = new CellRangeAddress(rowCount + startRow + 3, rowCount + startRow + 5, 11, 14); sheet.addMergedRegion(cra); // 合并最后一行 cra = new CellRangeAddress(rowCount + startRow + 6, rowCount + startRow + 6, 1, 2); sheet.addMergedRegion(cra); cra = new CellRangeAddress(rowCount + startRow + 6, rowCount + startRow + 6, 3, 4); sheet.addMergedRegion(cra); cra = new CellRangeAddress(rowCount + startRow + 6, rowCount + startRow + 6, 5, 6); sheet.addMergedRegion(cra); cra = new CellRangeAddress(rowCount + startRow + 6, rowCount + startRow + 6, 7, 8); sheet.addMergedRegion(cra); cra = new CellRangeAddress(rowCount + startRow + 6, rowCount + startRow + 6, 11, 14); sheet.addMergedRegion(cra); // 设置倒数第五行的的下边框 XSSFCell cell5 = null; for (int cols = 1; cols < colsCount; cols++) { cell5 = sheet.getRow(startRow + rowCount + 2).getCell(cols); switch (cols) { case 1:// 序号 cell5.setCellStyle(sty4); break; case 2:// 序号 cell5.setCellStyle(sty4); break; case 3:// 序号 cell5.setCellStyle(sty4); break; case 4:// 序号 cell5.setCellStyle(sty4); break; case 5:// 序号 cell5.setCellStyle(sty4); break; case 6:// 序号 cell5.setCellStyle(sty4); break; case 7:// 序号 cell5.setCellStyle(sty4); break; case 8:// 序号 cell5.setCellStyle(sty4); break; case 9:// 序号 cell5.setCellStyle(sty4); break; case 10:// 序号 cell5.setCellStyle(sty4); break; case 11:// 序号 cell5.setCellStyle(sty4); break; case 12:// 序号 cell5.setCellStyle(sty4); break; case 13:// 替代料 cell5.setCellStyle(sty4); break; case 14:// 备注 cell5.setCellStyle(sty4); break; } } XSSFCell cell0=sheet.getRow(startRow + rowCount + 2).getCell(1); cell0.setCellStyle(sty6);//倒数第5行单元格A cell0=sheet.getRow(startRow + rowCount + 2).getCell(14); cell0.setCellStyle(sty7);//倒数第5行单元格O XSSFCell cell1=sheet.getRow(startRow + rowCount + 4).getCell(1); cell1.setCellStyle(sty6); cell1=sheet.getRow(startRow + rowCount + 4).getCell(14); cell1.setCellStyle(sty7); // XSSFRow row1=sheet.getRow(startRow + rowCount + 3); // row1.getCell(1).getCellStyle().getFont().setFontHeightInPoints((short) 10); // row1.getCell(1).getCellStyle().getFont().setFontName("Tahoma"); XSSFCell cell2=sheet.getRow(startRow + rowCount + 3).getCell(1);//倒数第4行A单元格字体的格式 cell2.getCellStyle().getFont().setFontHeightInPoints((short) 10); cell2.getCellStyle().getFont().setFontName("宋体"); cell2.setCellValue(name1); cell2=sheet.getRow(startRow + rowCount + 3).getCell(3); cell2.setCellValue(name2); cell2=sheet.getRow(startRow + rowCount + 3).getCell(5); cell2.setCellValue(name3); cell2 = sheet.getRow(startRow + rowCount + 3).getCell(1); cell2.getCellStyle().setAlignment((short) 1); cell2.getCellStyle().setVerticalAlignment((short) 1); cell2.getCellStyle().setWrapText(true);//自动换行 // cell2.getCellStyle().setFont(font3); sheet.getRow(startRow + rowCount + 6).setHeight((short)402);//设置组后一行的高度 cellLast = sheet.getRow(startRow + rowCount + 6).getCell(1); cellLast.getCellStyle().setAlignment(CellStyle.ALIGN_LEFT); cellLast.getCellStyle().setVerticalAlignment(CellStyle.VERTICAL_CENTER); cellLast = sheet.getRow(startRow + rowCount + 6).getCell(3); cellLast.getCellStyle().setAlignment(CellStyle.ALIGN_LEFT); cellLast.getCellStyle().setVerticalAlignment(CellStyle.VERTICAL_CENTER); cellLast = sheet.getRow( 6).getCell(2); cellLast.getCellStyle().setAlignment(CellStyle.ALIGN_CENTER); cellLast = sheet.getRow( 7).getCell(2); cellLast.getCellStyle().setAlignment(CellStyle.ALIGN_CENTER); File fileout = new File(path + "\\" + text + ".xlsx"); try { out = new FileOutputStream(fileout); } catch (Exception e) { this.wait.setBool(true); this.wait.interrupt(); MessageBox.post("请先关闭同名文件","",MessageBox.INFORMATION); return; } workbook.write(out); long end = System.currentTimeMillis(); float time2 = (end - start) / 1000.00f; System.out.println("耗时:" + time2 + "秒"); // System.out.println("版本----------------------->"+comp.getItemRevision().getTCProperty("item_revision_id").getStringValue()); this.wait.setBool(true); this.wait.interrupt(); MessageBox.post("报表已经导出", "成功", MessageBox.INFORMATION); Runtime.getRuntime().exec(new String[] { "cmd.exe", "/c", path + "\\" + text + ".xlsx" });// System.out.println("2017.10.26"); } private File getExcel(String ssx) { File file = null; preferenceService = session.getPreferenceService(); String puid = preferenceService.getStringValue(ssx); if (puid == null) { MessageBox.post("请联系管理员检查首选项", "错误", MessageBox.ERROR); return null; } TCComponentDataset dataset = null; try { dataset = (TCComponentDataset) session.stringToComponent(puid); } catch (TCException e) { e.printStackTrace(); } if (dataset == null) { MessageBox.post("数据集不存在,请联系管理员检查首选项", "错误", MessageBox.ERROR); return null; } try { TCComponentTcFile[] files = dataset.getTcFiles(); if (files.length == 0) { MessageBox.post("数据集没有命名引用的文件,请检查", "错误", MessageBox.ERROR); return null; } else if (files.length > 1) { MessageBox.post("数据集命名引用的文件过多", "错误", MessageBox.ERROR); return null; } else { file = files[0].getFmsFile(); } } catch (TCException e) { e.printStackTrace(); } return file; } private void getBomline(TCComponentBOMLine bomline, String realNumber_0) { AIFComponentContext[] childline = null; String materialCode = "";// 物料编码 String materialName = "";// 物料名称 String specCode = "";// 规格型号 String quantity = "";// 数量 String unit = "";// 度量单位 String ref_designator = "";// 位号 String packaging = "";// 封装 String bl_substitute_list="";//替代料 int number_0 = 0; try { childline = bomline.getChildren(); for (int i = 0; i < childline.length; i++) { number_0++; bean = new exportHardwareBOM_Bean(); if (!bomline.getTCProperty("bl_formatted_parent_name").getStringValue().equals("")) { if (i > 0) { realNumber_0 = realNumber_0.substring(0, realNumber_0.lastIndexOf(".") + 1) + number_0; } else { realNumber_0 = realNumber_0 + "." + number_0; } } else { realNumber_0 = number_0 + ""; } bean.setNumber(realNumber_0); child = (TCComponentBOMLine) childline[i].getComponent(); //2017.10.17物料编码属性改成"编码/版本" materialCode = child.getItemRevision().getTCProperty("item_id").getStringValue()+"/"+ child.getItemRevision().getTCProperty("current_revision_id").getStringValue(); bean.setMaterialCode(materialCode); materialName = child.getItemRevision().getTCProperty("object_name").getStringValue(); bean.setMaterialName(materialName); packaging = ""; TCComponentICO[] icoS = child.getItemRevision().getClassificationObjects(); int count = 0; int count1 = 0; for (int j = 0; j < icoS.length; j++) { ICSProperty[] cPropS = icoS[j].getICSProperties(true); for (int k = 0; k < cPropS.length; k++) { // System.out.println(count); count++; } keys = new Integer[count]; vals = new String[count]; for (int k = 0; k < cPropS.length; k++) { // System.out.println(count); keys[count1] = cPropS[k].getId(); // System.out.println("keys[" + count1 + "]================>" + keys[count1]); vals[count1] = cPropS[k].getValue(); // System.out.println("vals[" + count1 + "]================>" + vals[count1]); if (keys[count1] == -500242) { packaging = vals[count1]; } count1++; } } bean.setPackaging(packaging); TCComponentForm form = (TCComponentForm) child.getItemRevision() .getReferenceListProperty("IMAN_master_form_rev")[0]; // techCode = form.getTCProperty("jk8TechModel").getStringValue(); // bean.setTechCode(techCode); specCode = form.getTCProperty("jk8SpecModel").getStringValue(); bean.setSpecCode(specCode); ref_designator = child.getTCProperty("bl_ref_designator").getStringValue(); // System.out.println("引用指示符------------------->" + ref_designator); bean.setRef_designator(ref_designator); //2017.10.26 把C1-C3改成C1,C2,C3的格式 String[] xx=ref_designator.split(","); List ref_designator_list=new ArrayList<>(); for (int k = 0; k < xx.length; k++) { if(ref_designator_list.contains("-")) { String strings1=xx[k].split("-")[0];//小值 String strings2=xx[k].split("-")[1];//大值 //获得最大值 String up=""; int up_num=0; for (int j = strings2.length()-1;j>=0; j--) { if(Character.isDigit(strings2.charAt(j))==true) { up=strings2.charAt(j)+up; }else { break; } } up_num=Integer.valueOf(up); //获得最小值 String down=""; int down_num=0; int mark=0; for(int j = strings1.length()-1;j>=0; j--) { if(Character.isDigit(strings1.charAt(j))==true) { down=strings1.charAt(j)+down; }else { mark=j; break; } } down_num=Integer.valueOf(down); //开头的位号 String wh=strings1.substring(0, mark+1); for (int j = down_num; j <= up_num; j++) { String aa=wh+j; ref_designator_list.add(aa); } }else if(!ref_designator_list.contains("-")) { ref_designator_list.add(xx[k]); } } quantity = child.getTCProperty("bl_quantity").getStringValue().split(".")[0];//2017.10.26 不显示小 // if(Integer.valueOf(quantity)>3) { // quantity=quantity+"-"; // } bean.setQuantity(quantity); unit = child.getProperty("bl_uom"); bean.setUnit(unit); //2017.10.18新增属性替代料 TCComponent[] components=child.getTCProperty("bl_substitute_list").getReferenceValueArray(); if(components.length==0) { bl_substitute_list=""; }else if(components.length>0) { for (int j = 0; j < components.length; j++) { bl_substitute_list=bl_substitute_list+((TCComponentItem)components[j]).getTCProperty("item_id").getStringValue()+","; } } if(bl_substitute_list.length()>=1) { bl_substitute_list=bl_substitute_list.trim(); bl_substitute_list=bl_substitute_list.substring(0, bl_substitute_list.length()-1); } bean.setBl_substitute_list(bl_substitute_list); list.add(bean); if (child.getChildren().length > 0) { getBomline(child,realNumber_0); } } } catch (TCException e) { e.printStackTrace(); } } }