package com.connor.rb.plm.rb011; 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.io.File; import java.util.ArrayList; import java.util.Arrays; 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.JTextField; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Text; 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.ParseXML; 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.AIFComponentContext; import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; import com.teamcenter.rac.kernel.TCClassificationService; 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.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.TCTypeService; import com.teamcenter.rac.kernel.TCUserService; 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> values = new ArrayList>(); private String type = ""; private String targetType = ""; private JScrollPane scr2; private boolean flag = true; private String url = ""; private TCComponentItemRevision targetRev = null; private boolean classFlag = true; private JTextField idField = null; private JTextField nameField = null; private JComboBox revComb = null; private List idList = new ArrayList(); private List typeList = new ArrayList(); private String productNumber = ""; private String drawingNumber = ""; private Map> attrMap; private Map> attrMap2; private Map> attrMap3; private Map> attrMap4; private Map> boxMap = new HashMap>(); private Map objMap = new HashMap(); private Map objMap2 = new HashMap(); private Map objMap3 = new HashMap(); private Map objMap4 = new HashMap(); private Map lovMap = new HashMap(); private Map lovMap2 = new HashMap(); private Map lovMap3 = new HashMap(); private Map lovMap4 = new HashMap(); private List defaultValueList = new ArrayList(); private List isNList = new ArrayList(); private List isNList2 = new ArrayList(); private List isNList3 = new ArrayList(); private List isNList4 = new ArrayList(); private List markList = new ArrayList(); private List markList2 = new ArrayList(); private List markList3 = new ArrayList(); private List markList4 = new ArrayList(); private List attrList = new ArrayList(); private List esAttrList = new ArrayList(); // private List objList = new ArrayList(); // private List lovList = new ArrayList(); private List attrList2 = new ArrayList(); private List attrList3 = new ArrayList(); private List attrList4 = new ArrayList(); private List esAttrList2 = new ArrayList(); private List esAttrList3 = new ArrayList(); private List esAttrList4 = new ArrayList(); private String bsNumber = ""; private String smNumber = ""; private List asList = new ArrayList(); private List esList = new ArrayList(); private InterfaceAIFComponent targetComp; //优化 private Map zc_lbj_map=new HashMap<>(); private List fieldList=new ArrayList<>(); private List comboxList=new ArrayList(); //private int h=4; private boolean boflag=false; private Map fieldmap=new HashMap<>(); private Map comboxmap=new HashMap<>(); //end优化 // private List objList2 = new ArrayList(); // private List lovList2 = new ArrayList(); // private String[] lovVal = new String[] { "无前辍", "标准钢球", "无接触角", "开式", "不带通气孔", "A:NBR", "0:黑", "无", "球引导", // "SN:180℃±5℃回火", "常规整体马氏体淬火热处理", "单套", "S:(25% to 35%)", "C0","V0","Z0","标准","PC:达到集团C&U品牌精度要求" // ,"P0:达到集团C&U品牌精度要求","其他结构需要编制规则","0:双列角接触球轴承","不标:SECC或者相当材料","其他材料:与部门团队确认审批","BC:35°"}; // private String[] esLovVal = new String[] { "Non", "Standard ball", "Non", "Open", "Without vent hole", "A:NBR", // "0:Black", "Non", "Ball", "SN:180℃±5℃ temper","Conventional monolithic martensite quenching heat treatment", // "Single", "S:(25% to 35%)", "C0","V0","Z0","Standard","PC:Meet the group C&U brand accuracy requirements" // ,"P0:Meet the group C&U brand accuracy requirements","Other structures need to formulate rules","0:Double row angular contact ball bearing" // ,"Not marked: SECC or equivalent","Other materials: confirm with department team for approval","BC:35°"}; 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() { String lovVal = service.getStringValue("RB3_lovVal_default"); String esLovVal = service.getStringValue("RB3_esLovVal_default"); if(lovVal.contains(";")) { String[] vals = lovVal.split(";"); String[] esVals = esLovVal.split(";"); for (int i = 0; i < vals.length; i++) { asList.add(vals[i]); esList.add(esVals[i]); } } ParseXML xml=new ParseXML(); File file=xml.getSXX("RB3_CPHPJFS", session); attrMap =xml.parseXMLAttr(file); if(attrMap == null || attrMap.size() <= 0) { MessageBox.post("首选项RB3_CPHPJFS未配置,请检查!", "WARNING", MessageBox.WARNING); return; } File file2=xml.getSXX("RB3_THPJFS", session); attrMap2 =xml.parseXMLAttr(file2); if(attrMap2 == null || attrMap2.size() <= 0) { MessageBox.post("首选项RB3_THPJFS未配置,请检查!", "WARNING", MessageBox.WARNING); return; } this.initUI(); } public void initUI(){ setTitle("物料另存为"); int i = 1; Dimension dimension = new Dimension(); this.setLayout(new PropertyLayout()); dimension.setSize(650,800); this.setMinimumSize(dimension); this.setPreferredSize(dimension); JPanel parentPanel = new JPanel(new PropertyLayout()); scr2 = new JScrollPane(parentPanel); scr2.setPreferredSize(new Dimension(640, 700)); JPanel classJpanel = new JPanel(new PropertyLayout());// 属性界面 classJpanel.add("1.1.center.top", scr2); //优化(窗口监听) 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>800) { scr2.setPreferredSize(new Dimension(component2.getWidth()-10,h-100)); scr2.revalidate(); scr2.repaint(); classJpanel.setPreferredSize(new Dimension(component2.getWidth(),h-100)); 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 } }); //end优化 if(targetComp instanceof TCComponentItemRevision) { targetRev = (TCComponentItemRevision) targetComp; String revType = targetRev.getType(); try { targetType = targetRev.getItem().getType(); System.out.println("revType============"+revType); nameField = new JTextField(18); parentPanel.add(i+".1.center.top", new JLabel("")); i += 1; if("RB3_ZCRevision".equals(revType)) { type = targetRev.getStringProperty("rb3_zclx"); flag = false; }else if("RB3_LBJRevision".equals(revType)){ idField = new JTextField(18); parentPanel.add(i+".1.center.top", new JLabel("总成物料编码")); parentPanel.add(i+".2.center.top", idField); i += 1; type = targetRev.getStringProperty("rb3_lbjlx"); } parentPanel.add(i+".1.center.top", new JLabel("名称")); parentPanel.add(i+".2.center.top", nameField); i += 1; String name = targetRev.getStringProperty("object_name"); nameField.setText(name); className = targetRev.getClassificationClass(); String xmlClassName = ""; if(flag) { xmlClassName = className; JTextField idfield = new JTextField(18); idList.add(idfield); JComboBox idbox = new JComboBox(); idList.add(idbox); idbox.addItem(" "); String[] idstrs = new String[99]; for (int K = 0; K < 99; K++) { if(K < 9) { idstrs[K] = "0"+(K+1); }else { idstrs[K] = (K+1)+""; } } for (int K = 0; K < idstrs.length; K++) { idbox.addItem(idstrs[K]); } boxMap.put(PlmLocaleUtil.getString("PartNumber"), idbox); parentPanel.add((i)+".1.center.top", new JLabel(PlmLocaleUtil.getString("PartNumber"))); parentPanel.add((i)+".2.center.top", idfield); parentPanel.add((i)+".3.center.top", idbox); i += 1; }else { xmlClassName = className.substring(0, 6); ParseXML xml=new ParseXML(); File file3=xml.getSXX("RB3_BSHPJFS", session); attrMap3 =xml.parseXMLAttr(file3); if(attrMap3 == null || attrMap3.size() <= 0) { MessageBox.post("首选项RB3_BSHPJFS未配置,请检查!", "WARNING", MessageBox.WARNING); return; } File file4=xml.getSXX("RB3_SMPJFS", session); attrMap4 =xml.parseXMLAttr(file4); if(attrMap4 == null || attrMap4.size() <= 0) { MessageBox.post("首选项RB3_SMPJFS未配置,请检查!", "WARNING", MessageBox.WARNING); return; } } System.out.println("className==========="+className); System.out.println("xmlClassName==========="+xmlClassName); saveCOM2(xmlClassName,attrMap,attrList,esAttrList,markList,defaultValueList,isNList); saveCOM(xmlClassName,attrMap2,attrList2,esAttrList2,markList2,isNList2); if(attrMap3 != null) { saveCOM(xmlClassName,attrMap3,attrList3,esAttrList3,markList3,isNList3); saveCOM(xmlClassName,attrMap4,attrList4,esAttrList4,markList4,isNList4); } 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(xmlClassName); String cName = c.getName(); System.out.println("cName==="+cName); if(PlmLocaleUtil.getString("BearingAccessories").equals(cName)) { classFlag = false; } 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); System.out.print("propDisName:"+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(); } } String[] revs = service.getStringValues("RB_Revision_id"); if(revs == null || revs.length <= 0) { MessageBox.post("首选项RB_Revision_id未配置,请联系管理员!!", "错误", MessageBox.ERROR); return; } revComb = new JComboBox(); revComb.addItem("B1"); for (int j = 0; j < revs.length; j++) { revComb.addItem(revs[j]); } parentPanel.add(i+".1.center.top", new JLabel("版本")); parentPanel.add(i+".2.center.top", revComb); i += 1; labels1 = new JLabel[classList.size()]; for (int j = 0; j(); 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(i+".2.center.top", comb); if(attrList.contains(attrName) || esAttrList.contains(attrName)) { objMap.put(attrName, comb); lovMap.put(attrName, "yes"); } if(attrList2.contains(attrName) || esAttrList2.contains(attrName)) { objMap2.put(attrName, comb); lovMap2.put(attrName, "yes"); } if(attrMap3 != null) { if(attrList3.contains(attrName) || esAttrList3.contains(attrName)) { objMap3.put(attrName, comb); lovMap3.put(attrName, "yes"); } if(attrList4.contains(attrName) || esAttrList4.contains(attrName)) { objMap4.put(attrName, comb); lovMap4.put(attrName, "yes"); } } if((PlmLocaleUtil.getString("Category")).equals(attrName)) { typeList.add(comb); } }else{ JTextField field = new JTextField(18); map2 = new HashMap(); map2.put("JTextField", field); values.add(map2); parentPanel.add(i+".2.center.top", field); if(bean.getVal() != null && bean.getVal()!=""){ field.setText(bean.getVal()); } if((PlmLocaleUtil.getString("RadialInternalClearance")).equals(attrName)) { JComboBox box = new JComboBox(); box.addItem(" "); 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((i)+".3.center.top", box); } if(attrList.contains(attrName) || esAttrList.contains(attrName)) { objMap.put(attrName, field); lovMap.put(attrName, "no"); } if(attrList2.contains(attrName) || esAttrList2.contains(attrName)) { objMap2.put(attrName, field); lovMap2.put(attrName, "no"); } if(attrMap3 != null) { if(attrList3.contains(attrName) || esAttrList3.contains(attrName)) { objMap3.put(attrName, field); lovMap3.put(attrName, "no"); } if(attrList4.contains(attrName) || esAttrList4.contains(attrName)) { objMap4.put(attrName, field); lovMap4.put(attrName, "no"); } } } } //优化 if(targetComp instanceof TCComponentItemRevision) { targetRev = (TCComponentItemRevision) targetComp; String revType = targetRev.getType(); try { zc_lbj_map = targetRev.getProperties(); } catch (Exception e2) { // TODO Auto-generated catch block e2.printStackTrace(); } System.out.println("版本的类型是:"+revType); if(revType.equals("RB3_ZCRevision")) { System.out.println(revType); boflag=true; }else { System.out.println(revType); } parentPanel.add(i+".1.center.top",new JLabel("***对象属性***")); i+=1; if(boflag) { // System.out.println("添加的属性个数是:"+h); for(int n=0;n 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(n)); TCProperty zclov = ((TCComponentItemRevision) targetComp).getTCProperty(ZC_LBJ_list.ZCPros.get(n)); 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(n))); parentPanel.add((n+i)+".2.center.top",zcBox); } } catch (TCException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } }else { JTextField field=new JTextField(18); field.setName(ZC_LBJ_list.ZCPros.get(n)); field.setText(zc_lbj_map.get(ZC_LBJ_list.ZCPros.get(n))); parentPanel.add((n+i)+".2.center.top",field); fieldList.add(field); } } }else { for(int n=0;n 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(n)); TCProperty zclov = ((TCComponentItemRevision) targetComp).getTCProperty(ZC_LBJ_list.LBJPros.get(n)); 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(n))); parentPanel.add((n+i)+".2.center.top",zcBox); } } catch (TCException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } }else { JTextField field=new JTextField(18); field.setName(ZC_LBJ_list.LBJPros.get(n)); field.setText(zc_lbj_map.get(ZC_LBJ_list.LBJPros.get(n))); parentPanel.add((n+i)+".2.center.top",field); fieldList.add(field); } } } } //end 优化 JPanel southPanel = new JPanel(new FlowLayout()); southPanel.setPreferredSize(new Dimension(250, 80)); JButton button = new JButton("另存"); JButton button1 = new JButton("取消"); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // objList.clear(); // objList2.clear(); // lovList.clear(); // lovList2.clear(); createItem(); //disposeDialog(); } }); 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("2.1.center.top",classJpanel); this.add("3.1.center.top",southPanel); pack(); centerToScreen(1.0D, 0.75D); this.showDialog(); } private void saveCOM2(String xmlClassName, Map> attrMap, List attrList, List esAttrList, List markList,List defaultValueList,List isNList) { if(attrMap.containsKey(xmlClassName)) { List nameMarkList = attrMap.get(xmlClassName); String attrNames = nameMarkList.get(0); String marks = nameMarkList.get(1); String values = nameMarkList.get(2); String isN = nameMarkList.get(3); if(attrNames.contains(";")) { String[] attrs = attrNames.split(";"); String[] markss = marks.split(";"); String[] valuess = values.split(";"); String[] isNs = isN.split(";"); for (int i = 0; i < attrs.length; i++) { if(attrs[i].contains("+")) { String[] attrss = attrs[i].split("\\+"); attrList.add(attrss[0]); esAttrList.add(attrss[1]); markList.add(markss[i]); defaultValueList.add(valuess[i]); isNList.add(isNs[i]); } } } } } private void saveCOM(String xmlClassName, Map> attrMap, List attrList, List esAttrList, List markList,List isNList) { if(attrMap.containsKey(xmlClassName)) { List nameMarkList = attrMap.get(xmlClassName); String attrNames = nameMarkList.get(0); String marks = nameMarkList.get(1); String isN = nameMarkList.get(3); if(attrNames.contains(";")) { String[] attrs = attrNames.split(";"); String[] markss = marks.split(";"); String[] isNs = isN.split(";"); for (int i = 0; i < attrs.length; i++) { if(attrs[i].contains("+")) { String[] attrss = attrs[i].split("\\+"); attrList.add(attrss[0]); esAttrList.add(attrss[1]); markList.add(markss[i]); isNList.add(isNs[i]); } } } } } protected void createItem() { // TODO Auto-generated method stub List zcList = null; String jhID = ""; // List asList = Arrays.asList(lovVal); // List esList = Arrays.asList(esLovVal); // StringBuilder sb = new StringBuilder(); // for (int i = 0; i < attrList.size(); i++) { // String attr = attrList.get(i); // String esAttr = esAttrList.get(i); // if(!("".equals(attr.trim()))) { // JComboBox box = null; // if((PlmLocale.getString("RadialInternalClearance")).equals(attr) // || (PlmLocale.getString("PartNumber")).equals(attr)) { // box = boxMap.get(attr); // } // Object obj = objMap.get(attr); // if(obj == null) { // JTextField field = (JTextField)objMap.get(esAttr); // if(box != null) { // String fieldText = field.getText(); // String boxText = (String) box.getSelectedItem(); // if(!("".equals(fieldText.trim())) && !("".equals(boxText.trim()))) { // MessageBox.post(esAttr+"不能同时填写两个值!!!", "提示", MessageBox.INFORMATION); // return; // } // if("".equals(fieldText.trim()) && "".equals(boxText.trim())) { // MessageBox.post(esAttr+"必须填写一个值!!!", "提示", MessageBox.INFORMATION); // return; // } // if(!("".equals(fieldText.trim()))) { // objList.add(field); // lovList.add("no"); // }else { // objList.add(box); // lovList.add("yes"); // } // }else { // objList.add(field); // lovList.add(lovMap.get(esAttr)); // } // }else { // if(box != null) { // JTextField field = (JTextField)obj; // String fieldText = field.getText(); // String boxText = (String) box.getSelectedItem(); // if(!("".equals(fieldText.trim())) && !("".equals(boxText.trim()))) { // MessageBox.post(attr+"不能同时填写两个值!!!", "提示", MessageBox.INFORMATION); // return; // } // if("".equals(fieldText.trim()) && "".equals(boxText.trim())) { // MessageBox.post(attr+"必须填写一个值!!!", "提示", MessageBox.INFORMATION); // return; // } // if(!("".equals(fieldText.trim()))) { // objList.add(field); // lovList.add("no"); // }else { // objList.add(box); // lovList.add("yes"); // } // }else { // objList.add(obj); // lovList.add(lovMap.get(attr)); // } // } // } // } // for (int i = 0; i < attrList2.size(); i++) { // String attr = attrList2.get(i); // String esAttr = esAttrList2.get(i); // if(!("".equals(attr.trim()))) { // JComboBox box = null; // if((PlmLocale.getString("RadialInternalClearance")).equals(attr) // || (PlmLocale.getString("PartNumber")).equals(attr)) { // box = boxMap.get(attr); // } // Object obj = objMap2.get(attr); // if(obj == null) { // JTextField field = (JTextField)objMap.get(esAttr); // if(box != null) { // String fieldText = field.getText(); // String boxText = (String) box.getSelectedItem(); // if(!("".equals(fieldText.trim())) && !("".equals(boxText.trim()))) { // MessageBox.post(esAttr+"不能同时填写两个值!!!", "提示", MessageBox.INFORMATION); // return; // } // if("".equals(fieldText.trim()) && "".equals(boxText.trim())) { // MessageBox.post(esAttr+"必须填写一个值!!!", "提示", MessageBox.INFORMATION); // return; // } // if(!("".equals(fieldText.trim()))) { // objList2.add(field); // lovList2.add("no"); // }else { // objList2.add(box); // lovList2.add("yes"); // } // }else { // objList2.add(field); // lovList2.add(lovMap2.get(esAttr)); // } // }else { // if(box != null) { // JTextField field = (JTextField)obj; // String fieldText = field.getText(); // String boxText = (String) box.getSelectedItem(); // if(!("".equals(fieldText.trim())) && !("".equals(boxText.trim()))) { // MessageBox.post(attr+"不能同时填写两个值!!!", "提示", MessageBox.INFORMATION); // return; // } // if("".equals(fieldText.trim()) && "".equals(boxText.trim())) { // MessageBox.post(attr+"必须填写一个值!!!", "提示", MessageBox.INFORMATION); // return; // } // if(!("".equals(fieldText.trim()))) { // objList2.add(field); // lovList2.add("no"); // }else { // objList2.add(box); // lovList2.add("yes"); // } // }else { // objList2.add(obj); // lovList2.add(lovMap2.get(attr)); // } // } // } // } // for (int i = 0; i < objList.size(); i++) { // String attrValue = ""; // if("yes".equals(lovList.get(i))) { // String value = (String) ((JComboBox) objList.get(i)).getSelectedItem(); // if(asList.contains(value) || esList.contains(value)) { // value = ""; // }else { // if(value.contains(":")) { // System.out.println("value============"+value); // String[] values = value.split(":"); // value = values[0]; // }else if(value.contains(":")) { // System.out.println("value============"+value); // String[] values = value.split(":"); // value = values[0]; // } // } // if("成品件".equals(value)) { // value = ""; // }else if("车工件".equals(value)) { // value = "C"; // }else if("热处理件".equals(value)) { // value = "R"; // }else if("冷凝建".equals(value)) { // value = "L"; // }else if("锻件".equals(value)) { // value = "D"; // } // attrValue = value; // }else { // attrValue = ((JTextField) objList.get(i)).getText(); // } // String mark = markList.get(i); // sb.append(mark.trim()); // sb.append(attrValue); // } // productNumber = sb.toString(); // System.out.println("productNumber============"+productNumber); // StringBuilder sb2 = new StringBuilder(); // for (int i = 0; i < objList2.size(); i++) { // String attrValue = ""; // String lov = lovList2.get(i); // System.out.println("lov============="+lov); // if("yes".equals(lovList2.get(i))) { // String value = (String) ((JComboBox) objList2.get(i)).getSelectedItem(); // if(asList.contains(value) || esList.contains(value)) { // value = ""; // }else { // if(value.contains(":")) { // String[] values = value.split(":"); // value = values[0]; // }else if(value.contains(":")) { // String[] values = value.split(":"); // value = values[0]; // } // } // if("成品件".equals(value)) { // value = ""; // }else if("车工件".equals(value)) { // value = "C"; // }else if("热处理件".equals(value)) { // value = "R"; // }else if("冷凝建".equals(value)) { // value = "L"; // }else if("锻件".equals(value)) { // value = "D"; // } // attrValue = value; // }else { // attrValue = ((JTextField) objList2.get(i)).getText(); // } // System.out.println("attrValue=================="+attrValue); // String mark = markList2.get(i); // sb2.append(mark.trim()); // sb2.append(attrValue); // } if(classFlag) { productNumber = splicValue(attrList,esAttrList,objMap,markList,isNList,lovMap); drawingNumber = splicValue(attrList2,esAttrList2,objMap2,markList2,isNList2,lovMap2); System.out.println("productNumber============"+productNumber); System.out.println("drawingNumber============"+drawingNumber); if(productNumber == null || drawingNumber == null) { return; } } TCComponentItemRevision newRev = null; String newID = ""; try { TCComponentItemType typeComponent = (TCComponentItemType) session .getTypeComponent(targetType); if(flag) { StringBuilder idSb = new StringBuilder(idField.getText()); String id = ""; if(idList != null && idList.size() > 0) { JTextField idField = (JTextField) idList.get(0); JComboBox idbox = (JComboBox) idList.get(1); id = idField.getText(); String boxID = (String) idbox.getSelectedItem(); // if("".equals(id.trim()) && "".equals(boxID.trim())) { // MessageBox.post("件号未填写!!!", "提示", MessageBox.INFORMATION); // return; // } if("".equals(id.trim())) { id = boxID; } jhID = id; idSb.append(id); } String typeID = ""; if(typeList != null && typeList.size() > 0) { JComboBox idComb = typeList.get(0); typeID = (String) idComb.getSelectedItem(); if(typeID.contains(":")) { typeID = typeID.split(":")[1]; }else if(typeID.contains(":")) { typeID = typeID.split(":")[1]; } if("成品件".equals(typeID) || "Finished product".equals(typeID)) { typeID = ""; }else if("车工件".equals(typeID) || "Turning workpiece".equals(typeID)) { typeID = "C"; }else if("热处理件".equals(typeID) || "Heat treatment parts".equals(typeID)) { typeID = "R"; }else if("冷辗件或冷挤件".equals(typeID) || "Cold rolled parts or cold extrusion parts".equals(typeID)) { typeID = "D"; }else if("锻件".equals(typeID) || "Forge piece".equals(typeID)) { typeID = "D"; } idSb.append(typeID); } newID = idSb.toString(); String[] keys = new String[]{"零组件 ID"}; String[] values = new String[]{idField.getText()}; zcList = queryObject("零组件 ID", keys, values); if(zcList != null) { if(zcList.size() > 0) { if(zcList.get(0) instanceof TCComponentItem) { TCComponentItem zcItem = (TCComponentItem) zcList.get(0); TCComponentItemRevision zcRev = zcItem.getLatestItemRevision(); TCProperty tcProperty = zcRev.getTCProperty("release_status_list"); TCComponent[] targets = tcProperty.getReferenceValueArray(); if(targets != null && targets.length >0) { MessageBox.post("没有工作中的总成版本,请检查后创建!!","提示", MessageBox.WARNING); return; } if(!classFlag) { productNumber = zcRev.getStringProperty("rb3_th") + id; drawingNumber = zcRev.getStringProperty("rb3_th") + id; System.out.println("productNumber============"+productNumber); System.out.println("drawingNumber============"+drawingNumber); } if("RB3_ZC".equals(targetType)) { List compList = queryObject("RBSearchZCCPH", new String[] {"产品号"}, new String[] {productNumber}); if(compList != null ) { if( compList.size() > 0) { //优化 String nID=newID.substring(0,2); for(int j=0;j compList = queryObject("RBSearchLBJCPH", new String[] {"产品号"}, new String[] {productNumber}); if(compList != null ) { if(compList.size() > 0) { //优化 String nID=newID.substring(0,2); for(int j=0;j compList = queryObject("零组件 ID", keys, values); if(compList != null) { if(compList.size() > 0) { MessageBox.post("系统中已存在id为"+newID+"的物料,请检查后重新输入!!!", "提醒", MessageBox.INFORMATION); return; } } String revID = (String) revComb.getSelectedItem(); String name = nameField.getText(); TCComponentItem newItem = typeComponent.create(newID,revID, targetType, name, "", null); if (newItem != null) { session.getUser().getHomeFolder() .add("contents", newItem); session.getUser().getHomeFolder().refresh(); } String statu = ""; if ("A1".equals(revID)) { statu = "α:Conceptual design"; } else if ("B1".equals(revID)) { statu = "β:Product design"; } else if ("R1".equals(revID)) { statu = "γ:Process design/Sample delivery"; } else if ("P1".equals(revID)) { statu = "P:Pilot production/small batch"; } else if ("M1".equals(revID)) { statu = "M:Mass production"; } newRev = newItem.getLatestItemRevision(); newRev.setStringProperty("rb3_th", drawingNumber); newRev.setStringProperty("rb3_cph", productNumber); newRev.setStringProperty("rb3_smzqzt", statu); if(!("".equals(jhID))) { newRev.setStringProperty("rb3_jh", jhID); } if(!("".equals(bsNumber))) { newRev.setStringProperty("rb3_bsh", bsNumber); newRev.setStringProperty("rb3_sm2", smNumber); } //优化 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 revList = new ArrayList(); //设置顶层的bomline TCComponentBOMLine line = view.setWindowTopLine(targetRev.getItem(), targetRev, null, null); //遍历BOMLINE下的子bomline AIFComponentContext[] contexts = line.getChildren(); for(AIFComponentContext context : contexts){ InterfaceAIFComponent child = context.getComponent(); if(child instanceof TCComponentBOMLine){ TCComponentBOMLine childLine = (TCComponentBOMLine) child; TCComponentItemRevision itemRevision = childLine.getItemRevision(); revList.add(itemRevision); } } //关闭 view.close(); view = winType.create(null); //加锁 view.lock(); //设置顶层的bomline TCComponentBOMLine line1 = view.setWindowTopLine(newRev.getItem(), newRev, null, null); for(TCComponentItemRevision revComp : revList){ //添加子bomline TCComponentBOMLine childBomline = line1.add(revComp.getItem(), revComp, null, false, ""); } //保存 view.save(); //解锁 view.unlock(); //关闭 view.close(); newRev.setStringProperty("rb3_zclx", type); } TCComponent[] references = targetRev.getReferenceListProperty("TC_Is_Represented_By"); for (int i = 0; i < references.length; i++) { if(references[i] instanceof TCComponentItemRevision) { TCComponentItemRevision pic = (TCComponentItemRevision) references[i]; newRev.add("TC_Is_Represented_By", pic); } } } 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; } sendObjToClassficationByWebService(className,newRev, classKeys, classVals);//发送分类 disposeDialog(); 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(); } } /** * 通过查询构建器查询项目对象 * * @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; } } public String splicValue(List attrList,List esAttrList, Map map,List markList,List isNList,Map lovMap) { // List asList = Arrays.asList(lovVal); // List esList = Arrays.asList(esLovVal); List objList = new ArrayList(); List lovList = new ArrayList(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < attrList.size(); i++) { String attr = attrList.get(i); System.out.println("attr======112"+attr); String esAttr = esAttrList.get(i); if(map.get(attr) == null && map.get(esAttr) == null) { if((PlmLocaleUtil.getString("PartNumber")).equals(attr) || (PlmLocaleUtil.getString("PartNumber")).equals(esAttr)) { JComboBox idbox = boxMap.get(PlmLocaleUtil.getString("PartNumber")); JTextField idfield = (JTextField) idList.get(0); String fieldText = idfield.getText(); String boxText = (String) idbox.getSelectedItem(); if(!("".equals(fieldText.trim())) && !("".equals(boxText.trim()))) { MessageBox.post(PlmLocaleUtil.getString("PartNumber")+"不能同时填写两个值!!!", "提示", MessageBox.INFORMATION); return null; } // if("".equals(fieldText.trim()) && "".equals(boxText.trim())) { // MessageBox.post(PlmLocaleUtil.getString("PartNumber")+"必须填写一个值!!!", "提示", MessageBox.INFORMATION); // return null; // } if(!("".equals(fieldText.trim()))) { objList.add(idfield); lovList.add("no"); }else { objList.add(idbox); lovList.add("yes"); } continue; } objList.add(defaultValueList.get(i)); lovList.add("string"); continue; } if(!("".equals(attr.trim()))) { Object obj = map.get(attr); JComboBox box = null; if((PlmLocaleUtil.getString("RadialInternalClearance")).equals(attr)) { box = boxMap.get(attr); } if((PlmLocaleUtil.getString("RadialInternalClearance")).equals(esAttr)) { box = boxMap.get(esAttr); } if(obj == null) { obj = map.get(esAttr); if(box != null) { JTextField field = (JTextField)obj; String fieldText = field.getText(); String boxText = (String) box.getSelectedItem(); if(!("".equals(fieldText.trim())) && !("".equals(boxText.trim()))) { MessageBox.post(esAttr+"不能同时填写两个值!!!", "提示", MessageBox.INFORMATION); return null; } if("".equals(fieldText.trim()) && "".equals(boxText.trim())) { MessageBox.post(esAttr+"必须填写一个值!!!", "提示", MessageBox.INFORMATION); return null; } if(!("".equals(fieldText.trim()))) { objList.add(field); lovList.add("no"); }else { objList.add(box); lovList.add("yes"); } }else { objList.add(obj); lovList.add(lovMap.get(esAttr)); } }else { if(box != null) { JTextField field = (JTextField)obj; String fieldText = field.getText(); String boxText = (String) box.getSelectedItem(); if(!("".equals(fieldText.trim())) && !("".equals(boxText.trim()))) { MessageBox.post(attr+"不能同时填写两个值!!!", "提示", MessageBox.INFORMATION); return null; } if("".equals(fieldText.trim()) && "".equals(boxText.trim())) { MessageBox.post(attr+"必须填写一个值!!!", "提示", MessageBox.INFORMATION); return null; } if(!("".equals(fieldText.trim()))) { objList.add(field); lovList.add("no"); }else { objList.add(box); lovList.add("yes"); } }else { objList.add(obj); lovList.add(lovMap.get(attr)); } } } } for (int i = 0; i < objList.size(); i++) { String attrValue = ""; Object obj = objList.get(i); if(obj != null ) { if("yes".equals(lovList.get(i))) { String value = (String) ((JComboBox) obj).getSelectedItem(); if(asList.contains(value) || esList.contains(value)) { if(isNList.get(i).trim().contains(value)) { if(value.contains(":")) { System.out.println("value============"+value); String[] values = value.split(":"); value = values[0]; }else if(value.contains(":")) { System.out.println("value============"+value); String[] values = value.split(":"); value = values[0]; } }else { value = ""; } }else { if(value.contains(":")) { System.out.println("value============"+value); String[] values = value.split(":"); value = values[0]; }else if(value.contains(":")) { System.out.println("value============"+value); String[] values = value.split(":"); value = values[0]; } } if("成品件".equals(value) || "Finished product".equals(value)) { value = ""; }else if("车工件".equals(value) || "Turning workpiece".equals(value)) { value = "C"; }else if("热处理件".equals(value) || "Heat treatment parts".equals(value)) { value = "R"; }else if("冷辗件或冷挤件".equals(value) || "Cold rolled parts or cold extrusion parts".equals(value)) { value = "D"; }else if("锻件".equals(value) || "Forge piece".equals(value)) { value = "D"; } attrValue = value; }else if("no".equals(lovList.get(i))){ attrValue = ((JTextField) obj).getText(); }else { attrValue = (String) obj; } if(asList.contains(attrValue) || esList.contains(attrValue)) { attrValue = ""; }else { if(attrValue.contains(":")) { System.out.println("attrValue============"+attrValue); String[] values = attrValue.split(":"); attrValue = values[0]; }else if(attrValue.contains(":")) { System.out.println("attrValue============"+attrValue); String[] values = attrValue.split(":"); attrValue = values[0]; } } String mark = markList.get(i); System.out.println("mark============"+mark); if(!("".equals(attrValue.trim())) && mark != null) { sb.append(mark.trim()); sb.append(attrValue); } } } return sb.toString(); } }