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

@ -6,6 +6,7 @@
point="org.eclipse.ui.commands">
<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="A1" id="com.connor.kwc.createDWG.A1"/>
<command name="A2" id="com.connor.kwc.createDWG.A2"/>
@ -19,11 +20,12 @@
point="org.eclipse.ui.handlers">
<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.createDWG.A1" class="com.connor.kwc.createBom.CreateDWGHandler"/>
<handler commandId="com.connor.kwc.createDWG.A2" class="com.connor.kwc.createBom.CreateDWGHandler"/>
<handler commandId="com.connor.kwc.createDWG.A3" class="com.connor.kwc.createBom.CreateDWGHandler"/>
<handler commandId="com.connor.kwc.createDWG.A4" 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.A0" class="com.connor.kwc.createDWG.CreateDWGHandler"/>
<handler commandId="com.connor.kwc.createDWG.A1" class="com.connor.kwc.createDWG.CreateDWGHandler"/>
<handler commandId="com.connor.kwc.createDWG.A2" class="com.connor.kwc.createDWG.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>
@ -34,6 +36,9 @@
<menu label="二开菜单" id="cn.net.connor.kwc.plm.seconddevelop.menus">
<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>
</menu>

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

@ -6,6 +6,8 @@
*/
package com.connor.kwc.createBom;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
@ -32,12 +34,16 @@ import javax.swing.LayoutStyle;
import javax.swing.WindowConstants;
import javax.swing.tree.DefaultTreeModel;
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
import com.teamcenter.rac.aif.kernel.AIFComponentContext;
import com.teamcenter.rac.kernel.TCComponent;
import com.teamcenter.rac.kernel.TCComponentBOMLine;
import com.teamcenter.rac.kernel.TCComponentBOMView;
import com.teamcenter.rac.kernel.TCComponentBOMWindow;
import com.teamcenter.rac.kernel.TCComponentBOMWindowType;
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.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCException;
@ -79,6 +85,7 @@ public class NewJFrame1 extends JFrame {
private String[] sxxdate;
private TCComponent component;
private List<String> tempList;
private List<String> tempIdList;
private Map<String, CheckBoxTreeNode> itemMapIsSel = new HashMap<>();
private Map<String, TCComponentBOMLine> itemMapBoMap = new HashMap<>();
@ -146,8 +153,11 @@ public class NewJFrame1 extends JFrame {
jLabel3.setText("类型:");
List typeList = (ArrayList) dataMap.get("typeList");
String[] typeArray = (String[]) typeList.toArray();
ArrayList<String> typeList = (ArrayList<String>) dataMap.get("typeList");
for(String tyString : typeList) {
System.out.println("tyString:"+tyString);
}
String[] typeArray = typeList.stream().toArray(String[]::new);
jComboBox2.setModel(new DefaultComboBoxModel<>(typeArray));
jComboBox2.setSelectedIndex(0);
@ -155,9 +165,11 @@ public class NewJFrame1 extends JFrame {
String template = templateMap.get(jComboBox2.getSelectedItem());
String[] split = template.split(";");
tempList = new ArrayList<String>();
tempIdList = new ArrayList<String>();
// 根据UID找模板信息
for (String uid : split) {
try {
tempIdList.add(uid);
TCComponent component = session.stringToComponent(uid);
tempList.add(component.getStringProperty("object_name"));
} 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.setSelectedIndex(0);
jLabel4.setText("模板:");
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");
TCComponentBOMWindow view = winType.create(null);
if (component instanceof TCComponentItemRevision) {
@ -192,11 +205,8 @@ public class NewJFrame1 extends JFrame {
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("专业:");
@ -324,7 +334,17 @@ public class NewJFrame1 extends JFrame {
GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
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"));
// jTextField2.setText(target.getStringProperty("object_name"));
// jTextField1.setEditable(false);
jTextField2.setEditable(false);
// 类型下拉框监听,更新模板下拉框
jComboBox2.addItemListener(new ItemListener() {
@ -334,10 +354,11 @@ public class NewJFrame1 extends JFrame {
Map<String, String> templateMap = (HashMap<String, String>) dataMap.get("templateMap");
String template = templateMap.get(jComboBox2.getSelectedItem());
String[] split = template.split(";");
List<String> tempList = new ArrayList<String>();
tempList = new ArrayList<String>();
// 根据UID找模板信息
for (String uid : split) {
try {
tempIdList.add(uid);
TCComponent component = session.stringToComponent(uid);
tempList.add(component.getStringProperty("object_name"));
} catch (TCException e1) {
@ -345,8 +366,8 @@ public class NewJFrame1 extends JFrame {
e1.printStackTrace();
}
}
String[] array = (String[]) tempList.toArray();
String[] array = tempList.stream().toArray(String[]::new);
//String[] array = (String[]) tempList.toArray();
jComboBox3.setModel(new DefaultComboBoxModel<>(array));
}
});
@ -357,7 +378,7 @@ public class NewJFrame1 extends JFrame {
public void itemStateChanged(ItemEvent e) {
try {
int selectedIndex = jComboBox3.getSelectedIndex();
String uid = tempList.get(selectedIndex);
String uid = tempIdList.get(selectedIndex);
component = session.stringToComponent(uid);
TCComponentBOMWindowType winType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow");
@ -387,28 +408,56 @@ public class NewJFrame1 extends JFrame {
public void actionPerformed(ActionEvent e) {
// 必填判定
String field1 = jTextField1.getText();
String field2 = jTextField2.getText();
if (field1 == null || "".equals(field1.trim()) || field2 == null || "".equals(field2.trim())) {
MessageBox.post("产品代号和产品名称必填,请检查", "提示", MessageBox.INFORMATION);
if (field1 == null || "".equals(field1.trim())) {
MessageBox.post("产品代号必填,请检查", "提示", MessageBox.INFORMATION);
return;
}
// 开始复制对象
TCComponentItemRevision revision = (TCComponentItemRevision) component;
try {
if (itemMapIsSel.get(revision.getStringProperty("object_string")).isSelected) {
TCComponentItem newItem = revision.saveAsItem(jTextField1.getText(), "A", jTextField2.getText(),
"", true, null);
if (itemMapIsSel.get(revision.getStringProperty("object_name")).isSelected) {
TCComponentItem newItem = revision.saveAsItem(jTextField1.getText(), "A");
// TCComponentItem newItem = revision.saveAsItem(jTextField1.getText(), "A", revision.getStringProperty("object_name"),"", true, null);
TCComponentItemRevision newRevision = newItem.getLatestItemRevision();
TCComponentBOMWindowType winType = (TCComponentBOMWindowType) session
.getTypeComponent("BOMWindow");
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) {
if (attrStr.startsWith(line.getItemRevision().getItem().getStringProperty("object_type"))) {
try {
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(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
e1.printStackTrace();
}
@ -416,10 +465,18 @@ public class NewJFrame1 extends JFrame {
}
}
// 递归BOM结构删除未选中的对象
collectAllBomLine(line, jTextField1.getText(), winType, view, false);
TCComponentItemRevision itemRevision = line.getItemRevision();
target.add("", itemRevision);
collectAllBomLine(line, jTextField1.getText(), winType, line.getBOMView(), true);
AIFComponentContext[] children = line.getChildren();
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 {
return;
}
@ -443,7 +500,7 @@ public class NewJFrame1 extends JFrame {
* @throws TCException
*/
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");
boolean selected = itemMapIsSel.get(objectName).isSelected();
// 判断界面是否选中
@ -461,15 +518,48 @@ public class NewJFrame1 extends JFrame {
} else {
// 当不是第一次递归的时候每次递归另存一个对象把要同步的数据同步过去然后将对象替换到新的bomview上去
TCComponentItem saveAsItem = bomLine.getItemRevision().saveAsItem(jTextField1.getText(), "A",
bomLine.getItemRevision().getStringProperty("object_name"), "", true, null);
String itemId = bomLine.getItemRevision().getStringProperty("item_id");
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();
// 替换属性
for (String attrStr : sxxdate) {
if (attrStr.startsWith(bomLine.getItemRevision().getItem().getStringProperty("object_type"))) {
try {
replaceAttribute(itemMapBoMap.get(objectName), latestItemRevision, attrStr);
} catch (ParseException e1) {
//Util.replaceAttribute(itemMapBoMap.get(objectName), latestItemRevision, attrStr);
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
e1.printStackTrace();
}
@ -478,8 +568,14 @@ 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()) {
for (AIFComponentContext aifComponentContext : bomLine.getChildren()) {
TCComponentBOMLine line = (TCComponentBOMLine) aifComponentContext.getComponent();
@ -489,6 +585,7 @@ public class NewJFrame1 extends JFrame {
}
} else {
// 从bomview中删除对象
bomLine.cut();
return;
}
@ -516,108 +613,5 @@ 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;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
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.TCComponentBomChange;
import com.teamcenter.rac.kernel.TCComponentFolder;
import com.teamcenter.rac.kernel.TCComponentForm;
import com.teamcenter.rac.kernel.TCComponentItem;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCException;
@ -75,6 +78,7 @@ public class NewJFrame2 extends JFrame {
private Map<String, Object> dataMap;
private TCComponentFolder target;
private List<String> tempList;
private List<String> tempIdList;
private TCComponent component;
private Map<String, CheckBoxTreeNode> itemMapIsSel = new HashMap<>();
private Map<String, TCComponentBOMLine> itemMapBoMap = new HashMap<>();
@ -141,8 +145,9 @@ public class NewJFrame2 extends JFrame {
jLabel3.setText("类型:");
List typeList = (ArrayList) dataMap.get("typeList");
String[] typeArray = (String[]) typeList.toArray();
ArrayList<String> typeList = (ArrayList<String>) dataMap.get("typeList");
//String[] typeArray = (String[]) typeList.toArray();
String[] typeArray = typeList.stream().toArray(String[]::new);
jComboBox2.setModel(new DefaultComboBoxModel<>(typeArray));
jComboBox2.setSelectedIndex(0);
@ -150,9 +155,11 @@ public class NewJFrame2 extends JFrame {
String template = templateMap.get(jComboBox2.getSelectedItem());
String[] split = template.split(";");
tempList = new ArrayList<String>();
tempIdList = new ArrayList<String>();
// 根据UID找模板信息
for (String uid : split) {
try {
tempIdList.add(uid);
TCComponent component = session.stringToComponent(uid);
tempList.add(component.getStringProperty("object_name"));
} catch (TCException e1) {
@ -160,14 +167,14 @@ public class NewJFrame2 extends JFrame {
e1.printStackTrace();
}
}
String[] array = (String[]) tempList.toArray();
String[] array = tempList.stream().toArray(String[]::new);
// String[] array = (String[]) tempList.toArray();
jComboBox3.setModel(new DefaultComboBoxModel<>(array));
jComboBox3.setSelectedIndex(0);
jLabel4.setText("模板:");
try {
// 根据模板创建树结构,给用户选择
component = session.stringToComponent(tempList.get(0));
component = session.stringToComponent(tempIdList.get(0));
TCComponentBOMWindowType winType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow");
TCComponentBOMWindow view = winType.create(null);
if (component instanceof TCComponentItemRevision) {
@ -305,6 +312,14 @@ public class NewJFrame2 extends JFrame {
GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
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() {
@ -313,10 +328,11 @@ public class NewJFrame2 extends JFrame {
Map<String, String> templateMap = (HashMap<String, String>) dataMap.get("templateMap");
String template = templateMap.get(jComboBox2.getSelectedItem());
String[] split = template.split(";");
List<String> tempList = new ArrayList<String>();
tempList = new ArrayList<String>();
// 根据UID找模板信息
for (String uid : split) {
try {
tempIdList.add(uid);
TCComponent component = session.stringToComponent(uid);
tempList.add(component.getStringProperty("object_name"));
} catch (TCException e1) {
@ -324,8 +340,8 @@ public class NewJFrame2 extends JFrame {
e1.printStackTrace();
}
}
String[] array = (String[]) tempList.toArray();
String[] array = tempList.stream().toArray(String[]::new);
//String[] array = (String[]) tempList.toArray();
jComboBox3.setModel(new DefaultComboBoxModel<>(array));
}
});
@ -336,7 +352,7 @@ public class NewJFrame2 extends JFrame {
public void itemStateChanged(ItemEvent e) {
try {
int selectedIndex = jComboBox3.getSelectedIndex();
String uid = tempList.get(selectedIndex);
String uid = tempIdList.get(selectedIndex);
component = session.stringToComponent(uid);
TCComponentBOMWindowType winType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow");
@ -375,8 +391,8 @@ public class NewJFrame2 extends JFrame {
TCComponentItemRevision revision = (TCComponentItemRevision) component;
try {
if (itemMapIsSel.get(revision.getStringProperty("object_string")).isSelected) {
TCComponentItem newItem = revision.saveAsItem(jTextField1.getText(), "A", jTextField2.getText(),
"", true, null);
TCComponentItem newItem = revision.saveAsItem(jTextField1.getText(), "A");
//TCComponentItem newItem = revision.saveAsItem(jTextField1.getText(), "A", jTextField2.getText(),"", true, null);
TCComponentItemRevision newRevision = newItem.getLatestItemRevision();
TCComponentBOMWindowType winType = (TCComponentBOMWindowType) session
.getTypeComponent("BOMWindow");
@ -386,8 +402,36 @@ public class NewJFrame2 extends JFrame {
for (String attrStr : sxxdate) {
if (attrStr.startsWith(line.getItemRevision().getItem().getStringProperty("object_type"))) {
try {
replaceAttribute(line, newRevision, attrStr);
} catch (ParseException e1) {
//Util.replaceAttribute(line, newRevision, attrStr);
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
e1.printStackTrace();
}
@ -397,7 +441,9 @@ public class NewJFrame2 extends JFrame {
// 递归BOM结构删除未选中的对象
collectAllBomLine(line, jTextField1.getText(), winType, view, false);
TCComponentItemRevision itemRevision = line.getItemRevision();
target.add("", itemRevision);
target.add("contents", itemRevision);
MessageBox.post("创建成功", "提示", MessageBox.INFORMATION);
return;
} else {
return;
@ -423,7 +469,7 @@ public class NewJFrame2 extends JFrame {
*/
public void collectAllBomLine(TCComponentBOMLine bomLine, String newId, TCComponentBOMWindowType winType,
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();
// 判断界面是否选中
if (selected) {
@ -440,15 +486,46 @@ public class NewJFrame2 extends JFrame {
} else {
// 当不是第一次递归的时候每次递归另存一个对象把要同步的数据同步过去然后将对象替换到新的bomview上去
TCComponentItem saveAsItem = bomLine.getItemRevision().saveAsItem(jTextField1.getText(), "A",
bomLine.getItemRevision().getStringProperty("object_name"), "", true, null);
String itemId = bomLine.getItemRevision().getStringProperty("item_id");
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();
// 替换属性
for (String attrStr : sxxdate) {
if (attrStr.startsWith(bomLine.getItemRevision().getItem().getStringProperty("object_type"))) {
try {
replaceAttribute(itemMapBoMap.get(objectName), latestItemRevision, attrStr);
} catch (ParseException e1) {
//Util.replaceAttribute(itemMapBoMap.get(objectName), latestItemRevision, attrStr);
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
e1.printStackTrace();
}
@ -457,8 +534,10 @@ public class NewJFrame2 extends JFrame {
}
// 替换分类属性
//添加属性
latestItemRevision.setStringProperty("kwc6_ProductID", jTextField1.getText());
// 替换bom行
bomLine.replace(saveAsItem, latestItemRevision, newview);
bomLine.replace(saveAsItem, latestItemRevision, null);
if (bomLine.hasChildren()) {
for (AIFComponentContext aifComponentContext : bomLine.getChildren()) {
TCComponentBOMLine line = (TCComponentBOMLine) aifComponentContext.getComponent();
@ -468,6 +547,7 @@ public class NewJFrame2 extends JFrame {
}
} else {
// 从bomview中删除对象
bomLine.cut();
return;
}
@ -481,8 +561,8 @@ public class NewJFrame2 extends JFrame {
* @throws TCException
*/
private void getTree(TCComponentBOMLine bomLine, CheckBoxTreeNode rootNode) throws TCException {
itemMapIsSel.put(bomLine.getItemRevision().getStringProperty("object_name"), rootNode);
itemMapBoMap.put(bomLine.getItemRevision().getStringProperty("object_name"), bomLine);
itemMapIsSel.put(bomLine.getItemRevision().getStringProperty("object_string"), rootNode);
itemMapBoMap.put(bomLine.getItemRevision().getStringProperty("object_string"), bomLine);
if (bomLine.hasChildren()) {
AIFComponentContext[] children = bomLine.getChildren();
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;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import com.teamcenter.rac.aifrcp.AIFUtility;
import com.teamcenter.rac.kernel.TCAccessControlService;
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.TCComponentItem;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCException;
import com.teamcenter.rac.kernel.TCProperty;
import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.kernel.TCTextService;
import com.teamcenter.rac.kernel.TCUserService;
@ -41,6 +49,209 @@ public class Util {
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;
}
}
}
}
/**
*
* @Title: getSXX

@ -87,7 +87,17 @@ public class CreateDWGHandler extends AbstractHandler {
}
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)
throws TCException {
if (templateMap.containsKey(key)) {

@ -1,7 +1,14 @@
package com.connor.kwc.createTemplate;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
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.GroupLayout;
@ -22,10 +29,19 @@ import com.connor.kwc.createBom.CheckBoxTreeNode;
import com.connor.kwc.createBom.CheckBoxTreeNodeSelectionListener;
import com.connor.kwc.createBom.Util;
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.TCComponentBOMLine;
import com.teamcenter.rac.kernel.TCComponentBOMWindow;
import com.teamcenter.rac.kernel.TCComponentBOMWindowType;
import com.teamcenter.rac.kernel.TCComponentFolder;
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.TCProperty;
import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.util.MessageBox;
@ -50,6 +66,9 @@ public class CreateTemplateDialg extends JFrame {
private JTextField jTextField3;
private JTree jTree1;
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
@ -69,6 +88,7 @@ public class CreateTemplateDialg extends JFrame {
private void getData() {
// TODO Auto-generated method stub
sxxdate = Util.getSXX(session, "KWC_CreateDOCtemplate");
sxxAttrDate = Util.getSXX(session, "KWC_CreateDOC_attribute");
}
@ -82,7 +102,7 @@ public class CreateTemplateDialg extends JFrame {
jScrollPane1 = new JScrollPane();
jTree1 = new JTree();
// 初始化Jtree
initTree(jTree1);
jTree1.setCellRenderer(new CheckBoxTreeCellRenderer());
jButton3 = new JButton();
jTextField3 = new JTextField();
@ -165,6 +185,13 @@ public class CreateTemplateDialg extends JFrame {
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
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);
this.jButton3.addActionListener(new ActionListener() {
@ -175,15 +202,59 @@ public class CreateTemplateDialg extends JFrame {
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);
//根据当前文件夹下的关系匹配树节点的选中状态创建对象
for(AIFComponentContext comp : target.getChildren()) {
TCComponent component = (TCComponent)comp.getComponent();
if(isSelectByNodeMap.containsKey(component.getStringProperty("object_name"))) {
Map<TCComponent, CheckBoxTreeNode> map = isSelectByNodeMap.get(component.getStringProperty("object_name"));
for (Map.Entry<TCComponent, CheckBoxTreeNode> entry : map.entrySet()) {
if(entry.getValue().isSelected()) {
//另存文件,复制属性规则
TCComponentItem item = (TCComponentItem)entry.getKey();
TCComponentItem saveAsItem = item.getLatestItemRevision().saveAsItem(jTextField3.getText(), "A", item.getStringProperty("object_name"), "", true, null);
// 替换属性
for (String attrStr : sxxAttrDate) {
if (attrStr.startsWith(saveAsItem.getStringProperty("object_type"))) {
try {
String[] replaces = attrStr.split("=")[1].split(";");
for(String replace : replaces) {
String[] getValues = replace.split("\\.");
Object val = "";
if(getValues[0].equals("item")) {
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);
//val = rev.getProperty(getValues[1]);
}else if(getValues[0].equals("rm")) {
TCComponent[] oldreferenceListProperty = item.getLatestItemRevision().getReferenceListProperty("IMAN_master_form_rev");
TCComponentForm oldform = (TCComponentForm) oldreferenceListProperty[0];
val = Util.getTCPropertyValue(oldform, getValues[1]);
TCComponent[] newreferenceListProperty = saveAsItem.getLatestItemRevision().getReferenceListProperty("IMAN_master_form_rev");
TCComponentForm newform = (TCComponentForm) newreferenceListProperty[0];
Util.setTCPropertyValue(newform, getValues[1], val);
//val = form.getProperty(getValues[1]);
}
}
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
break;
}
}
component.add("contents", saveAsItem);
}
}
}
}
Util.setByPass(false);
dispose();
} catch (Exception e1) {
@ -196,21 +267,22 @@ public class CreateTemplateDialg extends JFrame {
/**
*
*
* @param tree
*/
private void initTree(JTree 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) {
for (String uid : puid) {
component = session.stringToComponent(uid);
if(component == null || !(component instanceof TCComponentFolder)) {
if (component == null || !(component instanceof TCComponentFolder)) {
MessageBox.post(puid + " 该puid在TC中不存在对象或者该puid对应的不是文件夹对象", "异常", MessageBox.ERROR);
return;
}else {
buildTree(component,rootNode);
} else {
buildTree(component, rootNode);
}
}
@ -218,7 +290,7 @@ public class CreateTemplateDialg extends JFrame {
tree.addMouseListener(new CheckBoxTreeNodeSelectionListener());
tree.setModel(model);
tree.setCellRenderer(new CheckBoxTreeCellRenderer());
//展开所有节点并选中
// 展开所有节点并选中
for (int i = 0; i < tree.getRowCount(); i++) {
tree.expandRow(i);
}
@ -229,47 +301,23 @@ public class CreateTemplateDialg extends JFrame {
}
/**
*
*
*
* @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) {
if (relatedComponent != null) {
for (TCComponent child : relatedComponent) {
CheckBoxTreeNode childNode = new CheckBoxTreeNode(child.getStringProperty("object_name"));
rootNode.add(childNode);
buildTree(child,childNode);
}
}
}
/**
*
* @param root
* @param folder
* @param folderType
* @throws Exception
*/
private void createFolderStruct(CheckBoxTreeNode root, TCComponentFolder parentFolder,
TCComponentFolderType folderType,boolean ifTop) throws Exception {
if(root.isSelected()) {
if(ifTop) {
for (int i = 0; i < root.getChildCount(); i++) {
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);
}
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 com.connor.kwc.createBom.CreateBOMOperation;
import com.connor.kwc.createBom.Util;
import com.teamcenter.rac.aif.AbstractAIFApplication;
import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
import com.teamcenter.rac.aifrcp.AIFUtility;
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.TCSession;
import com.teamcenter.rac.util.MessageBox;
@ -31,13 +34,20 @@ public class CreateTemplateHandler extends AbstractHandler {
@Override
public void run() {
InterfaceAIFComponent folder = app.getTargetComponent();
session = (TCSession) folder.getSession();
if (folder instanceof TCComponentFolder) {
InterfaceAIFComponent item = app.getTargetComponent();
session = (TCSession) item.getSession();
if (item instanceof TCComponentItem) {
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,
folder);
item);
session.queueOperation(createTemplateOperation);
} else {
MessageBox.post("¶ÔÏóÀàÐÍÑ¡Ôñ´íÎó", "Ìáʾ ", MessageBox.INFORMATION);

Loading…
Cancel
Save