From 14239c96275f1f35c28ac3ea060d62d862fbbfd9 Mon Sep 17 00:00:00 2001 From: guoyh Date: Fri, 24 Sep 2021 13:57:36 +0800 Subject: [PATCH] commit --- .../connor/dfl/plm/dfl043/Dfl043Handler.java | 34 +++ .../dfl/plm/dfl043/Dfl043Operation.java | 225 ++++++++++++++++++ 2 files changed, 259 insertions(+) create mode 100644 src/com/connor/dfl/plm/dfl043/Dfl043Handler.java create mode 100644 src/com/connor/dfl/plm/dfl043/Dfl043Operation.java diff --git a/src/com/connor/dfl/plm/dfl043/Dfl043Handler.java b/src/com/connor/dfl/plm/dfl043/Dfl043Handler.java new file mode 100644 index 0000000..6597d6e --- /dev/null +++ b/src/com/connor/dfl/plm/dfl043/Dfl043Handler.java @@ -0,0 +1,34 @@ +package com.connor.dfl.plm.dfl043; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; + +import com.connor.dfl.plm.dfl031.ExportDialog; +import com.teamcenter.rac.aif.AbstractAIFApplication; +import com.teamcenter.rac.aif.AbstractAIFUIApplication; +import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; +import com.teamcenter.rac.aifrcp.AIFUtility; +import com.teamcenter.rac.kernel.TCComponentBOMLine; +import com.teamcenter.rac.kernel.TCComponentBOMWindow; +import com.teamcenter.rac.kernel.TCComponentBOMWindowType; +import com.teamcenter.rac.kernel.TCComponentItem; +import com.teamcenter.rac.kernel.TCComponentItemRevision; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.kernel.TCTypeService; +import com.teamcenter.rac.util.MessageBox; + +public class Dfl043Handler extends AbstractHandler { + private AbstractAIFUIApplication app; + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + this.app = AIFUtility.getCurrentApplication(); + TCSession session = (TCSession) app.getSession(); + InterfaceAIFComponent[] comps = app.getTargetComponents(); + Dfl043Operation operation = new Dfl043Operation(comps,session); + session.queueOperation(operation); + return null; + } + +} diff --git a/src/com/connor/dfl/plm/dfl043/Dfl043Operation.java b/src/com/connor/dfl/plm/dfl043/Dfl043Operation.java new file mode 100644 index 0000000..4e73e54 --- /dev/null +++ b/src/com/connor/dfl/plm/dfl043/Dfl043Operation.java @@ -0,0 +1,225 @@ +package com.connor.dfl.plm.dfl043; + +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.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import javax.swing.filechooser.FileSystemView; + +import org.apache.poi.xssf.usermodel.XSSFCell; +import org.apache.poi.xssf.usermodel.XSSFCellStyle; +import org.apache.poi.xssf.usermodel.XSSFRow; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.jacorb.idl.runtime.int_token; + +import com.connor.dfl.plm.dfl019.ClassPropBean; +import com.connor.dfl.plm.dfl019.ItemBean; +import com.connor.dfl.plm.dfl019.ParseXMLUtil; +import com.connor.dfl.plm.exportBOM.ChangeDbomUtil; +import com.connor.dfl.plm.util.ClassValueBean; +import com.connor.dfl.plm.util.ClassValueUtil; +import com.connor.dfl.plm.util.ProgressBarThread; +import com.teamcenter.rac.aif.AbstractAIFOperation; +import com.teamcenter.rac.aif.kernel.AIFComponentContext; +import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; +import com.teamcenter.rac.kernel.TCClassificationService; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentBOMLine; +import com.teamcenter.rac.kernel.TCComponentBOMWindow; +import com.teamcenter.rac.kernel.TCComponentBOMWindowType; +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.TCComponentQuery; +import com.teamcenter.rac.kernel.TCComponentQueryType; +import com.teamcenter.rac.kernel.TCComponentUser; +import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCProperty; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.kernel.TCTypeService; +import com.teamcenter.rac.kernel.TCUserService; +import com.teamcenter.rac.kernel.ics.ICSAdminClass; +import com.teamcenter.rac.kernel.ics.ICSAdminClassAttribute; +import com.teamcenter.rac.kernel.ics.ICSProperty; +import com.teamcenter.rac.util.MessageBox; + + +public class Dfl043Operation extends AbstractAIFOperation{ + private InterfaceAIFComponent[] comps; + private TCSession session; + private List attrList; + private List errList = new ArrayList(); + private ProgressBarThread wait; + /** + * + * @param app + * @param lattetTime + * @param EarlyTime + * @param pathRoute + */ + public Dfl043Operation(InterfaceAIFComponent[] comps,TCSession session) { + super(); + this.comps = comps; + this.session = session; + } + + @Override + public void executeOperation() throws Exception { + try { + System.out.println("开旁路"); + ChangeDbomUtil.setByPass(true); + //System.out.println("9.17数量为====="+comps.length); + for (int i = 0; i < comps.length; i++) { + InterfaceAIFComponent comp = comps[i]; + wait = new ProgressBarThread("填写作业编号中", "执行中,请稍等..."); + wait.start();// 开启进度条 + if(comp instanceof TCComponentBOMLine) { + TCComponentBOMLine line = (TCComponentBOMLine) comp; + setworknum(line); + wait.setBool(true);// 关闭进度条 + MessageBox.post("已自动填写作业编号!", "WARNING", + MessageBox.WARNING); + + }else if(comp instanceof TCComponentItemRevision){ + TCComponentItemRevision revision = (TCComponentItemRevision) comp; + try { + + //TCComponentItemRevision rev = (TCComponentItemRevision) comp; + //通过版本获取bomline + TCTypeService service = session.getTypeService(); + TCComponentBOMWindowType winType = (TCComponentBOMWindowType) service.getTypeComponent("BOMWindow"); + TCComponentBOMWindow view = winType.create(null); + TCComponentItem item = revision.getItem(); + TCComponentBOMLine line1 = view.setWindowTopLine(item,revision, null, null); + setworknum(line1); + wait.setBool(true);// 关闭进度条 + MessageBox.post("已自动填写作业编号!", "WARNING", + MessageBox.WARNING); + + } catch (Exception e) { + // TODO: handle exception + } + }else { + MessageBox.post("选中的对象中有非版本对象或BOM行对象,请检查!", "WARNING", + MessageBox.WARNING); + } + } + ChangeDbomUtil.setByPass(false); + System.out.println("关旁路"); + } catch (Exception e) { + // TODO: handle exception + MessageBox.post("自动填写作业编号失败!!!,请检查!", "WARNING", + MessageBox.WARNING); + } + } + //在bom中设置将作业编号发放给结构下面所有的物料 + private void setworknum(TCComponentBOMLine line) { + //System.out.println("9.17.19.519.17.19.51"); + if(line instanceof TCComponentBOMLine) { + //System.out.println("9.17.19.479.17.19.47"); + TCComponentItemRevision rev; + + try { + //System.out.println("9.17.19.479.17.19.47"); + //刷新bomline + line.refresh(); + rev = line.getItemRevision(); + TCProperty tcProperty = rev.getTCProperty("release_status_list"); + TCComponent[] targets = tcProperty.getReferenceValueArray(); + String jobid = line.getStringProperty("T2_JobNumber"); //获取作业编号 + //System.out.println("9.17jobid====="+jobid); + String itemid = rev.getStringProperty("item_id"); //获取itemid + //System.out.println("9.17itemid====="+itemid); + //判断是否发布了 + if(targets.length>=0) { + //判断是否有作业编号 + if(jobid != null || !"".equals(jobid)) { + //判断是否有子件 + AIFComponentContext[] childs = line.getChildren(); + //System.out.println("9.17子级个数====="+childs.length); + if(childs != null && childs.length > 0 ) { + //循环遍历子级对象 + for (int j = 0;j < childs.length;j++) { + //获取子级对象 + InterfaceAIFComponent childcomp = childs[j].getComponent(); + //获取子级bomline + TCComponentBOMLine childline = (TCComponentBOMLine) childcomp; + //根据自己bomline获取版本 + TCComponentItemRevision childrev = ((TCComponentBOMLine) childline).getItemRevision(); + //获取子级的id + String childid = childrev.getStringProperty("item_id"); + //System.out.println("9.17子级id====="+childid); + //获取子级的版本类型 + String childtype = childrev.getStringProperty("object_type"); + //System.out.println("9.17子级版本类型====="+childtype); + //获取子级的作业编号 + String childjobid = childline.getStringProperty("T2_JobNumber"); + //System.out.println("9.17子级作业编号====="+childjobid); + if("T2_outsourceRevision".equals(childtype) || "T2_OutBuyPartRevision".equals(childtype) || "T2_VirtualRevision".equals(childtype)) { + + //System.out.println("9.17.19.21"); + //判断有没有作业编号 + if(childjobid == null || "".equals(childjobid) || " ".equals(childjobid)) { + //没有则设置作业编号 + childline.setStringProperty("T2_JobNumber", jobid); + if("T2_VirtualRevision".equals(childtype)) { + //是虚拟件版本则递归 + setworknum(childline); + //System.out.println("递归方法9.17(1)"); + }else { + //不是则跳出循环,进入下一个循环 + continue; + } + }else { + //有作业编号 则跳出循环,进入下一个循环 + //判断是不是虚拟件版本 + if("T2_VirtualRevision".equals(childtype)) { + //是虚拟件版本则递归 + setworknum(childline); + //System.out.println("递归方法9.17(2)"); + }else { + //不是则跳出循环,进入下一个循环 + continue; + } + } + } + } + } + }else { + //如果父级没有就去找子级的作业编号 + AIFComponentContext[] childs2 = line.getChildren(); + //System.out.println("9.17子级个数2====="+childs2.length); + if(childs2 != null && childs2.length > 0 ) { + for (int j = 0;j < childs2.length;j++) { + //获取子级对象 + InterfaceAIFComponent childcomp2 = childs2[j].getComponent(); + //获取子级bomline + TCComponentBOMLine childline2 = (TCComponentBOMLine) childcomp2; + //递归此方法 + setworknum(childline2); + //System.out.println("递归方法9.17(3)"); + } + } + } + }else { + MessageBox.post(itemid+"已发布,不可修改!", "WARNING", + MessageBox.WARNING); + } + } catch (TCException e) { + MessageBox.post("setworknum运行失败!", "WARNING", + MessageBox.WARNING); + } + } + } +}