master
洪丞进 1 year ago
parent 5062fa10ad
commit b35b5b5535

@ -6,6 +6,7 @@
point="org.eclipse.ui.commands"> point="org.eclipse.ui.commands">
<command name="创建BOM" id="com.connor.kwc.createBOM"/> <command name="创建BOM" id="com.connor.kwc.createBOM"/>
<command name="基于模版创建文档" id="com.connor.kwc.createTemplate.CreateTemplate"/>
<command name="A0" id="com.connor.kwc.createDWG.A0"/> <command name="A0" id="com.connor.kwc.createDWG.A0"/>
<command name="A1" id="com.connor.kwc.createDWG.A1"/> <command name="A1" id="com.connor.kwc.createDWG.A1"/>
<command name="A2" id="com.connor.kwc.createDWG.A2"/> <command name="A2" id="com.connor.kwc.createDWG.A2"/>
@ -19,11 +20,12 @@
point="org.eclipse.ui.handlers"> point="org.eclipse.ui.handlers">
<handler commandId="com.connor.kwc.createBOM" class="com.connor.kwc.createBom.CreateBOMHandler"/> <handler commandId="com.connor.kwc.createBOM" class="com.connor.kwc.createBom.CreateBOMHandler"/>
<handler commandId="com.connor.kwc.createDWG.A0" class="com.connor.kwc.createBom.CreateDWGHandler"/> <handler commandId="com.connor.kwc.createTemplate.CreateTemplate" class="com.connor.kwc.createTemplate.CreateTemplateHandler"/>
<handler commandId="com.connor.kwc.createDWG.A1" class="com.connor.kwc.createBom.CreateDWGHandler"/> <handler commandId="com.connor.kwc.createDWG.A0" class="com.connor.kwc.createDWG.CreateDWGHandler"/>
<handler commandId="com.connor.kwc.createDWG.A2" class="com.connor.kwc.createBom.CreateDWGHandler"/> <handler commandId="com.connor.kwc.createDWG.A1" class="com.connor.kwc.createDWG.CreateDWGHandler"/>
<handler commandId="com.connor.kwc.createDWG.A3" class="com.connor.kwc.createBom.CreateDWGHandler"/> <handler commandId="com.connor.kwc.createDWG.A2" class="com.connor.kwc.createDWG.CreateDWGHandler"/>
<handler commandId="com.connor.kwc.createDWG.A4" class="com.connor.kwc.createBom.CreateDWGHandler"/> <handler commandId="com.connor.kwc.createDWG.A3" class="com.connor.kwc.createDWG.CreateDWGHandler"/>
<handler commandId="com.connor.kwc.createDWG.A4" class="com.connor.kwc.createDWG.CreateDWGHandler"/>
</extension> </extension>
@ -34,6 +36,9 @@
<menu label="二开菜单" id="cn.net.connor.kwc.plm.seconddevelop.menus"> <menu label="二开菜单" id="cn.net.connor.kwc.plm.seconddevelop.menus">
<command id="com.connor.kwc.createBOM" commandId="com.connor.kwc.createBOM"> <command id="com.connor.kwc.createBOM" commandId="com.connor.kwc.createBOM">
</command>
<command id="com.connor.kwc.createTemplate.CreateTemplate" commandId="com.connor.kwc.createTemplate.CreateTemplate">
</command> </command>
</menu> </menu>

@ -15,6 +15,7 @@ import com.teamcenter.rac.aif.AbstractAIFOperation;
import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
import com.teamcenter.rac.kernel.TCComponentBOMLine; import com.teamcenter.rac.kernel.TCComponentBOMLine;
import com.teamcenter.rac.kernel.TCComponentFolder; import com.teamcenter.rac.kernel.TCComponentFolder;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCSession; import com.teamcenter.rac.kernel.TCSession;
/** /**
@ -77,8 +78,8 @@ public class CreateBOMOperation extends AbstractAIFOperation {
NewJFrame2 newJFrame2 = new NewJFrame2(session, dataMap, (TCComponentFolder) target); NewJFrame2 newJFrame2 = new NewJFrame2(session, dataMap, (TCComponentFolder) target);
newJFrame2.setVisible(true); newJFrame2.setVisible(true);
} else if ("revision".equals(type)) { } else if ("revision".equals(type)) {
// NewJFrame1 newJFrame2 = new NewJFrame1(session,dataMap); NewJFrame1 newJFrame2 = new NewJFrame1(session,dataMap, (TCComponentItemRevision) target);
// newJFrame2.setVisible(true); newJFrame2.setVisible(true);
} }
} }

@ -6,6 +6,8 @@
*/ */
package com.connor.kwc.createBom; package com.connor.kwc.createBom;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.awt.event.ItemEvent; import java.awt.event.ItemEvent;
@ -32,12 +34,16 @@ import javax.swing.LayoutStyle;
import javax.swing.WindowConstants; import javax.swing.WindowConstants;
import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.DefaultTreeModel;
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
import com.teamcenter.rac.aif.kernel.AIFComponentContext; import com.teamcenter.rac.aif.kernel.AIFComponentContext;
import com.teamcenter.rac.kernel.TCComponent; import com.teamcenter.rac.kernel.TCComponent;
import com.teamcenter.rac.kernel.TCComponentBOMLine; import com.teamcenter.rac.kernel.TCComponentBOMLine;
import com.teamcenter.rac.kernel.TCComponentBOMView;
import com.teamcenter.rac.kernel.TCComponentBOMWindow; import com.teamcenter.rac.kernel.TCComponentBOMWindow;
import com.teamcenter.rac.kernel.TCComponentBOMWindowType; import com.teamcenter.rac.kernel.TCComponentBOMWindowType;
import com.teamcenter.rac.kernel.TCComponentFolder; import com.teamcenter.rac.kernel.TCComponentFolder;
import com.teamcenter.rac.kernel.TCComponentForm;
import com.teamcenter.rac.kernel.TCComponentGDE;
import com.teamcenter.rac.kernel.TCComponentItem; import com.teamcenter.rac.kernel.TCComponentItem;
import com.teamcenter.rac.kernel.TCComponentItemRevision; import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCException; import com.teamcenter.rac.kernel.TCException;
@ -79,6 +85,7 @@ public class NewJFrame1 extends JFrame {
private String[] sxxdate; private String[] sxxdate;
private TCComponent component; private TCComponent component;
private List<String> tempList; private List<String> tempList;
private List<String> tempIdList;
private Map<String, CheckBoxTreeNode> itemMapIsSel = new HashMap<>(); private Map<String, CheckBoxTreeNode> itemMapIsSel = new HashMap<>();
private Map<String, TCComponentBOMLine> itemMapBoMap = new HashMap<>(); private Map<String, TCComponentBOMLine> itemMapBoMap = new HashMap<>();
@ -146,8 +153,11 @@ public class NewJFrame1 extends JFrame {
jLabel3.setText("类型:"); jLabel3.setText("类型:");
List typeList = (ArrayList) dataMap.get("typeList"); ArrayList<String> typeList = (ArrayList<String>) dataMap.get("typeList");
String[] typeArray = (String[]) typeList.toArray(); for(String tyString : typeList) {
System.out.println("tyString:"+tyString);
}
String[] typeArray = typeList.stream().toArray(String[]::new);
jComboBox2.setModel(new DefaultComboBoxModel<>(typeArray)); jComboBox2.setModel(new DefaultComboBoxModel<>(typeArray));
jComboBox2.setSelectedIndex(0); jComboBox2.setSelectedIndex(0);
@ -155,9 +165,11 @@ public class NewJFrame1 extends JFrame {
String template = templateMap.get(jComboBox2.getSelectedItem()); String template = templateMap.get(jComboBox2.getSelectedItem());
String[] split = template.split(";"); String[] split = template.split(";");
tempList = new ArrayList<String>(); tempList = new ArrayList<String>();
tempIdList = new ArrayList<String>();
// 根据UID找模板信息 // 根据UID找模板信息
for (String uid : split) { for (String uid : split) {
try { try {
tempIdList.add(uid);
TCComponent component = session.stringToComponent(uid); TCComponent component = session.stringToComponent(uid);
tempList.add(component.getStringProperty("object_name")); tempList.add(component.getStringProperty("object_name"));
} catch (TCException e1) { } catch (TCException e1) {
@ -166,13 +178,14 @@ public class NewJFrame1 extends JFrame {
} }
} }
String[] array = (String[]) tempList.toArray(); String[] array = tempList.stream().toArray(String[]::new);
jComboBox3.setModel(new DefaultComboBoxModel<>(array)); jComboBox3.setModel(new DefaultComboBoxModel<>(array));
jComboBox3.setSelectedIndex(0); jComboBox3.setSelectedIndex(0);
jLabel4.setText("模板:"); jLabel4.setText("模板:");
try { try {
// 根据模板创建树结构,给用户选择 // 根据模板创建树结构,给用户选择
component = session.stringToComponent(tempList.get(0)); System.out.println("tempId:"+tempIdList.get(0));
component = session.stringToComponent(tempIdList.get(0));
TCComponentBOMWindowType winType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow"); TCComponentBOMWindowType winType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow");
TCComponentBOMWindow view = winType.create(null); TCComponentBOMWindow view = winType.create(null);
if (component instanceof TCComponentItemRevision) { if (component instanceof TCComponentItemRevision) {
@ -192,11 +205,8 @@ public class NewJFrame1 extends JFrame {
e1.printStackTrace(); e1.printStackTrace();
} }
jComboBox2.setModel(new DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
jComboBox3.setModel(new DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
jLabel4.setText("模板:");
jLabel5.setText("专业:"); jLabel5.setText("专业:");
@ -324,7 +334,17 @@ public class NewJFrame1 extends JFrame {
GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
pack(); pack();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); // 获取屏幕尺寸
int screenWidth = screenSize.width; // 获取屏幕宽度
int screenHeight = screenSize.height; // 获取屏幕高度
int x = (screenWidth - this.getWidth()) / 2; // 计算Frame的左上角x坐标
int y = (screenHeight - this.getHeight()) / 2; // 计算Frame的左上角y坐标
this.setLocation(x, y); // 设置Frame的位置
this.setDefaultCloseOperation(2);
jTextField1.setText(target.getStringProperty("item_id")); jTextField1.setText(target.getStringProperty("item_id"));
// jTextField2.setText(target.getStringProperty("object_name"));
// jTextField1.setEditable(false);
jTextField2.setEditable(false); jTextField2.setEditable(false);
// 类型下拉框监听,更新模板下拉框 // 类型下拉框监听,更新模板下拉框
jComboBox2.addItemListener(new ItemListener() { jComboBox2.addItemListener(new ItemListener() {
@ -334,10 +354,11 @@ public class NewJFrame1 extends JFrame {
Map<String, String> templateMap = (HashMap<String, String>) dataMap.get("templateMap"); Map<String, String> templateMap = (HashMap<String, String>) dataMap.get("templateMap");
String template = templateMap.get(jComboBox2.getSelectedItem()); String template = templateMap.get(jComboBox2.getSelectedItem());
String[] split = template.split(";"); String[] split = template.split(";");
List<String> tempList = new ArrayList<String>(); tempList = new ArrayList<String>();
// 根据UID找模板信息 // 根据UID找模板信息
for (String uid : split) { for (String uid : split) {
try { try {
tempIdList.add(uid);
TCComponent component = session.stringToComponent(uid); TCComponent component = session.stringToComponent(uid);
tempList.add(component.getStringProperty("object_name")); tempList.add(component.getStringProperty("object_name"));
} catch (TCException e1) { } catch (TCException e1) {
@ -345,8 +366,8 @@ public class NewJFrame1 extends JFrame {
e1.printStackTrace(); e1.printStackTrace();
} }
} }
String[] array = tempList.stream().toArray(String[]::new);
String[] array = (String[]) tempList.toArray(); //String[] array = (String[]) tempList.toArray();
jComboBox3.setModel(new DefaultComboBoxModel<>(array)); jComboBox3.setModel(new DefaultComboBoxModel<>(array));
} }
}); });
@ -357,7 +378,7 @@ public class NewJFrame1 extends JFrame {
public void itemStateChanged(ItemEvent e) { public void itemStateChanged(ItemEvent e) {
try { try {
int selectedIndex = jComboBox3.getSelectedIndex(); int selectedIndex = jComboBox3.getSelectedIndex();
String uid = tempList.get(selectedIndex); String uid = tempIdList.get(selectedIndex);
component = session.stringToComponent(uid); component = session.stringToComponent(uid);
TCComponentBOMWindowType winType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow"); TCComponentBOMWindowType winType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow");
@ -387,28 +408,56 @@ public class NewJFrame1 extends JFrame {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
// 必填判定 // 必填判定
String field1 = jTextField1.getText(); String field1 = jTextField1.getText();
String field2 = jTextField2.getText(); if (field1 == null || "".equals(field1.trim())) {
if (field1 == null || "".equals(field1.trim()) || field2 == null || "".equals(field2.trim())) { MessageBox.post("产品代号必填,请检查", "提示", MessageBox.INFORMATION);
MessageBox.post("产品代号和产品名称必填,请检查", "提示", MessageBox.INFORMATION);
return; return;
} }
// 开始复制对象 // 开始复制对象
TCComponentItemRevision revision = (TCComponentItemRevision) component; TCComponentItemRevision revision = (TCComponentItemRevision) component;
try { try {
if (itemMapIsSel.get(revision.getStringProperty("object_string")).isSelected) { if (itemMapIsSel.get(revision.getStringProperty("object_name")).isSelected) {
TCComponentItem newItem = revision.saveAsItem(jTextField1.getText(), "A", jTextField2.getText(), TCComponentItem newItem = revision.saveAsItem(jTextField1.getText(), "A");
"", true, null); // TCComponentItem newItem = revision.saveAsItem(jTextField1.getText(), "A", revision.getStringProperty("object_name"),"", true, null);
TCComponentItemRevision newRevision = newItem.getLatestItemRevision(); TCComponentItemRevision newRevision = newItem.getLatestItemRevision();
TCComponentBOMWindowType winType = (TCComponentBOMWindowType) session TCComponentBOMWindowType winType = (TCComponentBOMWindowType) session
.getTypeComponent("BOMWindow"); .getTypeComponent("BOMWindow");
TCComponentBOMWindow view = winType.create(null); TCComponentBOMWindow view = winType.create(null);
TCComponentBOMLine line = view.setWindowTopLine(revision.getItem(), revision, null, null); TCComponentBOMLine line = view.setWindowTopLine(newItem, newRevision, null, null);
// 根据首选项的值复制对象属性 // 根据首选项的值复制对象属性
for (String attrStr : sxxdate) { for (String attrStr : sxxdate) {
if (attrStr.startsWith(line.getItemRevision().getItem().getStringProperty("object_type"))) { if (attrStr.startsWith(line.getItemRevision().getItem().getStringProperty("object_type"))) {
try { try {
replaceAttribute(line, newRevision, attrStr); String[] replaces = attrStr.split("=")[1].split(";");
} catch (ParseException e1) { for(String replace : replaces) {
String[] getValues = replace.split("\\.");
Object val = "";
if(getValues[0].equals("item")) {
val = Util.getTCPropertyValue(revision.getItem(), getValues[1]);
Util.setTCPropertyValue(newRevision.getItem(), getValues[1], val);
//val = item.getProperty(getValues[1]);
}else if(getValues[0].equals("rev")) {
val = Util.getTCPropertyValue(revision, getValues[1]);
Util.setTCPropertyValue(newRevision, getValues[1], val);
//val = rev.getProperty(getValues[1]);
}else if(getValues[0].equals("rm")) {
TCComponent[] oldreferenceListProperty = revision.getReferenceListProperty("IMAN_master_form_rev");
TCComponentForm oldform = (TCComponentForm) oldreferenceListProperty[0];
val = Util.getTCPropertyValue(oldform, getValues[1]);
TCComponent[] newreferenceListProperty = newRevision.getReferenceListProperty("IMAN_master_form_rev");
TCComponentForm newform = (TCComponentForm) newreferenceListProperty[0];
Util.setTCPropertyValue(newform, getValues[1], val);
//val = form.getProperty(getValues[1]);
}else if(getValues[0].equals("bom")) {
TCComponentBOMWindowType winType1 = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow");
TCComponentBOMWindow view1 = winType1.create(null);
TCComponentBOMLine line1 = view1.setWindowTopLine(revision.getItem(), revision, null, null);
val = Util.getTCPropertyValue(line1, getValues[1]);
Util.setTCPropertyValue(line, getValues[1], val);
}
}
} catch (Exception e1) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e1.printStackTrace(); e1.printStackTrace();
} }
@ -416,10 +465,18 @@ public class NewJFrame1 extends JFrame {
} }
} }
// 递归BOM结构删除未选中的对象 // 递归BOM结构删除未选中的对象
collectAllBomLine(line, jTextField1.getText(), winType, view, false); collectAllBomLine(line, jTextField1.getText(), winType, line.getBOMView(), true);
TCComponentItemRevision itemRevision = line.getItemRevision(); AIFComponentContext[] children = line.getChildren();
target.add("", itemRevision); TCComponentBOMWindowType winType1 = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow");
TCComponentBOMWindow view1 = winType1.create(null);
TCComponentBOMLine revLine = view1.setWindowTopLine(target.getItem(), target, null, null);
for(AIFComponentContext line2 : children) {
TCComponentBOMLine bomLine = (TCComponentBOMLine)line2.getComponent();
revLine.add(bomLine.getItem(), bomLine.getItemRevision(), null, false, "");
view1.save();
}
MessageBox.post("创建成功", "提示", MessageBox.INFORMATION);
return;
} else { } else {
return; return;
} }
@ -443,7 +500,7 @@ public class NewJFrame1 extends JFrame {
* @throws TCException * @throws TCException
*/ */
public void collectAllBomLine(TCComponentBOMLine bomLine, String newId, TCComponentBOMWindowType winType, public void collectAllBomLine(TCComponentBOMLine bomLine, String newId, TCComponentBOMWindowType winType,
TCComponentBOMWindow newview, Boolean flag) throws TCException { TCComponentBOMView newview, Boolean flag) throws TCException {
String objectName = bomLine.getItemRevision().getStringProperty("object_name"); String objectName = bomLine.getItemRevision().getStringProperty("object_name");
boolean selected = itemMapIsSel.get(objectName).isSelected(); boolean selected = itemMapIsSel.get(objectName).isSelected();
// 判断界面是否选中 // 判断界面是否选中
@ -461,15 +518,48 @@ public class NewJFrame1 extends JFrame {
} else { } else {
// 当不是第一次递归的时候每次递归另存一个对象把要同步的数据同步过去然后将对象替换到新的bomview上去 // 当不是第一次递归的时候每次递归另存一个对象把要同步的数据同步过去然后将对象替换到新的bomview上去
TCComponentItem saveAsItem = bomLine.getItemRevision().saveAsItem(jTextField1.getText(), "A", String itemId = bomLine.getItemRevision().getStringProperty("item_id");
bomLine.getItemRevision().getStringProperty("object_name"), "", true, null); System.out.println("itemID:"+itemId);
System.out.println(bomLine.getItemRevision().getStringProperty("object_string"));
String newItemId = itemId.replaceFirst(itemId.split("-")[0], jTextField1.getText());
System.out.println("newItemId:"+newItemId);
TCComponentItem saveAsItem = bomLine.getItemRevision().saveAsItem(newItemId, "A");
//TCComponentItem saveAsItem = bomLine.getItemRevision().saveAsItem(jTextField1.getText(), "A",bomLine.getItemRevision().getStringProperty("object_name"), "", true, null);
TCComponentItemRevision latestItemRevision = saveAsItem.getLatestItemRevision(); TCComponentItemRevision latestItemRevision = saveAsItem.getLatestItemRevision();
// 替换属性 // 替换属性
for (String attrStr : sxxdate) { for (String attrStr : sxxdate) {
if (attrStr.startsWith(bomLine.getItemRevision().getItem().getStringProperty("object_type"))) { if (attrStr.startsWith(bomLine.getItemRevision().getItem().getStringProperty("object_type"))) {
try { try {
replaceAttribute(itemMapBoMap.get(objectName), latestItemRevision, attrStr); //Util.replaceAttribute(itemMapBoMap.get(objectName), latestItemRevision, attrStr);
} catch (ParseException e1) { String[] replaces = attrStr.split("=")[1].split(";");
for(String replace : replaces) {
String[] getValues = replace.split("\\.");
Object val = "";
if(getValues[0].equals("item")) {
val = Util.getTCPropertyValue(itemMapBoMap.get(objectName).getItem(), getValues[1]);
Util.setTCPropertyValue(latestItemRevision.getItem(), getValues[1], val);
//val = item.getProperty(getValues[1]);
}else if(getValues[0].equals("rev")) {
val = Util.getTCPropertyValue(itemMapBoMap.get(objectName).getItemRevision(), getValues[1]);
Util.setTCPropertyValue(latestItemRevision, getValues[1], val);
//val = rev.getProperty(getValues[1]);
}else if(getValues[0].equals("rm")) {
TCComponent[] oldreferenceListProperty = itemMapBoMap.get(objectName).getItemRevision().getReferenceListProperty("IMAN_master_form_rev");
TCComponentForm oldform = (TCComponentForm) oldreferenceListProperty[0];
val = Util.getTCPropertyValue(oldform, getValues[1]);
TCComponent[] newreferenceListProperty = latestItemRevision.getReferenceListProperty("IMAN_master_form_rev");
TCComponentForm newform = (TCComponentForm) newreferenceListProperty[0];
Util.setTCPropertyValue(newform, getValues[1], val);
//val = form.getProperty(getValues[1]);
}else if(getValues[0].equals("bom")) {
val = Util.getTCPropertyValue(itemMapBoMap.get(objectName), getValues[1]);
TCComponentBOMWindowType winType1 = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow");
TCComponentBOMWindow view1 = winType1.create(null);
TCComponentBOMLine line1 = view1.setWindowTopLine(latestItemRevision.getItem(), latestItemRevision, null, null);
Util.setTCPropertyValue(line1, getValues[1], val);
}
}
} catch (Exception e1) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e1.printStackTrace(); e1.printStackTrace();
} }
@ -477,9 +567,15 @@ public class NewJFrame1 extends JFrame {
} }
} }
// 替换分类属性 // 替换分类属性
// 替换bom行 //添加属性
bomLine.replace(saveAsItem, latestItemRevision, newview); latestItemRevision.setStringProperty("kwc6_ProductID", jTextField1.getText());
// 添加bom行
String stringProperty = bomLine.getItemRevision().getStringProperty("object_string");
System.out.println("要替换的老行:"+stringProperty);
String stringProperty2 = latestItemRevision.getStringProperty("object_string");
System.out.println("要替换的新行:"+stringProperty2);
bomLine.replace(saveAsItem, latestItemRevision, null);
if (bomLine.hasChildren()) { if (bomLine.hasChildren()) {
for (AIFComponentContext aifComponentContext : bomLine.getChildren()) { for (AIFComponentContext aifComponentContext : bomLine.getChildren()) {
TCComponentBOMLine line = (TCComponentBOMLine) aifComponentContext.getComponent(); TCComponentBOMLine line = (TCComponentBOMLine) aifComponentContext.getComponent();
@ -489,6 +585,7 @@ public class NewJFrame1 extends JFrame {
} }
} else { } else {
// 从bomview中删除对象 // 从bomview中删除对象
bomLine.cut();
return; return;
} }
@ -515,109 +612,6 @@ public class NewJFrame1 extends JFrame {
} }
} }
} }
private void replaceAttribute(TCComponentBOMLine oldLine, TCComponentItemRevision newLine, String attrStr)
throws TCException, ParseException {
String[] attrs = attrStr.split("=")[1].split(";");
for (String attr : attrs) {
String[] p1 = attr.split("\\.");
if (p1[0].equals("item")) {
// pitem.setStringProperty(p1[1], val);
String val = oldLine.getItem().getStringProperty(p1[1]);
TCComponentItem pitem = newLine.getItem();
TCProperty property = (TCProperty) pitem.getTCProperty(p1[1]);
switch (property.getPropertyType()) {
case TCProperty.PROP_string:
case TCProperty.PROP_long_string:
pitem.setStringProperty(p1[1], val);
break;
case TCProperty.PROP_short:
case TCProperty.PROP_int:
pitem.setIntProperty(p1[1], Integer.parseInt(val));
break;
case TCProperty.PROP_double:
case TCProperty.PROP_float:
pitem.setDoubleProperty(p1[1], Double.parseDouble(val));
break;
case TCProperty.PROP_date:
if (!val.equals("")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
Date date = sdf.parse(p1[1]);
if (date != null) {
pitem.setDateProperty(p1[1], date);
}
}
break;
default:
pitem.setStringProperty(p1[1], val);
break;
}
} else if (p1[0].equals("rev")) {
String val = oldLine.getItemRevision().getStringProperty(p1[1]);
TCComponentItemRevision prev = newLine;
TCProperty property = (TCProperty) prev.getTCProperty(p1[1]);
// prev.setStringProperty(p1[1], val);
switch (property.getPropertyType()) {
case TCProperty.PROP_string:
case TCProperty.PROP_long_string:
prev.setStringProperty(p1[1], val);
break;
case TCProperty.PROP_short:
case TCProperty.PROP_int:
prev.setIntProperty(p1[1], Integer.parseInt(val));
break;
case TCProperty.PROP_double:
case TCProperty.PROP_float:
prev.setDoubleProperty(p1[1], Double.parseDouble(val));
break;
case TCProperty.PROP_date:
if (!val.equals("")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
Date date = sdf.parse(p1[1]);
if (date != null) {
prev.setDateProperty(p1[1], date);
}
}
break;
default:
prev.setStringProperty(p1[1], val);
break;
}
} else if (p1[0].equals("bom")) {
String val = oldLine.getStringProperty(p1[1]);
TCComponentBOMWindowType winType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow");
TCComponentBOMWindow view = winType.create(null);
TCComponentBOMLine line = view.setWindowTopLine(newLine.getItem(), newLine, null, null);
TCProperty property = (TCProperty) line.getTCProperty(p1[1]);
switch (property.getPropertyType()) {
case TCProperty.PROP_string:
case TCProperty.PROP_long_string:
line.setStringProperty(p1[1], val);
break;
case TCProperty.PROP_short:
case TCProperty.PROP_int:
line.setIntProperty(p1[1], Integer.parseInt(val));
break;
case TCProperty.PROP_double:
case TCProperty.PROP_float:
line.setDoubleProperty(p1[1], Double.parseDouble(val));
break;
case TCProperty.PROP_date:
if (!val.equals("")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
Date date = sdf.parse(p1[1]);
if (date != null) {
line.setDateProperty(p1[1], date);
}
}
break;
default:
line.setStringProperty(p1[1], val);
break;
}
}
}
}
} }

@ -1,6 +1,8 @@
package com.connor.kwc.createBom; package com.connor.kwc.createBom;
import java.awt.Dimension;
import java.awt.EventQueue; import java.awt.EventQueue;
import java.awt.Toolkit;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.awt.event.ItemEvent; import java.awt.event.ItemEvent;
@ -35,6 +37,7 @@ import com.teamcenter.rac.kernel.TCComponentBOMWindow;
import com.teamcenter.rac.kernel.TCComponentBOMWindowType; import com.teamcenter.rac.kernel.TCComponentBOMWindowType;
import com.teamcenter.rac.kernel.TCComponentBomChange; import com.teamcenter.rac.kernel.TCComponentBomChange;
import com.teamcenter.rac.kernel.TCComponentFolder; import com.teamcenter.rac.kernel.TCComponentFolder;
import com.teamcenter.rac.kernel.TCComponentForm;
import com.teamcenter.rac.kernel.TCComponentItem; import com.teamcenter.rac.kernel.TCComponentItem;
import com.teamcenter.rac.kernel.TCComponentItemRevision; import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCException; import com.teamcenter.rac.kernel.TCException;
@ -75,6 +78,7 @@ public class NewJFrame2 extends JFrame {
private Map<String, Object> dataMap; private Map<String, Object> dataMap;
private TCComponentFolder target; private TCComponentFolder target;
private List<String> tempList; private List<String> tempList;
private List<String> tempIdList;
private TCComponent component; private TCComponent component;
private Map<String, CheckBoxTreeNode> itemMapIsSel = new HashMap<>(); private Map<String, CheckBoxTreeNode> itemMapIsSel = new HashMap<>();
private Map<String, TCComponentBOMLine> itemMapBoMap = new HashMap<>(); private Map<String, TCComponentBOMLine> itemMapBoMap = new HashMap<>();
@ -141,8 +145,9 @@ public class NewJFrame2 extends JFrame {
jLabel3.setText("类型:"); jLabel3.setText("类型:");
List typeList = (ArrayList) dataMap.get("typeList"); ArrayList<String> typeList = (ArrayList<String>) dataMap.get("typeList");
String[] typeArray = (String[]) typeList.toArray(); //String[] typeArray = (String[]) typeList.toArray();
String[] typeArray = typeList.stream().toArray(String[]::new);
jComboBox2.setModel(new DefaultComboBoxModel<>(typeArray)); jComboBox2.setModel(new DefaultComboBoxModel<>(typeArray));
jComboBox2.setSelectedIndex(0); jComboBox2.setSelectedIndex(0);
@ -150,9 +155,11 @@ public class NewJFrame2 extends JFrame {
String template = templateMap.get(jComboBox2.getSelectedItem()); String template = templateMap.get(jComboBox2.getSelectedItem());
String[] split = template.split(";"); String[] split = template.split(";");
tempList = new ArrayList<String>(); tempList = new ArrayList<String>();
tempIdList = new ArrayList<String>();
// 根据UID找模板信息 // 根据UID找模板信息
for (String uid : split) { for (String uid : split) {
try { try {
tempIdList.add(uid);
TCComponent component = session.stringToComponent(uid); TCComponent component = session.stringToComponent(uid);
tempList.add(component.getStringProperty("object_name")); tempList.add(component.getStringProperty("object_name"));
} catch (TCException e1) { } catch (TCException e1) {
@ -160,14 +167,14 @@ public class NewJFrame2 extends JFrame {
e1.printStackTrace(); e1.printStackTrace();
} }
} }
String[] array = tempList.stream().toArray(String[]::new);
String[] array = (String[]) tempList.toArray(); // String[] array = (String[]) tempList.toArray();
jComboBox3.setModel(new DefaultComboBoxModel<>(array)); jComboBox3.setModel(new DefaultComboBoxModel<>(array));
jComboBox3.setSelectedIndex(0); jComboBox3.setSelectedIndex(0);
jLabel4.setText("模板:"); jLabel4.setText("模板:");
try { try {
// 根据模板创建树结构,给用户选择 // 根据模板创建树结构,给用户选择
component = session.stringToComponent(tempList.get(0)); component = session.stringToComponent(tempIdList.get(0));
TCComponentBOMWindowType winType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow"); TCComponentBOMWindowType winType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow");
TCComponentBOMWindow view = winType.create(null); TCComponentBOMWindow view = winType.create(null);
if (component instanceof TCComponentItemRevision) { if (component instanceof TCComponentItemRevision) {
@ -305,6 +312,14 @@ public class NewJFrame2 extends JFrame {
GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
pack(); pack();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); // 获取屏幕尺寸
int screenWidth = screenSize.width; // 获取屏幕宽度
int screenHeight = screenSize.height; // 获取屏幕高度
int x = (screenWidth - this.getWidth()) / 2; // 计算Frame的左上角x坐标
int y = (screenHeight - this.getHeight()) / 2; // 计算Frame的左上角y坐标
this.setLocation(x, y); // 设置Frame的位置
this.setDefaultCloseOperation(2);
// 类型下拉框监听,更新模板下拉框 // 类型下拉框监听,更新模板下拉框
jComboBox2.addItemListener(new ItemListener() { jComboBox2.addItemListener(new ItemListener() {
@ -313,10 +328,11 @@ public class NewJFrame2 extends JFrame {
Map<String, String> templateMap = (HashMap<String, String>) dataMap.get("templateMap"); Map<String, String> templateMap = (HashMap<String, String>) dataMap.get("templateMap");
String template = templateMap.get(jComboBox2.getSelectedItem()); String template = templateMap.get(jComboBox2.getSelectedItem());
String[] split = template.split(";"); String[] split = template.split(";");
List<String> tempList = new ArrayList<String>(); tempList = new ArrayList<String>();
// 根据UID找模板信息 // 根据UID找模板信息
for (String uid : split) { for (String uid : split) {
try { try {
tempIdList.add(uid);
TCComponent component = session.stringToComponent(uid); TCComponent component = session.stringToComponent(uid);
tempList.add(component.getStringProperty("object_name")); tempList.add(component.getStringProperty("object_name"));
} catch (TCException e1) { } catch (TCException e1) {
@ -324,8 +340,8 @@ public class NewJFrame2 extends JFrame {
e1.printStackTrace(); e1.printStackTrace();
} }
} }
String[] array = tempList.stream().toArray(String[]::new);
String[] array = (String[]) tempList.toArray(); //String[] array = (String[]) tempList.toArray();
jComboBox3.setModel(new DefaultComboBoxModel<>(array)); jComboBox3.setModel(new DefaultComboBoxModel<>(array));
} }
}); });
@ -336,7 +352,7 @@ public class NewJFrame2 extends JFrame {
public void itemStateChanged(ItemEvent e) { public void itemStateChanged(ItemEvent e) {
try { try {
int selectedIndex = jComboBox3.getSelectedIndex(); int selectedIndex = jComboBox3.getSelectedIndex();
String uid = tempList.get(selectedIndex); String uid = tempIdList.get(selectedIndex);
component = session.stringToComponent(uid); component = session.stringToComponent(uid);
TCComponentBOMWindowType winType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow"); TCComponentBOMWindowType winType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow");
@ -375,8 +391,8 @@ public class NewJFrame2 extends JFrame {
TCComponentItemRevision revision = (TCComponentItemRevision) component; TCComponentItemRevision revision = (TCComponentItemRevision) component;
try { try {
if (itemMapIsSel.get(revision.getStringProperty("object_string")).isSelected) { if (itemMapIsSel.get(revision.getStringProperty("object_string")).isSelected) {
TCComponentItem newItem = revision.saveAsItem(jTextField1.getText(), "A", jTextField2.getText(), TCComponentItem newItem = revision.saveAsItem(jTextField1.getText(), "A");
"", true, null); //TCComponentItem newItem = revision.saveAsItem(jTextField1.getText(), "A", jTextField2.getText(),"", true, null);
TCComponentItemRevision newRevision = newItem.getLatestItemRevision(); TCComponentItemRevision newRevision = newItem.getLatestItemRevision();
TCComponentBOMWindowType winType = (TCComponentBOMWindowType) session TCComponentBOMWindowType winType = (TCComponentBOMWindowType) session
.getTypeComponent("BOMWindow"); .getTypeComponent("BOMWindow");
@ -386,8 +402,36 @@ public class NewJFrame2 extends JFrame {
for (String attrStr : sxxdate) { for (String attrStr : sxxdate) {
if (attrStr.startsWith(line.getItemRevision().getItem().getStringProperty("object_type"))) { if (attrStr.startsWith(line.getItemRevision().getItem().getStringProperty("object_type"))) {
try { try {
replaceAttribute(line, newRevision, attrStr); //Util.replaceAttribute(line, newRevision, attrStr);
} catch (ParseException e1) { String[] replaces = attrStr.split("=")[1].split(";");
for(String replace : replaces) {
String[] getValues = replace.split("\\.");
Object val = "";
if(getValues[0].equals("item")) {
val = Util.getTCPropertyValue(line.getItem(), getValues[1]);
Util.setTCPropertyValue(newRevision.getItem(), getValues[1], val);
//val = item.getProperty(getValues[1]);
}else if(getValues[0].equals("rev")) {
val = Util.getTCPropertyValue(line.getItemRevision(), getValues[1]);
Util.setTCPropertyValue(newRevision, getValues[1], val);
//val = rev.getProperty(getValues[1]);
}else if(getValues[0].equals("rm")) {
TCComponent[] oldreferenceListProperty = line.getItemRevision().getReferenceListProperty("IMAN_master_form_rev");
TCComponentForm oldform = (TCComponentForm) oldreferenceListProperty[0];
val = Util.getTCPropertyValue(oldform, getValues[1]);
TCComponent[] newreferenceListProperty = newRevision.getReferenceListProperty("IMAN_master_form_rev");
TCComponentForm newform = (TCComponentForm) newreferenceListProperty[0];
Util.setTCPropertyValue(newform, getValues[1], val);
//val = form.getProperty(getValues[1]);
}else if(getValues[0].equals("bom")) {
val = Util.getTCPropertyValue(line, getValues[1]);
TCComponentBOMWindowType winType1 = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow");
TCComponentBOMWindow view1 = winType1.create(null);
TCComponentBOMLine line1 = view1.setWindowTopLine(newRevision.getItem(), newRevision, null, null);
Util.setTCPropertyValue(line1, getValues[1], val);
}
}
} catch (Exception e1) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e1.printStackTrace(); e1.printStackTrace();
} }
@ -397,7 +441,9 @@ public class NewJFrame2 extends JFrame {
// 递归BOM结构删除未选中的对象 // 递归BOM结构删除未选中的对象
collectAllBomLine(line, jTextField1.getText(), winType, view, false); collectAllBomLine(line, jTextField1.getText(), winType, view, false);
TCComponentItemRevision itemRevision = line.getItemRevision(); TCComponentItemRevision itemRevision = line.getItemRevision();
target.add("", itemRevision); target.add("contents", itemRevision);
MessageBox.post("创建成功", "提示", MessageBox.INFORMATION);
return;
} else { } else {
return; return;
@ -423,7 +469,7 @@ public class NewJFrame2 extends JFrame {
*/ */
public void collectAllBomLine(TCComponentBOMLine bomLine, String newId, TCComponentBOMWindowType winType, public void collectAllBomLine(TCComponentBOMLine bomLine, String newId, TCComponentBOMWindowType winType,
TCComponentBOMWindow newview, Boolean flag) throws TCException { TCComponentBOMWindow newview, Boolean flag) throws TCException {
String objectName = bomLine.getItemRevision().getStringProperty("object_name"); String objectName = bomLine.getItemRevision().getStringProperty("object_string");
boolean selected = itemMapIsSel.get(objectName).isSelected(); boolean selected = itemMapIsSel.get(objectName).isSelected();
// 判断界面是否选中 // 判断界面是否选中
if (selected) { if (selected) {
@ -440,15 +486,46 @@ public class NewJFrame2 extends JFrame {
} else { } else {
// 当不是第一次递归的时候每次递归另存一个对象把要同步的数据同步过去然后将对象替换到新的bomview上去 // 当不是第一次递归的时候每次递归另存一个对象把要同步的数据同步过去然后将对象替换到新的bomview上去
TCComponentItem saveAsItem = bomLine.getItemRevision().saveAsItem(jTextField1.getText(), "A", String itemId = bomLine.getItemRevision().getStringProperty("item_id");
bomLine.getItemRevision().getStringProperty("object_name"), "", true, null);
String newItemId = itemId.replaceFirst(itemId.split("-")[0], jTextField1.getText());
TCComponentItem saveAsItem = bomLine.getItemRevision().saveAsItem(newItemId, "A");
//TCComponentItem saveAsItem = bomLine.getItemRevision().saveAsItem(jTextField1.getText(), "A", bomLine.getItemRevision().getStringProperty("object_name"), "", true, null);
TCComponentItemRevision latestItemRevision = saveAsItem.getLatestItemRevision(); TCComponentItemRevision latestItemRevision = saveAsItem.getLatestItemRevision();
// 替换属性 // 替换属性
for (String attrStr : sxxdate) { for (String attrStr : sxxdate) {
if (attrStr.startsWith(bomLine.getItemRevision().getItem().getStringProperty("object_type"))) { if (attrStr.startsWith(bomLine.getItemRevision().getItem().getStringProperty("object_type"))) {
try { try {
replaceAttribute(itemMapBoMap.get(objectName), latestItemRevision, attrStr); //Util.replaceAttribute(itemMapBoMap.get(objectName), latestItemRevision, attrStr);
} catch (ParseException e1) { String[] replaces = attrStr.split("=")[1].split(";");
for(String replace : replaces) {
String[] getValues = replace.split("\\.");
Object val = "";
if(getValues[0].equals("item")) {
val = Util.getTCPropertyValue(itemMapBoMap.get(objectName).getItem(), getValues[1]);
Util.setTCPropertyValue(latestItemRevision.getItem(), getValues[1], val);
//val = item.getProperty(getValues[1]);
}else if(getValues[0].equals("rev")) {
val = Util.getTCPropertyValue(itemMapBoMap.get(objectName).getItemRevision(), getValues[1]);
Util.setTCPropertyValue(latestItemRevision, getValues[1], val);
//val = rev.getProperty(getValues[1]);
}else if(getValues[0].equals("rm")) {
TCComponent[] oldreferenceListProperty = itemMapBoMap.get(objectName).getItemRevision().getReferenceListProperty("IMAN_master_form_rev");
TCComponentForm oldform = (TCComponentForm) oldreferenceListProperty[0];
val = Util.getTCPropertyValue(oldform, getValues[1]);
TCComponent[] newreferenceListProperty = latestItemRevision.getReferenceListProperty("IMAN_master_form_rev");
TCComponentForm newform = (TCComponentForm) newreferenceListProperty[0];
Util.setTCPropertyValue(newform, getValues[1], val);
//val = form.getProperty(getValues[1]);
}else if(getValues[0].equals("bom")) {
val = Util.getTCPropertyValue(itemMapBoMap.get(objectName), getValues[1]);
TCComponentBOMWindowType winType1 = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow");
TCComponentBOMWindow view1 = winType1.create(null);
TCComponentBOMLine line1 = view1.setWindowTopLine(latestItemRevision.getItem(), latestItemRevision, null, null);
Util.setTCPropertyValue(line1, getValues[1], val);
}
}
} catch (Exception e1) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e1.printStackTrace(); e1.printStackTrace();
} }
@ -457,8 +534,10 @@ public class NewJFrame2 extends JFrame {
} }
// 替换分类属性 // 替换分类属性
//添加属性
latestItemRevision.setStringProperty("kwc6_ProductID", jTextField1.getText());
// 替换bom行 // 替换bom行
bomLine.replace(saveAsItem, latestItemRevision, newview); bomLine.replace(saveAsItem, latestItemRevision, null);
if (bomLine.hasChildren()) { if (bomLine.hasChildren()) {
for (AIFComponentContext aifComponentContext : bomLine.getChildren()) { for (AIFComponentContext aifComponentContext : bomLine.getChildren()) {
TCComponentBOMLine line = (TCComponentBOMLine) aifComponentContext.getComponent(); TCComponentBOMLine line = (TCComponentBOMLine) aifComponentContext.getComponent();
@ -468,6 +547,7 @@ public class NewJFrame2 extends JFrame {
} }
} else { } else {
// 从bomview中删除对象 // 从bomview中删除对象
bomLine.cut();
return; return;
} }
@ -481,8 +561,8 @@ public class NewJFrame2 extends JFrame {
* @throws TCException * @throws TCException
*/ */
private void getTree(TCComponentBOMLine bomLine, CheckBoxTreeNode rootNode) throws TCException { private void getTree(TCComponentBOMLine bomLine, CheckBoxTreeNode rootNode) throws TCException {
itemMapIsSel.put(bomLine.getItemRevision().getStringProperty("object_name"), rootNode); itemMapIsSel.put(bomLine.getItemRevision().getStringProperty("object_string"), rootNode);
itemMapBoMap.put(bomLine.getItemRevision().getStringProperty("object_name"), bomLine); itemMapBoMap.put(bomLine.getItemRevision().getStringProperty("object_string"), bomLine);
if (bomLine.hasChildren()) { if (bomLine.hasChildren()) {
AIFComponentContext[] children = bomLine.getChildren(); AIFComponentContext[] children = bomLine.getChildren();
for (AIFComponentContext aifComponentContext : children) { for (AIFComponentContext aifComponentContext : children) {
@ -495,107 +575,4 @@ public class NewJFrame2 extends JFrame {
} }
} }
private void replaceAttribute(TCComponentBOMLine oldLine, TCComponentItemRevision newLine, String attrStr)
throws TCException, ParseException {
String[] attrs = attrStr.split("=")[1].split(";");
for (String attr : attrs) {
String[] p1 = attr.split("\\.");
if (p1[0].equals("item")) {
// pitem.setStringProperty(p1[1], val);
String val = oldLine.getItem().getStringProperty(p1[1]);
TCComponentItem pitem = newLine.getItem();
TCProperty property = (TCProperty) pitem.getTCProperty(p1[1]);
switch (property.getPropertyType()) {
case TCProperty.PROP_string:
case TCProperty.PROP_long_string:
pitem.setStringProperty(p1[1], val);
break;
case TCProperty.PROP_short:
case TCProperty.PROP_int:
pitem.setIntProperty(p1[1], Integer.parseInt(val));
break;
case TCProperty.PROP_double:
case TCProperty.PROP_float:
pitem.setDoubleProperty(p1[1], Double.parseDouble(val));
break;
case TCProperty.PROP_date:
if (!val.equals("")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
Date date = sdf.parse(p1[1]);
if (date != null) {
pitem.setDateProperty(p1[1], date);
}
}
break;
default:
pitem.setStringProperty(p1[1], val);
break;
}
} else if (p1[0].equals("rev")) {
String val = oldLine.getItemRevision().getStringProperty(p1[1]);
TCComponentItemRevision prev = newLine;
TCProperty property = (TCProperty) prev.getTCProperty(p1[1]);
// prev.setStringProperty(p1[1], val);
switch (property.getPropertyType()) {
case TCProperty.PROP_string:
case TCProperty.PROP_long_string:
prev.setStringProperty(p1[1], val);
break;
case TCProperty.PROP_short:
case TCProperty.PROP_int:
prev.setIntProperty(p1[1], Integer.parseInt(val));
break;
case TCProperty.PROP_double:
case TCProperty.PROP_float:
prev.setDoubleProperty(p1[1], Double.parseDouble(val));
break;
case TCProperty.PROP_date:
if (!val.equals("")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
Date date = sdf.parse(p1[1]);
if (date != null) {
prev.setDateProperty(p1[1], date);
}
}
break;
default:
prev.setStringProperty(p1[1], val);
break;
}
} else if (p1[0].equals("bom")) {
String val = oldLine.getStringProperty(p1[1]);
TCComponentBOMWindowType winType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow");
TCComponentBOMWindow view = winType.create(null);
TCComponentBOMLine line = view.setWindowTopLine(newLine.getItem(), newLine, null, null);
TCProperty property = (TCProperty) line.getTCProperty(p1[1]);
switch (property.getPropertyType()) {
case TCProperty.PROP_string:
case TCProperty.PROP_long_string:
line.setStringProperty(p1[1], val);
break;
case TCProperty.PROP_short:
case TCProperty.PROP_int:
line.setIntProperty(p1[1], Integer.parseInt(val));
break;
case TCProperty.PROP_double:
case TCProperty.PROP_float:
line.setDoubleProperty(p1[1], Double.parseDouble(val));
break;
case TCProperty.PROP_date:
if (!val.equals("")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
Date date = sdf.parse(p1[1]);
if (date != null) {
line.setDateProperty(p1[1], date);
}
}
break;
default:
line.setStringProperty(p1[1], val);
break;
}
}
}
}
} }

@ -6,14 +6,22 @@
*/ */
package com.connor.kwc.createBom; package com.connor.kwc.createBom;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import com.teamcenter.rac.aifrcp.AIFUtility; import com.teamcenter.rac.aifrcp.AIFUtility;
import com.teamcenter.rac.kernel.TCAccessControlService; import com.teamcenter.rac.kernel.TCAccessControlService;
import com.teamcenter.rac.kernel.TCComponent; 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.TCComponentFolder; import com.teamcenter.rac.kernel.TCComponentFolder;
import com.teamcenter.rac.kernel.TCComponentItem;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCException; import com.teamcenter.rac.kernel.TCException;
import com.teamcenter.rac.kernel.TCProperty;
import com.teamcenter.rac.kernel.TCSession; import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.kernel.TCTextService; import com.teamcenter.rac.kernel.TCTextService;
import com.teamcenter.rac.kernel.TCUserService; import com.teamcenter.rac.kernel.TCUserService;
@ -40,6 +48,209 @@ public class Util {
session = (TCSession) AIFUtility.getCurrentApplication().getSession(); session = (TCSession) AIFUtility.getCurrentApplication().getSession();
textService = session.getTextService(); textService = session.getTextService();
} }
public static Object getTCPropertyValue(TCComponent item,String propertyName)
{
Object result = "";
try {
TCProperty tcProperty = item.getTCProperty(propertyName);
if(tcProperty == null)
{
System.out.println("未获取属性:"+propertyName);
return result;
}
switch (tcProperty.getPropertyType()) {
case TCProperty.PROP_double:
result = tcProperty.getDoubleValue();
break;
case TCProperty.PROP_int:
result = tcProperty.getIntValue();
break;
case TCProperty.PROP_string:
result = tcProperty.getStringValue();
break;
case TCProperty.PROP_date:
result = tcProperty.getDateValue();
break;
default:
break;
}
} catch (TCException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
public static void setTCPropertyValue(TCComponent item,String propertyName,Object value)
{
try {
TCProperty tcProperty = item.getTCProperty(propertyName);
switch (tcProperty.getPropertyType()) {
case TCProperty.PROP_double:
if(value instanceof Double)
{
tcProperty.setDoubleValue((double) value);
}
else
{
tcProperty.setDoubleValue(Double.parseDouble(value.toString()));
}
break;
case TCProperty.PROP_int:
if(value instanceof Integer)
{
tcProperty.setDoubleValue((int) value);
}
else
{
tcProperty.setDoubleValue(Integer.parseInt(value.toString()));
}
break;
case TCProperty.PROP_string:
tcProperty.setStringValue(value.toString());
break;
case TCProperty.PROP_date:
if(value instanceof Date)
{
tcProperty.setDateValue((Date) value);
}
else
{
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-M-dd HH:mm");
tcProperty.setDateValue(sdf.parse(value.toString()));
}
break;
default:
break;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*
* @Title: replaceAttribute
* @Description: {}
* @param @param oldLine
* @param @param newLine
* @param @param attrStr
* @param @throws TCException
* @param @throws ParseException
* @return void
* @throws
*/
public static void replaceAttribute(TCComponentBOMLine oldLine, TCComponentItemRevision newLine, String attrStr)
throws TCException, ParseException {
String[] attrs = attrStr.split("=")[1].split(";");
for (String attr : attrs) {
String[] p1 = attr.split("\\.");
if (p1[0].equals("item")) {
// pitem.setStringProperty(p1[1], val);
String val = oldLine.getItem().getStringProperty(p1[1]);
TCComponentItem pitem = newLine.getItem();
TCProperty property = (TCProperty) pitem.getTCProperty(p1[1]);
switch (property.getPropertyType()) {
case TCProperty.PROP_string:
case TCProperty.PROP_long_string:
pitem.setStringProperty(p1[1], val);
break;
case TCProperty.PROP_short:
case TCProperty.PROP_int:
pitem.setIntProperty(p1[1], Integer.parseInt(val));
break;
case TCProperty.PROP_double:
case TCProperty.PROP_float:
pitem.setDoubleProperty(p1[1], Double.parseDouble(val));
break;
case TCProperty.PROP_date:
if (!val.equals("")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
Date date = sdf.parse(p1[1]);
if (date != null) {
pitem.setDateProperty(p1[1], date);
}
}
break;
default:
pitem.setStringProperty(p1[1], val);
break;
}
} else if (p1[0].equals("rev")) {
String val = oldLine.getItemRevision().getStringProperty(p1[1]);
TCComponentItemRevision prev = newLine;
TCProperty property = (TCProperty) prev.getTCProperty(p1[1]);
// prev.setStringProperty(p1[1], val);
switch (property.getPropertyType()) {
case TCProperty.PROP_string:
case TCProperty.PROP_long_string:
prev.setStringProperty(p1[1], val);
break;
case TCProperty.PROP_short:
case TCProperty.PROP_int:
prev.setIntProperty(p1[1], Integer.parseInt(val));
break;
case TCProperty.PROP_double:
case TCProperty.PROP_float:
prev.setDoubleProperty(p1[1], Double.parseDouble(val));
break;
case TCProperty.PROP_date:
if (!val.equals("")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
Date date = sdf.parse(p1[1]);
if (date != null) {
prev.setDateProperty(p1[1], date);
}
}
break;
default:
prev.setStringProperty(p1[1], val);
break;
}
} else if (p1[0].equals("bom")) {
String val = oldLine.getStringProperty(p1[1]);
TCComponentBOMWindowType winType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow");
TCComponentBOMWindow view = winType.create(null);
TCComponentBOMLine line = view.setWindowTopLine(newLine.getItem(), newLine, null, null);
TCProperty property = (TCProperty) line.getTCProperty(p1[1]);
switch (property.getPropertyType()) {
case TCProperty.PROP_string:
case TCProperty.PROP_long_string:
line.setStringProperty(p1[1], val);
break;
case TCProperty.PROP_short:
case TCProperty.PROP_int:
line.setIntProperty(p1[1], Integer.parseInt(val));
break;
case TCProperty.PROP_double:
case TCProperty.PROP_float:
line.setDoubleProperty(p1[1], Double.parseDouble(val));
break;
case TCProperty.PROP_date:
if (!val.equals("")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
Date date = sdf.parse(p1[1]);
if (date != null) {
line.setDateProperty(p1[1], date);
}
}
break;
default:
line.setStringProperty(p1[1], val);
break;
}
}
}
}
/** /**
* *

@ -87,7 +87,17 @@ public class CreateDWGHandler extends AbstractHandler {
} }
return null; return null;
} }
/**
*
* @Title: createdataSetForUID
* @Description: uid
* @param @param revision
* @param @param templateMap
* @param @param key
* @param @throws TCException
* @return void
* @throws
*/
public void createdataSetForUID(TCComponentItemRevision revision, Map<String, String> templateMap, String key) public void createdataSetForUID(TCComponentItemRevision revision, Map<String, String> templateMap, String key)
throws TCException { throws TCException {
if (templateMap.containsKey(key)) { if (templateMap.containsKey(key)) {

@ -1,7 +1,14 @@
package com.connor.kwc.createTemplate; package com.connor.kwc.createTemplate;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.swing.DefaultComboBoxModel; import javax.swing.DefaultComboBoxModel;
import javax.swing.GroupLayout; import javax.swing.GroupLayout;
@ -22,10 +29,19 @@ import com.connor.kwc.createBom.CheckBoxTreeNode;
import com.connor.kwc.createBom.CheckBoxTreeNodeSelectionListener; import com.connor.kwc.createBom.CheckBoxTreeNodeSelectionListener;
import com.connor.kwc.createBom.Util; import com.connor.kwc.createBom.Util;
import com.teamcenter.rac.aif.AIFPortal; import com.teamcenter.rac.aif.AIFPortal;
import com.teamcenter.rac.aif.kernel.AIFComponentContext;
import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
import com.teamcenter.rac.kernel.TCComponent; 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.TCComponentFolder; import com.teamcenter.rac.kernel.TCComponentFolder;
import com.teamcenter.rac.kernel.TCComponentFolderType; import com.teamcenter.rac.kernel.TCComponentFolderType;
import com.teamcenter.rac.kernel.TCComponentForm;
import com.teamcenter.rac.kernel.TCComponentItem;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCException; import com.teamcenter.rac.kernel.TCException;
import com.teamcenter.rac.kernel.TCProperty;
import com.teamcenter.rac.kernel.TCSession; import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.util.MessageBox; import com.teamcenter.rac.util.MessageBox;
@ -39,238 +55,270 @@ import com.teamcenter.rac.util.MessageBox;
*/ */
public class CreateTemplateDialg extends JFrame { public class CreateTemplateDialg extends JFrame {
private TCSession session; private TCSession session;
private TCComponent target; private TCComponent target;
private JButton jButton3; private JButton jButton3;
private JLabel jLabel3; private JLabel jLabel3;
private JPanel jPanel1; private JPanel jPanel1;
private JPanel jPanel2; private JPanel jPanel2;
private JPanel jPanel4; private JPanel jPanel4;
private JScrollPane jScrollPane1; private JScrollPane jScrollPane1;
private JTextField jTextField3; private JTextField jTextField3;
private JTree jTree1; private JTree jTree1;
private String[] sxxdate; private String[] sxxdate;
private String[] sxxAttrDate;
private Map<TCComponent,CheckBoxTreeNode> isSelectMap = new HashMap<TCComponent, CheckBoxTreeNode>();
private Map<String,Map<TCComponent,CheckBoxTreeNode>> isSelectByNodeMap = new HashMap<String, Map<TCComponent,CheckBoxTreeNode>>();
/** /**
* Creates new form NewJFrame2 * Creates new form NewJFrame2
*/ */
public CreateTemplateDialg(TCSession session, TCComponent folder) { public CreateTemplateDialg(TCSession session, TCComponent folder) {
this.session = session; this.session = session;
this.target = folder; this.target = folder;
getData(); getData();
try { try {
initComponents(); initComponents();
} catch (TCException e) { } catch (TCException e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
} }
} }
private void getData() { private void getData() {
// TODO Auto-generated method stub // TODO Auto-generated method stub
sxxdate = Util.getSXX(session, "KWC_CreateDOCtemplate"); sxxdate = Util.getSXX(session, "KWC_CreateDOCtemplate");
sxxAttrDate = Util.getSXX(session, "KWC_CreateDOC_attribute");
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code"> // <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() throws TCException { private void initComponents() throws TCException {
this.setTitle("依据模板创建"); this.setTitle("依据模板创建");
jPanel1 = new JPanel(); jPanel1 = new JPanel();
jPanel2 = new JPanel(); jPanel2 = new JPanel();
jLabel3 = new JLabel(); jLabel3 = new JLabel();
jScrollPane1 = new JScrollPane(); jScrollPane1 = new JScrollPane();
jTree1 = new JTree(); jTree1 = new JTree();
// 初始化Jtree // 初始化Jtree
initTree(jTree1);
jTree1.setCellRenderer(new CheckBoxTreeCellRenderer());
jButton3 = new JButton();
jTextField3 = new JTextField();
jTextField3.setText(target.getStringProperty("item_id"));
jPanel4 = new JPanel();
jTree1.setCellRenderer(new CheckBoxTreeCellRenderer()); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
jButton3 = new JButton(); setBackground(new java.awt.Color(240, 240, 240));
jTextField3 = new JTextField();
jTextField3.setText(target.getStringProperty("item_id"));
jPanel4 = new JPanel();
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); jPanel1.setBackground(new java.awt.Color(240, 240, 240));
setBackground(new java.awt.Color(240, 240, 240));
jPanel1.setBackground(new java.awt.Color(240, 240, 240)); jPanel2.setBackground(new java.awt.Color(240, 240, 240));
jPanel2.setBackground(new java.awt.Color(240, 240, 240)); jLabel3.setText("产品代号:");
jLabel3.setText("产品代号:"); jScrollPane1.setViewportView(jTree1);
jScrollPane1.setViewportView(jTree1); jButton3.setText("确定");
jButton3.setText("确定"); jTextField3.setText("");
jTextField3.setText(""); GroupLayout jPanel2Layout = new GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup().addGap(53, 53, 53).addComponent(jLabel3)
.addGap(18, 18, 18)
.addComponent(jTextField3, GroupLayout.PREFERRED_SIZE, 213, GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18).addComponent(jButton3)
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(jPanel2Layout.createSequentialGroup().addContainerGap()
.addComponent(jScrollPane1, GroupLayout.DEFAULT_SIZE, 526, Short.MAX_VALUE).addContainerGap()));
jPanel2Layout
.setVerticalGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup().addGap(13, 13, 13)
.addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(jButton3)
.addComponent(jTextField3, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3))
.addGap(18, 18, 18)
.addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 544, GroupLayout.PREFERRED_SIZE)
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
GroupLayout jPanel2Layout = new GroupLayout(jPanel2); jPanel4.setBackground(new java.awt.Color(255, 255, 255));
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup().addGap(53, 53, 53).addComponent(jLabel3)
.addGap(18, 18, 18)
.addComponent(jTextField3, GroupLayout.PREFERRED_SIZE, 213, GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18).addComponent(jButton3)
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(jPanel2Layout.createSequentialGroup().addContainerGap()
.addComponent(jScrollPane1, GroupLayout.DEFAULT_SIZE, 526, Short.MAX_VALUE).addContainerGap()));
jPanel2Layout
.setVerticalGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup().addGap(13, 13, 13)
.addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(jButton3)
.addComponent(jTextField3, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3))
.addGap(18, 18, 18)
.addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 544, GroupLayout.PREFERRED_SIZE)
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
jPanel4.setBackground(new java.awt.Color(255, 255, 255)); GroupLayout jPanel4Layout = new GroupLayout(jPanel4);
jPanel4.setLayout(jPanel4Layout);
jPanel4Layout.setHorizontalGroup(
jPanel4Layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGap(0, 538, Short.MAX_VALUE));
jPanel4Layout.setVerticalGroup(
jPanel4Layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGap(0, 0, Short.MAX_VALUE));
GroupLayout jPanel4Layout = new GroupLayout(jPanel4); GroupLayout jPanel1Layout = new GroupLayout(jPanel1);
jPanel4.setLayout(jPanel4Layout); jPanel1.setLayout(jPanel1Layout);
jPanel4Layout.setHorizontalGroup( jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
jPanel4Layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGap(0, 538, Short.MAX_VALUE)); .addGroup(jPanel1Layout.createSequentialGroup().addContainerGap()
jPanel4Layout.setVerticalGroup( .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
jPanel4Layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGap(0, 0, Short.MAX_VALUE)); .addComponent(jPanel2, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jPanel4, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
.addContainerGap()));
jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup().addContainerGap()
.addComponent(jPanel2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
GroupLayout.PREFERRED_SIZE)
.addGap(73, 73, 73)
.addComponent(jPanel4, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap()));
GroupLayout jPanel1Layout = new GroupLayout(jPanel1); GroupLayout layout = new GroupLayout(getContentPane());
jPanel1.setLayout(jPanel1Layout); getContentPane().setLayout(layout);
jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup().addContainerGap() .addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup().addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) .addComponent(jPanel1, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel2, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, .addContainerGap()));
Short.MAX_VALUE) layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(jPanel4, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, .addGroup(layout.createSequentialGroup().addContainerGap()
Short.MAX_VALUE)) .addComponent(jPanel1, GroupLayout.PREFERRED_SIZE, 619, GroupLayout.PREFERRED_SIZE)
.addContainerGap())); .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup().addContainerGap()
.addComponent(jPanel2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
GroupLayout.PREFERRED_SIZE)
.addGap(73, 73, 73)
.addComponent(jPanel4, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap()));
GroupLayout layout = new GroupLayout(getContentPane()); pack();
getContentPane().setLayout(layout); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); // 获取屏幕尺寸
layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) int screenWidth = screenSize.width; // 获取屏幕宽度
.addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup().addContainerGap() int screenHeight = screenSize.height; // 获取屏幕高度
.addComponent(jPanel1, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) int x = (screenWidth - this.getWidth()) / 2; // 计算Frame的左上角x坐标
.addContainerGap())); int y = (screenHeight - this.getHeight()) / 2; // 计算Frame的左上角y坐标
layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) this.setLocation(x, y); // 设置Frame的位置
.addGroup(layout.createSequentialGroup().addContainerGap() this.setDefaultCloseOperation(2);
.addComponent(jPanel1, GroupLayout.PREFERRED_SIZE, 619, GroupLayout.PREFERRED_SIZE)
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
pack(); this.jButton3.addActionListener(new ActionListener() {
this.jButton3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String name = jTextField3.getText();
if (name.isEmpty()) {
MessageBox.post("产品代号不能为空!", "提示 ", MessageBox.INFORMATION);
} else {
TCComponentFolderType folderType;
try {
Util.setByPass(true);
folderType = (TCComponentFolderType) session.getTypeComponent("LD6_CusProdFolder");
TCComponentFolder folder = Util.createFolderBySOA(folderType.getTypeName(), name);
//TCComponentFolder folder = folderType.create(name, "", "LD6_CusProdFolder");
target.add("contents", folder);
CheckBoxTreeNode root = (CheckBoxTreeNode) jTree1.getModel().getRoot();
createFolderStruct(root,folder,(TCComponentFolderType) session.getTypeComponent("LD6_ProjMaFolder"),true);
Util.setByPass(false);
dispose();
} catch (Exception e1) {
e1.printStackTrace();
}
}
}
});
}
/** @Override
* public void actionPerformed(ActionEvent e) {
* @param tree // TODO Auto-generated method stub
*/ String name = jTextField3.getText();
private void initTree(JTree tree){ if (name.isEmpty()) {
String puids = sxxdate[0].split("=")[1]; MessageBox.post("产品代号不能为空!", "提示 ", MessageBox.INFORMATION);
TCComponent component; } else {
try { try {
CheckBoxTreeNode rootNode = new CheckBoxTreeNode("模板"); Util.setByPass(true);
String[] puid = puids.split(";");
for(String uid : puid) { CheckBoxTreeNode root = (CheckBoxTreeNode) jTree1.getModel().getRoot();
component = session.stringToComponent(uid); //根据当前文件夹下的关系匹配树节点的选中状态创建对象
if(component == null || !(component instanceof TCComponentFolder)) { for(AIFComponentContext comp : target.getChildren()) {
MessageBox.post(puid + " 该puid在TC中不存在对象或者该puid对应的不是文件夹对象", "异常", MessageBox.ERROR); TCComponent component = (TCComponent)comp.getComponent();
return; if(isSelectByNodeMap.containsKey(component.getStringProperty("object_name"))) {
}else { Map<TCComponent, CheckBoxTreeNode> map = isSelectByNodeMap.get(component.getStringProperty("object_name"));
buildTree(component,rootNode); for (Map.Entry<TCComponent, CheckBoxTreeNode> entry : map.entrySet()) {
} if(entry.getValue().isSelected()) {
} //另存文件,复制属性规则
TCComponentItem item = (TCComponentItem)entry.getKey();
DefaultTreeModel model = new DefaultTreeModel(rootNode); TCComponentItem saveAsItem = item.getLatestItemRevision().saveAsItem(jTextField3.getText(), "A", item.getStringProperty("object_name"), "", true, null);
tree.addMouseListener(new CheckBoxTreeNodeSelectionListener()); // 替换属性
tree.setModel(model); for (String attrStr : sxxAttrDate) {
tree.setCellRenderer(new CheckBoxTreeCellRenderer()); if (attrStr.startsWith(saveAsItem.getStringProperty("object_type"))) {
//展开所有节点并选中 try {
for (int i = 0; i < tree.getRowCount(); i++) { String[] replaces = attrStr.split("=")[1].split(";");
tree.expandRow(i); for(String replace : replaces) {
} String[] getValues = replace.split("\\.");
rootNode.setSelected(true); Object val = "";
} catch (TCException e) { if(getValues[0].equals("item")) {
e.printStackTrace(); val = Util.getTCPropertyValue(item, getValues[1]);
} Util.setTCPropertyValue(saveAsItem, getValues[1], val);
} //val = item.getProperty(getValues[1]);
}else if(getValues[0].equals("rev")) {
/** val = Util.getTCPropertyValue(item.getLatestItemRevision(), getValues[1]);
* Util.setTCPropertyValue(saveAsItem.getLatestItemRevision(), getValues[1], val);
* @param component //val = rev.getProperty(getValues[1]);
* @param rootNode }else if(getValues[0].equals("rm")) {
* @throws TCException TCComponent[] oldreferenceListProperty = item.getLatestItemRevision().getReferenceListProperty("IMAN_master_form_rev");
*/ TCComponentForm oldform = (TCComponentForm) oldreferenceListProperty[0];
private void buildTree(TCComponent component, CheckBoxTreeNode rootNode) throws TCException { val = Util.getTCPropertyValue(oldform, getValues[1]);
TCComponent[] relatedComponent = component.getRelatedComponents("contents"); TCComponent[] newreferenceListProperty = saveAsItem.getLatestItemRevision().getReferenceListProperty("IMAN_master_form_rev");
if(relatedComponent != null) { TCComponentForm newform = (TCComponentForm) newreferenceListProperty[0];
for (TCComponent child : relatedComponent) { Util.setTCPropertyValue(newform, getValues[1], val);
CheckBoxTreeNode childNode = new CheckBoxTreeNode(child.getStringProperty("object_name")); //val = form.getProperty(getValues[1]);
rootNode.add(childNode); }
buildTree(child,childNode); }
} } catch (Exception e1) {
} // TODO Auto-generated catch block
e1.printStackTrace();
} }
break;
/** }
* }
* @param root component.add("contents", saveAsItem);
* @param folder }
* @param folderType
* @throws Exception }
*/ }
private void createFolderStruct(CheckBoxTreeNode root, TCComponentFolder parentFolder, }
TCComponentFolderType folderType,boolean ifTop) throws Exception { Util.setByPass(false);
if(root.isSelected()) { dispose();
if(ifTop) { } catch (Exception e1) {
for (int i = 0; i < root.getChildCount(); i++) { e1.printStackTrace();
CheckBoxTreeNode child = (CheckBoxTreeNode) root.getChildAt(i); }
createFolderStruct(child,parentFolder,folderType,false); }
} }
} });
else { }
TCComponentFolder folder = Util.createFolderBySOA(folderType.getTypeName(), root.toString());
parentFolder.add("contents", folder); /**
for (int i = 0; i < root.getChildCount(); i++) { *
CheckBoxTreeNode child = (CheckBoxTreeNode) root.getChildAt(i); *
createFolderStruct(child,folder,folderType,false); * @param tree
} */
} private void initTree(JTree tree) {
} String puids = sxxdate[0].split("=")[1];
TCComponent component;
} try {
CheckBoxTreeNode rootNode = new CheckBoxTreeNode("模板");
String[] puid = puids.split(";");
for (String uid : puid) {
component = session.stringToComponent(uid);
if (component == null || !(component instanceof TCComponentFolder)) {
MessageBox.post(puid + " 该puid在TC中不存在对象或者该puid对应的不是文件夹对象", "异常", MessageBox.ERROR);
return;
} else {
buildTree(component, rootNode);
}
}
DefaultTreeModel model = new DefaultTreeModel(rootNode);
tree.addMouseListener(new CheckBoxTreeNodeSelectionListener());
tree.setModel(model);
tree.setCellRenderer(new CheckBoxTreeCellRenderer());
// 展开所有节点并选中
for (int i = 0; i < tree.getRowCount(); i++) {
tree.expandRow(i);
}
rootNode.setSelected(true);
} catch (TCException e) {
e.printStackTrace();
}
}
/**
*
*
* @param component
* @param rootNode
* @throws TCException
*/
private void buildTree(TCComponent component, CheckBoxTreeNode rootNode) throws TCException {
CheckBoxTreeNode topNode = new CheckBoxTreeNode(component.getStringProperty("object_name"));
rootNode.add(topNode);
TCComponent[] relatedComponent = component.getRelatedComponents("contents");
if (relatedComponent != null) {
for (TCComponent child : relatedComponent) {
CheckBoxTreeNode childNode = new CheckBoxTreeNode(child.getStringProperty("object_name"));
isSelectMap.put(child, childNode);
topNode.add(childNode);
}
isSelectByNodeMap.put(component.getStringProperty("object_name"), isSelectMap);
}
}
} }

@ -4,10 +4,13 @@ import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionEvent;
import com.connor.kwc.createBom.CreateBOMOperation; import com.connor.kwc.createBom.CreateBOMOperation;
import com.connor.kwc.createBom.Util;
import com.teamcenter.rac.aif.AbstractAIFApplication; import com.teamcenter.rac.aif.AbstractAIFApplication;
import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
import com.teamcenter.rac.aifrcp.AIFUtility; import com.teamcenter.rac.aifrcp.AIFUtility;
import com.teamcenter.rac.kernel.TCComponentFolder; import com.teamcenter.rac.kernel.TCComponentFolder;
import com.teamcenter.rac.kernel.TCComponentItem;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCException; import com.teamcenter.rac.kernel.TCException;
import com.teamcenter.rac.kernel.TCSession; import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.util.MessageBox; import com.teamcenter.rac.util.MessageBox;
@ -31,13 +34,20 @@ public class CreateTemplateHandler extends AbstractHandler {
@Override @Override
public void run() { public void run() {
InterfaceAIFComponent folder = app.getTargetComponent(); InterfaceAIFComponent item = app.getTargetComponent();
session = (TCSession) folder.getSession(); session = (TCSession) item.getSession();
if (folder instanceof TCComponentFolder) { if (item instanceof TCComponentItem) {
try { try {
if ("XYProduct".equals(((TCComponentFolder) folder).getStringProperty("object_type"))) { if ("XYProduct".equals(((TCComponentItem) item).getStringProperty("object_type"))) {
// 判断当前用户是否有权限操作当前对象
Boolean userHasPowerForCompont = Util.userHasPowerForCompont(session,
(TCComponentItem) item);
if (!userHasPowerForCompont) {
MessageBox.post("用户没有写权限", "提示", MessageBox.INFORMATION);
return;
}
CreateTemplateOperation createTemplateOperation = new CreateTemplateOperation(session, CreateTemplateOperation createTemplateOperation = new CreateTemplateOperation(session,
folder); item);
session.queueOperation(createTemplateOperation); session.queueOperation(createTemplateOperation);
} else { } else {
MessageBox.post("¶ÔÏóÀàÐÍÑ¡Ôñ´íÎó", "Ìáʾ ", MessageBox.INFORMATION); MessageBox.post("¶ÔÏóÀàÐÍÑ¡Ôñ´íÎó", "Ìáʾ ", MessageBox.INFORMATION);

Loading…
Cancel
Save