package com.connor.rb.plm.rb012; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ComponentEvent; import java.awt.event.ComponentListener; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import javax.swing.ComboBoxModel; import javax.swing.DefaultComboBoxModel; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSeparator; import javax.swing.JTextField; import javax.swing.SwingConstants; import com.connor.rb.plm.entity.ZC_LBJ_list; import com.connor.rb.plm.newcombox.RwJComboBox; import com.connor.rb.plm.util.ClassAttributeBean; import com.connor.rb.plm.util.ClassProperty; import com.connor.rb.plm.util.PlmLocaleUtil; import com.connor.rb.plm.util.SoaServerUtil; import com.teamcenter.rac.aif.AbstractAIFApplication; import com.teamcenter.rac.aif.AbstractAIFDialog; import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; import com.teamcenter.rac.classification.common.G4MUnitSystemOptionButton; import com.teamcenter.rac.kernel.TCClassificationService; import com.teamcenter.rac.kernel.TCComponent; import com.teamcenter.rac.kernel.TCComponentICO; import com.teamcenter.rac.kernel.TCComponentItem; import com.teamcenter.rac.kernel.TCComponentItemRevision; import com.teamcenter.rac.kernel.TCComponentItemType; import com.teamcenter.rac.kernel.TCComponentListOfValues; import com.teamcenter.rac.kernel.TCComponentQuery; import com.teamcenter.rac.kernel.TCComponentQueryType; import com.teamcenter.rac.kernel.TCException; import com.teamcenter.rac.kernel.TCPreferenceService; import com.teamcenter.rac.kernel.TCProperty; import com.teamcenter.rac.kernel.TCSession; import com.teamcenter.rac.kernel.ics.ICSAdminClass; import com.teamcenter.rac.kernel.ics.ICSAdminClassAttribute; import com.teamcenter.rac.kernel.ics.ICSKeyLov; import com.teamcenter.rac.kernel.ics.ICSProperty; import com.teamcenter.rac.util.MessageBox; import com.teamcenter.rac.util.PropertyLayout; public class CreatDialog extends AbstractAIFDialog { private AbstractAIFApplication app; private TCSession session; private TCPreferenceService service; private List classList = new ArrayList(); private JLabel[] labels1 = null; private JComboBox comb = null; private String className = ""; private Map map2; private List idList = new ArrayList(); //优化:TextField集合 private List fieldList=new ArrayList(); //box集合 private List comboxList=new ArrayList(); private Map fieldmap=new HashMap<>(); private Map comboxmap=new HashMap<>(); //end private List clearanceList = new ArrayList(); private Map> boxMap = new HashMap>(); private List> values = new ArrayList>(); private String cph = ""; private String th = ""; private String revId = ""; private String newID = ""; private String type = ""; private String targetType = ""; private boolean flag = true; private String url = ""; private JTextField showDate1; private JScrollPane scr2; private SimpleDateFormat df = new SimpleDateFormat("yyyy-M-d HH:mm"); private JTextField nameField = null; private TCComponentItemRevision targetRev = null; private Map zc_lbj_map;//总成或零部件的属性键值对 private int f=0; private int h=4; private int v=4; private boolean boflag=false; private InterfaceAIFComponent targetComp; public CreatDialog (AbstractAIFApplication app) { super(false); this.app = app; this.targetComp=app.getTargetComponent(); this.session = (TCSession) app.getSession(); this.service = session.getPreferenceService(); this.url = service.getStringValue("Autocode_SendClassServer_URL"); } @Override public void run() { this.initUI(); } public void initUI(){ setTitle("临时物料创建"); this.setLayout(new PropertyLayout()); Dimension dimension = new Dimension(); dimension.setSize(750,630); Dimension mindis=new Dimension(); Dimension maxdis=new Dimension(); mindis.setSize(750,640); maxdis.setSize(760,1200); this.setMaximumSize(maxdis); this.setMinimumSize(mindis); this.setPreferredSize(dimension); // this.setLayout(new BorderLayout()); // Dimension dimension = new Dimension(); // dimension.setSize(450,630); // this.setPreferredSize(dimension); JPanel parentPanel = new JPanel(new PropertyLayout()); scr2 = new JScrollPane(parentPanel); scr2.setPreferredSize(new Dimension(720, 530)); JPanel classJpanel = new JPanel(new PropertyLayout());// 属性界面 classJpanel.add("1.1.center.top",scr2); //"1.1.center.top", //给临时物料创建窗口添加窗口改动监听 this.addComponentListener(new ComponentListener() { @Override public void componentResized(ComponentEvent e) { // TODO Auto-generated method stub Component component2=e.getComponent(); int h=component2.getHeight(); if(h>630) { scr2.setPreferredSize(new Dimension(component2.getWidth()-30,h-110)); scr2.revalidate(); scr2.repaint(); classJpanel.setPreferredSize(new Dimension(component2.getWidth(),h-110)); classJpanel.revalidate(); classJpanel.repaint(); } } @Override public void componentMoved(ComponentEvent e) { // TODO Auto-generated method stub } @Override public void componentShown(ComponentEvent e) { // TODO Auto-generated method stub } @Override public void componentHidden(ComponentEvent e) { // TODO Auto-generated method stub } }); //优化 try { zc_lbj_map = targetComp.getProperties(); } catch (Exception e2) { // TODO Auto-generated catch block e2.printStackTrace(); } String objtype = targetComp.getType(); System.out.println("版本的类型是:"+objtype); if(objtype.equals("RB3_ZCRevision")) { System.out.println(objtype); boflag=true; }else { System.out.println(objtype); } //end优化 if(targetComp instanceof TCComponentItemRevision) { targetRev = (TCComponentItemRevision) targetComp; try { targetType = targetRev.getItem().getType(); if("RB3_ZC".equals(targetType)) { type = targetRev.getStringProperty("rb3_zclx"); flag = false; }else if("RB3_LBJ".equals(targetType)){ type = targetRev.getStringProperty("rb3_lbjlx"); } String name = targetRev.getStringProperty("object_name"); nameField = new JTextField(18); nameField.setText(name); DateChooser dateChooser1 = DateChooser.getInstance("yyyy-M-d HH:mm"); Date date = new Date(); Date newDate = stepMonth(date, +3); System.out.println("当前时间后3个月的日期:" + df.format(newDate)); String time = df.format(newDate); showDate1 = new JTextField(time); dateChooser1.register(showDate1); parentPanel.add("1.1.center.top", new JLabel("")); parentPanel.add("2.1.center.top", new JLabel("名称")); parentPanel.add("2.2.center.top", nameField); parentPanel.add("3.1.center.top", new JLabel("有效期")); parentPanel.add("3.2.center.top", showDate1); cph = targetRev.getStringProperty("rb3_cph"); th = targetRev.getStringProperty("rb3_th"); String id = targetRev.getStringProperty("item_id"); revId = targetRev.getStringProperty("item_revision_id"); StringBuilder sb = new StringBuilder("LS-"); sb.append(id); newID = sb.toString(); className = targetRev.getClassificationClass(); TCComponentICO[] icos = targetRev.getClassificationObjects(); if(icos == null || icos.length <= 0){ MessageBox.post("选中的物料没有发送到分类,请发送!!!","提示",MessageBox.INFORMATION); return; } Map claMap = new HashMap(); if(icos != null && icos.length>0){ ICSProperty[] icss = icos[0].getICSProperties(true); for (ICSProperty ics : icss) { claMap.put(ics.getId(), ics.getValue()); } } TCClassificationService classificationService = session.getClassificationService(); ICSAdminClass c = classificationService.newICSAdminClass(); c.load(className); ICSAdminClassAttribute[] icsAttrS = c.getAttributes(); if (icsAttrS != null) { for (ICSAdminClassAttribute attr : icsAttrS) { ClassAttributeBean bean = new ClassAttributeBean(); if (attr.isReferenceAttribute()) {// 引用属性 continue; } if (attr.isReference()) { continue; } int propID = attr.getAttributeId(); bean.setId(propID); String propDisName = attr.getName(); bean.setName(propDisName); int attrType = attr.getFormat1().getType(); bean.setType(attrType); if (claMap != null && claMap.containsKey(propID)) { bean.setVal(claMap.get(propID)); } else { bean.setVal(""); } ICSKeyLov lov1 = attr.getFormat1().getKeyLov(); lov1 = (lov1 == null ? attr.getFormat2().getKeyLov() : lov1); if (lov1 != null) { bean.setIslov(true); String[] keys = lov1.getKeys(); Map map1 = new HashMap(); for (String key : keys) { String value = lov1.getValueOfKey(key); map1.put(value, key);// <显示值,真实值> if(key.equals(bean.getVal())&&(!bean.getVal().equals(""))){ bean.setVal(value); } } bean.setLov(map1); } else { bean.setIslov(false); } classList.add(bean); } } } catch (TCException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } labels1 = new JLabel[classList.size()]; for (int i = 0; i(); comb.setEditable(true); comb.setSize(new Dimension(60,40)); comb.addItem(bean.getVal()); for (Entry entry : bean.getLov().entrySet()) { if(!(bean.getVal().equals(entry.getKey()))) { comb.addItem(entry.getKey()); } } map2 = new HashMap(); map2.put("JComboBox", comb); values.add(map2); parentPanel.add((h+i)+".2.center.top", comb); }else{ JTextField field = new JTextField(18); map2 = new HashMap(); map2.put("JTextField", field); values.add(map2); parentPanel.add((h+i)+".2.center.top", field); field.setText(bean.getVal()); System.out.println("attrName================"+attrName); System.out.println("PlmLocale.getString(\"PartNumber\")================"+PlmLocaleUtil.getString("PartNumber")); if((PlmLocaleUtil.getString("RadialInternalClearance")).equals(attrName)) { clearanceList.add(field); JComboBox box = new JComboBox(); box.addItem(" "); clearanceList.add(box); String[] strs = new String[] {"C0","C2","C3","C4","C5"}; for (int K = 0; K < strs.length; K++) { box.addItem(strs[K]); } boxMap.put(attrName, box); parentPanel.add((h+i)+".3.center.top", box); v+=h+i+1; }else if((PlmLocaleUtil.getString("PartNumber")).equals(attrName)){ idList.add(field); JComboBox box = new JComboBox(); idList.add(box); box.addItem(" "); String[] strs = new String[99]; for (int K = 0; K < 99; K++) { if(K < 9) { strs[K] = "0"+(K+1); }else { strs[K] = (K+1)+""; } } for (int K = 0; K < strs.length; K++) { box.addItem(strs[K]); } boxMap.put(attrName, box); parentPanel.add((h+i)+".3.center.top", box); } } v=h+i+1; } //优化 parentPanel.add(v+".1.center.top",new JLabel("***对象属性***")); v+=1; if(boflag) { //System.out.println("添加的属性个数是:"+h); for(int i=0;i disVal=null; for(int a=0;a(); disVal.add(disname); } } if(zcprolov!=null) { comboxitems = zcprolov.getListOfValues().getLOVDisplayValues(); //ComboBoxModel model = new DefaultComboBoxModel(comboxitems); nbox=new RwJComboBox(comboxitems); nbox.setEditable(true); nbox.setName("rb3_scgc1"); nbox.setSize(new Dimension(60,40)); if(disVal.size()>0) { StringBuilder sb=new StringBuilder(); for(int t=0;t(); zcBox.setSize(new Dimension(60,40)); zcBox.setName(ZC_LBJ_list.ZCPros.get(i)); TCProperty zclov = ((TCComponentItemRevision) targetComp).getTCProperty(ZC_LBJ_list.ZCPros.get(i)); TCComponentListOfValues zcprolov = zclov.getLOV(); String[] comboxitems; if(zcprolov!=null) { comboxitems = zcprolov.getListOfValues().getLOVDisplayValues(); ComboBoxModel model = new DefaultComboBoxModel(comboxitems); zcBox.setModel(model); comboxList.add(zcBox); } zcBox.setSelectedItem(zc_lbj_map.get(ZC_LBJ_list.ZCPros.get(i))); parentPanel.add((v+i)+".2.center.top",zcBox); } }else { JTextField field=new JTextField(18); field.setName(ZC_LBJ_list.ZCPros.get(i)); field.setText(zc_lbj_map.get(ZC_LBJ_list.ZCPros.get(i))); parentPanel.add((v+i)+".2.center.top",field); fieldList.add(field); } } catch (TCException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } }else { for(int i=0;i disVal=null; for(int a=0;a(); disVal.add(disname); } } if(zcprolov!=null) { comboxitems = zcprolov.getListOfValues().getLOVDisplayValues(); //ComboBoxModel model = new DefaultComboBoxModel(comboxitems); nbox=new RwJComboBox(comboxitems); nbox.setEditable(true); nbox.setName("rb3_scgc1"); nbox.setSize(new Dimension(60,40)); if(disVal.size()>0) { StringBuilder sb=new StringBuilder(); for(int t=0;t(); zcBox.setSize(new Dimension(60,40)); zcBox.setName(ZC_LBJ_list.LBJPros.get(i)); TCProperty zclov = ((TCComponentItemRevision) targetComp).getTCProperty(ZC_LBJ_list.LBJPros.get(i)); TCComponentListOfValues zcprolov = zclov.getLOV(); String[] comboxitems; if(zcprolov!=null) { comboxitems = zcprolov.getListOfValues().getLOVDisplayValues(); ComboBoxModel model = new DefaultComboBoxModel(comboxitems); zcBox.setModel(model); comboxList.add(zcBox); } zcBox.setSelectedItem(zc_lbj_map.get(ZC_LBJ_list.LBJPros.get(i))); parentPanel.add((v+i)+".2.center.top",zcBox); } }else { JTextField field=new JTextField(18); field.setName(ZC_LBJ_list.LBJPros.get(i)); field.setText(zc_lbj_map.get(ZC_LBJ_list.LBJPros.get(i))); parentPanel.add((v+i)+".2.center.top",field); fieldList.add(field); } } catch (TCException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } // for(Map.Entry e:zc_lbj_map.entrySet()) { // System.out.println(e.getKey()+"==="+e.getValue()); // parentPanel.add(h+".1.center.top",new JLabel(e.getKey())); // JTextField field=new JTextField(18); // field.setName(e.getKey()); // field.setText(e.getValue()); // parentPanel.add(h+".2.center.top",field); // h++; // } //end优化 JPanel southPanel = new JPanel(new FlowLayout()); southPanel.setPreferredSize(new Dimension(250, 50)); JButton button = new JButton("新建"); JButton button1 = new JButton("取消"); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { createItem(); } }); button1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { disposeDialog(); } }); southPanel.add(button); southPanel.add(button1); this.add("1.1.center.top",new JLabel(" ")); //this.add(new JLabel(" "),BorderLayout.NORTH); //this.add(classJpanel,BorderLayout.CENTER); this.add("2.1.center.top",classJpanel); //this.add(southPanel,BorderLayout.SOUTH); this.add("3.1.center.top",southPanel); pack(); centerToScreen(1.0D, 0.75D); this.showDialog(); } protected void createItem() { // TODO Auto-generated method stub if(idList.size() > 0) { JTextField idField = (JTextField) idList.get(0); JComboBox idBox = (JComboBox) idList.get(1); String idFieldText = idField.getText(); String idBoxText = (String) idBox.getSelectedItem(); if(!("".equals(idFieldText.trim())) && !("".equals(idBoxText.trim()))) { MessageBox.post("件号不能同时填写两个值!!!", "提示", MessageBox.INFORMATION); return; } // if("".equals(idFieldText.trim()) && "".equals(idBoxText.trim())) { // MessageBox.post("件号必须填写一个值!!!", "提示", MessageBox.INFORMATION); // return; // } } if(clearanceList.size() > 0) { JTextField clearanceField = (JTextField) clearanceList.get(0); JComboBox clearanceBox = (JComboBox) clearanceList.get(1); String clearanceFieldText = clearanceField.getText(); String clearanceBoxText = (String) clearanceBox.getSelectedItem(); if(!("".equals(clearanceFieldText.trim())) && !("".equals(clearanceBoxText.trim()))) { MessageBox.post("径向内部游隙不能同时填写两个值!!!", "提示", MessageBox.INFORMATION); return; } if("".equals(clearanceFieldText.trim()) && "".equals(clearanceBoxText.trim())) { MessageBox.post("径向内部游隙必须填写一个值!!!", "提示", MessageBox.INFORMATION); return; } } String[] keys1 = new String[]{"零组件 ID"}; String[] values1 = new String[]{newID}; List compList = queryObject("零组件 ID", keys1, values1); if(compList != null && compList.size() > 0) { MessageBox.post("系统中已经存在该ID号的物料,请检查后创建!!!!", "提示", MessageBox.INFORMATION); return; } TCComponentItemRevision newRev = null; try { TCComponentItemType typeComponent = (TCComponentItemType) session .getTypeComponent(targetType); TCComponentItem newItem = typeComponent.create(newID, revId, targetType, nameField.getText(), "", null); if (newItem != null) { session.getUser().getHomeFolder() .add("contents", newItem); session.getUser().getHomeFolder().refresh(); } newRev = newItem.getLatestItemRevision(); //优化 for(int k=0;k proList=new ArrayList<>(); String[] split = text.split(","); TCProperty tclov = ((TCComponentItemRevision) targetComp).getTCProperty(key); TCComponentListOfValues lov = tclov.getLOV(); for(int p=0;p pics = new ArrayList(); List picID = new ArrayList(); for (int i = 0; i < references.length; i++) { if(references[i] instanceof TCComponentItemRevision) { TCComponentItemRevision pic = (TCComponentItemRevision) references[i]; String pic_type = pic.getItem().getType(); String rev_id = pic.getStringProperty("item_revision_id"); String id = pic.getStringProperty("item_id"); String pic_name = pic.getStringProperty("object_name"); StringBuilder sb = new StringBuilder("LS-"); sb.append(id); String picNewID = sb.toString(); String[] keys2 = new String[]{"零组件 ID"}; String[] values2 = new String[]{picNewID}; List picList = queryObject("零组件 ID", keys2, values2); if(picList != null) { if(picList.size() > 0) { TCComponent tcComponent = picList.get(0); if(tcComponent instanceof TCComponentItem) { TCComponentItemRevision rev = ((TCComponentItem) tcComponent).getLatestItemRevision(); if(!(picID.contains(picNewID))) { picID.add(picNewID); pics.add(rev); } } } }else { TCComponentItemType picType = (TCComponentItemType) session .getTypeComponent(pic_type); TCComponentItem picItem = picType.create(picNewID, rev_id, pic_type, pic_name, "", null); TCComponentItemRevision picRev = picItem.getLatestItemRevision(); newRev.add("TC_Is_Represented_By", picRev); picID.add(picNewID); } } } if(pics.size() > 0) { for (int i = 0; i < pics.size(); i++) { TCComponentItemRevision rev = pics.get(i); newRev.add("TC_Is_Represented_By",rev); } } } catch (Exception e) { // TODO Auto-generated catch block MessageBox.post("临时物料创建失败!!!!", "完成", MessageBox.INFORMATION); e.printStackTrace(); return; } List vals = new ArrayList(); for (Map value : values) { for (Map.Entry entry : value.entrySet()) { String type = entry.getKey(); if(type.equals("JComboBox")){ JComboBox comb1 = (JComboBox) entry.getValue(); String val = (String) comb1.getSelectedItem(); vals.add(val); }else{ JTextField field1 = (JTextField) entry.getValue(); String val = field1.getText(); vals.add(val); } } } Integer[] classKeys = new Integer[classList.size()]; String[] classVals = new String[classList.size()]; System.out.println("size============================"+classList.size()); for(int i=0;i box = boxMap.get(attrName); val2 = (String) box.getSelectedItem(); } } classVals[i] = val2; } disposeDialog(); sendObjToClassficationByWebService(className,newRev, classKeys, classVals);//发送分类 MessageBox.post("临时物料创建完成!!!!", "完成", MessageBox.INFORMATION); } /** * 发送分类 */ public void sendObjToClassficationByWebService(String class_id, TCComponentItemRevision rev, Integer[] keys, String[] vals) { try { System.out.println("class_id-----dddddd----->" + class_id); if (!class_id.replace(" ", "").equals("")) { List propList = new ArrayList(); for (int i = 0; i < keys.length; i++) { if(keys[i] != null && vals[i] != null) { ClassProperty prop = new ClassProperty(keys[i], vals[i]);// 分类属性 propList.add(prop); } } String json = SoaServerUtil.objectToJson(propList);// 将Java对象转换为json对象 SoaServerUtil.grantWritePrivilege(session, rev);// 赋予写权限 SoaServerUtil.sendToClass(rev.getUid(), class_id, json, url);// 发送到分类 SoaServerUtil.grantReadPrivilege(session, rev);// 赋予读权限 } } catch (Exception e) { e.printStackTrace(); } } public static Date stepMonth(Date sourceDate, int month) { Calendar c = Calendar.getInstance(); c.setTime(sourceDate); c.add(Calendar.MONTH, month); return c.getTime(); } /** * 通过查询构建器查询项目对象 * * @param queryName 查询名称 * @param keys 查询条件 * @param values 查询值 * @return */ public List queryObject(String queryName, String[] keys, String[] values) { TCComponent[] components = null; try { TCComponentQueryType queryType = (TCComponentQueryType) session.getTypeComponent("ImanQuery"); TCComponentQuery query = (TCComponentQuery) queryType.find(queryName); if (query == null) { MessageBox.post("没有找到查询:" + queryName, "错误", MessageBox.ERROR); return null; } components = query.execute(keys, values); } catch (TCException e) { e.printStackTrace(); } if (components != null && components.length > 0) { List compList = Arrays.asList(components); return compList; } else { return null; } } }