diff --git a/com.connor.chint.wuhan/plugin.xml b/com.connor.chint.wuhan/plugin.xml
index da83ee3..06057e7 100644
--- a/com.connor.chint.wuhan/plugin.xml
+++ b/com.connor.chint.wuhan/plugin.xml
@@ -34,6 +34,8 @@
+
+
@@ -63,6 +65,9 @@
+
+
+
@@ -354,6 +359,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/com.connor.chint.wuhan/src/com/connor/chint/sap2/util/TCUtil.java b/com.connor.chint.wuhan/src/com/connor/chint/sap2/util/TCUtil.java
index f3e40bc..0d54394 100644
--- a/com.connor.chint.wuhan/src/com/connor/chint/sap2/util/TCUtil.java
+++ b/com.connor.chint.wuhan/src/com/connor/chint/sap2/util/TCUtil.java
@@ -2,4 +2,12 @@ package com.connor.chint.sap2.util;
public class TCUtil {
+ public static boolean contains(String[] array, String str) {
+ for(String s : array) {
+// System.out.println("contains:"+s+"="+str);
+ if(s.equals(str))
+ return true;
+ }
+ return false;
+ }
}
diff --git a/com.connor.chint.wuhan/src/com/connor/plm/process/AssProcessAutoFeedingCommand.java b/com.connor.chint.wuhan/src/com/connor/plm/process/AssProcessAutoFeedingCommand.java
new file mode 100644
index 0000000..b4950a0
--- /dev/null
+++ b/com.connor.chint.wuhan/src/com/connor/plm/process/AssProcessAutoFeedingCommand.java
@@ -0,0 +1,221 @@
+package com.connor.plm.process;
+
+import java.sql.ResultSet;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.swing.JOptionPane;
+
+import com.connor.chint.sap2.util.MyProgressBarCompent;
+import com.connor.chint.sap2.util.SAPMessageUtilFram;
+import com.connor.chint.sap2.util.SAPUtil;
+import com.connor.chint.sap2.util.SqlUtil;
+import com.connor.chint.yunpi.KCommand;
+import com.teamcenter.rac.aif.AbstractAIFApplication;
+import com.teamcenter.rac.aif.kernel.AIFComponentContext;
+import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
+import com.teamcenter.rac.aifrcp.AIFUtility;
+import com.teamcenter.rac.kernel.TCComponent;
+import com.teamcenter.rac.kernel.TCComponentBOMLine;
+import com.teamcenter.rac.kernel.TCComponentItem;
+import com.teamcenter.rac.kernel.TCComponentItemRevision;
+import com.teamcenter.rac.kernel.TCPreferenceService;
+import com.teamcenter.rac.kernel.TCSession;
+import com.teamcenter.rac.kernel.TCUserService;
+import com.teamcenter.rac.util.MessageBox;
+
+/**
+ * : ܵ-·ָɹ+ԶͶϹ
+ * :2024-04-18
+ * @author
+ */
+@SuppressWarnings("deprecation")
+public class AssProcessAutoFeedingCommand extends KCommand {
+
+ public AssProcessAutoFeedingCommand(AbstractAIFApplication app, String commandId, String actionInfo) {
+ super(app, commandId, actionInfo);
+
+ try {
+ InterfaceAIFComponent targetComponent = app.getTargetComponent();
+ TCSession session = (TCSession)app.getSession();
+ String groupID = SAPUtil.getGroupID(session);
+ if(!groupID.equals("M060")) {
+ MessageBox.post(AIFUtility.getActiveDesktop(), PlmLocale.getString("info1"), "", MessageBox.ERROR);
+ return;
+ }
+ TCComponentItemRevision rev;
+ if(targetComponent instanceof TCComponentBOMLine) {
+ rev = ((TCComponentBOMLine)targetComponent).getItemRevision();
+ }else if(targetComponent instanceof TCComponentItemRevision) {
+ rev = (TCComponentItemRevision) targetComponent;
+ }else {
+ MessageBox.post(AIFUtility.getActiveDesktop(), PlmLocale.getString("info2"), "", MessageBox.ERROR);
+ return;
+ }
+ if(!rev.getType().equals("Part Revision")) {
+ MessageBox.post(AIFUtility.getActiveDesktop(), PlmLocale.getString("info3"), "", MessageBox.ERROR);
+ return;
+ }
+ new Thread() {
+ @Override
+ public void run() {
+ MyProgressBarCompent comp = null;
+ try {
+// TCComponentItemRevision pRevision = getPRevision(rev);
+ TCComponentItemRevision topZzItem = getTopZzItem(rev);
+ String name = rev.getProperty("object_name");
+ String property = topZzItem.getProperty("zt2_ifpbom");
+ if(!property.equals("P") && topZzItem.getStringProperty("object_desc").contains("1ZDB300000P")) {
+ MessageBox.post(AIFUtility.getActiveDesktop(), PlmLocale.getString("info3"), "", MessageBox.ERROR);
+ return;
+ }
+ boolean isback = false;
+ TCPreferenceService service = session.getPreferenceService();
+ String[] rules = service.getStringValues("CHINT_PROCESS_RULE");
+ for(String rule : rules) {
+ String[] split = rule.split(":");
+ if(!split[0].equals(groupID))
+ continue;
+ String[] backs = split[1].split(";");
+ for(String back : backs) {
+ System.out.println(name + "==" + back + ">>" + name.contains(back));
+ if(name.contains(back)) {
+ isback = true;
+ break;
+ }
+ }
+ if(isback)
+ break;
+ }
+ TCComponentItemRevision desginRev = (TCComponentItemRevision) topZzItem.getRelatedComponent("TC_Is_Represented_By");
+ System.out.println("topZzItem==" + topZzItem.toString() + ">>" + isback);
+ if(isback) {
+ AIFComponentContext[] folders = topZzItem.getItem()
+ .whereReferencedByTypeRelation(new String[] { "ZT2_ProjectFolder" }, null);//new String[] { "contents" }
+ if(folders.length == 0) {
+ MessageBox.post(AIFUtility.getActiveDesktop(), PlmLocale.getString("info4"), "INFO", MessageBox.WARNING);
+ return;
+ }
+ AIFComponentContext[] ccps = folders[0].getComponent().getChildren();
+ System.out.println(folders[0].getComponent() + "==>" + ccps.length);
+ for(AIFComponentContext aifcc : ccps) {
+ TCComponentItem item = (TCComponentItem) aifcc.getComponent();
+ desginRev = (TCComponentItemRevision) item.getLatestItemRevision().getRelatedComponent("TC_Is_Represented_By");
+ System.out.println(item + "==>" + desginRev);
+ if(desginRev != null)
+ break;
+ }
+ }
+ if(desginRev == null) {
+ MessageBox.post(AIFUtility.getActiveDesktop(), PlmLocale.getString("info5"), "INFO", MessageBox.WARNING);
+ return;
+ }
+ Map classificationAttributes = desginRev.getItem().getClassificationAttributes();
+ System.out.println(classificationAttributes.toString());
+
+ for(String key : classificationAttributes.keySet()) {
+ if(key.equals(PlmLocale.getString("cpxh"))) {
+ String cphx = classificationAttributes.get(key);
+ String sql = "SELECT \"ProductZu\" FROM \"CHINT_WORKHOUR_WhProductXH\" where \"ProductXH\" = '"+cphx+"'";
+ String[] prefs = service.getStringValues("database_tc");
+ SqlUtil.getTCDataConnection(prefs);
+ ResultSet read2 = SqlUtil.read(sql);
+ if(!read2.next()) {
+ String searchSql = "SELECT distinct \"ProductZu\" FROM \"CHINT_WORKHOUR_WhProductXH\" where \"COMPANYCODE\" = 'M060'";
+ ResultSet read = SqlUtil.read(searchSql);
+ List productZuList = new ArrayList();
+ while(read.next()){
+ productZuList.add(read.getString(1));
+ }
+ System.out.println(productZuList.toString());
+ String[] array = productZuList.toArray(new String[] {});
+ Object showInputDialog = JOptionPane.showInputDialog(null, PlmLocale.getString("info6"), "INFO",
+ JOptionPane.QUESTION_MESSAGE, null, array,array[0]);
+ if(showInputDialog == null) {
+ return;
+ }else {
+ System.out.println("showInputDialog:" + showInputDialog.toString());
+ String insertSql = "INSERT INTO \"CHINT_WORKHOUR_WhProductXH\" "
+ + "(\"ProductXH\",\"ProductZu\",\"COMPANYCODE\") "
+ + "VALUES (?,?,?)";
+ SqlUtil.write(insertSql, new Object[] { cphx, showInputDialog.toString(), "M060" });
+ }
+ }
+ break;
+ }
+ }
+
+ comp = new MyProgressBarCompent("", PlmLocale.getString("info7"));
+ TCUserService userService = (TCUserService) session.getUserService();
+ Object call = userService.call("CloneTempProcess", new Object[] { rev.getUid() });
+ String assignResult = call.toString();
+ System.out.println(assignResult);
+ if(!assignResult.equals("succ")) {
+ comp.setVisible(false);
+ new SAPMessageUtilFram("", PlmLocale.getString("info8") + assignResult);
+ return;
+ }
+
+ comp.setShowLabel(PlmLocale.getString("info9"));
+ call = userService.call("AutoFeeding", new Object[] { rev.getUid() });
+ comp.setVisible(false);
+ String feedResult = call.toString();
+ System.out.println(feedResult);
+
+ boolean succ = true;
+ if(!feedResult.equals("succ")) {
+ new SAPMessageUtilFram("", PlmLocale.getString("info10") + feedResult);
+ }else if(succ) {
+ MessageBox.post(PlmLocale.getString("info11"), "INFO", MessageBox.INFORMATION);
+ }
+ } catch (Exception e1) {
+ e1.printStackTrace();
+ MessageBox.post(AIFUtility.getActiveDesktop(), PlmLocale.getString("err") + e1.toString(), "", MessageBox.ERROR);
+ }finally {
+ SqlUtil.freeAll();
+ if(comp != null) {
+ comp.dispose();//.setVisible(false);
+ }
+ }
+ }
+ }.start();
+ }catch(Exception e) {
+ e.printStackTrace();
+ MessageBox.post(AIFUtility.getActiveDesktop(), PlmLocale.getString("err") + e.toString(), "", MessageBox.ERROR);
+ }
+ }
+ /**
+ * ȡװBOM㣩
+ * @param rev Ŀ
+ * @return BOM汾
+ */
+ private TCComponentItemRevision getTopZzItem(TCComponentItemRevision rev) throws Exception {
+ TCComponent[] whereUsed = rev.whereUsed((short)0);
+ if(whereUsed.length==0) {
+ return rev;
+ }else {
+ List revPs = new ArrayList();
+ for(int i = 0; i < whereUsed.length; i++) {
+ TCComponentItemRevision revP = (TCComponentItemRevision)whereUsed[i];
+ if(revP.getType().contains("Part")) {
+ revPs.add(revP);
+ }
+ }
+ for(TCComponentItemRevision revP : revPs) {
+ if(revPs.size()>1) {
+// TCComponentItemRevision revP = (TCComponentItemRevision)whereUsed[i];
+ String property = revP.getProperty("zt2_ifpbom");
+ if(property == null || !property.equals("P")) {
+ continue;
+ }
+ }
+ TCComponentItemRevision item = getTopZzItem(revP);
+ if(item != null) {
+ return item;
+ }
+ }
+ }
+ return null;
+ }
+}
diff --git a/com.connor.chint.wuhan/src/com/connor/plm/process/PlmLocale.java b/com.connor.chint.wuhan/src/com/connor/plm/process/PlmLocale.java
new file mode 100644
index 0000000..d8a4d44
--- /dev/null
+++ b/com.connor.chint.wuhan/src/com/connor/plm/process/PlmLocale.java
@@ -0,0 +1,29 @@
+package com.connor.plm.process;
+
+import com.teamcenter.rac.util.Registry;
+
+/**
+ * : ӢĻл
+ * :2019-02-26
+ * @author
+ *
+ *
+ * 2019-01-24 XXXX
+ */
+public class PlmLocale {
+
+ public static final Registry reg = Registry.getRegistry(PlmLocale.class);
+
+ public static String getString(String title) {
+ if (isEmpty(title)) {
+ return "";
+ } else {
+ String res = reg.getString(title);
+ return isEmpty(res) ? title : res;
+ }
+ }
+
+ private static boolean isEmpty(String title) {
+ return title == null || "".equals(title.trim());
+ }
+}
diff --git a/com.connor.chint.wuhan/src/com/connor/plm/process/ProcessCheckCommand.java b/com.connor.chint.wuhan/src/com/connor/plm/process/ProcessCheckCommand.java
new file mode 100644
index 0000000..31c4d65
--- /dev/null
+++ b/com.connor.chint.wuhan/src/com/connor/plm/process/ProcessCheckCommand.java
@@ -0,0 +1,25 @@
+package com.connor.plm.process;
+
+import com.connor.chint.yunpi.KCommand;
+import com.teamcenter.rac.aif.AbstractAIFApplication;
+import com.teamcenter.rac.aifrcp.AIFUtility;
+import com.teamcenter.rac.util.MessageBox;
+
+/**
+ * : ·Լ飬ָ깤·ߺҪǷҪָɹ·ߵ϶ָɹ·
+ * :2024-04-18
+ * @author
+ */
+public class ProcessCheckCommand extends KCommand {
+
+ public ProcessCheckCommand(AbstractAIFApplication app, String commandId, String actionInfo) {
+ super(app, commandId, actionInfo);
+
+ try {
+ new ProcessCheckDialog(app);
+ }catch(Exception e) {
+ e.printStackTrace();
+ MessageBox.post(AIFUtility.getActiveDesktop(), PlmLocale.getString("err") + e.toString(), "", MessageBox.ERROR);
+ }
+ }
+}
diff --git a/com.connor.chint.wuhan/src/com/connor/plm/process/ProcessCheckDialog.java b/com.connor.chint.wuhan/src/com/connor/plm/process/ProcessCheckDialog.java
new file mode 100644
index 0000000..034030d
--- /dev/null
+++ b/com.connor.chint.wuhan/src/com/connor/plm/process/ProcessCheckDialog.java
@@ -0,0 +1,182 @@
+package com.connor.plm.process;
+
+import java.awt.Dimension;
+import java.util.HashMap;
+import java.util.HashSet;
+
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+
+import com.connor.chint.sap2.util.BomToSapUtil;
+import com.connor.chint.sap2.util.TCUtil;
+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.aifrcp.AIFUtility;
+import com.teamcenter.rac.kernel.TCComponentBOMLine;
+import com.teamcenter.rac.kernel.TCComponentBOMWindow;
+import com.teamcenter.rac.kernel.TCComponentBOMWindowType;
+import com.teamcenter.rac.kernel.TCComponentItem;
+import com.teamcenter.rac.kernel.TCComponentItemRevision;
+import com.teamcenter.rac.kernel.TCSession;
+import com.teamcenter.rac.util.MessageBox;
+import com.teamcenter.services.rac.cad._2007_01.StructureManagement.ExpandPSData;
+/**
+ * : ·Լ飬ָ깤·ߺҪǷҪָɹ·ߵ϶ָɹ·
+ * :2024-04-18
+ * @author
+ */
+public class ProcessCheckDialog extends AbstractAIFDialog {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ private TCSession session;
+ private JTable table;
+ private DefaultTableModel model;
+ private String[] names;
+ private HashSet bomSet;
+
+ public ProcessCheckDialog(AbstractAIFApplication app) throws Exception {
+ super(AIFUtility.getActiveDesktop());
+
+ TCComponentItem design = checkData(app);
+
+ setTitle(PlmLocale.getString("title"));
+// String[] tableHeader = new String[] { "", "ϱ", "", "Ƿ·" };
+ String[] tableHeader = PlmLocale.getString("cols").split(";");
+ model = new DefaultTableModel(tableHeader, 0);
+ table = new JTable() {
+ private static final long serialVersionUID = 1L;
+ @Override
+ public boolean isCellEditable(int row, int col) {
+ return false;
+ }
+ };
+ table.setFillsViewportHeight(true);
+ table.setEnabled(true);
+// impTable.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN);
+ table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
+ table.setModel(model);
+ table.getColumnModel().getColumn(0).setPreferredWidth(50);
+ for (int i = 1; i < table.getColumnCount(); i++) {
+ table.getColumnModel().getColumn(i).setPreferredWidth(150);
+ }
+ table.getTableHeader().setReorderingAllowed(false);
+
+ loadData(design);
+
+ setSize(new Dimension(700, 700));
+ Dimension screen = getToolkit().getScreenSize();
+ setLocation((screen.width - getSize().width) / 2, (screen.height - getSize().height) / 2);
+// this.setAlwaysOnTop(true);
+ setVisible(true);
+ }
+ /**
+ * ȡѡȡװͼֽ
+ * @param app AbstractAIFApplication
+ * @return װͼֽ
+ */
+ private TCComponentItem checkData(AbstractAIFApplication app) throws Exception {
+ session = (TCSession) app.getSession();
+ String option = session.getPreferenceService().getStringValue("CHINT_Check_Process");
+ if(option == null || option.isEmpty()) {
+ throw new Exception("CHINT_Check_Process" + PlmLocale.getString("preferr"));
+ }
+ names = option.split(";");
+
+ InterfaceAIFComponent target = app.getTargetComponent();
+ if(!target.getType().equals("ZT2_ProjectItem")) {
+ throw new Exception(PlmLocale.getString("msg1"));
+ }
+ TCComponentItem design = null;
+ for(AIFComponentContext c : target.getChildren()) {
+ InterfaceAIFComponent projectChild = c.getComponent();
+ if(!projectChild.getProperty("object_name").equals(PlmLocale.getString("xmzx")))//Ŀִļ
+ continue;
+ for(AIFComponentContext c2 : projectChild.getChildren()) {
+ InterfaceAIFComponent xmzxChild = c2.getComponent();
+ if(!xmzxChild.getProperty("object_name").equals(PlmLocale.getString("zztz")))//13-װͼֽļ
+ continue;
+ for(AIFComponentContext c3 : xmzxChild.getChildren()) {
+ InterfaceAIFComponent zztzChild = c3.getComponent();
+ if(!zztzChild.getType().equals("ZT2_Design3D"))
+ continue;
+ design = (TCComponentItem) zztzChild;
+ break;
+ }
+ break;
+ }
+ break;
+ }
+ if(design == null) {
+ throw new Exception(PlmLocale.getString("msg2"));
+ }
+ return design;
+ }
+ /**
+ * ȡP
+ * @param design װͼֽ
+ */
+ private void loadData(TCComponentItem design) {
+ try {
+ bomSet = new HashSet<>();
+ TCComponentItemRevision drev = design.getLatestItemRevision();
+ AIFComponentContext[] parts = drev.getChildren("representation_for")[0].getComponent().getChildren();
+ TCComponentBOMWindowType bomWinType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow");
+ TCComponentBOMWindow win = bomWinType.create(null);
+ for(AIFComponentContext c : parts) {
+ TCComponentItemRevision part = (TCComponentItemRevision) c.getComponent();
+ if(!part.getProperty("zt2_ifpbom").equals("P"))
+ continue;
+ part = part.getItem().getLatestItemRevision();
+ String cuid = part.getUid();
+ if(bomSet.contains(cuid))
+ continue;
+ bomSet.add(cuid);
+ TCComponentBOMLine topLine = win.setWindowTopLine(part.getItem(), part, null, null);
+ HashMap bomLineTree = BomToSapUtil.getBomLineTreeNodeSOA(topLine);
+
+ recycleBOM(bomLineTree, topLine.getUid());
+ }
+ win.close();
+ } catch(Exception e) {
+ e.printStackTrace();
+ MessageBox.post(this, PlmLocale.getString("err") + e.toString(), "", MessageBox.ERROR);
+ }
+ }
+ /**
+ * PBOM
+ * @param bomLineTree PBOM
+ * @param puid BOMuid
+ */
+ private void recycleBOM(HashMap bomLineTree, String puid) throws Exception {
+ for(ExpandPSData data : bomLineTree.get(puid)) {
+ TCComponentItemRevision rev = data.itemRevOfBOMLine;
+ String cuid = rev.getUid();
+ if(bomSet.contains(cuid))
+ continue;
+ bomSet.add(cuid);
+ TCComponentBOMLine line = data.bomLine;
+ //ֻȡаѡƵϰ汾ȷƥ䣩
+ if(TCUtil.contains(names, line.getProperty("bl_item_object_name")))
+ continue;
+ AIFComponentContext[] meops = rev.whereReferencedByTypeRelation(new String[] { "MEProcessRevision" },
+ new String[] { "IMAN_METarget" });
+ Object[] value = new Object[4];
+ value[0] = model.getRowCount() + 1;//
+ value[1] = rev.getProperty("zt2_MaterialNo");//ϱ
+ value[2] = rev.getProperty("object_name");//
+ if(meops == null || meops.length == 0)//Ƿ·
+ value[3] = PlmLocale.getString("no");
+ else
+ value[3] = PlmLocale.getString("yes");
+ model.addRow(value);
+
+ recycleBOM(bomLineTree, line.getUid());
+ }
+ }
+}
\ No newline at end of file
diff --git a/com.connor.chint.wuhan/src/com/connor/plm/process/process_locale.properties b/com.connor.chint.wuhan/src/com/connor/plm/process/process_locale.properties
new file mode 100644
index 0000000..ba94edb
--- /dev/null
+++ b/com.connor.chint.wuhan/src/com/connor/plm/process/process_locale.properties
@@ -0,0 +1,24 @@
+preferr=\u9996\u9009\u9879\u914D\u7F6E\u4E0D\u6B63\u786E
+err=\u9519\u8BEF\uFF1A
+#ProcessCheckDialog
+title=\u5DE5\u827A\u8DEF\u7EBF\u9F50\u5957\u6027\u68C0\u67E5
+cols=\u5E8F\u53F7;\u7269\u6599\u7F16\u7801;\u7269\u6599\u540D\u79F0;\u662F\u5426\u5173\u8054\u5DE5\u827A\u8DEF\u7EBF
+xmzx=\u9879\u76EE\u6267\u884C
+zztz=13-\u603B\u88C5\u56FE\u7EB8
+msg1=\u8BF7\u9009\u62E9\u9879\u76EE\u5BF9\u8C61
+msg2=\u672A\u627E\u5230\u603B\u88C5\u56FE\u7EB8
+yes=\u662F
+no=\u5426
+#AssProcessAutoFeedingCommand
+cpxh=\u4EA7\u54C1\u578B\u53F7
+info1=\u8BF7\u767B\u5F55\u6B63\u786E\u7EC4
+info2=\u8BF7\u9009\u62E9BOM\u884C\u6216\u8005\u7248\u672C\u5BF9\u8C61
+info3=\u8BF7\u9009\u62E9PBOM\u5BF9\u8C61
+info4=\u672A\u627E\u5230\u4EA7\u6210\u54C1\u6587\u4EF6\u5939\uFF0C\u8BF7\u68C0\u67E5
+info5=\u5B58\u5728\u9876\u5C42P\u7269\u6599\u6CA1\u6709\u5173\u8054\u56FE\u7EB8\uFF0C\u8BF7\u68C0\u67E5
+info6=\u5F53\u524D\u4EA7\u54C1\u578B\u53F7\u672A\u7EF4\u62A4\uFF0C\u8BF7\u9009\u62E9\u5BF9\u5E94\u4EA7\u54C1\u65CF
+info7=\u6B63\u5728\u8FDB\u884C\u4E00\u952E\u6307\u6D3E\u5DE5\u827A\u8DEF\u7EBF......
+info8=\u6307\u6D3E\u5DE5\u827A\u8DEF\u7EBF\u5B58\u5728\u5F02\u5E38\uFF0C\u8BF7\u68C0\u67E5\uFF1A\n
+info9=\u6B63\u5728\u8FDB\u884C\u81EA\u52A8\u6295\u6599......
+info10=\u81EA\u52A8\u6295\u6599\u5B58\u5728\u5F02\u5E38\uFF0C\u8BF7\u68C0\u67E5\uFF1A\n
+info11=\u6307\u6D3E\u5DE5\u827A\u8DEF\u7EBF\u4E0E\u81EA\u52A8\u6295\u6599\u5B8C\u6210
diff --git a/com.connor.chint.wuhan/src/com/connor/plm/process/process_locale_zh_CN.properties b/com.connor.chint.wuhan/src/com/connor/plm/process/process_locale_zh_CN.properties
new file mode 100644
index 0000000..f574841
--- /dev/null
+++ b/com.connor.chint.wuhan/src/com/connor/plm/process/process_locale_zh_CN.properties
@@ -0,0 +1,24 @@
+preferr=\u9996\u9009\u9879\u914D\u7F6E\u4E0D\u6B63\u786E
+#ProcessCheckDialog
+err=\u9519\u8BEF\uFF1A
+title=\u5DE5\u827A\u8DEF\u7EBF\u9F50\u5957\u6027\u68C0\u67E5
+cols=\u5E8F\u53F7;\u7269\u6599\u7F16\u7801;\u7269\u6599\u540D\u79F0;\u662F\u5426\u5173\u8054\u5DE5\u827A\u8DEF\u7EBF
+xmzx=\u9879\u76EE\u6267\u884C
+zztz=13-\u603B\u88C5\u56FE\u7EB8
+msg1=\u8BF7\u9009\u62E9\u9879\u76EE\u5BF9\u8C61
+msg2=\u672A\u627E\u5230\u603B\u88C5\u56FE\u7EB8
+yes=\u662F
+no=\u5426
+#AssProcessAutoFeedingCommand
+cpxh=\u4EA7\u54C1\u578B\u53F7
+info1=\u8BF7\u767B\u5F55\u6B63\u786E\u7EC4
+info2=\u8BF7\u9009\u62E9BOM\u884C\u6216\u8005\u7248\u672C\u5BF9\u8C61
+info3=\u8BF7\u9009\u62E9PBOM\u5BF9\u8C61
+info4=\u672A\u627E\u5230\u4EA7\u6210\u54C1\u6587\u4EF6\u5939\uFF0C\u8BF7\u68C0\u67E5
+info5=\u5B58\u5728\u9876\u5C42P\u7269\u6599\u6CA1\u6709\u5173\u8054\u56FE\u7EB8\uFF0C\u8BF7\u68C0\u67E5
+info6=\u5F53\u524D\u4EA7\u54C1\u578B\u53F7\u672A\u7EF4\u62A4\uFF0C\u8BF7\u9009\u62E9\u5BF9\u5E94\u4EA7\u54C1\u65CF
+info7=\u6B63\u5728\u8FDB\u884C\u4E00\u952E\u6307\u6D3E\u5DE5\u827A\u8DEF\u7EBF......
+info8=\u6307\u6D3E\u5DE5\u827A\u8DEF\u7EBF\u5B58\u5728\u5F02\u5E38\uFF0C\u8BF7\u68C0\u67E5\uFF1A\n
+info9=\u6B63\u5728\u8FDB\u884C\u81EA\u52A8\u6295\u6599......
+info10=\u81EA\u52A8\u6295\u6599\u5B58\u5728\u5F02\u5E38\uFF0C\u8BF7\u68C0\u67E5\uFF1A\n
+info11=\u6307\u6D3E\u5DE5\u827A\u8DEF\u7EBF\u4E0E\u81EA\u52A8\u6295\u6599\u5B8C\u6210