diff --git a/src/com/langtech/plm/mpart/DialogFrame.java b/src/com/langtech/plm/mpart/DialogFrame.java index 2140534..a64a55e 100644 --- a/src/com/langtech/plm/mpart/DialogFrame.java +++ b/src/com/langtech/plm/mpart/DialogFrame.java @@ -15,7 +15,7 @@ public class DialogFrame extends JDialog { private JComboBox comboBox; private Object syncObject; public DialogFrame(JFrame owner,JComboBox comboBox,ArrayList list) { - super(owner, "Dialog Window", true); // 模态对话框 + super(owner, "选择已有M", true); // 模态对话框 this.comboBox = comboBox; this.syncObject = syncObject; JButton button = new JButton("确定"); diff --git a/src/com/langtech/plm/mpart/MpartDialog.java b/src/com/langtech/plm/mpart/MpartDialog.java index 5edeb49..a0ea2d7 100644 --- a/src/com/langtech/plm/mpart/MpartDialog.java +++ b/src/com/langtech/plm/mpart/MpartDialog.java @@ -62,8 +62,6 @@ import com.teamcenter.rac.util.PropertyLayout; import k.util.KOrgDialog; - - public class MpartDialog extends JFrame implements ActionListener { private TCSession session; @@ -78,12 +76,12 @@ public class MpartDialog extends JFrame implements ActionListener { private JTable t_part; private JComboBox gsdwComboBox = new JComboBox(); protected DefaultTableModel tm_part; - public static final String[] HEADER = new String[] { "","序号", "ID", "名称", "件号", "是否自制", "是否存在M", "归属单位", "工艺小组", "责任人"}; - public static final int[] HEADERWIDTH = new int[] { 30,40, 60, 120, 100, 60, 60, 60, 60, 100}; + public static final String[] HEADER = new String[] { "", "序号", "ID", "名称", "件号", "是否自制", "是否存在M", "归属单位","责任人" }; + public static final int[] HEADERWIDTH = new int[] { 30, 40, 60, 120, 100, 60, 60, 60, 100 }; private JTable t_part2; protected DefaultTableModel tm_part2; - public static final String[] HEADER2 = new String[] {"序号", "对象"}; - public static final int[] HEADERWIDTH2 = new int[] {10, 60}; + public static final String[] HEADER2 = new String[] { "序号", "对象" }; + public static final int[] HEADERWIDTH2 = new int[] { 10, 100 }; private ArrayList> valueList = new ArrayList>(); private HashMap objectMap = new HashMap(); private ArrayList table2RevList = new ArrayList(); @@ -91,52 +89,62 @@ public class MpartDialog extends JFrame implements ActionListener { TCComponentBOMWindow view; TCComponentItemType type; private String[] groupSplit; - private HashMap fieldsMap = new HashMap(); - - static TCComponentGroup group; - static TCComponentUser user; - - + private HashMap fieldsMap = new HashMap(); + private HashMap typesMap = new HashMap(); + private boolean isInitialized = false; + //static TCComponentGroup group; + //static TCComponentUser user; + public MpartDialog(TCSession session, ArrayList list) throws TCException { // TODO Auto-generated constructor stub this.session = session; this.list = list; viewType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow"); view = viewType.create(null); - type = (TCComponentItemType) session.getTypeComponent("LY6_ProductM"); initUI(); } private void initUI() { // TODO Auto-generated method stub try { - - + String[] fields = session.getPreferenceService().getStringValues("LY6_EPartToMPartType"); - + for (int i = 0; i < fields.length; i++) { + String[] split = fields[i].split("="); + fieldsMap.put(split[0], split[1]); + + String[] split2 = split[0].split(":"); + typesMap.put(split2[0], split2[1]); + } gsdwComboBox.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - if (e.getStateChange() == ItemEvent.SELECTED) { - String selectedItem = (String) gsdwComboBox.getSelectedItem(); - System.out.println("Selected Item: " + selectedItem); - // 在这里可以执行其他操作 - int count = 0; - for(int i=0;i tempList = new ArrayList(); tempList.add(0); - tempList.add(i+1); + tempList.add(i + 1); TCComponentItemRevision tcComponentItemRevision = list.get(i); String revId = tcComponentItemRevision.getStringProperty("item_id"); String object_name = tcComponentItemRevision.getStringProperty("object_name"); @@ -203,56 +208,52 @@ public class MpartDialog extends JFrame implements ActionListener { tempList.add(object_name); tempList.add(ly6_partNum); tempList.add(ly6_homemadeStatus); - if(factory != null && !factory.isEmpty()) { + if (factory != null && !factory.isEmpty()) { ArrayList mrevList = new ArrayList(); String[] split = factory.split(";"); for (int j = 0; j < split.length; j++) { - - TCComponent[] search = session.search("_SearchMFKProperties", new String[] { "ID","工厂" }, new String[] { revId,split[j] }); - if(search.length > 0) { - + + TCComponent[] search = session.search("_SearchMFKProperties", new String[] { "ID", "工厂" }, + new String[] { revId, split[j] }); + if (search.length > 0) { + for (int k = 0; k < search.length; k++) { - TCComponentItem item = (TCComponentItem)search[k]; + TCComponentItem item = (TCComponentItem) search[k]; mrevList.add(item.getLatestItemRevision()); } } } - if(mrevList.size() <= 0) { + if (mrevList.size() <= 0) { tempList.add(""); tempList.add(""); tempList.add(null); tempList.add(tcComponentItemRevision); - }else { + } else { tempList.add("存在"); tempList.add(""); tempList.add(mrevList); tempList.add(tcComponentItemRevision); } - }else { + } else { tempList.add(""); tempList.add(""); tempList.add(null); tempList.add(tcComponentItemRevision); } - System.out.println("tempList.size============"+tempList.size()); + System.out.println("tempList.size============" + tempList.size()); valueList.add(tempList); } - - System.out.println("valueList================"+valueList.size()); + + System.out.println("valueList================" + valueList.size()); for (int j = 0; j < valueList.size(); j++) { ArrayList arrayList = valueList.get(j); - - tm_part.addRow(new Object[] {arrayList.get(0),arrayList.get(1),arrayList.get(2), - arrayList.get(3),arrayList.get(4),arrayList.get(5),arrayList.get(6), - arrayList.get(7),"",""}); - } - - - - + tm_part.addRow(new Object[] { arrayList.get(0), arrayList.get(1), arrayList.get(2), arrayList.get(3), + arrayList.get(4), arrayList.get(5), arrayList.get(6), arrayList.get(7), "", "" }); + } + isInitialized = true; } catch (Exception e) { e.printStackTrace(); return; @@ -275,55 +276,56 @@ public class MpartDialog extends JFrame implements ActionListener { Object source = e.getSource(); System.out.println("source==>+" + source); if (this.createButton.equals(source)) { - - //首选项获取流程模板名称 + + // 首选项获取流程模板名称 String[] workflows = session.getPreferenceService().getStringValues("LY6_EPartToMPartWorkflow"); String workflowTemplate = ""; - if(workflows != null && workflows.length > 0) { + if (workflows != null && workflows.length > 0) { workflowTemplate = workflows[0]; - }else { + } else { MessageBox.post("请配置首选项LY6_EPartToMPartWorkflow!", "提示 ", MessageBox.INFORMATION); return; } - //判断是否含有子 //循环 + // 判断是否含有子 //循环 int count = 0; - - //先循环一遍判断 归属单位 和 责任人 - for(int i=0;i arrayList = valueList.get(i); - TCComponentItemRevision rev = (TCComponentItemRevision)arrayList.get(9); - TCComponentItem eItem = rev.getItem(); - String eType = eItem.getType(); - System.out.println("etype============="+eType); - TCComponentBOMLine topLine = view.setWindowTopLine(rev.getItem(), rev, null, null); - int childrenCount = topLine.getChildrenCount(); - System.out.println("childrenCount========"+childrenCount); - TCComponent[] searchLs = session.search("_SearchMFKProperties", new String[] { "ID","工厂" }, new String[] { (String) arrayList.get(2),(String) tm_part.getValueAt(i, 7) }); - - String ly6_sequenceNum = "01"; - //去调用查询查看该工厂最大流水 + } + if (count == 0) { + MessageBox.post("请勾选数据!", "提示 ", MessageBox.INFORMATION); + return; + } + + for (int i = 0; i < tm_part.getRowCount(); i++) { + if (tm_part.getValueAt(i, 0).toString().equals("1")) { + try { + ArrayList arrayList = valueList.get(i); + TCComponentItemRevision rev = (TCComponentItemRevision) arrayList.get(9); + TCComponentItem eItem = rev.getItem(); + String eType = eItem.getType(); + System.out.println("etype=============" + eType); + type = (TCComponentItemType) session.getTypeComponent(typesMap.get(eType)); + TCComponentBOMLine topLine = view.setWindowTopLine(rev.getItem(), rev, null, null); + int childrenCount = topLine.getChildrenCount(); + System.out.println("childrenCount========" + childrenCount); + TCComponent[] searchLs = session.search("_SearchMFKProperties", new String[] { "ID", "工厂" }, + new String[] { (String) arrayList.get(2), (String) tm_part.getValueAt(i, 7) }); + + String ly6_sequenceNum = "0"; + // 去调用查询查看该工厂最大流水 // if(searchLs != null && searchLs.length > 0) { // TCComponentItem mItem = (TCComponentItem)searchLs[0]; // ly6_sequenceNum = mItem.getStringProperty("ly6_sequenceNum"); @@ -331,299 +333,364 @@ public class MpartDialog extends JFrame implements ActionListener { // System.out.println("pxuid==========="+mItem.getUid()); // } // - for (int j = 0; j < searchLs.length; j++) { - TCComponentItem mItem = (TCComponentItem)searchLs[j]; - System.out.println(mItem.getUid()+"===========mItem.uid"); - String num = mItem.getStringProperty("ly6_sequenceNum"); - System.out.println("num==="+num); - System.out.println("ly6_sequenceNum==="+ly6_sequenceNum); - ly6_sequenceNum = getLargerNumber(num,ly6_sequenceNum); + for (int j = 0; j < searchLs.length; j++) { + TCComponentItem mItem = (TCComponentItem) searchLs[j]; + System.out.println(mItem.getUid() + "===========mItem.uid"); + String num = mItem.getStringProperty("ly6_sequenceNum"); + System.out.println("num===" + num); + System.out.println("ly6_sequenceNum===" + ly6_sequenceNum); + ly6_sequenceNum = getLargerNumber(num, ly6_sequenceNum); + } + + if (childrenCount == 0) { + // 直接创建对象 + String newID = (String) arrayList.get(2); + String newRev = type.getNewRev(null); + + TCComponentItem item = type.create(newID, newRev, typesMap.get(eType), "", "", null); + TCComponentItemRevision mRev = item.getLatestItemRevision(); + item.setProperty("ly6_company", tm_part.getValueAt(i, 7).toString()); + System.out.println("itemUid2============" + item.getUid()); + if (ly6_sequenceNum.isEmpty() || ly6_sequenceNum.equals("0")) { + item.setProperty("ly6_sequenceNum", "01"); + } else { + item.setProperty("ly6_sequenceNum", incrementNumber(ly6_sequenceNum)); + System.out.println("itemUid3============" + item.getUid()); } - - if(childrenCount == 0) { - //直接创建对象 - String newID = (String) arrayList.get(2); - String newRev = type.getNewRev(null); - - - TCComponentItem item = type.create(newID, newRev, "LY6_ProductM", "", "", null); - TCComponentItemRevision mRev = item.getLatestItemRevision(); - item.setProperty("ly6_company", tm_part.getValueAt(i, 7).toString()); - System.out.println("itemUid2============"+item.getUid()); - if(ly6_sequenceNum.isEmpty()) { - item.setProperty("ly6_sequenceNum", "01"); - }else { - item.setProperty("ly6_sequenceNum", incrementNumber(ly6_sequenceNum)); - System.out.println("itemUid3============"+item.getUid()); - } - - //删除前两个对象 - TCComponent delItem1 = session.stringToComponent((String) arrayList.get(2)); - - if(delItem1 != null) { - System.out.println("delItem1.getUid()===="+delItem1.getUid()); - delItem1.delete(); - - } - - TCComponent delItem2 = session.stringToComponent((String) arrayList.get(2)+(String) tm_part.getValueAt(i, 7)); - - if(delItem1 != null) { - System.out.println("delItem2.getUid()===="+delItem2.getUid()); - delItem2.delete(); - } - - //给属性赋值 - String fiedsStr = fieldsMap.get(eType+":LY6_ProductM"); - if(fiedsStr != null && !fiedsStr.isEmpty()) { - if(fiedsStr.contains(",")) { - String[] split = fiedsStr.split(","); - for (int j = 0; j < split.length; j++) { - //:分割 - String[] split2 = split[j].split(":"); - if(split2.length == 2) { - //.分割 - String[] split3 = split2[0].split("\\."); - if(split3.length == 2) { - if(split3[0].equals("item")) { - String[] split4 = split2[1].split("\\."); - if(split4.length == 2) { - if(split4[0].equals("item")) { - item.setProperty(split4[1], eItem.getProperty(split2[1])); - }else if(split4[0].equals("rev")) { - mRev.setProperty(split4[1], eItem.getProperty(split2[1])); - } - } - - }else if(split2[0].equals("rev")) { - String[] split4 = split2[1].split("\\."); - if(split4.length == 2) { - if(split4[0].equals("item")) { - item.setProperty(split4[1], rev.getProperty(split2[1])); - }else if(split4[0].equals("rev")) { - mRev.setProperty(split4[1], rev.getProperty(split2[1])); - } + + // 删除前两个对象 + TCComponent delItem1 = session.stringToComponent((String) arrayList.get(2)); + + if (delItem1 != null) { + System.out.println("delItem1.getUid()====" + delItem1.getUid()); + delItem1.delete(); + + } + + TCComponent delItem2 = session + .stringToComponent((String) arrayList.get(2) + (String) tm_part.getValueAt(i, 7)); + + if (delItem1 != null) { + System.out.println("delItem2.getUid()====" + delItem2.getUid()); + delItem2.delete(); + } + + // 给属性赋值 + String fiedsStr = fieldsMap.get(eType + ":" + typesMap.get(eType)); + System.out.println("fiedsStr===================" + fiedsStr); + if (fiedsStr != null && !fiedsStr.isEmpty()) { + if (fiedsStr.contains(",")) { + String[] split = fiedsStr.split(","); + System.out.println("split.length===========" + split.length); + for (int j = 0; j < split.length; j++) { + // :分割 + String[] split2 = split[j].split(":"); + System.out.println("split2.length=================" + split2.length); + if (split2.length == 2) { + // .分割 + String[] split3 = split2[0].split("\\."); + System.out.println("split3.length=================" + split3.length); + if (split3.length == 2) { + if (split3[0].equals("item")) { + String[] split4 = split2[1].split("\\."); + if (split4.length == 2) { + if (split4[0].equals("item")) { + System.out.println("split4[1]========" + split4[1] + + "split3[1]======" + split3[1]); + + item.setProperty(split4[1], eItem.getProperty(split3[1])); + } else if (split4[0].equals("rev")) { + System.out.println("split4[1]========" + split4[1] + + "split3[1]======" + split3[1]); + mRev.setProperty(split4[1], eItem.getProperty(split3[1])); } } - } - } - } - }else { - - - //:分割 - String[] split2 = fiedsStr.split(":"); - if(split2.length == 2) { - //.分割 - String[] split3 = split2[0].split("\\."); - if(split3.length == 2) { - if(split3[0].equals("item")) { - String[] split4 = split2[1].split("\\."); - if(split4.length == 2) { - if(split4[0].equals("item")) { - item.setProperty(split4[1], eItem.getProperty(split2[1])); - }else if(split4[0].equals("rev")) { - mRev.setProperty(split4[1], eItem.getProperty(split2[1])); - } - } - - }else if(split2[0].equals("rev")) { - String[] split4 = split2[1].split("\\."); - if(split4.length == 2) { - if(split4[0].equals("item")) { - item.setProperty(split4[1], rev.getProperty(split2[1])); - }else if(split4[0].equals("rev")) { - mRev.setProperty(split4[1], rev.getProperty(split2[1])); - } + + } else if (split3[0].equals("rev")) { + String[] split4 = split2[1].split("\\."); + if (split4.length == 2) { + if (split4[0].equals("item")) { + System.out.println("split4[1]========" + split4[1] + + "split3[1]======" + split3[1]); + item.setProperty(split4[1], rev.getProperty(split3[1])); + } else if (split4[0].equals("rev")) { + System.out.println("split4[1]========" + split4[1] + + "split3[1]======" + split3[1]); + System.out.println("value==========================="+rev.getProperty(split3[1])); + mRev.setProperty(split4[1], rev.getProperty(split3[1])); } } } - } - } - } - - - - - //添加流程 - if(workflowTemplate != null || !workflowTemplate.isEmpty()) { - CreateProcess(session,item,workflowTemplate); - } - - - //把对象放到管理文件夹下 - rev.add("LY6_relatedMPart",item); - item.getLatestItemRevision().refresh(); - }else { - AIFComponentContext[] children = topLine.getChildren(); - //直接创建对象 - String newID = (String) arrayList.get(2); - String newRev = type.getNewRev(null); - - - TCComponentItem item = type.create(newID, newRev, "LY6_ProductM", "", "", null); - item.setProperty("ly6_company", tm_part.getValueAt(i, 7).toString()); - if(ly6_sequenceNum.isEmpty()) { - item.setProperty("ly6_sequenceNum", "01"); - }else { - item.setProperty("ly6_sequenceNum", incrementNumber(ly6_sequenceNum)); - } - - //删除前两个对象 - TCComponent delItem1 = session.stringToComponent((String) arrayList.get(2)); - if(delItem1 != null) { - System.out.println("delItem1.getUid()===="+delItem1.getUid()); - delItem1.delete(); - } - TCComponent delItem2 = session.stringToComponent((String) arrayList.get(2)+(String) tm_part.getValueAt(i, 7)); - if(delItem1 != null) { - System.out.println("delItem2.getUid()===="+delItem2.getUid()); - delItem2.delete(); - } - - - //把对象放到管理文件夹下 - rev.add("LY6_relatedMPart",item); - item.getLatestItemRevision().refresh(); - //搭建mBOM - TCComponentBOMWindowType viewType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow"); - TCComponentBOMWindow view = viewType.create(null); - TCComponentBOMLine mTopLine = view.setWindowTopLine(item, item.getLatestItemRevision(), null, null); - ArrayList addList = new ArrayList();//mbom的子 - ArrayList childrenList = new ArrayList();//下拉框选中的值 - HashMap revMap = new HashMap();//object_String 和对应版本 - for (int j = 0; j < children.length; j++) { - - TCComponentBOMLine eLine = (TCComponentBOMLine) children[j].getComponent(); - //判断是否自制 - TCComponentItemRevision eRev = eLine.getItemRevision(); - String tcProperty = eRev.getTCProperty("ly6_homemadeStatus").toString(); - System.out.println("ly6_homemadeStatus======="+tcProperty); - String eId = eRev.getStringProperty("item_id"); - if(tcProperty.equals("自制")) { - //判断e下面的m是否唯一 - ArrayList tempMrevList = new ArrayList(); - - for (int k = 0; k < groupSplit.length; k++) { - TCComponent[] search = session.search("_SearchMFKProperties", new String[] { "ID","工厂" }, new String[] { eId,groupSplit[k] }); - - for (int l = 0; l < search.length; l++) { - TCComponentItem tempItem = (TCComponentItem)search[l]; - tempMrevList.add(tempItem.getLatestItemRevision()); } } - - if(tempMrevList.size() == 0) { - MessageBox.post(eId+"对象未创建MPart!", "提示 ", MessageBox.INFORMATION); - return; - }else if(tempMrevList.size() == 1) { - //把M放bom下 - addList.add(tempMrevList.get(0)); - }else if(tempMrevList.size() > 1) { - //让用户选一个M放bom下 - - JComboBox jComboBox = new JComboBox(); - for (int k = 0; k < tempMrevList.size(); k++) { - String stringProperty = tempMrevList.get(k).getStringProperty("object_string"); - revMap.put(stringProperty, tempMrevList.get(k)); - jComboBox.addItem(stringProperty); + } + } else { + + // :分割 + String[] split2 = fiedsStr.split(":"); + if (split2.length == 2) { + // .分割 + String[] split3 = split2[0].split("\\."); + System.out.println("split3.length=================" + split3.length); + if (split3.length == 2) { + if (split3[0].equals("item")) { + String[] split4 = split2[1].split("\\."); + if (split4.length == 2) { + if (split4[0].equals("item")) { + System.out.println("split4[1]========" + split4[1] + + "split3[1]======" + split3[1]); + item.setProperty(split4[1], eItem.getProperty(split3[1])); + } else if (split4[0].equals("rev")) { + System.out.println("split4[1]========" + split4[1] + + "split3[1]======" + split3[1]); + mRev.setProperty(split4[1], eItem.getProperty(split3[1])); + } + } + + } else if (split3[0].equals("rev")) { + String[] split4 = split2[1].split("\\."); + if (split4.length == 2) { + if (split4[0].equals("item")) { + System.out.println("split4[1]========" + split4[1] + + "split3[1]======" + split3[1]); + item.setProperty(split4[1], rev.getProperty(split3[1])); + } else if (split4[0].equals("rev")) { + System.out.println("split4[1]========" + split4[1] + + "split3[1]======" + split3[1]); + mRev.setProperty(split4[1], rev.getProperty(split3[1])); + } + } } - - - - - // 创建并显示模态对话框 - DialogFrame dialog = new DialogFrame(MpartDialog.this,jComboBox,childrenList); - dialog.setVisible(true); - - // 等待对话框关闭后执行的操作 - dialog.addWindowListener(new java.awt.event.WindowAdapter() { - @Override - public void windowClosed(java.awt.event.WindowEvent e) { - - } - }); - - - - - } + } + } + } + //设置 ly6_homemadeStatus + mRev.setProperty("ly6_homemadeStatus", "自制"); + // 添加流程 + if (workflowTemplate != null || !workflowTemplate.isEmpty()) { + CreateProcess(session, item, workflowTemplate); + } + + // 把对象放到管理文件夹下 + rev.add("LY6_relatedMPart", item); + item.getLatestItemRevision().refresh(); + } else { + AIFComponentContext[] children = topLine.getChildren(); + + ArrayList addList = new ArrayList();// mbom的子 + ArrayList childrenList = new ArrayList();// 下拉框选中的值 + HashMap revMap = new HashMap();// object_String + StringBuilder errMsg = new StringBuilder(); + for (int j = 0; j < children.length; j++) { + TCComponentBOMLine eLine = (TCComponentBOMLine) children[j].getComponent(); + // 判断是否自制 + TCComponentItemRevision eRev = eLine.getItemRevision(); + String tcProperty = eRev.getTCProperty("ly6_homemadeStatus").toString(); + System.out.println("ly6_homemadeStatus=======" + tcProperty); + String eId = eRev.getStringProperty("item_id"); + - - }else { - //不为自制则直接将EPart搭建进入MBOM中 - addList.add(eRev); - + if (tcProperty.equals("自制")) { + // 判断e下面的m是否唯一 + + + //先循环一遍判断有没有 mpart + ArrayList list = new ArrayList(); + + for (int k = 0; k < groupSplit.length; k++) { + TCComponent[] search = session.search("_SearchMFKProperties", + new String[] { "ID", "工厂" }, new String[] { eId, groupSplit[k] }); + + for (int l = 0; l < search.length; l++) { + TCComponentItem tempItem = (TCComponentItem) search[l]; + list.add(tempItem.getLatestItemRevision()); + } + } + + + if (list.size() == 0) { + errMsg.append(eId + "对象未创建MPart"+System.lineSeparator()); } - } - System.out.println("childrenList.size()======="+childrenList.size()); - for (int j = 0; j < childrenList.size(); j++) { - addList.add(revMap.get(childrenList.get(j))); - } - - System.out.println("addList.size()============"+addList.size()); - for (int j = 0; j < addList.size(); j++) { - mTopLine.add(addList.get(j).getItem(), addList.get(j), null, false, ""); - } - mTopLine.save(); - view.save(); - view.close(); - //添加流程 - if(workflowTemplate != null || !workflowTemplate.isEmpty()) { - CreateProcess(session,item,workflowTemplate); } } + if(errMsg.length() > 0) { + MessageBox.post(errMsg.toString(), "提示 ", MessageBox.INFORMATION); + return; + } + + + // 和对应版本 + for (int j = 0; j < children.length; j++) { + + TCComponentBOMLine eLine = (TCComponentBOMLine) children[j].getComponent(); + // 判断是否自制 + TCComponentItemRevision eRev = eLine.getItemRevision(); + String tcProperty = eRev.getTCProperty("ly6_homemadeStatus").toString(); + System.out.println("ly6_homemadeStatus=======" + tcProperty); + String eId = eRev.getStringProperty("item_id"); + if (tcProperty.equals("自制")) { + + //循环 选择mpart + ArrayList tempMrevList = new ArrayList(); + + for (int k = 0; k < groupSplit.length; k++) { + TCComponent[] search = session.search("_SearchMFKProperties", + new String[] { "ID", "工厂" }, new String[] { eId, groupSplit[k] }); + + for (int l = 0; l < search.length; l++) { + TCComponentItem tempItem = (TCComponentItem) search[l]; + tempMrevList.add(tempItem.getLatestItemRevision()); + } + } + +// if (tempMrevList.size() == 0) { +// MessageBox.post(eId + "对象未创建MPart!", "提示 ", MessageBox.INFORMATION); +// return; +// } else + if (tempMrevList.size() == 1) { + // 把M放bom下 + addList.add(tempMrevList.get(0)); + } else if (tempMrevList.size() > 1) { + // 让用户选一个M放bom下 + + JComboBox jComboBox = new JComboBox(); + for (int k = 0; k < tempMrevList.size(); k++) { + String stringProperty = tempMrevList.get(k) + .getStringProperty("object_string"); + revMap.put(stringProperty, tempMrevList.get(k)); + jComboBox.addItem(stringProperty); + } + + // 创建并显示模态对话框 + DialogFrame dialog = new DialogFrame(MpartDialog.this, jComboBox, childrenList); + dialog.setVisible(true); + + // 等待对话框关闭后执行的操作 + dialog.addWindowListener(new java.awt.event.WindowAdapter() { + @Override + public void windowClosed(java.awt.event.WindowEvent e) { + + } + }); + + } + + } else { + // 不为自制则直接将EPart搭建进入MBOM中 + addList.add(eRev); + + } + } + + + + // 直接创建对象 + String newID = (String) arrayList.get(2); + String newRev = type.getNewRev(null); + + TCComponentItem item = type.create(newID, newRev, typesMap.get(eType), "", "", null); + item.setProperty("ly6_company", tm_part.getValueAt(i, 7).toString()); + if (ly6_sequenceNum.isEmpty() || ly6_sequenceNum.equals("0")) { + item.setProperty("ly6_sequenceNum", "01"); + } else { + item.setProperty("ly6_sequenceNum", incrementNumber(ly6_sequenceNum)); + } + + // 删除前两个对象 + TCComponent delItem1 = session.stringToComponent((String) arrayList.get(2)); + if (delItem1 != null) { + System.out.println("delItem1.getUid()====" + delItem1.getUid()); + delItem1.delete(); + } + TCComponent delItem2 = session + .stringToComponent((String) arrayList.get(2) + (String) tm_part.getValueAt(i, 7)); + if (delItem1 != null) { + System.out.println("delItem2.getUid()====" + delItem2.getUid()); + delItem2.delete(); + } + + // 把对象放到管理文件夹下 + rev.add("LY6_relatedMPart", item); + item.getLatestItemRevision().refresh(); + // 搭建mBOM + TCComponentBOMWindowType viewType = (TCComponentBOMWindowType) session + .getTypeComponent("BOMWindow"); + TCComponentBOMWindow view = viewType.create(null); + TCComponentBOMLine mTopLine = view.setWindowTopLine(item, item.getLatestItemRevision(), + null, null); + + + + + + + + + System.out.println("childrenList.size()=======" + childrenList.size()); + for (int j = 0; j < childrenList.size(); j++) { + addList.add(revMap.get(childrenList.get(j))); + } + + System.out.println("addList.size()============" + addList.size()); + for (int j = 0; j < addList.size(); j++) { + mTopLine.add(addList.get(j).getItem(), addList.get(j), null, false, ""); + + } + mTopLine.save(); + view.save(); + view.close(); + // 添加流程 + if (workflowTemplate != null || !workflowTemplate.isEmpty()) { + CreateProcess(session, item, workflowTemplate); + } - } catch (Exception e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); } + + } catch (Exception e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); } - - } - - MessageBox.post("创建成功!", "提示 ", MessageBox.INFORMATION); + } - + } + MessageBox.post("创建成功!", "提示 ", MessageBox.INFORMATION); } else if (this.viewlButton.equals(source)) { - //打开对象到结构管理器 - - System.out.println("选中的行==="+t_part2.getSelectedRow()); - if(t_part2.getSelectedRow() == -1) { + // 打开对象到结构管理器 + + System.out.println("选中的行===" + t_part2.getSelectedRow()); + if (t_part2.getSelectedRow() == -1) { MessageBox.post("请在右表选择想要打开的对象行!", "提示 ", MessageBox.INFORMATION); return; - }else { - if(table2RevList != null && table2RevList.size() > 0) { + } else { + if (table2RevList != null && table2RevList.size() > 0) { ArrayList arrayList = valueList.get(t_part.getSelectedRow()); Object object = arrayList.get(8); com.teamcenter.rac.common.Activator.getDefault() - .openPerspective("com.teamcenter.rac.pse.PSEPerspective"); - try { - com.teamcenter.rac.common.Activator.getDefault().openComponents( - "com.teamcenter.rac.pse.PSEPerspective", - new InterfaceAIFComponent[] {table2RevList.get(t_part2.getSelectedRow()).getItem() }); - } catch (TCException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } + .openPerspective("com.teamcenter.rac.pse.PSEPerspective"); + try { + com.teamcenter.rac.common.Activator.getDefault().openComponents( + "com.teamcenter.rac.pse.PSEPerspective", + new InterfaceAIFComponent[] { table2RevList.get(t_part2.getSelectedRow()).getItem() }); + } catch (TCException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } } } - - - - }else if(this.xrButton.equals(source)) { - KOrgDialog kOrgDialog = new KOrgDialog(""); -// TCComponentUser user = kOrgDialog.getUser(); + + } else if (this.xrButton.equals(source)) { + //KOrgDialog kOrgDialog = new KOrgDialog(""); + TCComponentUser user = new KOrgDialog("").getUser(); // TCComponentGroup group = kOrgDialog.getGroup(); - user = kOrgDialog.getUser(); - group = kOrgDialog.getGroup(); - System.out.println("Select User: " + user+"group==="+group); + //user = kOrgDialog.getUser(); + //group = kOrgDialog.getGroup(); + //System.out.println("Select User: " + user + "group===" + group); String userName = ""; try { userName = user.getUserName(); @@ -632,21 +699,20 @@ public class MpartDialog extends JFrame implements ActionListener { MessageBox.post("请选择用户!", "提示 ", MessageBox.INFORMATION); return; } - int count = 0; - for(int i=0;i arrayList = valueList.get(selectedRow); - Object object = arrayList.get(8); - - if(object != null) { - - ArrayList tempList = (ArrayList)object; - for (int i = 0; i < tempList.size(); i++) { - table2RevList.add(tempList.get(i)); - } - System.out.println("tempList======"+tempList.size()); - for (int i = 0; i < tempList.size(); i++) { - TCComponentItemRevision tcComponentItemRevision = tempList.get(i); - try { - String id = tcComponentItemRevision.getStringProperty("item_id"); - System.out.println("item_id======"+id); - String objectName = tcComponentItemRevision.getStringProperty("object_string"); - tm_part2.addRow(new Object[] {i+1,objectName}); - } catch (TCException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } - } - } - }else { - - if(t_part.getValueAt(selectedRow, 5).equals("自制")) { - Object valueAt = t_part.getValueAt(selectedRow, selectColumn); - if(valueAt.toString().equals("1")) { - t_part.setValueAt("0", selectedRow, selectColumn); - }else { - t_part.setValueAt("1", selectedRow, selectColumn); - } - } - - } - } - } - }); - } + @Override + public void mouseClicked(MouseEvent e) { + if (e.getClickCount() == 2 || e.getClickCount() == 1) { + // TODO Auto-generated method stub + int selectColumn = t_part.getTableHeader().columnAtPoint(e.getPoint()); + int selectedRow = t_part.rowAtPoint(e.getPoint()); + + if (selectColumn != 0) { + t_part2.removeAll(); + tm_part2.setRowCount(0); + table2RevList.clear(); + ArrayList arrayList = valueList.get(selectedRow); + Object object = arrayList.get(8); + + if (object != null) { + + ArrayList tempList = (ArrayList) object; + for (int i = 0; i < tempList.size(); i++) { + table2RevList.add(tempList.get(i)); + } + System.out.println("tempList======" + tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + TCComponentItemRevision tcComponentItemRevision = tempList.get(i); + try { +// String id = tcComponentItemRevision.getStringProperty("item_id"); +// System.out.println("item_id======" + id); + String objectName = tcComponentItemRevision + .getStringProperty("object_string"); + tm_part2.addRow(new Object[] { i + 1, objectName }); + } catch (TCException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } + } + } else { + + if (t_part.getValueAt(selectedRow, 5).equals("自制")) { + Object valueAt = t_part.getValueAt(selectedRow, selectColumn); + if (valueAt.toString().equals("1")) { + t_part.setValueAt("0", selectedRow, selectColumn); + } else { + t_part.setValueAt("1", selectedRow, selectColumn); + } + } + + } + } + } + }); + } }); - - - - - + // t_part.addMouseListener(new MouseListener() { // // @Override @@ -851,11 +906,11 @@ public class MpartDialog extends JFrame implements ActionListener { // } // } // }); - + tm_part.setDataVector(null, HEADER); t_part.getTableHeader().setReorderingAllowed(false); // 设置列不可移动,否则会发生类型转换错误(第三列) this.t_part.setRowHeight(30); - + TableColumnModel colModel = this.t_part.getColumnModel(); int colCnt = HEADERWIDTH.length; for (int i = 0; i < colCnt; i++) { @@ -896,14 +951,6 @@ public class MpartDialog extends JFrame implements ActionListener { // jComboBox3.addItem(split[0]); // } - - - - - - - - // // // 添加鼠标监听器 // t_part.addMouseListener(new MouseAdapter() { @@ -925,28 +972,15 @@ public class MpartDialog extends JFrame implements ActionListener { // } // }); - - - //this.t_part.getTableHeader().setBackground(Color.blue); - - - - - - - + // this.t_part.getTableHeader().setBackground(Color.blue); JScrollPane scroll = new JScrollPane(t_part); panel.add(BorderLayout.CENTER, scroll); - panel.setBorder(BorderFactory.createLoweredBevelBorder()); return panel; } - - - - + private JPanel getTablePanel2() { JPanel panel = new JPanel(new BorderLayout()); panel.setPreferredSize(new Dimension(200, 600)); @@ -955,35 +989,31 @@ public class MpartDialog extends JFrame implements ActionListener { /** * */ - @Override public boolean isCellEditable(int row, int column) { if (column == 0) {// 可编辑的列 return true; - } - else { + } else { return false; } - - - - } + } }; tm_part2.setDataVector(null, HEADER2); t_part2.getTableHeader().setReorderingAllowed(false); // 设置列不可移动,否则会发生类型转换错误(第三列) this.t_part2.setRowHeight(23); - - + TableColumnModel colModel = this.t_part2.getColumnModel(); int colCnt = HEADERWIDTH2.length; for (int i = 0; i < colCnt; i++) { colModel.getColumn(i).setPreferredWidth(HEADERWIDTH2[i]); } - //t_part2.getTableHeader().setDefaultRenderer(new CheckHeaderCellRenderer(t_part2)); - //t_part2.getColumnModel().getColumn(0).setCellRenderer(new TableCellCheckboxRenderer(t_part2)); + // t_part2.getTableHeader().setDefaultRenderer(new + // CheckHeaderCellRenderer(t_part2)); + // t_part2.getColumnModel().getColumn(0).setCellRenderer(new + // TableCellCheckboxRenderer(t_part2)); // t_part2.addMouseListener(new MouseListener() { // // @Override @@ -1029,8 +1059,8 @@ public class MpartDialog extends JFrame implements ActionListener { // } // } // }); - // 设置第一列的单元格渲染器和编辑器 - + // 设置第一列的单元格渲染器和编辑器 + // // // 添加鼠标监听器 // t_part.addMouseListener(new MouseAdapter() { @@ -1052,91 +1082,83 @@ public class MpartDialog extends JFrame implements ActionListener { // } // }); - - - // this.t_part2.getTableHeader().setBackground(Color.blue); - - - - - - + // this.t_part2.getTableHeader().setBackground(Color.blue); JScrollPane scroll = new JScrollPane(t_part2); panel.add(BorderLayout.CENTER, scroll); - panel.setBorder(BorderFactory.createLoweredBevelBorder()); return panel; } - + public String getGroupID() throws TCException { TCComponentGroup group = session.getCurrentGroup(); String name = group.getTCProperty("full_name").getStringValue(); - if(name.contains(".")) { + if (name.contains(".")) { String[] split = name.split("\\."); - name = split[split.length]; - System.out.println("name=============="+name); + name = split[split.length - 1]; + System.out.println("name==============" + name); } return name; } - - - /** - * 对输入的字符串表示的10以下的数字加1,并返回加1后的字符串。 - * - * @param numberStr 输入的字符串,格式为 "01", "02", ..., "10" - * @return 加1后的字符串,格式保持不变 - */ - public String incrementNumber(String numberStr) { - // 验证输入字符串是否符合预期格式 - if (!numberStr.matches("^0[1-9]|10$")) { - throw new IllegalArgumentException("Input must be a string representing a number between 01 and 10."); - } - - // 将字符串转换为整数 - int number = Integer.parseInt(numberStr); - - // 对整数加1 - number++; - - // 格式化输出 - String formattedNumber = String.format("%02d", number); - - return formattedNumber; - } - - public static void CreateProcess(TCSession session, TCComponent target, String processName) throws TCException { - try { - TCComponentProcessType processType = (TCComponentProcessType)session.getTypeComponent("Job"); - TCComponentTaskTemplateType taskTemplateType = (TCComponentTaskTemplateType)session.getTypeComponent("EPMTaskTemplate"); - TCComponentTaskTemplate taskTemplate = taskTemplateType.find(processName, 0); - if (taskTemplate != null) { - String name = target.getProperty("object_string"); - TCComponent create = processType.create(processName + ":" + name, "", taskTemplate, new TCComponent[]{target}, new int[]{1}); - System.out.println("uid==================="+create.getUid()); - System.out.println("type=="+create.getType()); - System.out.println("type=="+create.getStringProperty("object_type")); - } - } catch (TCException var7) { - var7.printStackTrace(); - throw var7; - } - } - - public String getLargerNumber(String num1, String num2) { - if(num1 == null || num1.isEmpty()) { - return num2; - } - // 将字符串转换为整数 - int n1 = Integer.parseInt(num1); - int n2 = Integer.parseInt(num2); - - // 比较两个整数,返回较大的一个的字符串形式 - if (n1 > n2) { - return num1; - } else { - return num2; - } - } + + /** + * 对输入的字符串表示的10以下的数字加1,并返回加1后的字符串。 + * + * @param numberStr 输入的字符串,格式为 "01", "02", ..., "10" + * @return 加1后的字符串,格式保持不变 + */ + public String incrementNumber(String numberStr) { + // 验证输入字符串是否符合预期格式 + if (!numberStr.matches("^0[1-9]|10$")) { + throw new IllegalArgumentException("Input must be a string representing a number between 01 and 10."); + } + + // 将字符串转换为整数 + int number = Integer.parseInt(numberStr); + + // 对整数加1 + number++; + + // 格式化输出 + String formattedNumber = String.format("%02d", number); + + return formattedNumber; + } + + public static void CreateProcess(TCSession session, TCComponent target, String processName) throws TCException { + try { + TCComponentProcessType processType = (TCComponentProcessType) session.getTypeComponent("Job"); + TCComponentTaskTemplateType taskTemplateType = (TCComponentTaskTemplateType) session + .getTypeComponent("EPMTaskTemplate"); + TCComponentTaskTemplate taskTemplate = taskTemplateType.find(processName, 0); + if (taskTemplate != null) { + String name = target.getProperty("object_string"); + TCComponent create = processType.create(processName + ":" + name, "", taskTemplate, + new TCComponent[] { target }, new int[] { 1 }); + System.out.println("uid===================" + create.getUid()); + System.out.println("type==" + create.getType()); + System.out.println("type==" + create.getStringProperty("object_type")); + } + } catch (TCException var7) { + var7.printStackTrace(); + throw var7; + } + } + + public String getLargerNumber(String num1, String num2) { + if (num1 == null || num1.isEmpty()) { + return num2; + } + // 将字符串转换为整数 + int n1 = Integer.parseInt(num1); + int n2 = Integer.parseInt(num2); + + // 比较两个整数,返回较大的一个的字符串形式 + if (n1 > n2) { + return num1; + } else { + return num2; + } + } } diff --git a/src/com/langtech/plm/mpart/MpartHandler.java b/src/com/langtech/plm/mpart/MpartHandler.java index f047107..b5b73c3 100644 --- a/src/com/langtech/plm/mpart/MpartHandler.java +++ b/src/com/langtech/plm/mpart/MpartHandler.java @@ -10,6 +10,7 @@ import com.teamcenter.rac.aif.AbstractAIFApplication; import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; import com.teamcenter.rac.aifrcp.AIFUtility; import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentBOMLine; import com.teamcenter.rac.kernel.TCComponentItemRevision; import com.teamcenter.rac.kernel.TCComponentSchedule; import com.teamcenter.rac.kernel.TCComponentScheduleTask; @@ -62,6 +63,19 @@ public class MpartHandler extends AbstractHandler{ // TODO Auto-generated catch block e.printStackTrace(); } + }else if(component instanceof TCComponentBOMLine) { + TCComponentBOMLine bomLine = (TCComponentBOMLine)component; + try { + TCComponentItemRevision itemRevision = bomLine.getItemRevision(); + String type = itemRevision.getType(); + System.out.println("type2================"+type); + if(types[0].contains(type)) { + arrayList.add((TCComponentItemRevision)itemRevision); + } + } catch (TCException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } } }