/** * @author tyl * @Action ini * 2011-4-4 */ package cn.com.origin.autocode.newitem.generatcode; import java.awt.Dimension; import java.awt.Toolkit; import java.awt.datatransfer.StringSelection; import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.math.BigInteger; import java.text.ParseException; 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.JDialog; import javax.xml.bind.JAXBException; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CTabFolder; import org.eclipse.swt.custom.CTabItem; import org.eclipse.swt.custom.SashForm; import org.eclipse.swt.custom.ScrolledComposite; import org.eclipse.swt.events.ControlAdapter; import org.eclipse.swt.events.ControlEvent; import org.eclipse.swt.events.FocusEvent; import org.eclipse.swt.events.FocusListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.VerifyEvent; import org.eclipse.swt.events.VerifyListener; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.DateTime; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.Widget; import cn.com.origin.autocode.jfom.util.ChangTextField; import cn.com.origin.autocode.jfom.util.ClassProperty; import cn.com.origin.autocode.jfom.util.JFomMethodUtil; import cn.com.origin.autocode.jfom.util.JFomUtil; import cn.com.origin.autocode.jfom.util.SoaServerUtil; import cn.com.origin.autocode.newitem.origin.ORAfterNewItemCustomization; import cn.com.origin.autocode.newitem.origin.ORCreateICOObject; import cn.com.origin.autocode.newitem.origin.ORSaveObjectDescOperation; import cn.com.origin.autocode.newitem.system.ORItemInfoPanel; import cn.com.origin.autocode.newitem.system.ORNewItemDialog; import cn.com.origin.autocode.saveas.ORSaveItemAsDialog; import cn.com.origin.autocode.views.itemtypeview.NewItemClassificationView; import cn.com.origin.autocode.xmlutil.CNCompontent; import cn.com.origin.autocode.xmlutil.CNPart; import cn.com.origin.autocode.xmlutil.CNPartList; import cn.com.origin.autocode.xmlutil.CNProperty; import cn.com.origin.autocode.xmlutil.CNXmlUtil; import cn.com.origin.autocode.xmlutil.ParseXMLUtil; import cn.com.origin.autocodemanager.common.AutoCodeManagerPropertyName; import cn.com.origin.autocodemanager.common.CreateCompositeUtil; import cn.com.origin.autocodemanager.common.PackCodeDescInfos; import cn.com.origin.autocodemanager.common.TCLOVUtil; import cn.com.origin.autocodemanager.common.TCPreferenceUitl; import cn.com.origin.autocodemanager.common.TCQueryUtil; import cn.com.origin.autocodemanager.common.operations.GetCodeNumber; import cn.com.origin.autocodemanager.common.operations.PackCodeNodeInfo; import cn.com.origin.autocodemanager.common.operations.TreeAndListCodeOperation; import cn.com.origin.autocodemanager.common.tree.AbstractTreeData; import cn.com.origin.autocodemanager.common.tree.TreeViewOperation; import cn.com.origin.autocodemanager.views.listcodeview.NewItemListCodeView; import cn.com.origin.autocodemanager.views.treecodeview.NewItemTreeCodeView; import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; import com.teamcenter.rac.aifrcp.AIFUtility; import com.teamcenter.rac.kernel.ListOfValuesInfo; import com.teamcenter.rac.kernel.SoaUtil; import com.teamcenter.rac.kernel.TCAccessControlService; import com.teamcenter.rac.kernel.TCClassificationService; import com.teamcenter.rac.kernel.TCComponent; import com.teamcenter.rac.kernel.TCComponentFolder; import com.teamcenter.rac.kernel.TCComponentGroup; 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.TCComponentProject; import com.teamcenter.rac.kernel.TCComponentProjectType; import com.teamcenter.rac.kernel.TCComponentPseudoFolder; import com.teamcenter.rac.kernel.TCComponentQuery; import com.teamcenter.rac.kernel.TCComponentQueryType; import com.teamcenter.rac.kernel.TCComponentRole; import com.teamcenter.rac.kernel.TCComponentUser; import com.teamcenter.rac.kernel.TCException; import com.teamcenter.rac.kernel.TCExceptionPartial; import com.teamcenter.rac.kernel.TCPreferenceService; import com.teamcenter.rac.kernel.TCProperty; import com.teamcenter.rac.kernel.TCSession; 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.ICSApplicationObject; import com.teamcenter.rac.kernel.ics.ICSFormat; import com.teamcenter.rac.kernel.ics.ICSProperty; import com.teamcenter.rac.kernel.ics.ICSSearchResult; import com.teamcenter.rac.kernel.ics.ICSView; import com.teamcenter.rac.util.MessageBox; import com.teamcenter.rac.util.PlatformHelper; import com.teamcenter.schemas.soa._2006_03.exceptions.ServiceException; import com.teamcenter.services.rac.core.DataManagementService; import com.teamcenter.services.rac.core._2008_06.DataManagement.CreateIn; import com.teamcenter.services.rac.core._2008_06.DataManagement.CreateInput; import com.teamcenter.services.rac.core._2008_06.DataManagement.CreateOut; import com.teamcenter.services.rac.core._2008_06.DataManagement.CreateResponse; import com.teamcenter.soa.client.model.LovValue; import com.teamcenter.soaictstubs.booleanSeq_tHolder; import com.teamcenter.soaictstubs.stringSeq_tHolder; public class NewCodeItemDialog extends Dialog { // 表单类型中英文对照 private SashForm sashFormCodeView; private CTabItem codeTreeCTab; private CTabItem codeListCTab; private Composite compositCodeTree; private Composite compositCodeList; private CTabFolder ctabFolder; private Text idLengthText; private Text DescText; private Text idText; private Combo revCombo; private Text nameText; private Combo unitCombo; private NewItemClassificationView classificationView; private NewItemListCodeView listView; private NewItemTreeCodeView treeView; private TreeViewer classificationTreeViewer; private TreeViewOperation treeViewOperation; public TreeAndListCodeOperation treeAndListCodeOperation; private TCSession session; private TCComponentItemType tccomponentitemtype; private AbstractTreeData selectedSegmentNode = null; private TCComponent selectedSegmentTCComponent = null; private AbstractTreeData icoTreeData; private String pattern = ""; private String codeDesc = ""; private String codeStyle = ""; private String newSeq = ""; private String counterID = ""; private String newID = ""; private String finalPattern = ""; private String idPattern = ""; // 20170510 class id private String codeRemark = ""; private int codeLength; private Map icoPropertyMap; private String firstListICOName = ""; private String codeCounterName = ""; private Map segmentItemType; private TCComponent newComp; private String showItemType = ""; private Boolean isTypeFilter = false; private String origin_isNewItemMustLastNode = "origin_isNewItemMustLastNode"; private String origin_idNeddExamineAndApproveTypes = "origin_idNeddExamineAndApproveTypes"; private String origin_sendToClassification_excludeType = "origin_sendToClassification_excludeType"; private String origin_sendToPreviousTreeNode = "origin_sendToPreviousTreeNode"; private String origin_sendToClassification_Automatic = "origin_sendToClassification_Automatic"; private String origin_isCodePatternCanEditTypes = "origin_isCodePatternCanEditTypes"; private String unitLOVName = "Unit of Measures"; private String origin_newItem_isShowUnit = "origin_newItem_isShowUnit"; private String origin_showUnit_excludeTypes = "origin_showUnit_excludeTypes"; private JDialog newItemDialog; private ORItemInfoPanel orNewItemInfoPanel; private TCComponent[] units = null; private String origin_isItemNameTextDefaultNull = "origin_isItemNameTextDefaultNull"; private PackCodeDescInfos packCodeDescInfos = null; private SashForm container; private SashForm itemInfoComposite; private SashForm sashFormClassfication; private String origin_isMustSelecteUnit = "origin_isMustSelecteUnit"; private String origin_searchGenerateID = "origin_searchGenerateID"; private String origin_isNotSaveNewItemToPseudoFolder = "origin_isNotSaveNewItemToPseudoFolder"; private String origin_isShowPCUnitLast = "origin_isShowPCUnitLast"; private String origin_newCodeSequenceNumber = "origin_newCodeSequenceNumber"; private String origin_sequenceExcludeFirstPatternTypes = "origin_sequenceExcludeFirstPatternTypes"; private String connor_isCanCreateTempMaterial = "connor_isCanCreateTempMaterial"; private final String connor_isIdTextEnable = "connor_isIdTextEnable"; private Composite cpxCompsite; private Label cpxLabel; private Text cpxText; private Label nfLabel; private Text nfText; private Label cpxLabel2; private Combo cpxText2; private final String CPX = "CPDM"; private final String NF = "NF"; private final String CPX2 = "CP"; private final String JY_CPX_Option = "JY_CPX_Option"; private HashMap jyCPXMap; // 2017.05.10 private Button isCreateTempItemButton = null; private Boolean isCreateTempItem = false; // 2017.06.02 // private List<> private Composite objPropComposite; private Composite classPropComposite; private static TCClassificationService classService; private static ICSAdminClass adminClass; // 2017.06.26 private String LPBIGString; private String LPSString; // 2017.07.02 private CNPartList cnPartList; private CNPart currentCNPart; private List cnpropList; // 2018.09.30 private String LP_PROJECT_ID; //2019.11.07 private String connor_InsertSequence = "LP_sequenceMapping"; private HashMap connor_SequenceNameMapping; private List connor_PatterValueList; private String connor_CurrentTypeNameString = ""; //2020.12.28 // private Button picCheckbox; private Button picButton; private List revList = new ArrayList(); private String productNumber = ""; private String drawingNumber = ""; private String bsNumber = ""; private String smNumber = ""; private String cldh = ""; private String zcType = ""; private Map> attrMap; private Map> attrMap2; private Map> attrMap3; private Map> attrMap4; 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 attrList = new ArrayList(); private List esAttrList = new ArrayList(); private List defaultValueList = new ArrayList(); private List markList = new ArrayList(); private List markList2 = new ArrayList(); private List markList3 = new ArrayList(); private List markList4 = new ArrayList(); private List isNList = new ArrayList(); private List isNList2 = new ArrayList(); private List isNList3 = new ArrayList(); private List isNList4 = 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 Map boxMap = new HashMap(); private Map idMap = new HashMap(); private List asList = new ArrayList(); private List esList = 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 Text getIdLengthText() { return idLengthText; } public void setIdLengthText(Text idLengthText) { this.idLengthText = idLengthText; } public Combo getUnitCombo() { return unitCombo; } public void setUnitCombo(Combo unitCombo) { this.unitCombo = unitCombo; } public Text getDescText() { return DescText; } public void setDescText(Text descText) { DescText = descText; } public Text getIdText() { return idText; } public void setIdText(Text idText) { this.idText = idText; } public Combo getRevCombo() { return revCombo; } public void setRevCombo(Combo revCombo) { this.revCombo = revCombo; } public Text getNameText() { return nameText; } public void setNameText(Text nameText) { this.nameText = nameText; } public TCComponent getNewComp() { return newComp; } public void setNewComp(TCComponent newComp) { this.newComp = newComp; } // public Button getPicCheckbox() { // return picCheckbox; // } // // public void setPicCheckbox(Button picCheckbox) { // this.picCheckbox = picCheckbox; // } public Button getPicButton() { return picButton; } public void setPicButton(Button picButton) { this.picButton = picButton; } public NewCodeItemDialog(Shell parentShell) { super(parentShell); treeViewOperation = new TreeViewOperation(); treeAndListCodeOperation = new TreeAndListCodeOperation(); session = (TCSession) AIFUtility.getCurrentApplication().getSession(); segmentItemType = new HashMap(); try { tccomponentitemtype = (TCComponentItemType) (session .getTypeComponent("Item")); } catch (TCException e) { e.printStackTrace(); } } public NewCodeItemDialog(Shell parentShell, String showItemType) { super(parentShell); treeViewOperation = new TreeViewOperation(); this.showItemType = showItemType.trim(); treeAndListCodeOperation = new TreeAndListCodeOperation(); session = (TCSession) AIFUtility.getCurrentApplication().getSession(); segmentItemType = new HashMap(); try { tccomponentitemtype = (TCComponentItemType) (session .getTypeComponent("Item")); } catch (TCException e) { e.printStackTrace(); } } public NewCodeItemDialog(Shell parentShell, String showItemType, Boolean isFilterType) { super(parentShell); treeViewOperation = new TreeViewOperation(); this.showItemType = showItemType.trim(); this.isTypeFilter = isFilterType; treeAndListCodeOperation = new TreeAndListCodeOperation(); session = (TCSession) AIFUtility.getCurrentApplication().getSession(); segmentItemType = new HashMap(); try { tccomponentitemtype = (TCComponentItemType) (session .getTypeComponent("Item")); } catch (TCException e) { e.printStackTrace(); } } public NewCodeItemDialog(JDialog newItemDialog, Shell parentShell, String showItemType) { super(parentShell); this.newItemDialog = newItemDialog; treeViewOperation = new TreeViewOperation(); this.showItemType = showItemType.trim(); treeAndListCodeOperation = new TreeAndListCodeOperation(); session = (TCSession) AIFUtility.getCurrentApplication().getSession(); segmentItemType = new HashMap(); try { tccomponentitemtype = (TCComponentItemType) (session .getTypeComponent("Item")); } catch (TCException e) { e.printStackTrace(); } } public NewCodeItemDialog(Shell parentShell, String showItemType, PackCodeDescInfos packCodeDescInfos) { super(parentShell); treeViewOperation = new TreeViewOperation(); this.showItemType = showItemType.trim(); treeAndListCodeOperation = new TreeAndListCodeOperation(); session = (TCSession) AIFUtility.getCurrentApplication().getSession(); segmentItemType = new HashMap(); this.packCodeDescInfos = packCodeDescInfos; try { tccomponentitemtype = (TCComponentItemType) (session .getTypeComponent("Item")); } catch (TCException e) { e.printStackTrace(); } } public NewCodeItemDialog(ORItemInfoPanel newItemInfoPanel, Shell parentShell, String showItemType) { super(parentShell); this.orNewItemInfoPanel = newItemInfoPanel; treeViewOperation = new TreeViewOperation(); this.showItemType = showItemType.trim(); treeAndListCodeOperation = new TreeAndListCodeOperation(); session = (TCSession) AIFUtility.getCurrentApplication().getSession(); segmentItemType = new HashMap(); try { tccomponentitemtype = (TCComponentItemType) (session .getTypeComponent("Item")); } catch (TCException e) { e.printStackTrace(); } } /** * 添加物料属性页面 添加分类熟悉页面 * * @param parent */ public void createClassTablePannel(Composite parent1) { GridLayout gridLayout = new GridLayout(); gridLayout.numColumns = 3; GridLayout classGridLayout = new GridLayout(); classGridLayout.numColumns = 3; GridData gridData1 = new GridData(); gridData1.widthHint = 200; gridData1.heightHint = 680; gridData1.horizontalAlignment = GridData.FILL; gridData1.verticalAlignment = GridData.CENTER; gridData1.grabExcessHorizontalSpace = true; CTabFolder ctabFolder = new CTabFolder(parent1, SWT.BORDER); ctabFolder.setBorderVisible(true); ctabFolder.setSimple(false); ctabFolder.setLayoutData(gridData1); CTabItem objPropTab = new CTabItem(ctabFolder, SWT.NONE); objPropTab.setText(PlmLocale.getString("ObjectProperties")); Composite objectCompsite = new Composite(ctabFolder, SWT.BORDER); objectCompsite.setLayout(new FillLayout()); final ScrolledComposite objectSrolledComposite = new ScrolledComposite( objectCompsite, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); objPropComposite = new Composite(objectSrolledComposite, SWT.NONE); objPropComposite.setLayout(gridLayout); objectSrolledComposite.setContent(objPropComposite);// 设置受控面板 objectSrolledComposite.setExpandHorizontal(true); objectSrolledComposite.setExpandVertical(true); objectSrolledComposite.addControlListener(new ControlAdapter() { public void controlResized(ControlEvent e) { Point r = objPropComposite .computeSize(SWT.DEFAULT, SWT.DEFAULT); objectSrolledComposite.setMinSize(objectSrolledComposite .computeSize(r.x, (r.y)+300)); } }); objPropTab.setControl(objectCompsite); ctabFolder.setSelection(0); // CTabItem classPropTab = new CTabItem(ctabFolder, SWT.NONE); classPropTab.setText(PlmLocale.getString("ClassificationProperties")); Composite classCompsite = new Composite(ctabFolder, SWT.BORDER); classCompsite.setLayout(new FillLayout()); final ScrolledComposite classSrolledComposite = new ScrolledComposite( classCompsite, SWT.V_SCROLL); classPropComposite = new Composite(classSrolledComposite, SWT.NONE);// ctabFolder classPropComposite.setLayout(classGridLayout); classSrolledComposite.setContent(classPropComposite);// 设置受控面板 classSrolledComposite.setExpandHorizontal(true); classSrolledComposite.setExpandVertical(true); classSrolledComposite.addControlListener(new ControlAdapter() { public void controlResized(ControlEvent e) { Point r = classPropComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT); classSrolledComposite.setMinSize(classSrolledComposite .computeSize(r.x, (r.y)+300)); } }); classPropTab.setControl(classCompsite); } public List