|
|
|
@ -1,7 +1,11 @@
|
|
|
|
|
package com.connor.jd.plm.dialogs;
|
|
|
|
|
package com.connor.plm.test.handlers;
|
|
|
|
|
|
|
|
|
|
import java.awt.BorderLayout;
|
|
|
|
|
import java.awt.Checkbox;
|
|
|
|
|
import java.awt.Dimension;
|
|
|
|
|
import java.awt.FlowLayout;
|
|
|
|
|
import java.awt.HeadlessException;
|
|
|
|
|
import java.awt.Label;
|
|
|
|
|
import java.awt.event.ActionEvent;
|
|
|
|
|
import java.awt.event.ActionListener;
|
|
|
|
|
import java.awt.event.AdjustmentEvent;
|
|
|
|
@ -12,32 +16,44 @@ import java.awt.event.MouseAdapter;
|
|
|
|
|
import java.awt.event.MouseEvent;
|
|
|
|
|
import java.awt.event.MouseWheelEvent;
|
|
|
|
|
import java.awt.event.MouseWheelListener;
|
|
|
|
|
import java.awt.event.WindowEvent;
|
|
|
|
|
import java.awt.event.WindowListener;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
import java.util.Enumeration;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.HashSet;
|
|
|
|
|
import java.util.Iterator;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.Set;
|
|
|
|
|
|
|
|
|
|
import javax.swing.BorderFactory;
|
|
|
|
|
import javax.swing.ComboBoxModel;
|
|
|
|
|
import javax.swing.DefaultComboBoxModel;
|
|
|
|
|
import javax.swing.JButton;
|
|
|
|
|
import javax.swing.JCheckBox;
|
|
|
|
|
import javax.swing.JComboBox;
|
|
|
|
|
import javax.swing.JLabel;
|
|
|
|
|
import javax.swing.JOptionPane;
|
|
|
|
|
import javax.swing.JPanel;
|
|
|
|
|
import javax.swing.JPopupMenu;
|
|
|
|
|
import javax.swing.JScrollBar;
|
|
|
|
|
import javax.swing.JScrollPane;
|
|
|
|
|
import javax.swing.JTextField;
|
|
|
|
|
import javax.swing.JTree;
|
|
|
|
|
import javax.swing.ScrollPaneConstants;
|
|
|
|
|
import javax.swing.event.MenuKeyEvent;
|
|
|
|
|
import javax.swing.event.MenuKeyListener;
|
|
|
|
|
import javax.swing.tree.DefaultMutableTreeNode;
|
|
|
|
|
import javax.swing.tree.DefaultTreeModel;
|
|
|
|
|
import javax.swing.tree.TreeModel;
|
|
|
|
|
import javax.swing.tree.TreeNode;
|
|
|
|
|
import javax.swing.tree.TreePath;
|
|
|
|
|
|
|
|
|
|
import com.connor.jd.plm.beans.TransformBomBean;
|
|
|
|
|
|
|
|
|
|
import com.teamcenter.rac.aif.AbstractAIFApplication;
|
|
|
|
|
import com.teamcenter.rac.aif.AbstractAIFDialog;
|
|
|
|
|
import com.teamcenter.rac.aif.AbstractAIFUIApplication;
|
|
|
|
|
import com.teamcenter.rac.aif.kernel.AIFComponentContext;
|
|
|
|
|
import com.teamcenter.rac.kernel.TCComponent;
|
|
|
|
|
import com.teamcenter.rac.kernel.TCComponentBOMLine;
|
|
|
|
@ -52,7 +68,14 @@ import com.teamcenter.rac.kernel.TCTypeService;
|
|
|
|
|
import com.teamcenter.rac.util.ButtonLayout;
|
|
|
|
|
import com.teamcenter.rac.util.MessageBox;
|
|
|
|
|
import com.teamcenter.rac.util.PropertyLayout;
|
|
|
|
|
|
|
|
|
|
import com.teamcenter.soaictstubs.transientTicketInfo_s;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 设计bom转化为物料bom
|
|
|
|
|
*
|
|
|
|
|
* @author conner.mcc
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
public class TransformDesignToPartDialog extends AbstractAIFDialog implements ActionListener {
|
|
|
|
|
private AbstractAIFApplication app;
|
|
|
|
|
private TCSession session;
|
|
|
|
@ -69,20 +92,18 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac
|
|
|
|
|
private int index = 1;
|
|
|
|
|
private String[] types;
|
|
|
|
|
TCComponentBOMWindow win;
|
|
|
|
|
|
|
|
|
|
public TransformDesignToPartDialog(AbstractAIFApplication app, TCComponentBOMLine topBomline, String[] types) {
|
|
|
|
|
public TransformDesignToPartDialog(AbstractAIFApplication app, TCComponentBOMLine topBomline,String[] types) {
|
|
|
|
|
// TODO Auto-generated constructor stub
|
|
|
|
|
System.out.println("step:-3------------------");
|
|
|
|
|
comboxList = new ArrayList<>();
|
|
|
|
|
this.app = app;
|
|
|
|
|
this.session = (TCSession) app.getSession();
|
|
|
|
|
this.topBomline = topBomline;
|
|
|
|
|
this.types = types;
|
|
|
|
|
this.types=types;
|
|
|
|
|
createWindow();
|
|
|
|
|
|
|
|
|
|
initUI();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void createWindow() {
|
|
|
|
|
try {
|
|
|
|
|
TCTypeService service = session.getTypeService();
|
|
|
|
@ -191,7 +212,8 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param line 所有BOM添加到树结构
|
|
|
|
|
* @param line
|
|
|
|
|
* 所有BOM添加到树结构
|
|
|
|
|
* @param node
|
|
|
|
|
* @throws TCException
|
|
|
|
|
*/
|
|
|
|
@ -247,7 +269,7 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac
|
|
|
|
|
if (e.getSource().equals(okButton)) {
|
|
|
|
|
try {
|
|
|
|
|
System.out.println("进行转换");
|
|
|
|
|
if (win == null)
|
|
|
|
|
if(win==null)
|
|
|
|
|
createWindow();
|
|
|
|
|
createMaterialBom(topTree);
|
|
|
|
|
MessageBox.post("转换bom成功", "提示", MessageBox.INFORMATION);
|
|
|
|
@ -255,13 +277,13 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac
|
|
|
|
|
} catch (TCException e1) {
|
|
|
|
|
|
|
|
|
|
// TODO Auto-generated catch block
|
|
|
|
|
MessageBox.post(e1.getMessage(), "转换bom失败", MessageBox.INFORMATION);
|
|
|
|
|
MessageBox.post(e1.getMessage(),"转换bom失败" , MessageBox.INFORMATION);
|
|
|
|
|
e1.printStackTrace();
|
|
|
|
|
} finally {
|
|
|
|
|
}finally {
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
|
|
win.close();
|
|
|
|
|
win = null;
|
|
|
|
|
win=null;
|
|
|
|
|
} catch (TCException e1) {
|
|
|
|
|
// TODO Auto-generated catch block
|
|
|
|
|
e1.printStackTrace();
|
|
|
|
@ -279,15 +301,17 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac
|
|
|
|
|
*
|
|
|
|
|
* @param wl
|
|
|
|
|
*//*
|
|
|
|
|
* private void checkSelected(String wl) { for (TransformBomBean bean : bomlist)
|
|
|
|
|
* { if (bean.map.containsKey(wl)) { bean.selectCount++; if (bean.selectCount >
|
|
|
|
|
* 1) { MessageBox.post("只能为当前图纸选择一个物料进行设计BOM的转换!", "警告", MessageBox.WARNING);
|
|
|
|
|
* return; } System.out.println(bean.displayName + "选中显示名");
|
|
|
|
|
* System.out.println(checkBoxTreeNodelMap.containsKey(bean.displayName) );
|
|
|
|
|
* checkBoxTreeNodelMap.get(bean.displayName).setSelected(true);
|
|
|
|
|
* findInTree(bean.displayName); TransformBomBean bean1 = (TransformBomBean)
|
|
|
|
|
* checkBoxTreeNodelMap.get(bean.displayName).getUserObject(); bean1.selectRev =
|
|
|
|
|
* (TCComponentItemRevision) bean.map.get(wl); } } }
|
|
|
|
|
* private void checkSelected(String wl) { for (TransformBomBean bean :
|
|
|
|
|
* bomlist) { if (bean.map.containsKey(wl)) { bean.selectCount++; if
|
|
|
|
|
* (bean.selectCount > 1) { MessageBox.post("只能为当前图纸选择一个物料进行设计BOM的转换!",
|
|
|
|
|
* "警告", MessageBox.WARNING); return; }
|
|
|
|
|
* System.out.println(bean.displayName + "选中显示名");
|
|
|
|
|
* System.out.println(checkBoxTreeNodelMap.containsKey(bean.displayName)
|
|
|
|
|
* ); checkBoxTreeNodelMap.get(bean.displayName).setSelected(true);
|
|
|
|
|
* findInTree(bean.displayName); TransformBomBean bean1 =
|
|
|
|
|
* (TransformBomBean)
|
|
|
|
|
* checkBoxTreeNodelMap.get(bean.displayName).getUserObject();
|
|
|
|
|
* bean1.selectRev = (TCComponentItemRevision) bean.map.get(wl); } } }
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -295,8 +319,8 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac
|
|
|
|
|
*
|
|
|
|
|
* @param wl
|
|
|
|
|
*//*
|
|
|
|
|
* private void checkDisSelected(String wl) { for (TransformBomBean bean :
|
|
|
|
|
* bomlist) { if (bean.map.containsKey(wl)) { bean.selectCount--;
|
|
|
|
|
* private void checkDisSelected(String wl) { for (TransformBomBean bean
|
|
|
|
|
* : bomlist) { if (bean.map.containsKey(wl)) { bean.selectCount--;
|
|
|
|
|
* checkBoxTreeNodelMap.get(bean.displayName).setSelected(false); } } }
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
@ -312,8 +336,8 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac
|
|
|
|
|
TCComponentItemRevision materialRev = bean.selectRev;
|
|
|
|
|
// 存在已经发布的物料的bom
|
|
|
|
|
/*
|
|
|
|
|
* if (WXMethodUtil.isRevBomReleased(materialRev)) { System.out.println("发布");
|
|
|
|
|
* return; }
|
|
|
|
|
* if (WXMethodUtil.isRevBomReleased(materialRev)) {
|
|
|
|
|
* System.out.println("发布"); return; }
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
if (isLoopBom(node)) {
|
|
|
|
@ -342,9 +366,7 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
createBom(materialRev, childrenList, null, quantityList);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private TreePath findInPath(TreePath treePath, String str) {
|
|
|
|
@ -392,8 +414,8 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac
|
|
|
|
|
if (line == null) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
AIFComponentContext[] aifContext = line.getItemRevision().whereReferencedByTypeRelation(types,
|
|
|
|
|
new String[] { "TC_Is_Represented_By" });
|
|
|
|
|
AIFComponentContext[] aifContext = line.getItemRevision().whereReferencedByTypeRelation(
|
|
|
|
|
types, new String[] { "TC_Is_Represented_By" });
|
|
|
|
|
if (aifContext == null || aifContext.length == 0) {
|
|
|
|
|
return new String[] { "" };
|
|
|
|
|
} else {
|
|
|
|
@ -440,9 +462,7 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac
|
|
|
|
|
childbox.setSelectedIndex(-1);
|
|
|
|
|
childbox.setEditable(true);
|
|
|
|
|
|
|
|
|
|
System.out.println("bomRef====>" + Arrays.toString(bomRef));
|
|
|
|
|
|
|
|
|
|
if (childbox.getItemCount() <= 2 && !(childbox.getItemAt(1) == null || "".equals(childbox.getItemAt(1)))) {
|
|
|
|
|
if (childbox.getItemCount() <= 2 && childbox.getItemAt(1)!=null&&!childbox.getItemAt(1).equals("")) {
|
|
|
|
|
childbox.setSelectedIndex(1);
|
|
|
|
|
childbox.setEditable(false);
|
|
|
|
|
childNode.setSelected(true);
|
|
|
|
@ -536,7 +556,6 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac
|
|
|
|
|
System.out.println("执行判断" + rev.getProperty("object_name"));
|
|
|
|
|
if (rev != null && isRevBomReleased(rev)) {
|
|
|
|
|
setUnable(childNode);
|
|
|
|
|
System.out.println(rev.getProperty("object_name") + "已发布");
|
|
|
|
|
return true;
|
|
|
|
|
} else {
|
|
|
|
|
restoreSelect(childNode);
|
|
|
|
@ -631,7 +650,6 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 判断循环
|
|
|
|
|
*
|
|
|
|
|
* @param node
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
@ -649,7 +667,6 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 向上找父类,判断是否有相同的物料
|
|
|
|
|
*
|
|
|
|
|
* @param node
|
|
|
|
|
* @param loopSet
|
|
|
|
|
* @return
|
|
|
|
@ -671,7 +688,10 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void getAllBomItemByBomline(TCComponentBOMLine line, List<TCComponentItem> itemList) throws TCException {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void getAllBomItemByBomline(TCComponentBOMLine line, List<TCComponentItem> itemList)
|
|
|
|
|
throws TCException {
|
|
|
|
|
if (line == null) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
@ -683,13 +703,17 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 搭建bom
|
|
|
|
|
*
|
|
|
|
|
* @param selectIndex
|
|
|
|
|
* @throws TCException
|
|
|
|
|
*/
|
|
|
|
|
public void createBom(TCComponentItemRevision parentRev, List<TCComponentItemRevision> childRevList,
|
|
|
|
|
public void createBom(TCComponentItemRevision parentRev, List<TCComponentItemRevision> childRevList,
|
|
|
|
|
List<String> queryNoList, List<String> countNoList) throws TCException {
|
|
|
|
|
if (childRevList == null || childRevList.size() == 0) {
|
|
|
|
|
return;
|
|
|
|
@ -714,12 +738,8 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac
|
|
|
|
|
}
|
|
|
|
|
for (int i = 0; i < childRevList.size(); i++) {
|
|
|
|
|
TCComponentItemRevision rev = childRevList.get(i);
|
|
|
|
|
System.out.println("object_string====>" + rev.getProperty("object_string"));
|
|
|
|
|
line.lock();
|
|
|
|
|
System.out.println("line object_string=====>" + line.getItemRevision().getProperty("object_string"));
|
|
|
|
|
session.getUserService().call("bs_bypass", new Object[] { true });
|
|
|
|
|
TCComponentBOMLine childBomLine = line.add(rev.getItem(), rev, null, false, "");
|
|
|
|
|
session.getUserService().call("bs_bypass", new Object[] { false });
|
|
|
|
|
line.save();
|
|
|
|
|
line.unlock();
|
|
|
|
|
|
|
|
|
@ -730,27 +750,30 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac
|
|
|
|
|
childBomLine.unlock();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
try {
|
|
|
|
|
win.save();
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
TCComponent[] comps = parentRev.getTCProperty("structure_revisions").getReferenceValueArray();
|
|
|
|
|
if (comps.length > 0) {
|
|
|
|
|
win.unlock();
|
|
|
|
|
}catch(Exception e) {
|
|
|
|
|
win.unlock();
|
|
|
|
|
win.close();
|
|
|
|
|
win=null;
|
|
|
|
|
System.out.println("windows close");
|
|
|
|
|
TCComponent[] comps=parentRev.getTCProperty("structure_revisions").getReferenceValueArray();
|
|
|
|
|
if(comps.length>0) {
|
|
|
|
|
parentRev.remove("structure_revisions", comps[0]);
|
|
|
|
|
comps[0].lock();
|
|
|
|
|
comps[0].delete();
|
|
|
|
|
;
|
|
|
|
|
comps[0].delete();;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
throw e;
|
|
|
|
|
} finally {
|
|
|
|
|
win.unlock();
|
|
|
|
|
win.close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 检查对象是否已经发布
|
|
|
|
|
*
|
|
|
|
@ -758,7 +781,7 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac
|
|
|
|
|
* @return
|
|
|
|
|
* @throws TCException
|
|
|
|
|
*/
|
|
|
|
|
public boolean isCompReleased(TCComponent comp) throws TCException {
|
|
|
|
|
public boolean isCompReleased(TCComponent comp) throws TCException {
|
|
|
|
|
TCComponent[] comps = comp.getRelatedComponents("release_status_list");
|
|
|
|
|
if (comps != null && comps.length > 0) {
|
|
|
|
|
return true;
|
|
|
|
@ -772,7 +795,7 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac
|
|
|
|
|
* @param rev
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public boolean isRevHadBom(TCComponentItemRevision rev) {
|
|
|
|
|
public boolean isRevHadBom(TCComponentItemRevision rev) {
|
|
|
|
|
boolean isHad = false;
|
|
|
|
|
if (rev != null) {
|
|
|
|
|
try {
|
|
|
|
@ -795,7 +818,7 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac
|
|
|
|
|
* @param rev
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public boolean isRevBomReleased(TCComponentItemRevision rev) {
|
|
|
|
|
public boolean isRevBomReleased(TCComponentItemRevision rev) {
|
|
|
|
|
boolean isReleased = false;
|
|
|
|
|
try {
|
|
|
|
|
if (isCompReleased(rev)) {
|
|
|
|
@ -804,7 +827,7 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac
|
|
|
|
|
// if(line.getChildren().length!=0){
|
|
|
|
|
// isReleased = true;
|
|
|
|
|
// }
|
|
|
|
|
if (isRevHadBom(rev)) {
|
|
|
|
|
if ( isRevHadBom(rev)) {
|
|
|
|
|
TCComponentBOMViewRevision bvr = win.askBvr();
|
|
|
|
|
if (bvr != null) {
|
|
|
|
|
TCComponent[] status = bvr.getReferenceListProperty("release_status_list");
|
|
|
|
|