diff --git a/com.connor.jd.plm/.classpath b/com.connor.jd.plm/.classpath index 9988e7c..0b9ad42 100644 --- a/com.connor.jd.plm/.classpath +++ b/com.connor.jd.plm/.classpath @@ -1,528 +1,546 @@ - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/com.connor.jd.plm/META-INF/MANIFEST.MF b/com.connor.jd.plm/META-INF/MANIFEST.MF index a1e8267..437fc06 100644 --- a/com.connor.jd.plm/META-INF/MANIFEST.MF +++ b/com.connor.jd.plm/META-INF/MANIFEST.MF @@ -27,7 +27,9 @@ Export-Package: com.connor.jd.operations, com.connor.jd.plm.util, com.connor.jd.plm.utils, com.teamcenter.rac.stylesheet -Import-Package: com.teamcenter.services, +Import-Package: com.connor.jd.plm.beans, + com.connor.jd.plm.table, + com.teamcenter.services, com.teamcenter.services.rac, com.teamcenter.services.rac.core, com.teamcenter.services.rac.core._2008_06, @@ -56,4 +58,6 @@ Bundle-ClassPath: ., lib/xmlbeans-3.1.0.jar, lib/commons-lang3-3.9.jar, lib/ojdbc6.jar, - config/ + config/, + lib/datepicker.jar, + lib/aspose-cells-18.9.jar diff --git a/com.connor.jd.plm/build.properties b/com.connor.jd.plm/build.properties index 22a88a1..bb4e2ed 100644 --- a/com.connor.jd.plm/build.properties +++ b/com.connor.jd.plm/build.properties @@ -24,5 +24,7 @@ bin.includes = plugin.xml,\ lib/xmlbeans-3.1.0.jar,\ lib/ojdbc6.jar,\ lib/commons-lang3-3.9.jar,\ - config/ + src/config/,\ + lib/datepicker.jar,\ + lib/aspose-cells-18.9.jar diff --git a/com.connor.jd.plm/plugin.xml b/com.connor.jd.plm/plugin.xml index 6b58354..24fd85c 100644 --- a/com.connor.jd.plm/plugin.xml +++ b/com.connor.jd.plm/plugin.xml @@ -9,7 +9,7 @@ name="Sample Category"> - + @@ -24,11 +24,11 @@ - + - + @@ -48,7 +48,7 @@ - + @@ -56,12 +56,48 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - @@ -93,14 +129,26 @@ - - - + + + + + + + + + + + + + + + @@ -153,6 +201,9 @@ + + + @@ -197,7 +248,7 @@ - + @@ -239,7 +290,6 @@ - @@ -287,16 +337,67 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -311,7 +412,7 @@ point="org.eclipse.ui.menus"> - + @@ -321,9 +422,18 @@ + + + + + + + + + @@ -347,6 +457,17 @@ + + + + + + + + + + + @@ -354,6 +475,13 @@ + + + + + + + @@ -361,11 +489,21 @@ - + + + + + + + + + + + @@ -376,16 +514,18 @@ - + - + + + @@ -411,19 +551,26 @@ + + - - + + + + - - + + - + + + + @@ -438,7 +585,7 @@ - + @@ -506,6 +653,9 @@ + + + @@ -523,13 +673,20 @@ id="com.connor.jd.dbomtoebom"> true - true + + true + diff --git a/com.connor.jd.plm/src/Test.java b/com.connor.jd.plm/src/Test.java index 46ec1b3..55cd389 100644 --- a/com.connor.jd.plm/src/Test.java +++ b/com.connor.jd.plm/src/Test.java @@ -1,10 +1,52 @@ +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; public class Test { public static void main(String[] args) { - String fileName = "111.xlsx"; - String[] filename = fileName.split("\\."); - System.out.println(fileName.lastIndexOf(".")); + String[] arr = new String[] { "0,1", "1,10", "0,100", "xx", "1,2" }; + Arrays.sort(arr, new Comparator() { + @Override + public int compare(String o1, String o2) { + if (o1.indexOf(",") == -1 || o2.indexOf(",") == -1) { + return 0; + } + String[] temp1 = o1.split(","); + String[] temp2 = o2.split(","); + if (temp1[0].equals(temp2[0])) { + return Integer.parseInt(temp1[1]) - Integer.parseInt(temp2[1]); + } else { + return Integer.parseInt(temp1[0]) - Integer.parseInt(temp2[0]); + } + } + }); + System.out.println(Arrays.toString(arr)); + List list1 = new ArrayList(); + List list2 = new ArrayList(); + List list3 = new ArrayList(); + for (int i = 0; i < arr.length; i++) { + if (arr[i].indexOf(",") == -1 || "0".equals(arr[i].split(",")[0])) { + list1.add(arr[i]); + } else { + list2.add(arr[i]); + } + } + int maxLength = Math.max(list1.size(), list2.size()); + for (int i = 0; i < maxLength; i++) { + if (i > list1.size() - 1) { + list3.add(""); + list3.add(list2.get(i)); + } else if (i > list2.size() - 1) { + list3.add(list1.get(i)); + list3.add(""); + } else { + list3.add(list1.get(i)); + list3.add(list2.get(i)); + } + } + System.out.println(Arrays.toString(list3.toArray())); } } diff --git a/com.connor.jd.plm/src/com/connor/jd/operations/CreateTableOperation.java b/com.connor.jd.plm/src/com/connor/jd/operations/CreateTableOperation.java index 678206b..b100596 100644 --- a/com.connor.jd.plm/src/com/connor/jd/operations/CreateTableOperation.java +++ b/com.connor.jd.plm/src/com/connor/jd/operations/CreateTableOperation.java @@ -6,13 +6,17 @@ import java.sql.SQLException; import java.sql.Statement; import com.connor.jd.plm.utils.DBConnectionUtil; +import com.teamcenter.rac.aifrcp.AIFUtility; +import com.teamcenter.rac.kernel.TCSession; public class CreateTableOperation { private static Connection con = null; private static Statement ps = null; private static ResultSet rs = null; + private static TCSession session; public static void create() { + session = (TCSession) AIFUtility.getCurrentApplication().getSession(); String createTable1 = "CREATE TABLE JD2_Component (test_type VARCHAR(255),test_project VARCHAR(255),test_time VARCHAR(255),test_num NUMBER,test_cost FLOAT, test_id NUMBER primary key)"; String createSeq1 = "CREATE sequence component_id_seq minvalue 1 nomaxvalue INCREMENT BY 1 START WITH 1 nocache"; String createTRG1 = "CREATE or REPLACE TRIGGER component_id_ins_trg before INSERT ON JD2_COMPONENT for each ROW BEGIN SELECT component_id_seq.Nextval into : new.TEST_ID from dual; END;"; @@ -22,7 +26,7 @@ public class CreateTableOperation { String createTRG2 = "CREATE or REPLACE TRIGGER machine_id_ins_trg before INSERT ON JD2_MACHINE for each ROW BEGIN SELECT machine_id_seq.Nextval into : new.TEST_ID from dual; END;"; String[] sqls = { createTable1, createSeq1, createTRG1, createTable2, createSeq2, createTRG2 }; try { - con = DBConnectionUtil.dbConn("infodba", "infodba"); + con = DBConnectionUtil.dbConn(session); String sqlString = "SELECT count(*) from user_tables WHERE table_name='JD2_COMPONENT'"; if (con == null) { System.out.print("连接失败"); diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/action/AddHLBOMAction.java b/com.connor.jd.plm/src/com/connor/jd/plm/action/AddHLBOMAction.java new file mode 100644 index 0000000..ec076ad --- /dev/null +++ b/com.connor.jd.plm/src/com/connor/jd/plm/action/AddHLBOMAction.java @@ -0,0 +1,96 @@ +package com.connor.jd.plm.action; + +import java.util.Arrays; +import java.util.Comparator; + +import javax.swing.JOptionPane; + +import com.teamcenter.rac.aif.AbstractAIFApplication; +import com.teamcenter.rac.aif.common.actions.AbstractAIFAction; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentItem; +import com.teamcenter.rac.kernel.TCComponentItemRevision; +import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.util.MessageBox; + +public class AddHLBOMAction extends AbstractAIFAction { + + private AbstractAIFApplication app; + private TCSession session; + + public AddHLBOMAction(AbstractAIFApplication arg0, String arg1) { + super(arg0, arg1); + // TODO Auto-generated constructor stub + this.app = arg0; + this.session = (TCSession) app.getSession(); + } + + @Override + public void run() { + // TODO Auto-generated method stub + TCComponent target = (TCComponent) app.getTargetComponent(); + TCComponentItemRevision rev = null; + if (target instanceof TCComponentItemRevision) { + rev = (TCComponentItemRevision) target; + } else if (target instanceof TCComponentItem) { + try { + rev = ((TCComponentItem) target).getLatestItemRevision(); + } catch (TCException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + try { + TCComponent[] revs = rev.getRelatedComponents("JD2_HLBOM"); + String itemId = rev.getProperty("item_id"); + String itemName = rev.getProperty("object_name"); + TCComponentItem newItem = null; + session.getUserService().call("bs_bypass", new Object[] { true }); + if (revs.length == 0) { + newItem = rev.saveAsItem(itemId + "-1", null); + } else { + Arrays.sort(revs, new Comparator() { + @Override + public int compare(TCComponent o1, TCComponent o2) { + // TODO Auto-generated method stub + try { + return o1.getProperty("item_id").compareTo(o2.getProperty("item_id")); + } catch (TCException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return 0; + } + }); + String str = revs[revs.length - 1].getProperty("item_id"); + str = str.split("-")[1]; + newItem = rev.saveAsItem(itemId + "-" + (Integer.parseInt(str) + 1), null); + } + rev.add("JD2_HLBOM", newItem); + TCComponentItemRevision newRev = newItem.getLatestItemRevision(); + TCComponent[] comps = newRev.getRelatedComponents("JD2_HLBOM"); + System.out.println(Arrays.toString(comps)); + newRev.cutOperation("JD2_HLBOM", comps); + newRev.lock(); + newRev.setProperty("jd2_ishl", "1"); + newRev.save(); + newRev.unlock(); + + rev.refresh(); + MessageBox.post("创建成功", "提示", MessageBox.WARNING); + } catch (TCException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + JOptionPane.showMessageDialog(null, e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE); + } finally { + try { + session.getUserService().call("bs_bypass", new Object[] { false }); + } catch (TCException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + +} diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/action/BOMManagementAction.java b/com.connor.jd.plm/src/com/connor/jd/plm/action/BOMManagementAction.java new file mode 100644 index 0000000..b2bb78a --- /dev/null +++ b/com.connor.jd.plm/src/com/connor/jd/plm/action/BOMManagementAction.java @@ -0,0 +1,23 @@ +package com.connor.jd.plm.action; + +import com.connor.jd.plm.dialogs.BOMManagementFrame; +import com.teamcenter.rac.aif.AbstractAIFApplication; +import com.teamcenter.rac.aif.common.actions.AbstractAIFAction; + +public class BOMManagementAction extends AbstractAIFAction { + + private AbstractAIFApplication app; + + public BOMManagementAction(AbstractAIFApplication arg0, String arg1) { + super(arg0, arg1); + // TODO Auto-generated constructor stub + this.app = arg0; + } + + @Override + public void run() { + // TODO Auto-generated method stub + new BOMManagementFrame(app); + } + +} diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/action/ExportBOMAction.java b/com.connor.jd.plm/src/com/connor/jd/plm/action/ExportBOMAction.java new file mode 100644 index 0000000..ddd1909 --- /dev/null +++ b/com.connor.jd.plm/src/com/connor/jd/plm/action/ExportBOMAction.java @@ -0,0 +1,28 @@ +package com.connor.jd.plm.action; + +import com.teamcenter.rac.aif.AbstractAIFApplication; +import com.teamcenter.rac.aif.common.actions.AbstractAIFAction; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentItemRevision; +import com.teamcenter.rac.kernel.TCSession; + +public class ExportBOMAction extends AbstractAIFAction { + private AbstractAIFApplication app; + private TCSession session; + + public ExportBOMAction(AbstractAIFApplication arg0, String arg1) { + super(arg0, arg1); + this.app = arg0; + this.session = (TCSession) app.getSession(); + } + + @Override + public void run() { + TCComponent target = (TCComponent) app.getTargetComponent(); + TCComponentItemRevision rev; + if (target instanceof TCComponentItemRevision) { + + } + } + +} diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/action/WLTZReviseAction.java b/com.connor.jd.plm/src/com/connor/jd/plm/action/WLTZReviseAction.java index 02ddfb6..58fefe3 100644 --- a/com.connor.jd.plm/src/com/connor/jd/plm/action/WLTZReviseAction.java +++ b/com.connor.jd.plm/src/com/connor/jd/plm/action/WLTZReviseAction.java @@ -10,6 +10,7 @@ import com.teamcenter.rac.aif.AbstractAIFApplication; import com.teamcenter.rac.aif.common.actions.AbstractAIFAction; import com.teamcenter.rac.aifrcp.AIFUtility; import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentBOMLine; import com.teamcenter.rac.kernel.TCComponentICO; import com.teamcenter.rac.kernel.TCComponentItem; import com.teamcenter.rac.kernel.TCComponentItemRevision; @@ -27,7 +28,6 @@ public class WLTZReviseAction extends AbstractAIFAction { super(arg0, arg1); this.app = arg0; this.session = (TCSession) app.getSession(); - } @Override @@ -39,65 +39,77 @@ public class WLTZReviseAction extends AbstractAIFAction { for (String s : list) { System.out.println(s); } + + TCComponentItemRevision rev; if (target instanceof TCComponentItemRevision) { + rev = (TCComponentItemRevision) target; + } else if (target instanceof TCComponentBOMLine) { try { - TCComponentItemRevision rev = (TCComponentItemRevision) target; - String type = rev.getType(); - System.out.println(type); - if (!list.contains(type)) { - MessageBox.post("当前对象类型不允许修订并发送分类!", "错误", MessageBox.ERROR); - return; - } - TCComponentItem item = rev.getItem(); - session.getUserService().call("bs_bypass", new Object[] { true }); - TCComponentItemRevision newRev = rev.saveAs(item.getNewRev()); - session.getUserService().call("bs_bypass", new Object[] { false }); - TCComponentICO ico = rev.getClassificationObjects()[0]; - ICSProperty[] oldICSProps = ico.getICSProperties(true); - int[] ids = new int[oldICSProps.length]; - String[] values = new String[oldICSProps.length]; - for (int i = 0; i < oldICSProps.length; i++) { - System.out.println(oldICSProps[i].getId() + "=====>" + oldICSProps[i].getValue()); - ids[i] = oldICSProps[i].getId(); - values[i] = oldICSProps[i].getValue(); - } - JSONObject json = new JSONObject(); - json.put("ids", ids); - json.put("values", values); - String prop = json.toString(); - prop = prop.replace("\"", "\\\""); - System.out.println("prop:" + prop); - String uid = newRev.getUid(); - System.out.println("uid:" + uid); - String cid = rev.getClassificationClass(); - System.out.println("cid:" + cid); - String server = getPrefStr("jd2_server_ip"); - if (server == null || "".equals(server)) { - MessageBox.post("未配置jd2_server_ip首选项", "错误", MessageBox.ERROR); - return; - } - String url = "http://" + server + ":8080/classification"; - Map paramMap = new HashMap(); - paramMap.put("uid", uid); - paramMap.put("cid", cid); - paramMap.put("prop", prop); - final String URL = url; - final Map PARAMMAP = paramMap; - new Thread(new Runnable() { - - @Override - public void run() { - // TODO Auto-generated method stub - cn.hutool.http.HttpUtil.post(URL, PARAMMAP); - System.out.println("success"); - } - }).start(); + rev = ((TCComponentBOMLine) target).getItemRevision(); } catch (TCException e) { // TODO Auto-generated catch block e.printStackTrace(); + MessageBox.post(e.getMessage(), "错误", MessageBox.ERROR); + return; } } else { MessageBox.post("当前对象类型不允许修订并发送分类!", "错误", MessageBox.ERROR); + return; + } + try { + String type = rev.getType(); + System.out.println(type); + if (!list.contains(type)) { + MessageBox.post("当前对象类型不允许修订并发送分类!", "错误", MessageBox.ERROR); + return; + } + TCComponentItem item = rev.getItem(); + session.getUserService().call("bs_bypass", new Object[] { true }); + TCComponentItemRevision newRev = rev.saveAs(item.getNewRev()); + session.getUserService().call("bs_bypass", new Object[] { false }); + TCComponentICO ico = rev.getClassificationObjects()[0]; + ICSProperty[] oldICSProps = ico.getICSProperties(true); + int[] ids = new int[oldICSProps.length]; + String[] values = new String[oldICSProps.length]; + for (int i = 0; i < oldICSProps.length; i++) { + System.out.println(oldICSProps[i].getId() + "=====>" + oldICSProps[i].getValue()); + ids[i] = oldICSProps[i].getId(); + values[i] = oldICSProps[i].getValue(); + } + JSONObject json = new JSONObject(); + json.put("ids", ids); + json.put("values", values); + String prop = json.toString(); + prop = prop.replace("\"", "\\\""); + System.out.println("prop:" + prop); + String uid = newRev.getUid(); + System.out.println("uid:" + uid); + String cid = rev.getClassificationClass(); + System.out.println("cid:" + cid); + String server = getPrefStr("jd2_server_ip"); + if (server == null || "".equals(server)) { + MessageBox.post("未配置jd2_server_ip首选项", "错误", MessageBox.ERROR); + return; + } + String url = "http://" + server + ":8880/sendClassification"; + Map paramMap = new HashMap(); + paramMap.put("uid", uid); + paramMap.put("cid", cid); + paramMap.put("prop", prop); + final String URL = url; + final Map PARAMMAP = paramMap; + new Thread(new Runnable() { + + @Override + public void run() { + // TODO Auto-generated method stub + cn.hutool.http.HttpUtil.post(URL, PARAMMAP); + System.out.println("success"); + } + }).start(); + } catch (TCException e) { + // TODO Auto-generated catch block + e.printStackTrace(); } } diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/beans/BOMExportBean.java b/com.connor.jd.plm/src/com/connor/jd/plm/beans/BOMExportBean.java new file mode 100644 index 0000000..3cb287e --- /dev/null +++ b/com.connor.jd.plm/src/com/connor/jd/plm/beans/BOMExportBean.java @@ -0,0 +1,96 @@ +package com.connor.jd.plm.beans; + +import cn.hutool.core.util.StrUtil; + +public class BOMExportBean { + private String pid;// 父id + private String prev;// 父版本 + private String cid;// 子id + private String crev;// 子版本 + private String childCount;// 子数量 + private String childUnit;// 子单位 + private String HLCount;// 回料数量 + private String SN;// 编号 + + public BOMExportBean(String pid, String prev, String cid, String crev, String childCount, String childUnit, + String HLCount, String SN) { + super(); + this.pid = pid; + this.prev = prev; + this.cid = cid; + this.crev = crev; + this.childCount = childCount; + this.childUnit = childUnit; + this.HLCount = HLCount; + this.SN = SN; + } + + public String getPid() { + return pid; + } + + public void setPid(String pid) { + this.pid = pid; + } + + public String getPrev() { + return prev; + } + + public void setPrev(String prev) { + this.prev = prev; + } + + public String getCid() { + return cid; + } + + public void setCid(String cid) { + this.cid = cid; + } + + public String getCrev() { + return crev; + } + + public void setCrev(String crev) { + this.crev = crev; + } + + public String getChildCount() { + return childCount; + } + + public void setChildCount(String childCount) { + this.childCount = childCount; + } + + public String getChildUnit() { + return childUnit; + } + + public void setChildUnit(String childUnit) { + this.childUnit = childUnit; + } + + public String getHLCount() { + return HLCount; + } + + public void setHLCount(String HLCount) { + this.HLCount = HLCount; + } + + public String getSN() { + return SN; + } + + public void setSN(String SN) { + this.SN = SN; + } + + public int isNegative() { + return StrUtil.isBlank(HLCount) ? 0 : Integer.parseInt(HLCount) < 0 ? 1 : 0; + } + +} diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/beans/BOMManageTableBean.java b/com.connor.jd.plm/src/com/connor/jd/plm/beans/BOMManageTableBean.java new file mode 100644 index 0000000..0c7600d --- /dev/null +++ b/com.connor.jd.plm/src/com/connor/jd/plm/beans/BOMManageTableBean.java @@ -0,0 +1,74 @@ +package com.connor.jd.plm.beans; + +import com.teamcenter.rac.kernel.TCComponentBOMLine; +import com.teamcenter.rac.kernel.TCComponentItemRevision; + +public class BOMManageTableBean { + + private String parentString; + private String childString; + private TCComponentItemRevision parentRev; + private TCComponentItemRevision childRev; + private TCComponentBOMLine parentLine; + private TCComponentBOMLine childLine; + + public BOMManageTableBean(String parentString, String childString, TCComponentItemRevision parentRev, + TCComponentItemRevision childRev, TCComponentBOMLine parentLine, TCComponentBOMLine childLine) { + super(); + this.parentString = parentString; + this.childString = childString; + this.parentRev = parentRev; + this.childRev = childRev; + this.parentLine = parentLine; + this.childLine = childLine; + } + + public String getParentString() { + return parentString; + } + + public void setParentString(String parentString) { + this.parentString = parentString; + } + + public String getChildString() { + return childString; + } + + public void setChildString(String childString) { + this.childString = childString; + } + + public TCComponentItemRevision getParentRev() { + return parentRev; + } + + public void setParentRev(TCComponentItemRevision parentRev) { + this.parentRev = parentRev; + } + + public TCComponentItemRevision getChildRev() { + return childRev; + } + + public void setChildRev(TCComponentItemRevision childRev) { + this.childRev = childRev; + } + + public TCComponentBOMLine getParentLine() { + return parentLine; + } + + public void setParentLine(TCComponentBOMLine parentLine) { + this.parentLine = parentLine; + } + + public TCComponentBOMLine getChildLine() { + return childLine; + } + + public void setChildLine(TCComponentBOMLine childLine) { + this.childLine = childLine; + } + +} diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/beans/CheckBoxPo.java b/com.connor.jd.plm/src/com/connor/jd/plm/beans/CheckBoxPo.java new file mode 100644 index 0000000..b7c280c --- /dev/null +++ b/com.connor.jd.plm/src/com/connor/jd/plm/beans/CheckBoxPo.java @@ -0,0 +1,14 @@ +package com.connor.jd.plm.beans; + +public class CheckBoxPo { + public Object value = null; + public String text = null; + + public CheckBoxPo() { + } + + public CheckBoxPo(String text, Object value) { + this.value = value; + this.text = text; + } +} \ No newline at end of file diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/beans/ClassPropBean.java b/com.connor.jd.plm/src/com/connor/jd/plm/beans/ClassPropBean.java new file mode 100644 index 0000000..12cf40a --- /dev/null +++ b/com.connor.jd.plm/src/com/connor/jd/plm/beans/ClassPropBean.java @@ -0,0 +1,39 @@ +package com.connor.jd.plm.beans; + +public class ClassPropBean { + private int id; + private String name; + private String value; + + public ClassPropBean(int id, String name, String value) { + super(); + this.id = id; + this.name = name; + this.value = value; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + +} diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/beans/CustomLovBean.java b/com.connor.jd.plm/src/com/connor/jd/plm/beans/CustomLovBean.java new file mode 100644 index 0000000..75157ec --- /dev/null +++ b/com.connor.jd.plm/src/com/connor/jd/plm/beans/CustomLovBean.java @@ -0,0 +1,38 @@ +package com.connor.jd.plm.beans; + +import java.util.ArrayList; +import java.util.List; + +public class CustomLovBean { + private List sub = new ArrayList(); + public String displayName = ""; + + public CustomLovBean(String displayName) { + super(); + this.displayName = displayName; + } + + public CustomLovBean(String displayName, String[] subArray) { + super(); + this.displayName = displayName; + translateArrayToSub(subArray); + } + + public void translateArrayToSub(String[] subArray) { + for (int i = 0; i < subArray.length; i++) { + sub.add(new CustomLovBean(subArray[i])); + } + } + + public List getSub() { + return sub; + } + + public boolean hasChild() { + return sub.size() != 0; + } + + public void addSub(CustomLovBean clb) { + sub.add(clb); + } +} diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/beans/ResultData.java b/com.connor.jd.plm/src/com/connor/jd/plm/beans/ResultData.java new file mode 100644 index 0000000..ac5430d --- /dev/null +++ b/com.connor.jd.plm/src/com/connor/jd/plm/beans/ResultData.java @@ -0,0 +1,39 @@ +package com.connor.jd.plm.beans; + +public class ResultData { + private boolean res; + private String Message; + private Object data; + + public ResultData(boolean res, String message, Object data) { + super(); + this.res = res; + Message = message; + this.data = data; + } + + public boolean isRes() { + return res; + } + + public void setRes(boolean res) { + this.res = res; + } + + public String getMessage() { + return Message; + } + + public void setMessage(String message) { + Message = message; + } + + public Object getData() { + return data; + } + + public void setData(Object data) { + this.data = data; + } + +} diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/dialog/EditClassificationDialog.java b/com.connor.jd.plm/src/com/connor/jd/plm/dialog/EditClassificationDialog.java index 76f3a88..d3b50f3 100644 --- a/com.connor.jd.plm/src/com/connor/jd/plm/dialog/EditClassificationDialog.java +++ b/com.connor.jd.plm/src/com/connor/jd/plm/dialog/EditClassificationDialog.java @@ -1,39 +1,44 @@ package com.connor.jd.plm.dialog; -import java.awt.BorderLayout; -import java.awt.Color; import java.awt.Dimension; -import java.awt.FlowLayout; -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; -import java.awt.Insets; -import java.awt.ScrollPane; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.io.File; +import java.util.Arrays; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; import java.util.Map.Entry; -import javax.swing.BorderFactory; import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JComponent; import javax.swing.JLabel; +import javax.swing.JOptionPane; import javax.swing.JPanel; +import javax.swing.JScrollPane; import javax.swing.JTextField; +import com.connor.jd.plm.beans.ClassPropBean; +import com.connor.jd.plm.utils.ExcelInfoScanner; +import com.connor.jd.plm.utils.JDMethodUtil; import com.teamcenter.rac.aif.AbstractAIFApplication; import com.teamcenter.rac.aif.AbstractAIFDialog; import com.teamcenter.rac.aifrcp.AIFUtility; import com.teamcenter.rac.kernel.TCClassificationService; import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentDataset; import com.teamcenter.rac.kernel.TCComponentICO; import com.teamcenter.rac.kernel.TCComponentItemRevision; import com.teamcenter.rac.kernel.TCException; import com.teamcenter.rac.kernel.TCSession; -import com.teamcenter.rac.kernel.ics.ICSApplicationObject; +import com.teamcenter.rac.kernel.ics.ICSAdminClass; import com.teamcenter.rac.kernel.ics.ICSProperty; import com.teamcenter.rac.kernel.ics.ICSPropertyDescription; import com.teamcenter.rac.util.MessageBox; +import cn.hutool.json.JSONObject; + public class EditClassificationDialog extends AbstractAIFDialog { /** @@ -43,9 +48,13 @@ public class EditClassificationDialog extends AbstractAIFDialog { private AbstractAIFApplication app; private TCSession session; private TCComponent target; - private Map propMap; + private Map propMap; private TCClassificationService myService; final EditClassificationDialog DIALOG = this; + private TCComponentItemRevision rev; + private int[] ids; + private String[] values; + private String[] names; public EditClassificationDialog(AbstractAIFApplication app) throws TCException { this.app = app; @@ -70,30 +79,28 @@ public class EditClassificationDialog extends AbstractAIFDialog { private void initUI() { this.setTitle("修改分类属性"); this.setAutoRequestFocus(true); - this.setResizable(true); + this.setResizable(false); this.setAlwaysOnTop(true); - JPanel rootPanel = new JPanel(new BorderLayout()); - rootPanel.setBorder(BorderFactory.createLineBorder(Color.black, 1)); - GridBagConstraints gbs = new GridBagConstraints(); - GridBagLayout gbl = new GridBagLayout(); - JPanel editPanel = new JPanel(gbl); - gbs.anchor = GridBagConstraints.NORTHWEST; - gbs.fill = GridBagConstraints.BOTH; - gbs.insets = new Insets(10, 20, 5, 10); - gbs.weighty = 0.2; - gbs.gridheight = 1; - - Map attr = null; - propMap = new HashMap(); + JPanel rootPanel = new JPanel(); + rootPanel.setLayout(null); + rootPanel.setPreferredSize(new Dimension(300, 350)); + + Map displayMap = new LinkedHashMap(); + propMap = new HashMap(); TCComponentItemRevision rev = (TCComponentItemRevision) target; + try { if (rev.getClassificationClass() != null || !"".equals(rev.getClassificationClass())) { try { - attr = rev.getClassificationAttributes(); + TCComponentICO ico = rev.getClassificationObjects()[0]; - for (Entry entry : attr.entrySet()) { - System.out.println(entry.getKey() + "===>" + entry.getValue()); + ICSProperty[] props = ico.getICSProperties(true); + ICSPropertyDescription[] desc = ico.getICSPropertyDescriptors(); + for (int i = 0; i < props.length; i++) { + System.out.println(props[i].getId() + "===>" + props[i].getValue()); + displayMap.put(props[i].getId(), + new ClassPropBean(props[i].getId(), desc[i].getName(), props[i].getValue())); } } catch (TCException e1) { // TODO Auto-generated catch block @@ -108,44 +115,84 @@ public class EditClassificationDialog extends AbstractAIFDialog { e.printStackTrace(); } - if (attr != null) { - int num = 0; - JLabel[] names = new JLabel[attr.size()]; - JTextField[] values = new JTextField[attr.size()]; - for (Entry entry : attr.entrySet()) { - gbs.gridwidth = 1; - gbs.weightx = 0.4; - names[num] = new JLabel(entry.getKey() + ":"); - gbl.setConstraints(names[num], gbs); - gbs.gridwidth = GridBagConstraints.REMAINDER; - gbs.weightx = 2; - values[num] = new JTextField(entry.getValue()); - propMap.put(entry.getKey(), values[num]); - gbl.setConstraints(values[num], gbs); - editPanel.add(names[num]); - editPanel.add(values[num]); - num++; + if (displayMap.size() == 0) { + return; + } + + String uid = JDMethodUtil.getPrefStr("jd_class_prop_option", session); + System.out.println("uid======>" + uid); + Map propOption = null; + try { + TCComponent comp = session.stringToComponent(uid); + if (comp != null) { + TCComponentDataset op = (TCComponentDataset) comp; + String temp = System.getenv("temp"); + String[] types = op.getProperty("ref_names").split(","); + File optionFile = op.getFiles(types[0], temp)[0]; + optionFile.deleteOnExit(); + System.out.println(rev.getItem().getProperty("object_type")); + propOption = ExcelInfoScanner.getClassPropOptions(optionFile.getPath(), + rev.getItem().getProperty("object_type")); + System.out.println("propOption count======>" + propOption.size()); } + } catch (TCException e2) { + // TODO Auto-generated catch block + e2.printStackTrace(); + } - JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); - JButton cancelBtn = new JButton("取消"); - cancelBtn.addActionListener(cancel()); - JButton okBtn = new JButton("确认"); - okBtn.addActionListener(ok()); - buttonPanel.add(okBtn); - buttonPanel.add(cancelBtn); - - ScrollPane scroll = new ScrollPane(); - scroll.add(editPanel); - scroll.setPreferredSize(new Dimension(300, 300)); - rootPanel.add(scroll, BorderLayout.CENTER); - rootPanel.add(buttonPanel, BorderLayout.SOUTH); - this.setLayout(new BorderLayout()); - this.add(rootPanel); - this.pack(); - this.centerToScreen(); - this.showDialog(); + JPanel content = new JPanel(); + content.setLayout(null); + content.setPreferredSize(new Dimension(300, displayMap.size() * (25 + 10))); + + int num = 0; + for (Entry entry : displayMap.entrySet()) { + JLabel label = new JLabel(entry.getValue().getName() + ":"); + label.setBounds(10, num * 35 + 10, 100, 25); + if (propOption != null && propOption.containsKey(entry.getKey())) { + String[] items = propOption.get(entry.getKey()).split(","); + JComboBox combo = new JComboBox(); + combo.addItem(" "); + for (String s : items) { + combo.addItem(s); + } + combo.setSelectedItem(entry.getValue().getValue()); + if (combo.getSelectedItem() == null || combo.getSelectedIndex() < 0) { + combo.addItem(entry.getValue().getValue()); + combo.setSelectedItem(entry.getValue().getValue()); + } + combo.setBounds(130, num * 35 + 10, 150, 25); + propMap.put(entry.getValue().getName(), combo); + content.add(combo); + } else { + JTextField text = new JTextField(entry.getValue().getValue()); + text.setBounds(130, num * 35 + 10, 150, 25); + propMap.put(entry.getValue().getName(), text); + content.add(text); + } + + content.add(label); + + num++; } + + JButton okBtn = new JButton("确认"); + okBtn.setBounds(40, 310, 100, 25); + okBtn.setSelected(true); + okBtn.addActionListener(ok()); + JButton cancelBtn = new JButton("取消"); + cancelBtn.setBounds(160, 310, 100, 25); + cancelBtn.addActionListener(cancel()); + + JScrollPane jsp = new JScrollPane(content); + jsp.setBounds(0, 0, 300, 300); + jsp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); + rootPanel.add(jsp); + rootPanel.add(okBtn); + rootPanel.add(cancelBtn); + this.add(rootPanel); + this.pack(); + this.centerToScreen(); + this.showDialog(); } private ActionListener ok() { @@ -154,7 +201,7 @@ public class EditClassificationDialog extends AbstractAIFDialog { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub - TCComponentItemRevision rev = (TCComponentItemRevision) target; + rev = (TCComponentItemRevision) target; saveClassification(rev); // try { @@ -193,7 +240,6 @@ public class EditClassificationDialog extends AbstractAIFDialog { private boolean saveClassification(TCComponentItemRevision rev) { try { - ICSApplicationObject icsAppObj = myService.newICSApplicationObject("ICM"); TCComponentICO[] icoS = rev.getClassificationObjects(); String classID = rev.getClassificationClass(); if (icoS == null || icoS.length == 0) { @@ -203,27 +249,107 @@ public class EditClassificationDialog extends AbstractAIFDialog { TCComponentICO ico = icoS[i]; ICSPropertyDescription[] desc = ico.getICSPropertyDescriptors(); ICSProperty[] oldICSProps = ico.getICSProperties(true); - ICSProperty[] newICSProps = new ICSProperty[oldICSProps.length]; + ids = new int[oldICSProps.length]; + values = new String[oldICSProps.length]; + names = new String[oldICSProps.length]; for (int j = 0; j < oldICSProps.length; j++) { - ICSProperty icsProp = oldICSProps[j]; - // icsProp.setValue("1111"); - newICSProps[j] = new ICSProperty(icsProp.getId(), "111111"); + ids[j] = oldICSProps[j].getId(); + if (propMap.get(desc[j].getName()) instanceof JComboBox) { + String str = ((JComboBox) propMap.get(desc[j].getName())).getSelectedItem().toString(); + values[j] = " ".equals(str) ? "" : str; + } else { + values[j] = ((JTextField) propMap.get(desc[j].getName())).getText(); + } + names[j] = desc[j].getName(); } - for (int j = 0; j < oldICSProps.length; j++) { - newICSProps[j].setValue(propMap.get(desc[j].getName()).getText()); + + JSONObject obj = new JSONObject(); + obj.put("ids", ids); + obj.put("values", values); + String prop = obj.toString(); +// prop = prop.replace("\"", "\\\""); + String server = JDMethodUtil.getPrefStr("jd2_server_ip", session); + if (server == null || "".equals(server)) { + MessageBox.post("未配置jd2_server_ip首选项", "错误", MessageBox.ERROR); + return false; } - ico.delete(); - icsAppObj.create(myService.getTCComponentId(rev), myService.getTCComponentUid(rev)); - icsAppObj.setView(classID); + String url = "http://" + server + ":8880/api/sendClassification"; + Map paramMap = new HashMap(); + String uid = rev.getUid(); + paramMap.put("uid", uid); + paramMap.put("cid", classID); + paramMap.put("prop", prop); + System.out.println(url); + System.out.println(prop); + final String URL = url; + final Map PARAMMAP = paramMap; + final TCComponentItemRevision REV = rev; - icsAppObj.setProperties(newICSProps); - icsAppObj.save(); + new Thread(new Runnable() { + @Override + public void run() { + // TODO Auto-generated method stub + cn.hutool.http.HttpUtil.post(URL, PARAMMAP); + finish(); + } + }).start(); } - rev.refresh(); } catch (TCException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } return true; } + + private void finish() { + try { + rev.refresh(); + String[] prefArr = JDMethodUtil.getPrefStrArray("jd2_custom_display_name", session); + String classAddress = getClassificationAddress(rev.getClassificationClass()); + System.out.println("classAddress=====>" + classAddress); + for (String pref : prefArr) { + String[] className = pref.split(":")[0].split("/"); + if (classAddress.contains(className[0]) && classAddress.contains(className[1])) { + String[] prefClassNamesArr = pref.split(":")[1].split(","); + System.out.println("pref class porp names=====>" + Arrays.toString(prefClassNamesArr)); + StringBuilder builder = new StringBuilder(); + for (int i = 0; i < prefClassNamesArr.length; i++) { + System.out.println(prefClassNamesArr[i]); + for (int ii = 0; ii < names.length; ii++) { + System.out.println(names[ii]); + if (prefClassNamesArr[i].equals(names[ii]) && !"".equals(values[ii].trim())) { + builder.append(values[ii] + ","); + } + } + } + String temp = builder.toString().substring(0, builder.toString().length() - 1); + System.out.println("class porp values=====>" + temp); + session.getUserService().call("bs_bypass", new Object[] { true }); + rev.lock(); + rev.setProperty("jd2_flfh", temp); + rev.save(); + rev.unlock(); + session.getUserService().call("bs_bypass", new Object[] { false }); + break; + } + } + } catch (TCException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + JOptionPane.showMessageDialog(null, "首选项jd2_custom_display_name配置有误,请检查\r\n" + e.getMessage(), "提示", + JOptionPane.WARNING_MESSAGE); + return; + } + System.out.println("success"); + } + + private String getClassificationAddress(String classId) throws TCException { + ICSAdminClass clazz = session.getClassificationService().newICSAdminClass(); + clazz.load(classId); + if ("ICM".equals(clazz.askClassId())) { + return "根"; + } + return clazz.getName() + "=>" + getClassificationAddress(clazz.getParent()); + } + } diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/dialog/MsgDialog.java b/com.connor.jd.plm/src/com/connor/jd/plm/dialog/MsgDialog.java deleted file mode 100644 index 19da49f..0000000 --- a/com.connor.jd.plm/src/com/connor/jd/plm/dialog/MsgDialog.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.connor.jd.plm.dialog; - -import javafx.scene.control.Dialog; - -public class MsgDialog extends Dialog { - -} diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/dialogs/BOMManagementFrame.java b/com.connor.jd.plm/src/com/connor/jd/plm/dialogs/BOMManagementFrame.java new file mode 100644 index 0000000..5233696 --- /dev/null +++ b/com.connor.jd.plm/src/com/connor/jd/plm/dialogs/BOMManagementFrame.java @@ -0,0 +1,1608 @@ +package com.connor.jd.plm.dialogs; + +import java.awt.BorderLayout; +import java.awt.CardLayout; +import java.awt.Color; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.sql.SQLException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Vector; + +import javax.swing.BorderFactory; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JDialog; +import javax.swing.JFileChooser; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.JTextArea; +import javax.swing.JTextField; +import javax.swing.JTree; +import javax.swing.RowSorter; +import javax.swing.filechooser.FileSystemView; +import javax.swing.table.DefaultTableModel; +import javax.swing.table.TableRowSorter; +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.DefaultTreeCellRenderer; +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreeSelectionModel; + +import com.connor.jd.plm.beans.BOMManageTableBean; +import com.connor.jd.plm.beans.CheckBoxPo; +import com.connor.jd.plm.beans.CustomLovBean; +import com.connor.jd.plm.beans.ResultData; +import com.connor.jd.plm.table.MyCellEditor4; +import com.connor.jd.plm.table.MyCellRenderer; +import com.connor.jd.plm.utils.DBConnectionUtil; +import com.connor.jd.plm.utils.DBUtil; +import com.connor.jd.plm.utils.DatePickerUtil; +import com.connor.jd.plm.utils.DialogUtil; +import com.connor.jd.plm.utils.JDMethodUtil; +import com.connor.jd.plm.utils.KeyValComboBox; +import com.connor.jd.plm.utils.StringCreateUtil; +import com.eltima.components.ui.DatePicker; +import com.teamcenter.rac.aif.AbstractAIFApplication; +import com.teamcenter.rac.aif.kernel.AIFComponentContext; +import com.teamcenter.rac.aifrcp.AIFUtility; +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.TCComponentItemRevision; +import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.kernel.TCTypeService; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.db.Db; +import cn.hutool.db.Entity; +import cn.hutool.db.sql.Condition; + +public class BOMManagementFrame extends JFrame { + private AbstractAIFApplication app; + private TCSession session; + private CardLayout rootSwitch = new CardLayout(); + private String[] colDisplayNames = new String[] { "选择", "组件对象", "子件对象", "单位", "数量", "状态" }; + private String[] colDisplayNames2 = new String[] { "序号", "修改用户", "更改时间", "更改内容" }; + private JPanel root; + private Map uiMap = new HashMap(); + private Map tableDataMap = new HashMap(); + private BOMManagementFrame $this; + private List logDataList; + private Map winMap = new HashMap(); + private TCComponentItemRevision targetRev; + private TCComponentItemRevision targetRev2; + private boolean isLogcreated = false; + private int doIndex = 0; + private boolean complate = false; + private List checkItemType = new ArrayList(); + + public BOMManagementFrame(AbstractAIFApplication app) { + super(); + this.app = app; + this.session = (TCSession) app.getSession(); + TCComponent target = (TCComponent) AIFUtility.getCurrentApplication().getTargetComponent(); + try { + target.setProperty("object_string", "test"); + } catch (TCException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + $this = this; + String[] prefArray = JDMethodUtil.getPrefStrArray("connor_bom_check_type", session); + if (prefArray != null) { + checkItemType = Arrays.asList(prefArray); + } + init(); + } + + private void init() { + this.setTitle("BOM管理"); + this.setSize(new Dimension(1200, 800)); + this.setLayout(new BorderLayout()); + this.setResizable(false); + this.setAlwaysOnTop(true); + this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + this.setLocationRelativeTo(null); + + Container container = this.getContentPane(); + container.setLayout(new BorderLayout()); + container.setPreferredSize(new Dimension(1200, 800)); + + TCTypeService typeService = session.getTypeService(); + Vector unitVector = new Vector(); + try { + TCComponent[] uomArray = typeService.getTypeComponent("UnitOfMeasure").extent(); + unitVector.add(new CheckBoxPo(" ", " ")); + for (TCComponent comp : uomArray) { + unitVector.add(new CheckBoxPo(comp.toString(), comp)); + } + + } catch (TCException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + // 头部 + JPanel topBtnPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + JButton[] topBtns = new JButton[5]; + topBtns[0] = new JButton("批量替换"); + topBtns[1] = new JButton("批量更改"); + topBtns[2] = new JButton("批量新增"); + topBtns[3] = new JButton("批量删除"); + topBtns[4] = new JButton("更新日志"); +// topBtns[5] = new JButton("测试按钮"); + for (JButton btn : topBtns) { + topBtnPanel.add(btn); + btn.addActionListener(panelSwitch()); + } + container.add(topBtnPanel, BorderLayout.NORTH); + + // root + root = new JPanel(rootSwitch); + + // 批量替换 + JPanel p1 = new JPanel(); + p1.setLayout(null); + + // 批量替换左边 + JPanel p1Left = new JPanel(); + p1Left.setLayout(null); + p1Left.setBounds(0, 0, 800, 800); + p1Left.setBorder(BorderFactory.createEtchedBorder()); + + JLabel p1TargetLabel = new JLabel("目标物料编码"); + p1TargetLabel.setBounds(20, 20, 100, 25); + JButton p1TargetBtn = new JButton(); + uiMap.put("p1TargetBtn", p1TargetBtn); + p1TargetBtn.setBounds(130, 20, 400, 25); + JLabel p1ReplaceLabel = new JLabel("替换物料编码"); + p1ReplaceLabel.setBounds(20, 60, 100, 25); + JButton p1ReplaceBtn = new JButton(); + uiMap.put("p1ReplaceBtn", p1ReplaceBtn); + p1ReplaceBtn.setBounds(130, 60, 400, 25); + JLabel p1UnitLabel = new JLabel("单位"); + p1UnitLabel.setBounds(560, 60, 50, 25); + KeyValComboBox p1UnitCombo = new KeyValComboBox(unitVector); + uiMap.put("p1UnitCombo", p1UnitCombo); + p1UnitCombo.setBounds(610, 60, 50, 25); + JLabel p1NumLabel = new JLabel("数量"); + p1NumLabel.setBounds(680, 60, 50, 25); + JTextField p1NumText = new JTextField(); + uiMap.put("p1NumText", p1NumText); + p1NumText.setBounds(730, 60, 50, 25); + + JCheckBox p1SelectAll = new JCheckBox("全选"); + uiMap.put("p1SelectAll", p1SelectAll); + p1SelectAll.setBounds(20, 100, 100, 25); + DefaultTableModel p1model = new DefaultTableModel(colDisplayNames, 0) { + @Override + public boolean isCellEditable(int paramInt1, int paramInt2) { + if (paramInt2 == 0) { + return true; + } + return false; + } + + @Override + public Class getColumnClass(int paramInt) { + // TODO Auto-generated method stub + if (paramInt == 0) { + return Integer.class; + } + return super.getColumnClass(paramInt); + } + }; + JTable p1Table = new JTable(p1model); + uiMap.put("p1Table", p1Table); + p1Table.getColumnModel().getColumn(0).setMinWidth(60); + p1Table.getColumnModel().getColumn(0).setMaxWidth(60); + p1Table.getColumnModel().getColumn(1).setMinWidth(200); + p1Table.getColumnModel().getColumn(2).setMinWidth(200); + p1Table.getColumnModel().getColumn(3).setMinWidth(100); + p1Table.getColumnModel().getColumn(4).setMinWidth(100); + p1Table.getColumnModel().getColumn(5).setMinWidth(100); + p1Table.getColumnModel().getColumn(0).setCellRenderer(new MyCellRenderer()); + p1Table.getColumnModel().getColumn(0).setCellEditor(new MyCellEditor4(new JTextField())); + p1Table.setRowHeight(25); + p1Table.setAutoscrolls(true); + p1Table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + p1Table.getTableHeader().setReorderingAllowed(false); + RowSorter p1sorter = new TableRowSorter(p1model); + p1Table.setRowSorter(p1sorter); + JScrollPane p1jsp = new JScrollPane(p1Table); + p1jsp.setBounds(20, 130, 760, 500); + + JButton p1BottomBtn1 = new JButton("批量升版"); + p1BottomBtn1.setBounds(100, 650, 100, 25); + JButton p1BottomBtn2 = new JButton("批量替换"); + p1BottomBtn2.setBounds(300, 650, 100, 25); + JButton p1BottomBtn3 = new JButton("取消"); + p1BottomBtn3.setBounds(500, 650, 100, 25); + + p1Left.add(p1TargetLabel); + p1Left.add(p1TargetBtn); + p1Left.add(p1ReplaceLabel); + p1Left.add(p1ReplaceBtn); + p1Left.add(p1UnitLabel); + p1Left.add(p1UnitCombo); + p1Left.add(p1NumLabel); + p1Left.add(p1NumText); + p1Left.add(p1SelectAll); + p1Left.add(p1jsp); + p1Left.add(p1BottomBtn1); + p1Left.add(p1BottomBtn2); + p1Left.add(p1BottomBtn3); + + // 批量替换右边 + JPanel p1Right = new JPanel(); + uiMap.put("p1Right", p1Right); + p1Right.setLayout(null); + p1Right.setBounds(800, 0, 400, 800); + p1Right.setBorder(BorderFactory.createEtchedBorder()); + + JScrollPane p1TreePanel = new JScrollPane(); + uiMap.put("p1TreePanel", p1TreePanel); + p1TreePanel.setBounds(20, 130, 360, 500); + p1Right.add(p1TreePanel); + + // 绑定事件 + p1SelectAll.addItemListener(selectAll(p1Table)); + p1Table.addMouseListener(showTree(p1Right)); + p1BottomBtn3.addActionListener(cancel()); + p1BottomBtn1.addActionListener(batchRevise(p1Table, p1SelectAll)); + p1BottomBtn2.addActionListener(batchReplace()); + p1TargetBtn.addActionListener(clickSearch(p1Table, p1SelectAll)); + p1ReplaceBtn.addActionListener(clickSearch(null, null)); + + p1.add(p1Left); + p1.add(p1Right); + + // 批量更改 + JPanel p2 = new JPanel(); + p2.setLayout(null); + + // 批量更改左边 + JPanel p2Left = new JPanel(); + p2Left.setLayout(null); + p2Left.setBounds(0, 0, 800, 800); + p2Left.setBorder(BorderFactory.createEtchedBorder()); + + JLabel p2TargetLabel = new JLabel("目标物料编码"); + p2TargetLabel.setBounds(20, 20, 100, 25); + JButton p2TargetBtn = new JButton(); + uiMap.put("p2TargetBtn", p2TargetBtn); + p2TargetBtn.setBounds(130, 20, 400, 25); + JLabel p2ChangeNumLabel = new JLabel("更改用量"); + p2ChangeNumLabel.setBounds(20, 60, 100, 25); + JTextField p2NumText = new JTextField(); + uiMap.put("p2NumText", p2NumText); + p2NumText.setBounds(130, 60, 50, 25); + + JCheckBox p2SelectAll = new JCheckBox("全选"); + uiMap.put("p2SelectAll", p2SelectAll); + p2SelectAll.setBounds(20, 100, 100, 25); + DefaultTableModel p2model = new DefaultTableModel(colDisplayNames, 0) { + @Override + public boolean isCellEditable(int paramInt1, int paramInt2) { + if (paramInt2 == 0) { + return true; + } + return false; + } + + @Override + public Class getColumnClass(int paramInt) { + // TODO Auto-generated method stub + if (paramInt == 0) { + return Integer.class; + } + return super.getColumnClass(paramInt); + } + }; + JTable p2Table = new JTable(p2model); + uiMap.put("p2Table", p2Table); + p2Table.getColumnModel().getColumn(0).setMinWidth(60); + p2Table.getColumnModel().getColumn(0).setMaxWidth(60); + p2Table.getColumnModel().getColumn(1).setMinWidth(200); + p2Table.getColumnModel().getColumn(2).setMinWidth(200); + p2Table.getColumnModel().getColumn(3).setMinWidth(100); + p2Table.getColumnModel().getColumn(4).setMinWidth(100); + p2Table.getColumnModel().getColumn(5).setMinWidth(100); + p2Table.getColumnModel().getColumn(0).setCellRenderer(new MyCellRenderer()); + p2Table.getColumnModel().getColumn(0).setCellEditor(new MyCellEditor4(new JTextField())); + p2Table.setRowHeight(25); + p2Table.setAutoscrolls(true); + p2Table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + p2Table.getTableHeader().setReorderingAllowed(false); + RowSorter p2sorter = new TableRowSorter(p2model); + p2Table.setRowSorter(p2sorter); + JScrollPane p2jsp = new JScrollPane(p2Table); + p2jsp.setBounds(20, 130, 760, 500); + + JButton p2BottomBtn1 = new JButton("批量升版"); + p2BottomBtn1.setBounds(100, 650, 100, 25); + JButton p2BottomBtn2 = new JButton("批量更改"); + p2BottomBtn2.setBounds(300, 650, 100, 25); + JButton p2BottomBtn3 = new JButton("取消"); + p2BottomBtn3.setBounds(500, 650, 100, 25); + + p2Left.add(p2TargetLabel); + p2Left.add(p2TargetBtn); + p2Left.add(p2ChangeNumLabel); + p2Left.add(p2NumText); + p2Left.add(p2SelectAll); + p2Left.add(p2jsp); + p2Left.add(p2BottomBtn1); + p2Left.add(p2BottomBtn2); + p2Left.add(p2BottomBtn3); + + // 批量更改右边 + JPanel p2Right = new JPanel(); + uiMap.put("p2Right", p2Right); + p2Right.setLayout(null); + p2Right.setBounds(800, 0, 400, 800); + p2Right.setBorder(BorderFactory.createEtchedBorder()); + + JScrollPane p2TreePanel = new JScrollPane(); + uiMap.put("p2TreePanel", p2TreePanel); + p2TreePanel.setBounds(20, 130, 360, 500); + p2Right.add(p2TreePanel); + + // 绑定事件 + p2SelectAll.addItemListener(selectAll(p2Table)); + p2Table.addMouseListener(showTree(p2Right)); + p2BottomBtn3.addActionListener(cancel()); + p2BottomBtn1.addActionListener(batchRevise(p2Table, p2SelectAll)); + p2BottomBtn2.addActionListener(batchModify()); + p2TargetBtn.addActionListener(clickSearch(p2Table, p2SelectAll)); + + p2.add(p2Left); + p2.add(p2Right); + + // 批量新增 + JPanel p3 = new JPanel(); + p3.setLayout(null); + + // 批量新增左边 + JPanel p3Left = new JPanel(); + p3Left.setLayout(null); + p3Left.setBounds(0, 0, 800, 800); + p3Left.setBorder(BorderFactory.createEtchedBorder()); + + JLabel p3TargetLabel = new JLabel("参考物料编码"); + p3TargetLabel.setBounds(20, 20, 100, 25); + JButton p3TargetBtn = new JButton(); + uiMap.put("p3TargetBtn", p3TargetBtn); + p3TargetBtn.setBounds(130, 20, 400, 25); + JLabel p3ReplaceLabel = new JLabel("新增物料编码"); + p3ReplaceLabel.setBounds(20, 60, 100, 25); + JButton p3AddBtn = new JButton(); + uiMap.put("p3AddBtn", p3AddBtn); + p3AddBtn.setBounds(130, 60, 400, 25); + JLabel p3UnitLabel = new JLabel("单位"); + p3UnitLabel.setBounds(560, 60, 50, 25); + KeyValComboBox p3UnitCombo = new KeyValComboBox(unitVector); + uiMap.put("p3UnitCombo", p3UnitCombo); + p3UnitCombo.setBounds(610, 60, 50, 25); + JLabel p3NumLabel = new JLabel("数量"); + p3NumLabel.setBounds(680, 60, 50, 25); + JTextField p3NumText = new JTextField(); + uiMap.put("p3NumText", p3NumText); + p3NumText.setBounds(730, 60, 50, 25); + + JCheckBox p3SelectAll = new JCheckBox("全选"); + uiMap.put("p3SelectAll", p3SelectAll); + p3SelectAll.setBounds(20, 100, 100, 25); + DefaultTableModel p3model = new DefaultTableModel(colDisplayNames, 0) { + @Override + public boolean isCellEditable(int paramInt1, int paramInt2) { + if (paramInt2 == 0) { + return true; + } + return false; + } + + @Override + public Class getColumnClass(int paramInt) { + // TODO Auto-generated method stub + if (paramInt == 0) { + return Integer.class; + } + return super.getColumnClass(paramInt); + } + }; + JTable p3Table = new JTable(p3model); + uiMap.put("p3Table", p3Table); + p3Table.getColumnModel().getColumn(0).setMinWidth(60); + p3Table.getColumnModel().getColumn(0).setMaxWidth(60); + p3Table.getColumnModel().getColumn(1).setMinWidth(200); + p3Table.getColumnModel().getColumn(2).setMinWidth(200); + p3Table.getColumnModel().getColumn(3).setMinWidth(100); + p3Table.getColumnModel().getColumn(4).setMinWidth(100); + p3Table.getColumnModel().getColumn(5).setMinWidth(100); + p3Table.getColumnModel().getColumn(0).setCellRenderer(new MyCellRenderer()); + p3Table.getColumnModel().getColumn(0).setCellEditor(new MyCellEditor4(new JTextField())); + p3Table.setRowHeight(25); + p3Table.setAutoscrolls(true); + p3Table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + p3Table.getTableHeader().setReorderingAllowed(false); + RowSorter p3sorter = new TableRowSorter(p3model); + p3Table.setRowSorter(p3sorter); + JScrollPane p3jsp = new JScrollPane(p3Table); + p3jsp.setBounds(20, 130, 760, 500); + + JButton p3BottomBtn1 = new JButton("批量升版"); + p3BottomBtn1.setBounds(100, 650, 100, 25); + JButton p3BottomBtn2 = new JButton("批量新增"); + p3BottomBtn2.setBounds(300, 650, 100, 25); + JButton p3BottomBtn3 = new JButton("取消"); + p3BottomBtn3.setBounds(500, 650, 100, 25); + + p3Left.add(p3TargetLabel); + p3Left.add(p3TargetBtn); + p3Left.add(p3ReplaceLabel); + p3Left.add(p3AddBtn); + p3Left.add(p3UnitLabel); + p3Left.add(p3UnitCombo); + p3Left.add(p3NumLabel); + p3Left.add(p3NumText); + p3Left.add(p3SelectAll); + p3Left.add(p3jsp); + p3Left.add(p3BottomBtn1); + p3Left.add(p3BottomBtn2); + p3Left.add(p3BottomBtn3); + + // 批量新增右边 + JPanel p3Right = new JPanel(); + uiMap.put("p3Right", p3Right); + p3Right.setLayout(null); + p3Right.setBounds(800, 0, 400, 800); + p3Right.setBorder(BorderFactory.createEtchedBorder()); + + JScrollPane p3TreePanel = new JScrollPane(); + uiMap.put("p3TreePanel", p3TreePanel); + p3TreePanel.setBounds(20, 130, 360, 500); + p3Right.add(p3TreePanel); + + // 绑定事件 + p3SelectAll.addItemListener(selectAll(p3Table)); + p3Table.addMouseListener(showTree(p3Right)); + p3BottomBtn3.addActionListener(cancel()); + p3BottomBtn1.addActionListener(batchRevise(p3Table, p3SelectAll)); + p3BottomBtn2.addActionListener(batchAdd()); + p3TargetBtn.addActionListener(clickSearch(p3Table, p3SelectAll)); + p3AddBtn.addActionListener(clickSearch(null, null)); + + p3.add(p3Left); + p3.add(p3Right); + + // 批量删除 + JPanel p4 = new JPanel(); + p4.setLayout(null); + + // 批量删除左边 + JPanel p4Left = new JPanel(); + p4Left.setLayout(null); + p4Left.setBounds(0, 0, 800, 800); + p4Left.setBorder(BorderFactory.createEtchedBorder()); + + JLabel p4TargetLabel = new JLabel("目标物料编码"); + p4TargetLabel.setBounds(20, 20, 100, 25); + JButton p4TargetBtn = new JButton(); + uiMap.put("p4TargetBtn", p4TargetBtn); + p4TargetBtn.setBounds(130, 20, 400, 25); + + JCheckBox p4SelectAll = new JCheckBox("全选"); + uiMap.put("p4SelectAll", p4SelectAll); + p4SelectAll.setBounds(20, 100, 100, 25); + DefaultTableModel p4model = new DefaultTableModel(colDisplayNames, 0) { + @Override + public boolean isCellEditable(int paramInt1, int paramInt2) { + if (paramInt2 == 0) { + return true; + } + return false; + } + + @Override + public Class getColumnClass(int paramInt) { + // TODO Auto-generated method stub + if (paramInt == 0) { + return Integer.class; + } + return super.getColumnClass(paramInt); + } + }; + JTable p4Table = new JTable(p4model); + uiMap.put("p4Table", p4Table); + p4Table.getColumnModel().getColumn(0).setMinWidth(60); + p4Table.getColumnModel().getColumn(0).setMaxWidth(60); + p4Table.getColumnModel().getColumn(1).setMinWidth(200); + p4Table.getColumnModel().getColumn(2).setMinWidth(200); + p4Table.getColumnModel().getColumn(3).setMinWidth(100); + p4Table.getColumnModel().getColumn(4).setMinWidth(100); + p4Table.getColumnModel().getColumn(5).setMinWidth(100); + p4Table.getColumnModel().getColumn(0).setCellRenderer(new MyCellRenderer()); + p4Table.getColumnModel().getColumn(0).setCellEditor(new MyCellEditor4(new JTextField())); + p4Table.setRowHeight(25); + p4Table.setAutoscrolls(true); + p4Table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + p4Table.getTableHeader().setReorderingAllowed(false); + RowSorter p4sorter = new TableRowSorter(p4model); + p4Table.setRowSorter(p4sorter); + JScrollPane p4jsp = new JScrollPane(p4Table); + p4jsp.setBounds(20, 130, 760, 500); + + JButton p4BottomBtn1 = new JButton("批量升版"); + p4BottomBtn1.setBounds(100, 650, 100, 25); + JButton p4BottomBtn2 = new JButton("批量删除"); + p4BottomBtn2.setBounds(300, 650, 100, 25); + JButton p4BottomBtn3 = new JButton("取消"); + p4BottomBtn3.setBounds(500, 650, 100, 25); + + p4Left.add(p4TargetLabel); + p4Left.add(p4TargetBtn); + p4Left.add(p4SelectAll); + p4Left.add(p4jsp); + p4Left.add(p4BottomBtn1); + p4Left.add(p4BottomBtn2); + p4Left.add(p4BottomBtn3); + + // 批量新增右边 + JPanel p4Right = new JPanel(); + uiMap.put("p4Right", p4Right); + p4Right.setLayout(null); + p4Right.setBounds(800, 0, 400, 800); + p4Right.setBorder(BorderFactory.createEtchedBorder()); + + JScrollPane p4TreePanel = new JScrollPane(); + uiMap.put("p4TreePanel", p4TreePanel); + p4TreePanel.setBounds(20, 130, 360, 500); + p4Right.add(p4TreePanel); + + // 绑定事件 + p4SelectAll.addItemListener(selectAll(p4Table)); + p4Table.addMouseListener(showTree(p4Right)); + p4BottomBtn3.addActionListener(cancel()); + p4BottomBtn1.addActionListener(batchRevise(p4Table, p4SelectAll)); + p4BottomBtn2.addActionListener(batchRemove()); + p4TargetBtn.addActionListener(clickSearch(p4Table, p4SelectAll)); + + p4.add(p4Left); + p4.add(p4Right); + + // 更新日志 + JPanel p5 = new JPanel(); + p5.setLayout(null); + + JLabel p5UserLabel = new JLabel("修改用户"); + p5UserLabel.setBounds(20, 40, 70, 25); + JTextField p5UserText = new JTextField(); + uiMap.put("p5UserText", p5UserText); + p5UserText.setBounds(100, 40, 150, 25); + JLabel p5timeLabel = new JLabel("修改时间"); + p5timeLabel.setBounds(300, 40, 70, 25); + DatePicker p5timeStartText = DatePickerUtil.getDatePicker(null); + uiMap.put("p5timeStartText", p5timeStartText); + p5timeStartText.setBounds(380, 40, 100, 25); + JLabel toLabel = new JLabel("到"); + toLabel.setBounds(490, 40, 20, 25); + DatePicker p5timeEndText = DatePickerUtil.getDatePicker(null); + uiMap.put("p5timeEndText", p5timeEndText); + p5timeEndText.setBounds(520, 40, 100, 25); + JLabel p5ContentLabel = new JLabel("修改内容"); + p5ContentLabel.setBounds(670, 40, 70, 25); + JTextArea p5ContentText = new JTextArea(); + uiMap.put("p5ContentText", p5ContentText); + p5ContentText.setLineWrap(true); + p5ContentText.setWrapStyleWord(true); + JScrollPane p5Contentjsp = new JScrollPane(p5ContentText); + p5Contentjsp.setBounds(750, 20, 200, 80); + JButton p5Search = new JButton("搜索"); + uiMap.put("p5Search", p5Search); + p5Search.setBounds(1000, 40, 60, 25); + JButton p5Download = new JButton("日志下载"); + uiMap.put("p5Download", p5Download); + p5Download.setBounds(1080, 40, 100, 25); + + DefaultTableModel p5model = new DefaultTableModel(colDisplayNames2, 0) { + @Override + public boolean isCellEditable(int paramInt1, int paramInt2) { + return false; + } + + @Override + public Class getColumnClass(int paramInt) { + // TODO Auto-generated method stub + if (paramInt == 0) { + return Integer.class; + } + return super.getColumnClass(paramInt); + } + }; + JTable p5Table = new JTable(p5model); + uiMap.put("p5Table", p5Table); + p5Table.getColumnModel().getColumn(0).setMinWidth(60); + p5Table.getColumnModel().getColumn(0).setMaxWidth(60); + p5Table.getColumnModel().getColumn(1).setMinWidth(200); + p5Table.getColumnModel().getColumn(2).setMinWidth(200); + p5Table.getColumnModel().getColumn(3).setMinWidth(700); + p5Table.setRowHeight(25); + p5Table.setAutoscrolls(true); + p5Table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + p5Table.getTableHeader().setReorderingAllowed(false); + RowSorter p5sorter = new TableRowSorter(p5model); + p5Table.setRowSorter(p5sorter); + JScrollPane p5jsp = new JScrollPane(p5Table); + p5jsp.setBounds(20, 130, 1160, 600); + + // 绑定事件 + p5Search.addActionListener(searchLog()); + p5Download.addActionListener(downloadLog(p5Table)); + p5UserText.addKeyListener(logSearchEnter()); + p5timeStartText.addKeyListener(logSearchEnter()); + p5timeEndText.addKeyListener(logSearchEnter()); + + p5.add(p5UserLabel); + p5.add(p5UserText); + p5.add(p5timeLabel); + p5.add(p5timeStartText); + p5.add(toLabel); + p5.add(p5timeEndText); + p5.add(p5ContentLabel); + p5.add(p5Contentjsp); + p5.add(p5Search); + p5.add(p5Download); + p5.add(p5jsp); + + root.add("batchReplace", p1); + root.add("batchModify", p2); + root.add("batchAdd", p3); + root.add("batchRemove", p4); + root.add("updateLog", p5); + + rootSwitch.show(root, "batchReplace"); + container.add(root, BorderLayout.CENTER); + this.setVisible(true); + } + + private ActionListener panelSwitch() { + return new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + String text = ((JButton) e.getSource()).getText(); + switch (text) { + case "批量替换": + clearTable((JTable) uiMap.get("p1Table"), (JCheckBox) uiMap.get("p1SelectAll")); + ((JScrollPane) uiMap.get("p1TreePanel")).removeAll(); + rootSwitch.show(root, "batchReplace"); + break; + case "批量更改": + clearTable((JTable) uiMap.get("p2Table"), (JCheckBox) uiMap.get("p2SelectAll")); + ((JScrollPane) uiMap.get("p2TreePanel")).removeAll(); + rootSwitch.show(root, "batchModify"); + break; + case "批量新增": + clearTable((JTable) uiMap.get("p3Table"), (JCheckBox) uiMap.get("p3SelectAll")); + ((JScrollPane) uiMap.get("p3TreePanel")).removeAll(); + rootSwitch.show(root, "batchAdd"); + break; + case "批量删除": + clearTable((JTable) uiMap.get("p4Table"), (JCheckBox) uiMap.get("p4SelectAll")); + ((JScrollPane) uiMap.get("p4TreePanel")).removeAll(); + rootSwitch.show(root, "batchRemove"); + break; + case "更新日志": + createLogDataSourceTable(); + clearTable((JTable) uiMap.get("p5Table"), null); + rootSwitch.show(root, "updateLog"); + break; + default: +// createLogDataSourceTable(); + } + } + }; + } + + private void showWhereUesd(JTable table, JCheckBox selectAll) { + DefaultTableModel model = (DefaultTableModel) table.getModel(); + // TODO Auto-generated method stub + clearTable(table, selectAll); + if (table == null || targetRev == null) { + return; + } + long startTime = System.currentTimeMillis(); + List tableDataList = new ArrayList(); + try { + String revString = targetRev.getProperty("object_string"); + TCComponent[] usedComps = targetRev.whereUsed((short) 0); + System.out.println("装配个数======>" + usedComps.length); + TCTypeService service = session.getTypeService(); + TCComponentBOMWindowType winType = (TCComponentBOMWindowType) service.getTypeComponent("BOMWindow"); + + tableDataMap.clear(); + Map usedMap = removeDuplicates(usedComps); + for (Entry entry : usedMap.entrySet()) { + TCComponentItemRevision parentRev = (TCComponentItemRevision) entry.getValue(); + String parentString = parentRev.getProperty("object_string"); + TCComponent[] statusArray = parentRev.getRelatedComponents("release_status_list"); + String status = ""; + if (statusArray != null && statusArray.length > 0) { + status = statusArray[statusArray.length - 1].getProperty("object_name"); + } + TCComponentBOMWindow win = winType.create(null); + TCComponentBOMLine topLine = win.setWindowTopLine(parentRev.getItem(), parentRev, null, null); + winMap.put(parentString, win); + AIFComponentContext[] aifs = topLine.getChildren(); + for (AIFComponentContext aif : aifs) { + TCComponentBOMLine child = (TCComponentBOMLine) aif.getComponent(); + if (revString.equals(child.getItemRevision().getProperty("object_string"))) { + + String unit = child.getProperty("bl_uom"); + String num = child.getProperty("bl_quantity"); + + Object[] rowData = new Object[] { new JCheckBox(), parentString, revString, unit, num, status }; + System.out.println(Arrays.toString(rowData)); + tableDataList.add(rowData); + tableDataMap.put(parentString, + new BOMManageTableBean(parentString, revString, parentRev, targetRev, topLine, child)); + break; + } + } + } + } catch (TCException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + + if (tableDataList == null || tableDataList.size() == 0) { + JOptionPane.showMessageDialog($this, "找到编码对应对象,但该对象没有用于任何装配,请确认编码是否正确", "提示", JOptionPane.WARNING_MESSAGE); + return; + } + + for (Object[] rowData : tableDataList) { + model.addRow(rowData); + } + table.revalidate(); + table.repaint(); + System.out.println("装配显示完成,用时" + (System.currentTimeMillis() - startTime) + "ms"); + } + + private MouseAdapter showTree(JPanel panelRight) { + return new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 2) { + JTable table = (JTable) e.getSource(); + String parentString = table.getValueAt(table.getSelectedRow(), 1).toString(); + System.out.println("select row=====>" + table.getSelectedRow()); + System.out.println("parentName=====>" + parentString); + CustomLovBean lovBean = null; + try { + lovBean = new CustomLovBean(tableDataMap.get(parentString).getChildString()); + CustomLovBean subBean = new CustomLovBean(parentString); + lovBean.addSub(subBean); + getTreeData(tableDataMap.get(parentString).getParentRev(), subBean); + } catch (TCException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + + panelRight.removeAll(); + JTree tree = createTree(lovBean); + JScrollPane treePanel = new JScrollPane(tree); + treePanel.setBounds(20, 130, 360, 500); + panelRight.add(treePanel); + panelRight.revalidate(); + panelRight.repaint(); + } + } + }; + } + + private void getTreeData(TCComponent rev, CustomLovBean lov) throws TCException { + TCComponent[] comps = rev.whereUsed((short) 0); + if (comps == null || comps.length == 0) { + return; + } + for (TCComponent comp : comps) { + CustomLovBean sub = new CustomLovBean(comp.getProperty("object_string")); + System.out.println(sub.displayName); + lov.addSub(sub); + getTreeData(comp, sub); + } + } + + private void clearTable(JTable table, JCheckBox selectAll) { + DefaultTableModel model = (DefaultTableModel) table.getModel(); + int cnt = model.getRowCount(); + for (int i = 0; i < cnt; i++) { + model.removeRow(0); + } + table.revalidate(); + table.repaint(); + if (selectAll != null) { + selectAll.setSelected(false); + } + try { + closeWin(); + } catch (TCException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + private JTree createTree(CustomLovBean lovData) { + if (lovData == null || "".equals(lovData.displayName)) { + return new JTree(); + } + DefaultMutableTreeNode root = new DefaultMutableTreeNode(lovData.displayName); + DefaultMutableTreeNode parent = root; + DefaultTreeModel treeModel = new DefaultTreeModel(root); + + initTree(lovData, parent, treeModel); + + JTree tree = new JTree(treeModel); + tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); + DefaultTreeCellRenderer cellRenderer = (DefaultTreeCellRenderer) tree.getCellRenderer(); + cellRenderer.setTextNonSelectionColor(Color.black); + cellRenderer.setTextSelectionColor(Color.blue); + return tree; + } + + private void initTree(CustomLovBean lovData, DefaultMutableTreeNode parent, DefaultTreeModel treeModel) { + if (!lovData.hasChild()) { + return; + } + List subList = lovData.getSub(); + for (CustomLovBean sub : subList) { + DefaultMutableTreeNode temp = new DefaultMutableTreeNode(sub.displayName); + treeModel.insertNodeInto(temp, parent, parent.getChildCount()); + initTree(sub, temp, treeModel); + } + } + + private ItemListener selectAll(JTable table) { + return new ItemListener() { + + @Override + public void itemStateChanged(ItemEvent e) { + // TODO Auto-generated method stub + boolean select = ((JCheckBox) e.getSource()).isSelected(); + for (int i = 0; i < table.getRowCount(); i++) { + JCheckBox checkBox = (JCheckBox) table.getValueAt(i, 0); + checkBox.setSelected(select); + table.revalidate(); + table.repaint(); + } + } + }; + } + + private ActionListener cancel() { + return new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + $this.dispose(); + } + }; + } + + private ActionListener batchRevise(JTable table, JCheckBox selectAll) { + return new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + +// TCComponentTaskTemplate taskTemplate = null; +// TCComponentProcessType processType = null; +// try { +// TCComponentTaskTemplateType taskTemplateType = (TCComponentTaskTemplateType) session +// .getTypeComponent("EPMTaskTemplate"); +// taskTemplate = taskTemplateType.find("TCM Release Process", 0); +// processType = (TCComponentProcessType) session.getTypeComponent("EPMJob"); +// } catch (TCException e2) { +// // TODO Auto-generated catch block +// e2.printStackTrace(); +// return; +// } + List selectedRowList = getselectedRow(table); + if (selectedRowList.size() == 0) { + return; + } + if (!checkAccess(selectedRowList).isRes()) { + return; + } + List msgData = new ArrayList(); + for (BOMManageTableBean bean : selectedRowList) { + try { + TCComponentItemRevision newRev = bean.getParentRev().saveAs(null); +// TCComponentProcess localTCComponentProcess = (TCComponentProcess) processType.create( +// newRev.getProperty("object_string"), "", taskTemplate, new TCComponent[] { newRev }, +// new int[] { 1 }); + msgData.add(new String[] { msgData.size() + 1 + "", bean.getParentString(), + newRev.getProperty("object_string"), "成功" }); + } catch (TCException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + JOptionPane.showMessageDialog($this, e1.getMessage(), "提示", JOptionPane.WARNING_MESSAGE); + return; + } + } + + JScrollPane jsp = DialogUtil.createTableMsg(new String[] { "序号", "版本名称(当前)", "版本名称(升版后)", "结果" }, + msgData).panel; + JOptionPane.showMessageDialog($this, jsp, "升版结果", JOptionPane.PLAIN_MESSAGE); + showWhereUesd(table, selectAll); + } + }; + } + + private Map removeDuplicates(TCComponent[] comps) throws TCException { + Map sameParentUsedMap = new HashMap(); + for (TCComponent comp : comps) { + String itemId; + if (sameParentUsedMap.containsKey(itemId = comp.getProperty("item_id"))) { + if (sameParentUsedMap.get(itemId).getProperty("item_revision_id") + .compareTo(comp.getProperty("item_revision_id")) < 0) { + sameParentUsedMap.put(itemId, comp); + } + } else { + sameParentUsedMap.put(itemId, comp); + } + } + return sameParentUsedMap; + } + + private void createLogDataSourceTable() { + if (isLogcreated) { + return; + } + String sql1 = "CREATE TABLE JD2_BOMManageLog ( id NUMBER ( 38, 0 ) primary key, modify_user VARCHAR2 ( 200 ), modify_time DATE, modify_content VARCHAR2 ( 500 ) )"; + String sql2 = "CREATE sequence JD2_BOMManageLog_seq minvalue 1 maxvalue 99999999 INCREMENT BY 1 START WITH 1"; + String sql3 = "CREATE OR REPLACE TRIGGER JD2_BOMManageLog_tri before INSERT ON JD2_BOMManageLog FOR each ROW BEGIN SELECT JD2_BOMManageLog_seq.nextval INTO : new.id FROM dual; END;"; + try { + List temp = null; + temp = Db.use(DBUtil.getDataSource(session)).findBy("user_tables", + new Condition("table_name", "JD2_BOMMANAGELOG")); + if (temp == null || temp.size() == 0) { + Db.use(DBUtil.getDataSource(session)).execute(sql1); + System.out.println("JD2_BOMMANAGELOG create success"); + } + temp = null; + temp = Db.use(DBUtil.getDataSource(session)).findBy("user_sequences", + new Condition("sequence_name", "JD2_BOMMANAGELOG_SEQ")); + if (temp == null || temp.size() == 0) { + Db.use(DBUtil.getDataSource(session)).execute(sql2); + System.out.println("JD2_BOMMANAGELOG_SEQ create success"); + } + temp = null; + temp = Db.use(DBUtil.getDataSource(session)).findBy("all_triggers", + new Condition("trigger_name", "JD2_BOMMANAGELOG_TRI")); + if (temp == null || temp.size() == 0) { + DBConnectionUtil.dbConn(session).createStatement().execute(sql3); + System.out.println("JD2_BOMManageLog_tri create success"); + } + isLogcreated = true; + System.out.println("init log success"); + } catch (Exception e) { + // TODO Auto-generated catch block + JOptionPane.showMessageDialog($this, "数据库连接失败,请检查首选项jd2_db_settings", "错误", JOptionPane.ERROR_MESSAGE); + e.printStackTrace(); + } + } + + private ActionListener searchLog() { + return new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + String username = ((JTextField) uiMap.get("p5UserText")).getText().trim(); + String content = ((JTextArea) uiMap.get("p5ContentText")).getText(); + JTable table = (JTable) uiMap.get("p5Table"); + clearTable(table, null); + if (username == null || "".equals(username)) { + return; + } + + String sql = "select * from JD2_BOMMANAGELOG where "; + if (!"*".equals(username)) { + sql += "modify_user like '%" + username + "%' and"; + } + sql += " modify_time between to_date('" + ((DatePicker) uiMap.get("p5timeStartText")).getText() + + " 00:00:00','yyyy-MM-dd hh24:mi:ss') and to_date('" + + ((DatePicker) uiMap.get("p5timeEndText")).getText() + " 23:59:59','yyyy-MM-dd hh24:mi:ss')"; + if (content != null && !"".equals(content)) { + sql += " and modify_content like '%" + content + "%'"; + } + sql += "order by MODIFY_TIME asc"; + System.out.println(sql); + try { + logDataList = Db.use(DBUtil.getDataSource(session)).query(sql); + System.out.println("log size=====>" + logDataList.size()); + DefaultTableModel model = (DefaultTableModel) table.getModel(); + for (Entity entity : logDataList) { + Object[] objArr = new Object[] { entity.get("ID"), entity.get("MODIFY_USER"), + entity.get("MODIFY_TIME"), entity.get("MODIFY_CONTENT") }; + model.addRow(objArr); + } + } catch (Exception e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + return; + } + table.revalidate(); + table.repaint(); + } + }; + } + + private ActionListener downloadLog(JTable table) { + return new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + if (table.getRowCount() > 0) { + JFileChooser chooser = new JFileChooser(); + chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + chooser.setMultiSelectionEnabled(false); + chooser.setCurrentDirectory(FileSystemView.getFileSystemView().getHomeDirectory()); + chooser.showOpenDialog($this); + File folder = chooser.getSelectedFile(); + FileWriter fileWriter = null; + String fileName = "批量更新BOM日志-" + new SimpleDateFormat("yyyyMMddHHmm").format(new Date()) + ".txt"; + try { + fileWriter = new FileWriter(folder.getPath() + File.separator + fileName);// 创建文本文件 + String temp; + System.out.println(logDataList.size()); + for (Entity entity : logDataList) { + fileWriter.write((temp = entity.get("ID").toString()) + + StringCreateUtil.createBlank(10 - temp.length()) + + (temp = entity.get("MODIFY_USER").toString()) + + StringCreateUtil.createBlank(20 - temp.length()) + + (temp = entity.get("MODIFY_TIME").toString()) + + StringCreateUtil.createBlank(30 - temp.length()) + + entity.get("MODIFY_CONTENT").toString() + "\r\n"); + } + fileWriter.flush(); + fileWriter.close(); + } catch (IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + return; + } + + JOptionPane.showMessageDialog($this, "日志导出成功\r\n路径:" + folder + File.separator + fileName, "提示", + JOptionPane.WARNING_MESSAGE); + } + } + }; + + } + + private ActionListener batchReplace() { + return new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + String numStr = ((JTextField) uiMap.get("p1NumText")).getText().trim(); + KeyValComboBox combo = (KeyValComboBox) uiMap.get("p1UnitCombo"); + String text = combo.getSelectedText().trim(); + Object value = combo.getSelectedValue(); + System.out.println(numStr); + if ("".equals(numStr) || "".equals(text) || targetRev2 == null) { + JOptionPane.showMessageDialog($this, "存在未填写的信息,请填写", "提示", JOptionPane.WARNING_MESSAGE); + return; + } + List selectedRowList = getselectedRow((JTable) uiMap.get("p1Table")); + if (selectedRowList.size() == 0) { + return; + } + if (!checkTargetAndSelect(targetRev, selectedRowList)) { + return; + } + long startTime = System.currentTimeMillis(); + updateTitleShowProgress(selectedRowList); + List msgData = new ArrayList(); + L1: for (BOMManageTableBean bean : selectedRowList) { + try { + doIndex++; + System.out.println(value.toString()); + AIFComponentContext[] aifs = bean.getParentLine().getChildren(); + for (AIFComponentContext aif : aifs) { + String objStr = ((TCComponentBOMLine) aif.getComponent()).getItemRevision() + .getProperty("object_string"); + if (objStr.equals(targetRev2.getProperty("object_string"))) { + continue L1; + } + } + bean.getParentLine().remove("", bean.getChildLine()); + TCComponentBOMLine childLine = bean.getParentLine().add(targetRev2.getItem(), targetRev2, null, + false, ""); + childLine.setReferenceProperty("bl_uom", (TCComponent) value); + childLine.setProperties(new String[] { "bl_quantity" }, new String[] { numStr }); + msgData.add( + new String[] { msgData.size() + 1 + "", bean.getParentString(), bean.getChildString(), + targetRev2.getProperty("object_string"), value.toString(), numStr, "成功" }); + } catch (TCException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + JOptionPane.showMessageDialog($this, e1.getMessage(), "提示", JOptionPane.WARNING_MESSAGE); + complate = true; + return; + } + } + try { + saveWin(); + } catch (TCException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + JOptionPane.showMessageDialog($this, e1.getMessage(), "提示", JOptionPane.WARNING_MESSAGE); + return; + } finally { + complate = true; + } + long endTime = System.currentTimeMillis(); + System.out.println("批量替换执行完毕,用时" + (endTime - startTime) + "ms"); + doLog("batchReplace", msgData); + JScrollPane jsp = DialogUtil + .createTableMsg(new String[] { "序号", "父级组件", "原子件", "替换子件", "单位", "数量", "结果" }, msgData).panel; + JOptionPane.showMessageDialog($this, jsp, + "批量替换结果 成功(" + msgData.size() + ") 用时:" + (endTime - startTime) + "ms", + JOptionPane.PLAIN_MESSAGE); + removeSelectRow((JTable) uiMap.get("p1Table")); + ((JCheckBox) uiMap.get("p1SelectAll")).setSelected(false); + } + }; + } + + private ActionListener batchModify() { + return new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + String numStr = ((JTextField) uiMap.get("p2NumText")).getText(); + List selectedRowList = getselectedRow((JTable) uiMap.get("p2Table")); + if (selectedRowList.size() == 0) { + return; + } + if (!checkTargetAndSelect(targetRev, selectedRowList)) { + return; + } + long startTime = System.currentTimeMillis(); + updateTitleShowProgress(selectedRowList); + List msgData = new ArrayList(); + for (BOMManageTableBean bean : selectedRowList) { + String oldNumStr = ""; + try { + doIndex++; + oldNumStr = bean.getChildLine().getProperty("bl_quantity"); + bean.getChildLine().setProperties(new String[] { "bl_quantity" }, new String[] { numStr }); + msgData.add(new String[] { msgData.size() + 1 + "", bean.getParentString(), + bean.getChildString(), oldNumStr, numStr, "成功" }); + } catch (TCException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + JOptionPane.showMessageDialog($this, e1.getMessage(), "提示", JOptionPane.WARNING_MESSAGE); + complate = true; + return; + } + } + try { + saveWin(); + } catch (TCException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + JOptionPane.showMessageDialog($this, e1.getMessage(), "提示", JOptionPane.WARNING_MESSAGE); + return; + } finally { + complate = true; + } + long endTime = System.currentTimeMillis(); + System.out.println("批量更改执行完毕,用时" + (endTime - startTime) + "ms"); + doLog("batchModify", msgData); + JScrollPane jsp = DialogUtil.createTableMsg(new String[] { "序号", "父级组件", "子件", "原数量", "现数量", "结果" }, + msgData).panel; + JOptionPane.showMessageDialog($this, jsp, + "批量更改结果 成功(" + msgData.size() + ") 用时:" + (endTime - startTime) + "ms", + JOptionPane.PLAIN_MESSAGE); +// ((JTextField) uiMap.get("p2NumText")).setText(""); + showWhereUesd((JTable) uiMap.get("p2Table"), (JCheckBox) uiMap.get("p2SelectAll")); + } + }; + } + + private ActionListener batchAdd() { + return new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + String numStr = ((JTextField) uiMap.get("p3NumText")).getText().trim(); + KeyValComboBox combo = (KeyValComboBox) uiMap.get("p3UnitCombo"); + String text = combo.getSelectedText().trim(); + Object value = combo.getSelectedValue(); + System.out.println(numStr); + if ("".equals(numStr) || "".equals(text) || targetRev2 == null) { + JOptionPane.showMessageDialog($this, "存在未填写的信息,请填写", "提示", JOptionPane.WARNING_MESSAGE); + return; + } + List selectedRowList = getselectedRow((JTable) uiMap.get("p3Table")); + if (selectedRowList.size() == 0) { + return; + } + if (!checkTargetAndSelect(targetRev, selectedRowList)) { + return; + } + long startTime = System.currentTimeMillis(); + updateTitleShowProgress(selectedRowList); + List msgData = new ArrayList(); + L1: for (BOMManageTableBean bean : selectedRowList) { + try { + doIndex++; + System.out.println(value.toString()); + AIFComponentContext[] aifs = bean.getParentLine().getChildren(); + for (AIFComponentContext aif : aifs) { + String objStr = ((TCComponentBOMLine) aif.getComponent()).getItemRevision() + .getProperty("object_string"); + if (objStr.equals(targetRev2.getProperty("object_string"))) { + continue L1; + } + } + TCComponentBOMLine childLine = bean.getParentLine().add(targetRev2.getItem(), targetRev2, null, + false, ""); + childLine.setReferenceProperty("bl_uom", (TCComponent) value); + childLine.setProperties(new String[] { "bl_quantity" }, new String[] { numStr }); + msgData.add(new String[] { msgData.size() + 1 + "", bean.getParentString(), + targetRev2.getProperty("object_string"), value.toString(), numStr, "成功" }); + } catch (TCException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + JOptionPane.showMessageDialog($this, e1.getMessage(), "提示", JOptionPane.WARNING_MESSAGE); + complate = true; + return; + } + } + try { + saveWin(); + } catch (TCException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + JOptionPane.showMessageDialog($this, e1.getMessage(), "提示", JOptionPane.WARNING_MESSAGE); + return; + } finally { + complate = true; + } + long endTime = System.currentTimeMillis(); + System.out.println("批量新增执行完毕,用时" + (endTime - startTime) + "ms"); + doLog("batchAdd", msgData); + JScrollPane jsp = DialogUtil.createTableMsg(new String[] { "序号", "父级组件", "新增子件", "单位", "数量", "结果" }, + msgData).panel; + JOptionPane.showMessageDialog($this, jsp, + "批量新增结果 成功(" + msgData.size() + ") 用时:" + (endTime - startTime) + "ms", + JOptionPane.PLAIN_MESSAGE); +// ((JButton) uiMap.get("p3TargetBtn")).setText(""); +// ((JButton) uiMap.get("p3AddBtn")).setText(""); +// ((KeyValComboBox) uiMap.get("p3UnitCombo")).setSelectedIndex(0); +// ((JTextField) uiMap.get("p3NumText")).setText(""); + showWhereUesd((JTable) uiMap.get("p3Table"), (JCheckBox) uiMap.get("p3SelectAll")); + } + }; + } + + private ActionListener batchRemove() { + return new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + List selectedRowList = getselectedRow((JTable) uiMap.get("p4Table")); + if (selectedRowList.size() == 0) { + return; + } + if (!checkTargetAndSelect(targetRev, selectedRowList)) { + return; + } + long startTime = System.currentTimeMillis(); + updateTitleShowProgress(selectedRowList); + List msgData = new ArrayList(); + for (BOMManageTableBean bean : selectedRowList) { + try { + doIndex++; + bean.getParentLine().remove("", bean.getChildLine()); + msgData.add(new String[] { msgData.size() + 1 + "", bean.getParentString(), + bean.getChildString(), "成功" }); + } catch (TCException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + JOptionPane.showMessageDialog($this, e1.getMessage(), "提示", JOptionPane.WARNING_MESSAGE); + complate = true; + return; + } + } + try { + saveWin(); + } catch (TCException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + JOptionPane.showMessageDialog($this, e1.getMessage(), "提示", JOptionPane.WARNING_MESSAGE); + return; + } finally { + complate = true; + } + long endTime = System.currentTimeMillis(); + System.out.println("批量删除执行完毕,用时" + (endTime - startTime) + "ms"); + doLog("batchRemove", msgData); + JScrollPane jsp = DialogUtil.createTableMsg(new String[] { "序号", "父级组件", "删除子件", "结果" }, msgData).panel; + JOptionPane.showMessageDialog($this, jsp, + "批量删除结果 成功(" + msgData.size() + ") 用时:" + (endTime - startTime) + "ms", + JOptionPane.PLAIN_MESSAGE); +// ((JButton) uiMap.get("p4TargetBtn")).setText(""); +// clearTable((JTable) uiMap.get("p4Table"), (JCheckBox) uiMap.get("p4SelectAll")); + removeSelectRow((JTable) uiMap.get("p4Table")); + ((JCheckBox) uiMap.get("p4SelectAll")).setSelected(false); + } + }; + } + + private List getselectedRow(JTable table) { + List selectedList = new ArrayList(); + for (int i = 0; i < table.getRowCount(); i++) { + JCheckBox select = (JCheckBox) table.getValueAt(i, 0); + if (select.isSelected()) { + System.out.println("select=====>" + table.getValueAt(i, 1)); + selectedList.add(tableDataMap.get(table.getValueAt(i, 1))); + } + } + return selectedList; + } + + private void removeSelectRow(JTable table) { + DefaultTableModel model = (DefaultTableModel) table.getModel(); + int i = 0; + while (i < table.getRowCount()) { + JCheckBox select = (JCheckBox) table.getValueAt(i, 0); + if (select.isSelected()) { + model.removeRow(i); + continue; + } + i++; + } + table.revalidate(); + table.repaint(); + } + + @Override + public void dispose() { + // TODO Auto-generated method stub + try { + closeWin(); + } catch (TCException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + super.dispose(); + } + + private void saveWin() throws TCException { + for (Entry entry : winMap.entrySet()) { + if (entry.getValue() != null) { + entry.getValue().save(); + } + + } + } + + private void closeWin() throws TCException { + saveWin(); + + for (Entry entry : winMap.entrySet()) { + entry.getValue().close(); + } + winMap.clear(); + } + + private void doLog(String operation, List msgData) { + createLogDataSourceTable(); + String content = ""; + if ("batchReplace".equals(operation)) { + content = "组件%s中子件%s替换为%s;%s;%s"; + } else if ("batchModify".equals(operation)) { + content = "组件%s中子件%s数量由%s改为%s"; + } else if ("batchAdd".equals(operation)) { + content = "组件%s新增子件%s;%s;%s"; + } else if ("batchRemove".equals(operation)) { + content = "组件%s删除子件%s"; + } + String username = ""; + try { + username = session.getUser().getUserName() + "(" + session.getUser().getUserId() + ")"; + } catch (TCException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + String datetime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); + + List sqls = new ArrayList(); + int num = StrUtil.count(content, "%s"); + for (String[] arr : msgData) { + String temp; + String[] row = new String[num]; + for (int i = 0; i < num; i++) { + row[i] = arr[i + 1]; + } + temp = String.format(content, row); + String sql = "insert into JD2_BOMMANAGELOG (MODIFY_USER,MODIFY_TIME,MODIFY_CONTENT) VALUES ('" + username + + "',to_date('" + datetime + "','yyyy-MM-dd hh24:mi:ss'),'" + temp + "')"; + sqls.add(sql); + } + + try { + Db.use(DBUtil.getDataSource(session)).executeBatch(sqls.toArray(new String[sqls.size()])); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + private ActionListener clickSearch(JTable table, JCheckBox selectAll) { + return new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + JDialog content = DialogUtil.createSearchAndSelectRevDialog($this, table, selectAll, + (JButton) e.getSource()); + } + }; + } + + public void okCallback(JTable revTable, JTable table, JCheckBox selectAll, JButton field) { + // TODO Auto-generated method stub + int rowIndex = revTable.getSelectedRow(); + if (rowIndex < 0) { + return; + } + String text = revTable.getValueAt(rowIndex, 0).toString(); + System.out.println(text); + field.setText(text); + if ("".equals(text)) { + return; + } + if (table != null) { + targetRev = (TCComponentItemRevision) revTable.getValueAt(rowIndex, 5); + showWhereUesd(table, selectAll); + } else { + targetRev2 = (TCComponentItemRevision) revTable.getValueAt(rowIndex, 5); + } + } + + private KeyAdapter logSearchEnter() { + return new KeyAdapter() { + @Override + public void keyTyped(KeyEvent e) { + // TODO Auto-generated method stub + super.keyTyped(e); + if (e.getKeyChar() == KeyEvent.VK_ENTER) { + ((JButton) uiMap.get("p5Search")).doClick(); + } + } + }; + } + + private void updateTitleShowProgress(List list) { + new Thread(new Runnable() { + + @Override + public void run() { + int num = 1; + String temp; + doIndex = 0; + while (!complate) { + $this.setTitle("正在处理" + (temp = StringCreateUtil.createPoint(num % 3)) + + StringCreateUtil.createBlank(5 - temp.length()) + list.get(doIndex).getParentString() + + " " + (doIndex + 1) + "/" + list.size()); + try { + Thread.sleep(200); + } catch (InterruptedException e) { + e.printStackTrace(); + } + num++; + } + $this.setTitle("BOM管理"); + doIndex = -1; + complate = false; + } + }).start(); + } + + private boolean checkReleaseStatus(TCComponentItemRevision rev) { + try { + System.out.println("item type======>" + rev.getItem().getType()); + if (checkItemType.contains(rev.getItem().getType())) { + return true; + } + TCComponent form = rev.getRelatedComponents("IMAN_master_form_rev")[0]; + TCComponent[] statusArray = form.getRelatedComponents("release_status_list"); + String status = ""; + if (statusArray != null && statusArray.length > 0) { + status = statusArray[statusArray.length - 1].getProperty("object_name"); + } + if ("".equals(status) || "JD2_DJJY".equals(status) || "JD2_DJKY".equals(status)) { + return false; + } + } catch (TCException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return true; + } + + private ResultData checkAccess(List data) { + for (BOMManageTableBean bean : data) { + boolean isAccess = true; + try { + isAccess = session.getTCAccessControlService().checkPrivilege(bean.getParentLine(), "WRITE"); + } catch (TCException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + if (!isAccess) { + try { + return new ResultData(false, "当前用户没有对" + bean.getParentLine().getProperty("object_string") + "的写权限", + bean.getParentLine()); + } catch (TCException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + return new ResultData(true, "", null); + } + + private boolean checkTargetAndSelect(TCComponentItemRevision rev, List data) { + if (!checkReleaseStatus(rev)) { + JOptionPane.showMessageDialog($this, "目标物料未发布或者处于冻结状态,无法保存BOM", "提示", JOptionPane.WARNING_MESSAGE); + return false; + } + ResultData res = checkAccess(data); + if (!res.isRes()) { + JOptionPane.showMessageDialog($this, res.getMessage(), "提示", JOptionPane.WARNING_MESSAGE); + return false; + } + return true; + } +} diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/dialogs/CSXWHDialog.java b/com.connor.jd.plm/src/com/connor/jd/plm/dialogs/CSXWHDialog.java index 3e0b411..a3d87b6 100644 --- a/com.connor.jd.plm/src/com/connor/jd/plm/dialogs/CSXWHDialog.java +++ b/com.connor.jd.plm/src/com/connor/jd/plm/dialogs/CSXWHDialog.java @@ -15,8 +15,9 @@ import com.connor.jd.operations.CreateTableOperation; import com.connor.jd.plm.beans.ComponentBean; import com.connor.jd.plm.beans.MachineBean; import com.connor.jd.plm.utils.DBConnectionUtil; -import com.teamcenter.rac.aif.AbstractAIFApplication; +import com.teamcenter.rac.aifrcp.AIFUtility; import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCSession; import javafx.application.Application; import javafx.beans.value.ChangeListener; @@ -49,7 +50,6 @@ import javafx.stage.Stage; public class CSXWHDialog extends Application { - private AbstractAIFApplication app; private static Connection con = null; private static PreparedStatement ps = null; private static ResultSet rs = null; @@ -57,6 +57,7 @@ public class CSXWHDialog extends Application { private ObservableList machineData = FXCollections.observableArrayList(); private ObservableList findList = FXCollections.observableArrayList(); private ObservableList findMacList = FXCollections.observableArrayList(); + private TCSession session; public CSXWHDialog() throws TCException { @@ -72,6 +73,7 @@ public class CSXWHDialog extends Application { @Override public void start(Stage arg0) throws Exception { + session = (TCSession) AIFUtility.getCurrentApplication().getSession(); msgStage = new Stage(); msgContent = new Label(""); msgContent.setFont(new Font(STYLESHEET_CASPIAN, 16)); @@ -94,7 +96,7 @@ public class CSXWHDialog extends Application { CreateTableOperation.create(); try { - con = DBConnectionUtil.dbConn("infodba", "infodba"); + con = DBConnectionUtil.dbConn(session); String sqlString = "select * from JD2_Component"; if (con == null) { msgContent.setText("连接失败"); @@ -375,7 +377,7 @@ public class CSXWHDialog extends Application { tab0.setClosable(false); // 第二个页面 try { - con = DBConnectionUtil.dbConn("infodba", "infodba"); + con = DBConnectionUtil.dbConn(session); String sqlString = "select * from JD2_Machine"; if (con == null) { System.out.print("连接失败"); @@ -520,7 +522,7 @@ public class CSXWHDialog extends Application { for (int i = 0; i < delAddList.size(); i++) { System.out.println("deList的长度" + delList.size()); System.out.println("选中的" + delAddList.get(i)); - for (int j = 0; j < findList.size(); j++) { + for (int j = 0; j < findMacList.size(); j++) { if (findMacList.get(j).getMacId() == 0) { if (delAddList.get(i) == findMacList.get(j).getAddId()) { findMacList.remove(j); @@ -640,7 +642,7 @@ public class CSXWHDialog extends Application { private void selectId(ComponentBean com) { String sql = "select component_id_seq.nextval from dual"; - con = DBConnectionUtil.dbConn("infodba", "infodba"); + con = DBConnectionUtil.dbConn(session); try { ps = con.prepareStatement(sql); rs = ps.executeQuery(); @@ -671,7 +673,7 @@ public class CSXWHDialog extends Application { private void selectMacId(MachineBean com) { String sql = "select machine_id_seq.nextval from dual"; - con = DBConnectionUtil.dbConn("infodba", "infodba"); + con = DBConnectionUtil.dbConn(session); try { ps = con.prepareStatement(sql); rs = ps.executeQuery(); @@ -700,7 +702,7 @@ public class CSXWHDialog extends Application { private void insert(ComponentBean com) { String sql = "insert into JD2_Component(test_type,test_project,test_time,test_num,test_cost) values(?,?,?,?,?)"; - con = DBConnectionUtil.dbConn("infodba", "infodba"); + con = DBConnectionUtil.dbConn(session); try { System.out.println("添加"); ps = con.prepareStatement(sql); @@ -751,7 +753,7 @@ public class CSXWHDialog extends Application { private void insertMac(MachineBean mac) { String sql = "insert into JD2_Machine(test_type,test_project,test_cost) values(?,?,?)"; - con = DBConnectionUtil.dbConn("infodba", "infodba"); + con = DBConnectionUtil.dbConn(session); try { ps = con.prepareStatement(sql); ps.setString(1, mac.getType()); @@ -795,7 +797,7 @@ public class CSXWHDialog extends Application { private void update(ComponentBean com) { String sql = "update JD2_Component set test_type=?,test_project=?,test_time=?,test_num=?,test_cost=? where test_id=?"; - con = DBConnectionUtil.dbConn("infodba", "infodba"); + con = DBConnectionUtil.dbConn(session); try { ps = con.prepareStatement(sql); ps.setString(1, com.getType()); @@ -841,7 +843,7 @@ public class CSXWHDialog extends Application { } private void update(String sql, int id) { - con = DBConnectionUtil.dbConn("infodba", "infodba"); + con = DBConnectionUtil.dbConn(session); try { ps = con.prepareStatement(sql); ps.setInt(1, id); @@ -878,7 +880,7 @@ public class CSXWHDialog extends Application { private void updateMac(MachineBean mac) { String sql = "update JD2_Machine set test_type=?,test_project=?,test_cost=? where test_id=?"; - con = DBConnectionUtil.dbConn("infodba", "infodba"); + con = DBConnectionUtil.dbConn(session); try { ps = con.prepareStatement(sql); ps.setString(1, mac.getType()); diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/dialogs/ColorMaterialBean.java b/com.connor.jd.plm/src/com/connor/jd/plm/dialogs/ColorMaterialBean.java new file mode 100644 index 0000000..318496e --- /dev/null +++ b/com.connor.jd.plm/src/com/connor/jd/plm/dialogs/ColorMaterialBean.java @@ -0,0 +1,14 @@ +package com.connor.jd.plm.dialogs; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.teamcenter.rac.kernel.TCComponentItemRevision; + +public class ColorMaterialBean { + public List colorMaterial = new ArrayList(); + public Map data = new HashMap(); + +} diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/dialogs/MyTreeCellRenderer.java b/com.connor.jd.plm/src/com/connor/jd/plm/dialogs/MyTreeCellRenderer.java new file mode 100644 index 0000000..dcaeb3f --- /dev/null +++ b/com.connor.jd.plm/src/com/connor/jd/plm/dialogs/MyTreeCellRenderer.java @@ -0,0 +1,40 @@ +package com.connor.jd.plm.dialogs; + +import java.awt.Component; + +import javax.swing.JTree; +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.DefaultTreeCellRenderer; + +import com.teamcenter.rac.kernel.TCSession; + +public class MyTreeCellRenderer extends DefaultTreeCellRenderer { + private TCSession session; + + public MyTreeCellRenderer(TCSession session) { + this.session = session; + } + + @Override + public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, + int row, boolean hasFocus) { + + super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); + + setText(value.toString()); + + if (sel) { + setForeground(getTextSelectionColor()); + } else { + setForeground(getTextNonSelectionColor()); + } + + DefaultMutableTreeNode node = (DefaultMutableTreeNode) value; + String str = node.toString(); + if (!"".equals(str)) { +// session.search(arg0, arg1, arg2) + } + + return this; + } +} diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/dialogs/TransformDesignToPartDialog.java b/com.connor.jd.plm/src/com/connor/jd/plm/dialogs/TransformDesignToPartDialog.java index 71f11de..2c9c702 100644 --- a/com.connor.jd.plm/src/com/connor/jd/plm/dialogs/TransformDesignToPartDialog.java +++ b/com.connor.jd.plm/src/com/connor/jd/plm/dialogs/TransformDesignToPartDialog.java @@ -1,10 +1,8 @@ package com.connor.jd.plm.dialogs; + import java.awt.BorderLayout; -import java.awt.Checkbox; +import java.awt.Component; import java.awt.Dimension; -import java.awt.FlowLayout; -import java.awt.HeadlessException; -import java.awt.Label; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.AdjustmentEvent; @@ -15,44 +13,35 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseWheelEvent; import java.awt.event.MouseWheelListener; -import java.awt.event.WindowEvent; -import java.awt.event.WindowListener; import java.util.ArrayList; +import java.util.Arrays; import java.util.Enumeration; import java.util.HashMap; import java.util.HashSet; -import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.Set; -import com.connor.jd.plm.beans.TransformBomBean; +import java.util.Map.Entry; + import javax.swing.BorderFactory; -import javax.swing.ComboBoxModel; import javax.swing.DefaultComboBoxModel; import javax.swing.JButton; -import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; -import javax.swing.JPopupMenu; import javax.swing.JScrollBar; import javax.swing.JScrollPane; -import javax.swing.JTextField; import javax.swing.JTree; import javax.swing.ScrollPaneConstants; -import javax.swing.event.MenuKeyEvent; -import javax.swing.event.MenuKeyListener; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeModel; -import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; - +import com.connor.jd.plm.beans.TransformBomBean; +import com.connor.jd.plm.utils.DialogUtil; import com.teamcenter.rac.aif.AbstractAIFApplication; import com.teamcenter.rac.aif.AbstractAIFDialog; -import com.teamcenter.rac.aif.AbstractAIFUIApplication; import com.teamcenter.rac.aif.kernel.AIFComponentContext; import com.teamcenter.rac.kernel.TCComponent; import com.teamcenter.rac.kernel.TCComponentBOMLine; @@ -67,7 +56,6 @@ import com.teamcenter.rac.kernel.TCTypeService; import com.teamcenter.rac.util.ButtonLayout; import com.teamcenter.rac.util.MessageBox; import com.teamcenter.rac.util.PropertyLayout; -import com.teamcenter.soaictstubs.transientTicketInfo_s; /** * 设计bom转化为物料bom @@ -91,18 +79,20 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac private int index = 1; private String[] types; TCComponentBOMWindow win; - public TransformDesignToPartDialog(AbstractAIFApplication app, TCComponentBOMLine topBomline,String[] types) { + + public TransformDesignToPartDialog(AbstractAIFApplication app, TCComponentBOMLine topBomline, String[] types) { // TODO Auto-generated constructor stub System.out.println("step:-3------------------"); comboxList = new ArrayList<>(); this.app = app; this.session = (TCSession) app.getSession(); this.topBomline = topBomline; - this.types=types; + this.types = types; createWindow(); - + initUI(); } + private void createWindow() { try { TCTypeService service = session.getTypeService(); @@ -172,7 +162,7 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac } } - }); + }); rightpane.getVerticalScrollBar().setUnitIncrement(10); rightpane.addMouseWheelListener(new MouseWheelListener() { @@ -211,8 +201,7 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac } /** - * @param line - * 所有BOM添加到树结构 + * @param line 所有BOM添加到树结构 * @param node * @throws TCException */ @@ -268,49 +257,75 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac if (e.getSource().equals(okButton)) { try { System.out.println("进行转换"); - if(win==null) + if (win == null) createWindow(); - createMaterialBom(topTree); + ColorMaterialBean bean = new ColorMaterialBean(); + createMaterialBom(topTree, bean); + if (bean.colorMaterial.size() != 0) { + System.out.println( + Arrays.deepToString(bean.colorMaterial.toArray(new String[bean.colorMaterial.size()][]))); + JScrollPane msgPanel = DialogUtil.createTableMsg(new String[] { "ID", "版本", "名称", "颜色" }, + bean.colorMaterial).panel; + int r = JOptionPane.showConfirmDialog((Component) e.getSource(), msgPanel, "颜色件确认", + JOptionPane.PLAIN_MESSAGE); + if (r == JOptionPane.OK_OPTION) { + createBom1(bean); + } else { + System.out.println("cancel"); + return; + } + } else { + createBom1(bean); + } MessageBox.post("转换bom成功", "提示", MessageBox.INFORMATION); this.dispose(); } catch (TCException e1) { - + // TODO Auto-generated catch block - MessageBox.post(e1.getMessage(),"转换bom失败" , MessageBox.INFORMATION); + MessageBox.post(e1.getMessage(), "转换bom失败", MessageBox.INFORMATION); e1.printStackTrace(); - }finally { + } finally { try { - + win.close(); - win=null; + win = null; } catch (TCException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } else if (e.getSource().equals(celButton)) { - + dispose(); } } + @SuppressWarnings("unchecked") + private void createBom1(ColorMaterialBean bean) throws TCException { + for (Entry entry : bean.data.entrySet()) { + List arg1 = entry.getValue()[1] == null ? null + : (List) entry.getValue()[1]; + List arg2 = entry.getValue()[2] == null ? null : (List) entry.getValue()[2]; + List arg3 = entry.getValue()[3] == null ? null : (List) entry.getValue()[3]; + createBom(entry.getKey(), arg1, arg2, arg3); + } + } + /** * 讲Tree对应的item选中 * * @param wl *//* - * private void checkSelected(String wl) { for (TransformBomBean bean : - * bomlist) { if (bean.map.containsKey(wl)) { bean.selectCount++; if - * (bean.selectCount > 1) { MessageBox.post("只能为当前图纸选择一个物料进行设计BOM的转换!", - * "警告", MessageBox.WARNING); return; } - * System.out.println(bean.displayName + "选中显示名"); - * System.out.println(checkBoxTreeNodelMap.containsKey(bean.displayName) - * ); checkBoxTreeNodelMap.get(bean.displayName).setSelected(true); - * findInTree(bean.displayName); TransformBomBean bean1 = - * (TransformBomBean) - * checkBoxTreeNodelMap.get(bean.displayName).getUserObject(); - * bean1.selectRev = (TCComponentItemRevision) bean.map.get(wl); } } } + * private void checkSelected(String wl) { for (TransformBomBean bean : bomlist) + * { if (bean.map.containsKey(wl)) { bean.selectCount++; if (bean.selectCount > + * 1) { MessageBox.post("只能为当前图纸选择一个物料进行设计BOM的转换!", "警告", MessageBox.WARNING); + * return; } System.out.println(bean.displayName + "选中显示名"); + * System.out.println(checkBoxTreeNodelMap.containsKey(bean.displayName) ); + * checkBoxTreeNodelMap.get(bean.displayName).setSelected(true); + * findInTree(bean.displayName); TransformBomBean bean1 = (TransformBomBean) + * checkBoxTreeNodelMap.get(bean.displayName).getUserObject(); bean1.selectRev = + * (TCComponentItemRevision) bean.map.get(wl); } } } */ /** @@ -318,8 +333,8 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac * * @param wl *//* - * private void checkDisSelected(String wl) { for (TransformBomBean bean - * : bomlist) { if (bean.map.containsKey(wl)) { bean.selectCount--; + * private void checkDisSelected(String wl) { for (TransformBomBean bean : + * bomlist) { if (bean.map.containsKey(wl)) { bean.selectCount--; * checkBoxTreeNodelMap.get(bean.displayName).setSelected(false); } } } */ @@ -329,14 +344,14 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac * @param node * @throws TCException */ - private void createMaterialBom(CheckBoxTreeNode node) throws TCException { + private void createMaterialBom(CheckBoxTreeNode node, ColorMaterialBean colorMaterialBean) throws TCException { // System.out.println("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"); TransformBomBean bean = (TransformBomBean) node.getUserObject(); TCComponentItemRevision materialRev = bean.selectRev; // 存在已经发布的物料的bom /* - * if (WXMethodUtil.isRevBomReleased(materialRev)) { - * System.out.println("发布"); return; } + * if (WXMethodUtil.isRevBomReleased(materialRev)) { System.out.println("发布"); + * return; } */ if (isLoopBom(node)) { @@ -361,11 +376,20 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac return; } } else { - createMaterialBom(childNode); + createMaterialBom(childNode, colorMaterialBean); } } } - createBom(materialRev, childrenList, null, quantityList); + + for (TCComponentItemRevision material : childrenList) { + String ys = material.getProperty("jd2_classys"); + if (ys != null && !"".equals(ys)) { + System.out.println("颜色件:" + material.getProperty("object_string")); + colorMaterialBean.colorMaterial.add(new String[] { material.getProperty("item_id"), + material.getProperty("item_revision_id"), material.getProperty("object_name"), ys }); + } + } + colorMaterialBean.data.put(materialRev, new Object[] { materialRev, childrenList, null, quantityList }); } private TreePath findInPath(TreePath treePath, String str) { @@ -413,8 +437,8 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac if (line == null) { return null; } - AIFComponentContext[] aifContext = line.getItemRevision().whereReferencedByTypeRelation( - types, new String[] { "TC_Is_Represented_By" }); + AIFComponentContext[] aifContext = line.getItemRevision().whereReferencedByTypeRelation(types, + new String[] { "TC_Is_Represented_By" }); if (aifContext == null || aifContext.length == 0) { return new String[] { "" }; } else { @@ -461,7 +485,7 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac childbox.setSelectedIndex(-1); childbox.setEditable(true); - if (childbox.getItemCount() <= 2 && childbox.getItemAt(1)!=null&&!childbox.getItemAt(1).equals("")) { + if (childbox.getItemCount() <= 2 && childbox.getItemAt(1) != null && !childbox.getItemAt(1).equals("")) { childbox.setSelectedIndex(1); childbox.setEditable(false); childNode.setSelected(true); @@ -649,6 +673,7 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac /** * 判断循环 + * * @param node * @return */ @@ -666,6 +691,7 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac /** * 向上找父类,判断是否有相同的物料 + * * @param node * @param loopSet * @return @@ -686,11 +712,8 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac } } } - - - public void getAllBomItemByBomline(TCComponentBOMLine line, List itemList) - throws TCException { + public void getAllBomItemByBomline(TCComponentBOMLine line, List itemList) throws TCException { if (line == null) { return; } @@ -702,17 +725,13 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac } } - - - - /** * 搭建bom * * @param selectIndex * @throws TCException */ - public void createBom(TCComponentItemRevision parentRev, List childRevList, + public void createBom(TCComponentItemRevision parentRev, List childRevList, List queryNoList, List countNoList) throws TCException { if (childRevList == null || childRevList.size() == 0) { return; @@ -741,7 +760,6 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac TCComponentBOMLine childBomLine = line.add(rev.getItem(), rev, null, false, ""); line.save(); line.unlock(); - if (countNoList.get(i) != null && !countNoList.get(i).equals("")) { childBomLine.lock(); childBomLine.setProperties(setProps, new String[] { countNoList.get(i) }); @@ -749,21 +767,20 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac childBomLine.unlock(); } - - } try { win.save(); win.unlock(); - }catch(Exception e) { + } catch (Exception e) { win.unlock(); win.close(); - win=null; + win = null; System.out.println("windows close"); - TCComponent[] comps=parentRev.getTCProperty("structure_revisions").getReferenceValueArray(); - if(comps.length>0) { + TCComponent[] comps = parentRev.getTCProperty("structure_revisions").getReferenceValueArray(); + if (comps.length > 0) { parentRev.remove("structure_revisions", comps[0]); - comps[0].delete();; + comps[0].delete(); + ; } e.printStackTrace(); throw e; @@ -771,8 +788,6 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac } - - /** * 检查对象是否已经发布 * @@ -780,7 +795,7 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac * @return * @throws TCException */ - public boolean isCompReleased(TCComponent comp) throws TCException { + public boolean isCompReleased(TCComponent comp) throws TCException { TCComponent[] comps = comp.getRelatedComponents("release_status_list"); if (comps != null && comps.length > 0) { return true; @@ -794,7 +809,7 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac * @param rev * @return */ - public boolean isRevHadBom(TCComponentItemRevision rev) { + public boolean isRevHadBom(TCComponentItemRevision rev) { boolean isHad = false; if (rev != null) { try { @@ -817,7 +832,7 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac * @param rev * @return */ - public boolean isRevBomReleased(TCComponentItemRevision rev) { + public boolean isRevBomReleased(TCComponentItemRevision rev) { boolean isReleased = false; try { if (isCompReleased(rev)) { @@ -826,7 +841,7 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac // if(line.getChildren().length!=0){ // isReleased = true; // } - if ( isRevHadBom(rev)) { + if (isRevHadBom(rev)) { TCComponentBOMViewRevision bvr = win.askBvr(); if (bvr != null) { TCComponent[] status = bvr.getReferenceListProperty("release_status_list"); @@ -844,4 +859,17 @@ public class TransformDesignToPartDialog extends AbstractAIFDialog implements Ac } + private boolean isYSMaterial(TCComponentItemRevision rev) { + try { + Map map = rev.getClassificationAttributes(); + if (map.get("颜色") != null && !"".equals(map.get("颜色"))) { + return true; + } + } catch (TCException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return false; + } + } diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/form/CSJHForm.java b/com.connor.jd.plm/src/com/connor/jd/plm/form/CSJHForm.java index 9bffcf1..7e14b18 100644 --- a/com.connor.jd.plm/src/com/connor/jd/plm/form/CSJHForm.java +++ b/com.connor.jd.plm/src/com/connor/jd/plm/form/CSJHForm.java @@ -13,6 +13,8 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -27,23 +29,28 @@ import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; +import javax.swing.JTextField; import javax.swing.filechooser.FileFilter; import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.table.DefaultTableModel; import com.connor.jd.plm.beans.ComponentBean; import com.connor.jd.plm.beans.JG; +import com.connor.jd.plm.table.DatePickerCellEditor; +import com.connor.jd.plm.table.TCTableUtil; import com.teamcenter.rac.aif.kernel.AIFComponentContext; import com.teamcenter.rac.aifrcp.AIFUtility; import com.teamcenter.rac.kernel.TCComponent; import com.teamcenter.rac.kernel.TCComponentDataset; import com.teamcenter.rac.kernel.TCComponentDatasetType; +import com.teamcenter.rac.kernel.TCComponentForm; import com.teamcenter.rac.kernel.TCComponentItem; import com.teamcenter.rac.kernel.TCComponentItemRevision; import com.teamcenter.rac.kernel.TCComponentItemType; import com.teamcenter.rac.kernel.TCException; import com.teamcenter.rac.kernel.TCSession; import com.teamcenter.rac.stylesheet.AbstractRendering; +import com.teamcenter.rac.util.MessageBox; 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.CreateResponse; @@ -62,11 +69,14 @@ public class CSJHForm extends AbstractRendering { private static ResultSet rs = null; private ObservableList componentData = FXCollections.observableArrayList(); String[] propNames = new String[] { "jd2_syxh", "jd2_symd", "jd2_wtry", "jd2_syxm", "jd2_syts", "jd2_syzq", - "jd2_syfy", "jd2_jhrc", "jd2_sjrc", "jd2_syzt", "jd2_syjg", "jd2_sycs", "jd2_syry", "jd2_csbg", "jd2_bz" }; + "jd2_syfy", "jd2_jhrc", "jd2_jhrc1", "jd2_sjrc", "jd2_sjrc1", "jd2_syzt", "jd2_syjg", "jd2_sycs", + "jd2_syry", "jd2_csbg", "jd2_bz" }; private JLabel label3; private List editable = new ArrayList(); private Map res; private Map rowNo; + private JTable table; + private boolean againAllow; public CSJHForm(TCComponent form) throws Exception { super(); @@ -128,7 +138,7 @@ public class CSJHForm extends AbstractRendering { // } // } // } - this.setPreferredSize(new Dimension(1000, 250)); + this.setPreferredSize(new Dimension(1200, 250)); TCComponent[] tables = form.getTCProperty("jd2_csjh").getReferenceValueArray(); AIFComponentContext[] contexts = form.whereReferenced(); for (int i = 0; i < contexts.length; i++) { @@ -140,19 +150,20 @@ public class CSJHForm extends AbstractRendering { } } } - String[] info = new String[] { "NO", "实验型号", "实验目的", "委托人员", "实验项目", "实验台数", "实验周期", "试验费用", "计划日期", "实际日期", - "实验状态", "实验结果", "第_次实验", "实验人员", "测试报告", "备注" }; + String[] info = new String[] { "NO", "实验型号", "实验目的", "委托人员", "实验项目", "实验台数", "实验周期", "试验费用", "计划开始日期", "计划完成日期", + "实际开始日期", "实际完成日期", "实验状态", "实验结果", "第_次实验", "实验人员", "测试报告", "备注" }; model = new DefaultTableModel(info, 0); JComboBox testStage = new JComboBox(); JComboBox testResult = new JComboBox(); - String[] stageInfo = { "待测", "进行中", "完成" }; + String[] stageInfo = { "待测", "进行中", "完成", " " }; for (int i = 0; i < stageInfo.length; i++) { testStage.addItem(stageInfo[i]); } testResult.addItem("不合格"); testResult.addItem("合格"); + testResult.addItem(" "); for (int i = 0; i < tables.length; i++) { - String[] temp = new String[16]; + String[] temp = new String[18]; temp[0] = Integer.toString(index++); String[] props = tables[i].getProperties(propNames); for (int j = 0; j < props.length; j++) { @@ -160,6 +171,59 @@ public class CSJHForm extends AbstractRendering { } model.addRow(temp); } + + TCComponentItemRevision[] revs = itemR.getItem().getReleasedItemRevisions(); + Comparator leatestRevisionComparator = new Comparator() { + + @Override + public int compare(TCComponent o1, TCComponent o2) { + // TODO Auto-generated method stub + try { + return o1.getProperty("item_revision_id").compareTo(o2.getProperty("item_revision_id")); + } catch (TCException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return 0; + } + }; + Arrays.parallelSort(revs, leatestRevisionComparator); + if (revs.length > 0) { + List> dataMap = TCTableUtil.getTableMapList( + (TCComponentForm) revs[revs.length - 1].getRelatedComponent("IMAN_master_form_rev"), "jd2_csjh", + propNames); + List realNoList = new ArrayList(); + for (Map tempMap : dataMap) { + realNoList.add(tempMap.get("jd2_syxm") + "," + tempMap.get("jd2_sycs")); + } + for (int i = 0; i < tables.length; i++) { + if (realNoList.contains(tables[i].getProperty("jd2_syxm") + "," + tables[i].getProperty("jd2_sycs"))) { + editable.add(i); + } + } + } + + // 目前版本是否为最新发布的下一个版本 + List releasedObjectString = new ArrayList(); + for (int i = 0; i < revs.length; i++) { + releasedObjectString.add(revs[i].getProperty("object_string")); + } + if (revs.length > 0) { + if (!releasedObjectString.contains(itemR.getProperty("object_string"))) { + TCComponent[] allRev = itemR.getItem().getRelatedComponents("revision_list"); + Arrays.parallelSort(allRev, leatestRevisionComparator); + for (int i = 0; i < allRev.length; i++) { + if (allRev[i].getProperty("object_string") + .equals(revs[revs.length - 1].getProperty("object_string")) && i + 1 < allRev.length) { + if (itemR.getProperty("object_string").equals(allRev[i + 1].getProperty("object_string"))) { + againAllow = true; + break; + } + } + } + } + } + // for (int i = 0; i < componentData.size(); i++) { // // for (int j = 0; j < tables.length; j++) { // String project = componentData.get(i).getProject(); @@ -181,11 +245,11 @@ public class CSJHForm extends AbstractRendering { //// } // } - final JTable table = new JTable(model) { + table = new JTable(model) { @Override public boolean isCellEditable(int row, int column) { - if (column == 3 || column == 4 || column == 5 || column == 6 || column == 7 || column == 14 - || column == 12 || editable.contains(row)) + if (column == 3 || column == 4 || column == 5 || column == 6 || column == 7 || column == 16 + || column == 14 || editable.contains(row)) return false; else return true; @@ -198,7 +262,7 @@ public class CSJHForm extends AbstractRendering { } }); for (int i = 0; i < 16; i++) { - table.getColumn(table.getColumnName(i)).setMinWidth(60); + table.getColumn(table.getColumnName(i)).setMinWidth(100); } DefaultCellEditor dce1 = new DefaultCellEditor(testStage) { @@ -219,7 +283,7 @@ public class CSJHForm extends AbstractRendering { Object obj = super.getCellEditorValue(); if ("完成".equals(obj.toString())) { - editable.add(row); +// editable.add(row); } else { if (editable.contains(row)) { editable.remove(row); @@ -240,7 +304,7 @@ public class CSJHForm extends AbstractRendering { // TODO Auto-generated method stub t = paramJTable; row = paramInt1; - String str = t.getValueAt(row, 12) == null ? "" : t.getValueAt(row, 12).toString(); + String str = t.getValueAt(row, 14) == null ? "" : t.getValueAt(row, 14).toString(); num = Objects.equals(str, "") ? 0 : Integer.parseInt(str); return super.getTableCellEditorComponent(paramJTable, paramObject, paramBoolean, paramInt1, paramInt2); } @@ -274,9 +338,21 @@ public class CSJHForm extends AbstractRendering { return obj; } }; - - table.getColumn(table.getColumnName(10)).setCellEditor(dce1); - table.getColumn(table.getColumnName(11)).setCellEditor(dce2); + DatePickerCellEditor dpce = new DatePickerCellEditor(new JTextField()); + DefaultCellEditor deafult = new DefaultCellEditor(new JTextField()); + for (int i = 0; i < table.getColumnCount(); i++) { + table.getColumnModel().getColumn(i).setCellEditor(deafult); + } + table.getColumn(table.getColumnName(8)).setCellEditor(dpce); + table.getColumn(table.getColumnName(9)).setCellEditor(dpce); + table.getColumn(table.getColumnName(10)).setCellEditor(dpce); + table.getColumn(table.getColumnName(11)).setCellEditor(dpce); + table.getColumn(table.getColumnName(12)).setCellEditor(dce1); + table.getColumn(table.getColumnName(13)).setCellEditor(dce2); + table.setRowHeight(25); + table.setAutoscrolls(true); + table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + table.getTableHeader().setReorderingAllowed(false); if (form.isCheckedOut()) { table.setEnabled(true); } else { @@ -294,7 +370,7 @@ public class CSJHForm extends AbstractRendering { } label2.setText(allcost + "元"); - label3 = new JLabel("结论:合格"); + label3 = new JLabel("结论:"); res = new HashMap(); rowNo = new HashMap(); String no; @@ -306,7 +382,7 @@ public class CSJHForm extends AbstractRendering { int times = Integer.parseInt( Objects.equals(tables[i].getProperty("jd2_sycs"), "") ? "0" : tables[i].getProperty("jd2_sycs")); if ("完成".equals(tables[i].getProperty("jd2_syzt"))) { - editable.add(i); +// editable.add(i); } if (res.containsKey(no)) { if (times >= res.get(no).getTimes()) { @@ -317,14 +393,24 @@ public class CSJHForm extends AbstractRendering { res.put(no, new JG(i, times, jg)); } } - + boolean notEmpty = false; + boolean qualified = true; for (Entry entry : res.entrySet()) { - System.out.println(entry.getKey() + entry.getValue().getRow() + entry.getValue().getJg() - + entry.getValue().getTimes()); +// System.out.println(entry.getKey() + entry.getValue().getRow() + entry.getValue().getJg() +// + entry.getValue().getTimes()); + if (!"".equals(entry.getValue().getJg().trim())) { + notEmpty = true; + } if ("不合格".equals(entry.getValue().getJg())) { - label3.setText("结论:不合格"); + qualified = false; + break; } } + if (notEmpty && !qualified) { + label3.setText("结论:不合格"); + } else if (notEmpty) { + label3.setText("结论:合格"); + } panelLable.add(label); panelLable.add(label2); @@ -354,13 +440,17 @@ public class CSJHForm extends AbstractRendering { setLayout(new BorderLayout()); panel.add(pane, BorderLayout.CENTER); - add(bottom, BorderLayout.EAST); - add(panelLable, BorderLayout.SOUTH); - add(pane, BorderLayout.CENTER); + + JPanel root = new JPanel(new BorderLayout()); + root.add(bottom, BorderLayout.EAST); + root.add(panelLable, BorderLayout.SOUTH); + root.add(pane, BorderLayout.CENTER); + JScrollPane jsp = new JScrollPane(root); + add(jsp, BorderLayout.CENTER); testButton.addActionListener(e -> { JFileChooser chooser = new JFileChooser(); chooser.setDialogTitle("选择上传的测试报告"); - FileFilter filter = new FileNameExtensionFilter("Excel工作簿(.xlsx)", "xlsx");// 设置文件过滤器,只列出JPG或GIF格式的图片 + FileFilter filter = new FileNameExtensionFilter("Excel工作簿(.xlsx,.xls,.xlsm)", "xlsx", "xls", "xlsm");// 设置文件过滤器,只列出JPG或GIF格式的图片 chooser.setFileFilter(filter); chooser.showOpenDialog(null); File file = chooser.getSelectedFile(); @@ -371,7 +461,7 @@ public class CSJHForm extends AbstractRendering { System.out.println(filePath); System.out.println(fileName); int row = table.getSelectedRow(); - String value = model.getValueAt(row, 14) == null ? "" : model.getValueAt(row, 14).toString(); + String value = model.getValueAt(row, 16) == null ? "" : model.getValueAt(row, 16).toString(); if (value.equals("")) { try { TCComponentItemType itemtype = (TCComponentItemType) session.getTypeComponent("JD2_GTCSBG"); @@ -390,7 +480,7 @@ public class CSJHForm extends AbstractRendering { TCComponentDataset datasetMSExcelX = datasetType.create(filename, "", msType); datasetMSExcelX.setFiles(new String[] { filePath }, new String[] { "excel" });// 两参:文件路径,命名应用(text) item.getLatestItemRevision().add("IMAN_specification", datasetMSExcelX); - model.setValueAt(item.getProperty("current_id"), row, 14); + model.setValueAt(item.getProperty("current_id"), row, 16); } catch (TCException e1) { e1.printStackTrace(); } @@ -432,7 +522,7 @@ public class CSJHForm extends AbstractRendering { TCComponentDataset datasetMSExcelX = datasetType.create(filename, "", msType); datasetMSExcelX.setFiles(new String[] { filePath }, new String[] { "excel" });// 两参:文件路径,命名应用(text) item.getLatestItemRevision().add("IMAN_specification", datasetMSExcelX); - model.setValueAt(item.getProperty("current_id"), row, 14); + model.setValueAt(item.getProperty("current_id"), row, 16); } catch (TCException e1) { e1.printStackTrace(); } @@ -447,13 +537,27 @@ public class CSJHForm extends AbstractRendering { }); huizongButton.addActionListener(e -> { int row = table.getSelectedRow(); - String value = (String) model.getValueAt(row, 14); + String value = (String) model.getValueAt(row, 16); JFileChooser chooser = new JFileChooser(); chooser.setDialogTitle("选择上传的汇总结论"); - FileFilter filter = new FileNameExtensionFilter("Excel工作簿(.xlsx)", "xlsx");// 设置文件过滤器,只列出JPG或GIF格式的图片 + FileFilter filter = new FileNameExtensionFilter("Excel工作簿(.xlsx,.xls,.xlsm),PPT演示文稿(.ppt,.pptx)", "xlsx", + "xls", "xlsm", "ppt", "pptx");// 设置文件过滤器,只列出JPG或GIF格式的图片 chooser.setFileFilter(filter); chooser.showOpenDialog(null); File file = chooser.getSelectedFile(); + TCComponentItemRevision parentRev = null; + try { + AIFComponentContext[] aifs = itemR.getItem().whereReferenced(); + for (AIFComponentContext aif : aifs) { + if (aif.getComponent().getType().equals("JD2_GTSYWTSRevision")) { + parentRev = (TCComponentItemRevision) aif.getComponent(); + System.out.println("JD2_GTSYWTSRevision check"); + } + } + } catch (TCException e2) { + // TODO Auto-generated catch block + e2.printStackTrace(); + } if (file != null) { String filePath = file.getPath(); String fileName = file.getName(); @@ -466,17 +570,26 @@ public class CSJHForm extends AbstractRendering { String itemId = itemtype.getNewID(); String itemRev = itemtype.getNewRev(null); TCComponentItem item = itemtype.create(itemId, itemRev, "JD2_GTCSBG", fileName, "描述", null); - itemR.add("JD2_CSBGHZ", item); + parentRev.add("JD2_CSBGHZ", item); TCComponentDatasetType datasetType = (TCComponentDatasetType) session .getTypeComponent("Dataset"); String msType = ""; + String fileType = ""; if (filePath.endsWith(".xls")) { msType = "MSExcel"; + fileType = "excel"; } else if (filePath.endsWith(".xlsx") || filePath.endsWith(".xlsm")) { msType = "MSExcelX"; + fileType = "excel"; + } else if (filePath.endsWith(".ppt")) { + msType = "MSPowerPoint"; + fileType = "powerpoint"; + } else if (filePath.endsWith(".pptx")) { + msType = "MSPowerPointX"; + fileType = "powerpoint"; } TCComponentDataset datasetMSExcelX = datasetType.create(filename, "", msType); - datasetMSExcelX.setFiles(new String[] { filePath }, new String[] { "excel" });// 两参:文件路径,命名应用(text) + datasetMSExcelX.setFiles(new String[] { filePath }, new String[] { fileType });// 两参:文件路径,命名应用(text) item.getLatestItemRevision().add("IMAN_specification", datasetMSExcelX); } catch (TCException e1) { e1.printStackTrace(); @@ -507,7 +620,7 @@ public class CSJHForm extends AbstractRendering { String itemRev = itemtype.getNewRev(null); TCComponentItem item = itemtype.create(itemId, itemRev, "JD2_GTCSBG", fileName, "描述", null); - itemR.add("JD2_CSBGHZ", item); + parentRev.add("JD2_CSBGHZ", item); TCComponentDatasetType datasetType = (TCComponentDatasetType) session .getTypeComponent("Dataset"); String msType = ""; @@ -542,7 +655,7 @@ public class CSJHForm extends AbstractRendering { temp[5] = (String) model.getValueAt(table.getSelectedRow(), 5); temp[6] = (String) model.getValueAt(table.getSelectedRow(), 6); temp[7] = (String) model.getValueAt(table.getSelectedRow(), 7); - String chishu = (String) model.getValueAt(table.getSelectedRow(), 12); + String chishu = (String) model.getValueAt(table.getSelectedRow(), 14); if ("".equals(chishu)) { chishu = "0"; System.out.println(chishu); @@ -550,8 +663,64 @@ public class CSJHForm extends AbstractRendering { if (chishu == null) { chishu = "0"; } - temp[12] = String.valueOf(Integer.valueOf(chishu) + 1); -// temp[14] = (String) model.getValueAt(table.getSelectedRow(), 14); + int cishuNum = Integer.valueOf(chishu); + boolean isNotLatest = false; + Object obj; + String xm; + int num1; + if (!againAllow) { + MessageBox.post("当前操作的版本不是最新发布版本的下一个未发布版本,不允许再次试验", "提示", MessageBox.WARNING); + return; + } + for (int i = 0; i < table.getRowCount(); i++) { + xm = (obj = table.getValueAt(i, 4)) == null ? "" : obj.toString(); + if (temp[4].equals(xm)) { + num1 = Integer.parseInt((obj = table.getValueAt(i, 14)) == null ? "0" : obj.toString()); + if (cishuNum < num1) { + isNotLatest = true; + break; + } + } + } + if (isNotLatest) { + MessageBox.post("请选择最新的一次实验", "提示", MessageBox.WARNING); + return; + } +// boolean allowFlag = false; +// if (againAllowFlow == null) { +// try { +// againAllowFlow = JDMethodUtil.getPrefStrArray("jd_csjh_again_allow", session)[1];// 部件 +// TCComponent[] comps = form.getRelatedComponents("fnd0AllWorkflows"); +// if (comps.length > 0) { +// String flowName; +// for (TCComponent comp : comps) { +// flowName = comps[0].getProperty("object_name"); +// System.out.println(flowName); +// if (flowName.equals(againAllowFlow)) { +// allowFlag = true; +// break; +// } +// } +// } else { +// MessageBox.post("无法再次试验,请确认当前目标处于流程中", "提示", MessageBox.WARNING); +// return; +// } +// } catch (ArrayIndexOutOfBoundsException ex) { +// // TODO: handle exception +// ex.printStackTrace(); +// MessageBox.post("首选项\"jd_csjh_again_allow\"配置错误", "错误", MessageBox.ERROR); +// return; +// } catch (TCException e1) { +// // TODO Auto-generated catch block +// e1.printStackTrace(); +// } +// } +// if (!allowFlag) { +// MessageBox.post("无法再次试验,目标所处流程状态不满足\"jd_csjh_again_allow\"配置", "提示", MessageBox.WARNING); +// return; +// } + temp[14] = String.valueOf(cishuNum + 1); +// temp[16] = (String) model.getValueAt(table.getSelectedRow(), 16); temp[15] = (String) model.getValueAt(table.getSelectedRow(), 15); model.insertRow(table.getSelectedRow() + 1, temp); for (int i = table.getSelectedRow() + 1; i < model.getRowCount(); i++) { @@ -567,17 +736,28 @@ public class CSJHForm extends AbstractRendering { } label2.setText(allcost2 + "元"); editable.add(table.getSelectedRow()); + for (int i = 0; i < editable.size(); i++) { + if (editable.get(i) >= (table.getSelectedRow() + 1)) { + editable.set(i, editable.get(i) + 1); + } + } + for (Entry entry : res.entrySet()) { + if (entry.getValue().getRow() >= (table.getSelectedRow() + 1)) { + res.get(entry.getKey()).setRow(entry.getValue().getRow() + 1); + } + } rowNo.put(table.getSelectedRow() + 1, rowNo.get(table.getSelectedRow())); + }); table.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { - if (table.getSelectedColumn() == 14) { + if (table.getSelectedColumn() == 16) { if (e.getClickCount() == 2) { System.out.println("双击了"); int selectedRow = table.getSelectedRow(); // 获得选中行索引 - String value = (String) model.getValueAt(selectedRow, 14); + String value = (String) model.getValueAt(selectedRow, 16); if (value == null) value = ""; if (!value.equals("")) { @@ -605,7 +785,9 @@ public class CSJHForm extends AbstractRendering { public void saveRendering() { try { List c = new ArrayList(); - + if (table.getSelectedColumn() >= 0) { + table.getColumnModel().getColumn(table.getSelectedColumn()).getCellEditor().stopCellEditing(); + } // TCComponent[] com = form.getTCProperty("sf6_EplanBOMLineTable").getReferenceValueArray(); // for (int j = 0; j < com.length; j++) { // c.add(com[j]); diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/form/ComponentTestFrame.java b/com.connor.jd.plm/src/com/connor/jd/plm/form/ComponentTestFrame.java index 526e788..3bfe4e9 100644 --- a/com.connor.jd.plm/src/com/connor/jd/plm/form/ComponentTestFrame.java +++ b/com.connor.jd.plm/src/com/connor/jd/plm/form/ComponentTestFrame.java @@ -9,7 +9,6 @@ import java.awt.FlowLayout; import java.awt.ScrollPane; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.sql.SQLException; import java.util.ArrayList; import java.util.List; @@ -27,6 +26,7 @@ import com.connor.jd.plm.table.CTMap; import com.connor.jd.plm.table.CTable; import com.connor.jd.plm.table.MyCellEditor4; import com.connor.jd.plm.table.TCTableUtil; +import com.connor.jd.plm.utils.DBUtil; import com.teamcenter.rac.aifrcp.AIFUtility; import com.teamcenter.rac.kernel.TCComponentForm; import com.teamcenter.rac.kernel.TCComponentItem; @@ -34,6 +34,7 @@ import com.teamcenter.rac.kernel.TCComponentItemRevision; import com.teamcenter.rac.kernel.TCComponentItemType; import com.teamcenter.rac.kernel.TCException; import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.util.MessageBox; import cn.hutool.db.Db; import cn.hutool.db.Entity; @@ -142,7 +143,7 @@ public class ComponentTestFrame extends JFrame { // 填写数据 try { - list = Db.use().findAll("JD2_COMPONENT"); + list = Db.use(DBUtil.getDataSource(session)).findAll("JD2_COMPONENT"); bottom = list.size(); for (int i = 0; i < bottom; i++) { if (i > model.getRowCount() - 2) { @@ -159,9 +160,11 @@ public class ComponentTestFrame extends JFrame { System.out.println(list.get(i).toString()); } - } catch (SQLException e) { + } catch (Exception e) { // TODO Auto-generated catch block + MessageBox.post("数据库配置错误", "错误", MessageBox.ERROR); e.printStackTrace(); + return; } // 按钮 diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/form/ExperimentalPowerOfAttorneyForm.java b/com.connor.jd.plm/src/com/connor/jd/plm/form/ExperimentalPowerOfAttorneyForm.java index 5c0edf0..08ab267 100644 --- a/com.connor.jd.plm/src/com/connor/jd/plm/form/ExperimentalPowerOfAttorneyForm.java +++ b/com.connor.jd.plm/src/com/connor/jd/plm/form/ExperimentalPowerOfAttorneyForm.java @@ -4,7 +4,6 @@ import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; -import java.awt.ScrollPane; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; @@ -20,6 +19,7 @@ import javax.swing.BorderFactory; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JPopupMenu; +import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.SwingConstants; @@ -33,6 +33,7 @@ import com.connor.jd.plm.table.TCTableUtil; import com.teamcenter.rac.kernel.TCComponent; import com.teamcenter.rac.kernel.TCComponentForm; import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCSession; import com.teamcenter.rac.stylesheet.AbstractRendering; public class ExperimentalPowerOfAttorneyForm extends AbstractRendering implements MyCallBack { @@ -63,6 +64,7 @@ public class ExperimentalPowerOfAttorneyForm extends AbstractRendering implement super(arg0); if (arg0 instanceof TCComponentForm) { this.form = (TCComponentForm) arg0; + TCSession session = arg0.getSession(); loadRendering(); } } @@ -107,6 +109,7 @@ public class ExperimentalPowerOfAttorneyForm extends AbstractRendering implement table.getColumnModel().getColumn(8).setPreferredWidth(80); table.getColumnModel().getColumn(9).setPreferredWidth(150); table.getColumnModel().getColumn(10).setPreferredWidth(60); + table.putClientProperty("terminateEditOnFocusLost", true); DefaultTableCellRenderer tcr1 = new DefaultTableCellRenderer() { // 重写方法 @@ -172,6 +175,7 @@ public class ExperimentalPowerOfAttorneyForm extends AbstractRendering implement table2.getColumnModel().getColumn(8).setPreferredWidth(80); table2.getColumnModel().getColumn(9).setPreferredWidth(150); table2.getColumnModel().getColumn(10).setPreferredWidth(60); + table2.putClientProperty("terminateEditOnFocusLost", true); DefaultTableCellRenderer tcr2 = new DefaultTableCellRenderer() { // 重写方法 @@ -254,15 +258,21 @@ public class ExperimentalPowerOfAttorneyForm extends AbstractRendering implement model.setValueAt(rows[i][ii], top + i + 1, ii > 2 ? ii > 3 ? ii + 4 : ii + 2 : ii); } } + + // 属性映射 + try { + model.setValueAt(form.whereReferenced()[0].getComponent().getProperty("item_id"), 0, 9); + model.setValueAt(form.getProperty("creation_date"), 1, 9); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + JPanel inner = new JPanel(new BorderLayout()); inner.add(table, BorderLayout.CENTER); inner.add(table2, BorderLayout.SOUTH); - ScrollPane pane = new ScrollPane(); - pane.add(inner); -// ScrollPane pane2 = new ScrollPane(); -// pane2.add(table2); - root.add(pane, BorderLayout.CENTER); -// root.add(pane2, BorderLayout.SOUTH); + JScrollPane jsp = new JScrollPane(inner); + root.add(jsp, BorderLayout.CENTER); this.add(menu); this.add(root); } @@ -347,7 +357,6 @@ public class ExperimentalPowerOfAttorneyForm extends AbstractRendering implement model.setValueAt(i - top, i, 0); disableEdit.add(i + ",0"); } - } private void initModel2() { @@ -436,16 +445,19 @@ public class ExperimentalPowerOfAttorneyForm extends AbstractRendering implement if (prop.containsKey("jd2_sywts")) { List data = new ArrayList(); int num = 0; - while (model.getValueAt(top + 1 + num, 1) != null && !"".equals(model.getValueAt(top + 1 + num, 1))) { + while (true) { + boolean isNotEmpty = false; String[] row = new String[7]; for (int ii = 0; ii < row.length; ii++) { Object object = model.getValueAt(top + 1 + num, ii > 2 ? ii > 3 ? ii + 4 : ii + 2 : ii); - if (object == null) { - row[ii] = ""; - } else { - row[ii] = object.toString(); + row[ii] = object == null ? "" : object.toString(); + if (!isNotEmpty && ii > 0 && ii < 4) { + isNotEmpty = !"".equals(row[ii]); } } + if (!isNotEmpty) { + break; + } data.add(row); num++; if (top + 1 + num > bottom) { diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/form/GTCSJHForm.java b/com.connor.jd.plm/src/com/connor/jd/plm/form/GTCSJHForm.java index 6b2de77..c6425a6 100644 --- a/com.connor.jd.plm/src/com/connor/jd/plm/form/GTCSJHForm.java +++ b/com.connor.jd.plm/src/com/connor/jd/plm/form/GTCSJHForm.java @@ -6,7 +6,6 @@ import java.awt.Component; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Font; -import java.awt.ScrollPane; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; @@ -14,6 +13,7 @@ import java.awt.event.MouseEvent; import java.io.File; import java.util.ArrayList; import java.util.Arrays; +import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -28,6 +28,7 @@ import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; +import javax.swing.JTextField; import javax.swing.filechooser.FileFilter; import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.table.DefaultTableModel; @@ -35,6 +36,7 @@ import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; import com.connor.jd.plm.beans.JG; +import com.connor.jd.plm.table.DatePickerCellEditor; import com.connor.jd.plm.table.TCTableUtil; import com.teamcenter.rac.aif.kernel.AIFComponentContext; import com.teamcenter.rac.aifrcp.AIFUtility; @@ -48,6 +50,7 @@ import com.teamcenter.rac.kernel.TCComponentItemType; import com.teamcenter.rac.kernel.TCException; import com.teamcenter.rac.kernel.TCSession; import com.teamcenter.rac.stylesheet.AbstractRendering; +import com.teamcenter.rac.util.MessageBox; public class GTCSJHForm extends AbstractRendering { private TCComponentForm form; @@ -57,11 +60,12 @@ public class GTCSJHForm extends AbstractRendering { private String[] labellTexts = { "jd2_xmxx", "jd2_lxsj", "jd2_jbxh", "jd2_csxh", "jd2_cpxh", "jd2_xmzl", "jd2_cpjl", "jd2_cpbgd", "jd2_pzjl", "jd2_kfrc", "jd2_kfdj", "jd2_kfjd" }; private String[] colNames = { "jd2_no", "jd2_syxh", "jd2_symd", "jd2_wtry", "jd2_syxm", "jd2_syts", "jd2_syzq", - "jd2_syfy", "jd2_jhrc", "jd2_sjrc", "jd2_syzt", "jd2_syjg", "jd2_sycs", "jd2_syry", "jd2_csbg", "jd2_bz" }; + "jd2_syfy", "jd2_jhrc", "jd2_jhrc1", "jd2_sjrc", "jd2_sjrc1", "jd2_syzt", "jd2_syjg", "jd2_sycs", + "jd2_syry", "jd2_csbg", "jd2_bz" }; private String[] colDisplayNames = new String[] { "realNo", "NO", "试验型号", "试验目的", "委托人员", "试验项目", "试验台数", "试验周期", - "试验费用", "计划日程", "实际日程", "试验状态", "实验结果", "第_次试验", "实验人员", "测试报告", "备注" }; + "试验费用", "计划开始日程", "计划完成日程", "实际开始日程", "实际完成日程", "试验状态", "实验结果", "第_次试验", "实验人员", "测试报告", "备注" }; private List disableRows = new ArrayList(); - private List disableColumns = Arrays.asList(4, 5, 6, 7, 8, 13, 15); + private List disableColumns = Arrays.asList(4, 5, 6, 8, 15, 17);// 委托人员, 试验项目, 试验台数,第_次试验,测试报告 private Map resultMap = new HashMap(); private JTable table; private DefaultTableModel model; @@ -69,6 +73,7 @@ public class GTCSJHForm extends AbstractRendering { private TCSession session; private JLabel cost; private JLabel jg; + private boolean againAllow = false; public GTCSJHForm(TCComponent arg0) throws Exception { super(arg0); @@ -165,6 +170,7 @@ public class GTCSJHForm extends AbstractRendering { status.addItem("待测"); status.addItem("进行中"); status.addItem("完成"); + status.addItem(" "); DefaultCellEditor dce1 = new DefaultCellEditor(status) { int row; @@ -179,7 +185,7 @@ public class GTCSJHForm extends AbstractRendering { public Object getCellEditorValue() { Object obj = super.getCellEditorValue(); if ("完成".equals(obj == null ? "" : obj.toString())) { - disableRows.add(row); +// disableRows.add(row); } return obj; } @@ -187,6 +193,7 @@ public class GTCSJHForm extends AbstractRendering { JComboBox result = new JComboBox(); result.addItem("合格"); result.addItem("不合格"); + result.addItem(" "); DefaultCellEditor dce2 = new DefaultCellEditor(result) { JTable table; int row; @@ -205,32 +212,44 @@ public class GTCSJHForm extends AbstractRendering { String res = (obj == null ? "" : obj.toString()); String no = table.getValueAt(row, 0).toString(); Object temp; - int times = Integer.parseInt((temp = table.getValueAt(row, 13)) == null ? "0" : temp.toString().trim()); + int times = Integer.parseInt((temp = table.getValueAt(row, 15)) == null ? "0" : temp.toString().trim()); + System.out.println("结果:" + res); addResult(no, row, times, res); jg.setText(getResult()); return obj; } }; + + DatePickerCellEditor dpce = new DatePickerCellEditor(new JTextField()); table = new JTable(model); - TableColumn tc = table.getColumnModel().getColumn(0); for (int i = 1; i < table.getColumnCount(); i++) { table.getColumnModel().getColumn(i).setMinWidth(100); } hiddenColumn(table, 0); - table.getColumnModel().getColumn(11).setCellEditor(dce1); - table.getColumnModel().getColumn(12).setCellEditor(dce2); + DefaultCellEditor deafult = new DefaultCellEditor(new JTextField()); + for (int i = 0; i < table.getColumnCount(); i++) { + table.getColumnModel().getColumn(i).setCellEditor(deafult); + } + table.getColumnModel().getColumn(9).setCellEditor(dpce); + table.getColumnModel().getColumn(10).setCellEditor(dpce); + table.getColumnModel().getColumn(11).setCellEditor(dpce); + table.getColumnModel().getColumn(12).setCellEditor(dpce); + table.getColumnModel().getColumn(13).setCellEditor(dce1); + table.getColumnModel().getColumn(14).setCellEditor(dce2); table.setRowHeight(25); table.setAutoscrolls(true); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + table.getTableHeader().setReorderingAllowed(false); +// table.putClientProperty("terminateEditOnFocusLost", true);// 表格失去焦点自动提交(事件控件today会有问题) table.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { - if (table.getSelectedColumn() == 15) { + if (table.getSelectedColumn() == 17) { if (e.getClickCount() == 2) { System.out.println("双击了"); int selectedRow = table.getSelectedRow(); // 获得选中行索引 - String value = (String) model.getValueAt(selectedRow, 15); + String value = (String) model.getValueAt(selectedRow, 17); if (value == null) value = ""; if (!value.equals("")) { @@ -252,7 +271,6 @@ public class GTCSJHForm extends AbstractRendering { } }); JScrollPane jsp = new JScrollPane(table); - jsp.setAutoscrolls(true); innerCenter.add(jsp, BorderLayout.CENTER); JButton test = new JButton("测试报告
上传"); @@ -285,7 +303,7 @@ public class GTCSJHForm extends AbstractRendering { AIFComponentContext[] aifs = form.whereReferenced(); String temp; for (AIFComponentContext a1 : aifs) { - System.out.println("测试计划版本:" + (temp = a1.getComponent().getType())); + System.out.println("测试结论版本:" + (temp = a1.getComponent().getType())); if ("JD2_GTXPXMCSJHRevision".equals(temp)) { TCComponentItemRevision rev = (TCComponentItemRevision) a1.getComponent(); AIFComponentContext[] aifs2 = rev.getItem().whereReferenced(); @@ -311,30 +329,81 @@ public class GTCSJHForm extends AbstractRendering { } String[][] data = TCTableUtil.getTableRows(form, "jd2_csjhtable", colNames); - -// colNames = { "jd2_no", "jd2_syxh", "jd2_symd", "jd2_wtry", "jd2_syxm", "jd2_syts", "jd2_syzq", -// "jd2_syfy", "jd2_jhrc", "jd2_sjrc", "jd2_syzt", "jd2_syjg", "jd2_sycs", "jd2_syry", "jd2_csbg", "jd2_bz" }; -// colDisplayNames = new String[] { "realNo", "NO", "试验型号", "试验目的", "委托人员", "试验项目", "试验台数", "试验周期", -// "试验费用", "计划日程", "实际日程", "试验状态", "实验结果", "第_次试验", "实验人员", "测试报告", "备注" }; + System.out.println(data[0].length); + System.out.println(colNames.length); System.out.println(Arrays.deepToString(data)); System.out.println(data.length); double sum = 0; for (int i = 0; i < data.length; i++) { - String[] rowData = new String[17]; + String[] rowData = new String[19]; rowData[0] = data[i][0]; rowData[1] = i + 1 + ""; for (int ii = 1; ii < colNames.length; ii++) { rowData[ii + 1] = data[i][ii]; } - Arrays.toString(rowData); model.addRow(rowData); - if ("完成".equals(data[i][10])) { - disableRows.add(i); + if ("完成".equals(data[i][12])) { +// disableRows.add(i); } sum += Double.parseDouble(data[i][7]); - addResult(data[i][0], i, Integer.parseInt(data[i][12]), data[i][11]); + addResult(data[i][0], i, Integer.parseInt(data[i][14]), data[i][13]); } + + // 最新发布 + TCComponentItem item = rev.getItem(); + TCComponentItemRevision[] revs = item.getReleasedItemRevisions(); + Comparator leatestRevisionComparator = new Comparator() { + + @Override + public int compare(TCComponent o1, TCComponent o2) { + // TODO Auto-generated method stub + try { + return o1.getProperty("item_revision_id").compareTo(o2.getProperty("item_revision_id")); + } catch (TCException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return 0; + } + }; + Arrays.parallelSort(revs, leatestRevisionComparator); + if (revs.length > 0) { + List> dataMap = TCTableUtil.getTableMapList( + (TCComponentForm) revs[revs.length - 1].getRelatedComponent("IMAN_master_form_rev"), + "jd2_csjhtable", colNames); + List realNoList = new ArrayList(); + for (Map tempMap : dataMap) { + realNoList.add(tempMap.get("jd2_no") + "," + tempMap.get("jd2_sycs")); + } + for (int i = 0; i < data.length; i++) { + if (realNoList.contains(data[i][0] + "," + data[i][14])) { + disableRows.add(i); + } + } + } + + // 目前版本是否为最新发布的下一个版本 + List releasedObjectString = new ArrayList(); + for (int i = 0; i < revs.length; i++) { + releasedObjectString.add(revs[i].getProperty("object_string")); + } + if (revs.length > 0) { + if (!releasedObjectString.contains(rev.getProperty("object_string"))) { + TCComponent[] allRev = item.getRelatedComponents("revision_list"); + Arrays.parallelSort(allRev, leatestRevisionComparator); + for (int i = 0; i < allRev.length; i++) { + if (allRev[i].getProperty("object_string") + .equals(revs[revs.length - 1].getProperty("object_string")) && i + 1 < allRev.length) { + if (rev.getProperty("object_string").equals(allRev[i + 1].getProperty("object_string"))) { + againAllow = true; + break; + } + } + } + } + } + table.revalidate(); table.repaint(); cost.setText(sum + ""); @@ -344,14 +413,16 @@ public class GTCSJHForm extends AbstractRendering { inner.add(innerCenter); root.add(top, BorderLayout.NORTH); root.add(inner, BorderLayout.CENTER); - ScrollPane sc = new ScrollPane(); - sc.add(root); - this.add(sc, BorderLayout.CENTER); + JScrollPane jsp1 = new JScrollPane(root); + this.add(jsp1, BorderLayout.CENTER); } @Override public void saveRendering() { // TODO Auto-generated method stub + if (table.getSelectedColumn() >= 0) { + table.getColumnModel().getColumn(table.getSelectedColumn()).getCellEditor().stopCellEditing(); + } String[][] data = new String[0][]; List dataList = new ArrayList(); Object obj; @@ -374,10 +445,11 @@ public class GTCSJHForm extends AbstractRendering { // TODO Auto-generated method stub JFileChooser chooser = new JFileChooser(); chooser.setDialogTitle("选择上传的测试报告"); - FileFilter filter = new FileNameExtensionFilter("Excel工作簿(.xlsx)", "xlsx"); + FileFilter filter = new FileNameExtensionFilter("Excel工作簿(.xlsx,.xls,.xlsm)", "xlsx", "xls", "xlsm"); chooser.setFileFilter(filter); chooser.showOpenDialog(null); File file = chooser.getSelectedFile(); + if (file != null) { String filePath = file.getPath(); String fileName = file.getName(); @@ -385,7 +457,7 @@ public class GTCSJHForm extends AbstractRendering { System.out.println(filePath); System.out.println(fileName); int row = table.getSelectedRow(); - String value = model.getValueAt(row, 15) == null ? "" : model.getValueAt(row, 15).toString(); + String value = model.getValueAt(row, 17) == null ? "" : model.getValueAt(row, 17).toString(); if (value.equals("")) { try { TCComponentItemType itemtype = (TCComponentItemType) session.getTypeComponent("JD2_GTCSBG"); @@ -404,7 +476,7 @@ public class GTCSJHForm extends AbstractRendering { TCComponentDataset datasetMSExcelX = datasetType.create(filename, "", msType); datasetMSExcelX.setFiles(new String[] { filePath }, new String[] { "excel" });// 两参:文件路径,命名应用(text) item.getLatestItemRevision().add("IMAN_specification", datasetMSExcelX); - model.setValueAt(item.getProperty("current_id"), row, 15); + model.setValueAt(item.getProperty("current_id"), row, 17); } catch (TCException e1) { e1.printStackTrace(); } @@ -446,7 +518,7 @@ public class GTCSJHForm extends AbstractRendering { TCComponentDataset datasetMSExcelX = datasetType.create(filename, "", msType); datasetMSExcelX.setFiles(new String[] { filePath }, new String[] { "excel" });// 两参:文件路径,命名应用(text) item.getLatestItemRevision().add("IMAN_specification", datasetMSExcelX); - model.setValueAt(item.getProperty("current_id"), row, 15); + model.setValueAt(item.getProperty("current_id"), row, 17); } catch (TCException e1) { e1.printStackTrace(); } @@ -467,88 +539,113 @@ public class GTCSJHForm extends AbstractRendering { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub - int row = table.getSelectedRow(); - String value = (String) model.getValueAt(row, 15); +// int row = table.getSelectedRow(); +// String value = (String) model.getValueAt(row, 17); JFileChooser chooser = new JFileChooser(); chooser.setDialogTitle("选择上传的汇总结论"); - FileFilter filter = new FileNameExtensionFilter("Excel工作簿(.xlsx)", "xlsx");// 设置文件过滤器,只列出JPG或GIF格式的图片 + FileFilter filter = new FileNameExtensionFilter("Excel工作簿(.xlsx,.xls,.xlsm),PPT演示文稿(.ppt,.pptx)", + "xlsx", "xls", "xlsm", "ppt", "pptx");// 设置文件过滤器,只列出JPG或GIF格式的图片 chooser.setFileFilter(filter); chooser.showOpenDialog(null); File file = chooser.getSelectedFile(); - if (file != null) { + TCComponentItemRevision parentRev = null; + try { + AIFComponentContext[] aifs = rev.getItem().whereReferenced(); + for (AIFComponentContext aif : aifs) { + if (aif.getComponent().getType().equals("JD2_GTXPCSXQDRevision")) { + parentRev = (TCComponentItemRevision) aif.getComponent(); + break; + } + } + } catch (TCException e2) { + // TODO Auto-generated catch block + e2.printStackTrace(); + } + if (file != null && parentRev != null) { String filePath = file.getPath(); String fileName = file.getName(); String filename = fileName.substring(0, fileName.lastIndexOf(".")); System.out.println(filePath); System.out.println(fileName); - if (value.equals("")) { - try { - TCComponentItemType itemtype = (TCComponentItemType) session.getTypeComponent("JD2_GTCSBG"); - String itemId = itemtype.getNewID(); - String itemRev = itemtype.getNewRev(null); - TCComponentItem item = itemtype.create(itemId, itemRev, "JD2_GTCSBG", fileName, "描述", null); - rev.add("JD2_CSBGHZ", item); - TCComponentDatasetType datasetType = (TCComponentDatasetType) session - .getTypeComponent("Dataset"); - String msType = ""; - if (filePath.endsWith(".xls")) { - msType = "MSExcel"; - } else if (filePath.endsWith(".xlsx") || filePath.endsWith(".xlsm")) { - msType = "MSExcelX"; - } - TCComponentDataset datasetMSExcelX = datasetType.create(filename, "", msType); - datasetMSExcelX.setFiles(new String[] { filePath }, new String[] { "excel" });// 两参:文件路径,命名应用(text) - item.getLatestItemRevision().add("IMAN_specification", datasetMSExcelX); - } catch (TCException e1) { - e1.printStackTrace(); - } - } else { - // 添加到数据集 - boolean exist = false; - try { - TCComponent[] tcc = rev.getTCProperty("JD2_CSBGHZ").getReferenceValueArray(); - for (int i = 0; i < tcc.length; i++) { - if (value.equals(tcc[i].getProperty("current_id"))) { - exist = true; - TCComponentItem item = (TCComponentItem) tcc[i]; - TCComponent[] tccitem = item.getLatestItemRevision() - .getTCProperty("IMAN_specification").getReferenceValueArray(); - TCComponentDataset dataset = (TCComponentDataset) tccitem[0]; - dataset.setFiles(new String[] { file.getPath() }, new String[] { "excel" }); - dataset.setProperty("object_name", filename); - item.setProperty("object_name", filename); - item.getLatestItemRevision().setProperty("object_name", filename); - } - } - if (!exist) { - try { - TCComponentItemType itemtype = (TCComponentItemType) session - .getTypeComponent("JD2_GTCSBG"); - String itemId = itemtype.getNewID(); - String itemRev = itemtype.getNewRev(null); - TCComponentItem item = itemtype.create(itemId, itemRev, "JD2_GTCSBG", fileName, - "描述", null); - rev.add("JD2_CSBGHZ", item); - TCComponentDatasetType datasetType = (TCComponentDatasetType) session - .getTypeComponent("Dataset"); - String msType = ""; - if (filePath.endsWith(".xls")) { - msType = "MSExcel"; - } else if (filePath.endsWith(".xlsx") || filePath.endsWith(".xlsm")) { - msType = "MSExcelX"; - } - TCComponentDataset datasetMSExcelX = datasetType.create(filename, "", msType); - datasetMSExcelX.setFiles(new String[] { filePath }, new String[] { "excel" });// 两参:文件路径,命名应用(text) - item.getLatestItemRevision().add("IMAN_specification", datasetMSExcelX); - } catch (TCException e1) { - e1.printStackTrace(); - } - } - } catch (TCException e1) { - e1.printStackTrace(); - } +// if (value.equals("")) { + try { + TCComponentItemType itemtype = (TCComponentItemType) session.getTypeComponent("JD2_GTCSBG"); + String itemId = itemtype.getNewID(); + String itemRev = itemtype.getNewRev(null); + TCComponentItem item = itemtype.create(itemId, itemRev, "JD2_GTCSBG", fileName, "描述", null); + parentRev.add("JD2_CSBGHZ", item); + TCComponentDatasetType datasetType = (TCComponentDatasetType) session + .getTypeComponent("Dataset"); + String msType = ""; + String fileType = ""; + if (filePath.endsWith(".xls")) { + msType = "MSExcel"; + fileType = "excel"; + } else if (filePath.endsWith(".xlsx") || filePath.endsWith(".xlsm")) { + msType = "MSExcelX"; + fileType = "excel"; + } else if (filePath.endsWith(".ppt")) { + msType = "MSPowerPoint"; + fileType = "powerpoint"; + } else if (filePath.endsWith(".pptx")) { + msType = "MSPowerPointX"; + fileType = "powerpoint"; + } + TCComponentDataset datasetMSExcelX = datasetType.create(filename, "", msType); + datasetMSExcelX.setFiles(new String[] { filePath }, new String[] { fileType });// 两参:文件路径,命名应用(text) + item.getLatestItemRevision().add("IMAN_specification", datasetMSExcelX); + MessageBox.post("上传成功", "提示", MessageBox.WARNING); + } catch (TCException e1) { + e1.printStackTrace(); } +// } else { +// // 添加到数据集 +// boolean exist = false; +// try { +// TCComponent[] tcc = rev.getTCProperty("JD2_CSBGHZ").getReferenceValueArray(); +// for (int i = 0; i < tcc.length; i++) { +// if (value.equals(tcc[i].getProperty("current_id"))) { +// exist = true; +// TCComponentItem item = (TCComponentItem) tcc[i]; +// TCComponent[] tccitem = item.getLatestItemRevision() +// .getTCProperty("IMAN_specification").getReferenceValueArray(); +// TCComponentDataset dataset = (TCComponentDataset) tccitem[0]; +// dataset.setFiles(new String[] { file.getPath() }, new String[] { "excel" }); +// dataset.setProperty("object_name", filename); +// item.setProperty("object_name", filename); +// item.getLatestItemRevision().setProperty("object_name", filename); +// } +// } +// if (!exist) { +// try { +// TCComponentItemType itemtype = (TCComponentItemType) session +// .getTypeComponent("JD2_GTCSBG"); +// String itemId = itemtype.getNewID(); +// String itemRev = itemtype.getNewRev(null); +// TCComponentItem item = itemtype.create(itemId, itemRev, "JD2_GTCSBG", fileName, +// "描述", null); +// parentRev.add("JD2_CSBGHZ", item); +// TCComponentDatasetType datasetType = (TCComponentDatasetType) session +// .getTypeComponent("Dataset"); +// String msType = ""; +// if (filePath.endsWith(".xls")) { +// msType = "MSExcel"; +// } else if (filePath.endsWith(".xlsx") || filePath.endsWith(".xlsm")) { +// msType = "MSExcelX"; +// } +// TCComponentDataset datasetMSExcelX = datasetType.create(filename, "", msType); +// datasetMSExcelX.setFiles(new String[] { filePath }, new String[] { "excel" });// 两参:文件路径,命名应用(text) +// item.getLatestItemRevision().add("IMAN_specification", datasetMSExcelX); +// } catch (TCException e1) { +// e1.printStackTrace(); +// } +// } +// } catch (TCException e1) { +// e1.printStackTrace(); +// } +// +// } } } }; @@ -562,27 +659,91 @@ public class GTCSJHForm extends AbstractRendering { // TODO Auto-generated method stub int row = table.getSelectedRow(); Object obj; -// "realNo", "NO", "试验型号", "试验目的", "委托人员", "试验项目", "试验台数", "试验周期", -// "试验费用", "计划日程", "实际日程", "试验状态", "实验结果", "第_次试验", "实验人员", "测试报告", "备注" if (row != -1) { + if (!againAllow) { + MessageBox.post("当前操作的版本不是最新发布版本的下一个未发布版本,不允许再次试验", "提示", MessageBox.WARNING); + return; + } String realNum = (obj = table.getValueAt(row, 0)) == null ? "0" : obj.toString(); int num = Integer.parseInt((obj = table.getValueAt(row, 1)) == null ? "0" : obj.toString()); String[] rowData = new String[table.getColumnCount()]; rowData[0] = realNum; rowData[1] = num + 1 + ""; + num = Integer.parseInt((obj = table.getValueAt(row, 15)) == null ? "0" : obj.toString()); + boolean isNotLatest = false; + String realNum1; + int num1; + for (int i = 0; i < table.getRowCount(); i++) { + realNum1 = (obj = table.getValueAt(i, 0)) == null ? "0" : obj.toString(); + if (realNum.equals(realNum1)) { + num1 = Integer.parseInt((obj = table.getValueAt(i, 15)) == null ? "0" : obj.toString()); + if (num < num1) { + isNotLatest = true; + break; + } + } + } + if (isNotLatest) { + MessageBox.post("请选择最新的一次实验", "提示", MessageBox.WARNING); + return; + } +// boolean allowFlag = false; +// if (againAllowFlow == null) { +// try { +// againAllowFlow = JDMethodUtil.getPrefStrArray("jd_csjh_again_allow", session)[0];// 整机 +// TCComponent[] comps = form.getRelatedComponents("fnd0AllWorkflows"); +// if (comps.length > 0) { +// String flowName; +// for (TCComponent comp : comps) { +// flowName = comps[0].getProperty("object_name"); +// System.out.println(flowName); +// if (flowName.equals(againAllowFlow)) { +// allowFlag = true; +// break; +// } +// } +// } else { +// MessageBox.post("无法再次试验,请确认当前目标处于流程中", "提示", MessageBox.WARNING); +// return; +// } +// } catch (ArrayIndexOutOfBoundsException ex) { +// // TODO: handle exception +// ex.printStackTrace(); +// MessageBox.post("首选项\"jd_csjh_again_allow\"配置错误", "错误", MessageBox.ERROR); +// return; +// } catch (TCException e1) { +// // TODO Auto-generated catch block +// e1.printStackTrace(); +// } +// } +// if (!allowFlag) { +// MessageBox.post("无法再次试验,目标所处流程状态不满足\"jd_csjh_again_allow\"配置", "提示", MessageBox.WARNING); +// return; +// } for (int i = 2; i < 9; i++) { rowData[i] = (obj = table.getValueAt(row, i)) == null ? "" : obj.toString(); } - num = Integer.parseInt((obj = table.getValueAt(row, 13)) == null ? "0" : obj.toString()); - rowData[13] = num + 1 + ""; + rowData[15] = num + 1 + ""; rowData[16] = (obj = table.getValueAt(row, 16)) == null ? "" : obj.toString(); disableRows.add(row); model.insertRow(row + 1, rowData); + for (int i = 0; i < disableRows.size(); i++) { + if (disableRows.get(i) >= (row + 1)) { + disableRows.set(i, disableRows.get(i) + 1); + } + } + for (Entry entry : resultMap.entrySet()) { + if (entry.getValue().getRow() >= (row + 1)) { + resultMap.get(entry.getKey()).setRow(entry.getValue().getRow() + 1); + } + } table.revalidate(); table.repaint(); cost.setText(getCost() + ""); + } + } }; } @@ -611,8 +772,10 @@ public class GTCSJHForm extends AbstractRendering { private void addResult(String realNo, int row, int times, String result) { if (resultMap.containsKey(realNo)) { - if (times > resultMap.get(realNo).getTimes()) { - disableRows.add(resultMap.get(realNo).getRow()); + if (times >= resultMap.get(realNo).getTimes()) { + if (table.getSelectedRow() < 0) { + disableRows.add(resultMap.get(realNo).getRow());// 初始化时禁止填写次数小的 + } resultMap.put(realNo, new JG(row, times, result)); } } else { @@ -621,14 +784,21 @@ public class GTCSJHForm extends AbstractRendering { } private String getResult() { + boolean notEmpty = false; + boolean qualified = true; for (Entry entry : resultMap.entrySet()) { - System.out.println("realNo:" + entry.getKey() + "row:" + entry.getValue().getRow() + "jg:" - + entry.getValue().getJg() + "times:" + entry.getValue().getTimes()); +// System.out.println("realNo:" + entry.getKey() + "row:" + entry.getValue().getRow() + "jg:" +// + entry.getValue().getJg() + "times:" + entry.getValue().getTimes()); + if (!"".equals(entry.getValue().getJg().trim())) { + notEmpty = true; + } if ("不合格".equals(entry.getValue().getJg())) { - return "不合格"; + qualified = false; + break; } } - return "合格"; + + return notEmpty ? (qualified ? "合格" : "不合格") : ""; } @Override diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/form/NewProductTestForm.java b/com.connor.jd.plm/src/com/connor/jd/plm/form/NewProductTestForm.java index 764bb13..b3d5ce0 100644 --- a/com.connor.jd.plm/src/com/connor/jd/plm/form/NewProductTestForm.java +++ b/com.connor.jd.plm/src/com/connor/jd/plm/form/NewProductTestForm.java @@ -6,7 +6,6 @@ import java.awt.Component; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Font; -import java.awt.ScrollPane; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; @@ -14,6 +13,9 @@ import java.awt.event.MouseEvent; import java.sql.SQLException; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -22,8 +24,10 @@ import javax.swing.DefaultCellEditor; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JMenuItem; +import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPopupMenu; +import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.SwingConstants; @@ -31,16 +35,23 @@ import javax.swing.table.DefaultTableCellRenderer; import com.connor.jd.plm.table.CTMap; import com.connor.jd.plm.table.CTable; +import com.connor.jd.plm.table.JCheckPanel; import com.connor.jd.plm.table.ModelList; import com.connor.jd.plm.table.ModelValue; +import com.connor.jd.plm.table.MyCellEditor3; import com.connor.jd.plm.table.TCTableUtil; +import com.connor.jd.plm.utils.DBUtil; +import com.connor.jd.plm.utils.DialogUtil; import com.teamcenter.rac.aif.kernel.AIFComponentContext; import com.teamcenter.rac.aifrcp.AIFUtility; import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentDataset; import com.teamcenter.rac.kernel.TCComponentForm; import com.teamcenter.rac.kernel.TCComponentItem; import com.teamcenter.rac.kernel.TCComponentItemRevision; import com.teamcenter.rac.kernel.TCComponentItemType; +import com.teamcenter.rac.kernel.TCComponentProject; +import com.teamcenter.rac.kernel.TCComponentSchedule; import com.teamcenter.rac.kernel.TCException; import com.teamcenter.rac.kernel.TCSession; import com.teamcenter.rac.stylesheet.AbstractRendering; @@ -65,14 +76,31 @@ public class NewProductTestForm extends AbstractRendering { private String[] colNames = { "jd2_no", "jd2_lb", "jd2_xm", "jd2_xmfy", "jd2_DV", "jd2_PV", "jd2_PR", "jd2_SR", "jd2_bz" }; private String[] colNames2 = { "jd2_no", "jd2_wtry", "jd2_syxm", "jd2_syts", "jd2_syfy", "jd2_sycs" }; + private String[] colNames3 = { "jd2_no", "jd2_syxh", "jd2_symd", "jd2_wtry", "jd2_syxm", "jd2_syts", "jd2_syzq", + "jd2_syfy", "jd2_jhrc", "jd2_jhrc1", "jd2_sjrc", "jd2_sjrc1", "jd2_syzt", "jd2_syjg", "jd2_sycs", + "jd2_syry", "jd2_csbg", "jd2_bz" }; private String[] jieduan = { "DV", "PV", "PR", "SR" }; private TCSession session; + private List compareDataList = new ArrayList(); + private boolean testFlag = false; + private List realIdStr = new ArrayList(); + private TCComponentProject project; + private NewProductTestForm $this; public NewProductTestForm(TCComponent arg0) throws Exception { super(arg0); if (arg0 instanceof TCComponentForm) { this.form = (TCComponentForm) arg0; this.session = (TCSession) AIFUtility.getCurrentApplication().getSession(); + try { + dbData = Db.use(DBUtil.getDataSource(session)) + .query("select * from JD2_Machine ORDER BY TEST_TYPE ASC"); + } catch (Exception e) { + MessageBox.post("数据库配置错误", "错误", MessageBox.ERROR); + e.printStackTrace(); + return; + } + $this = this; loadRendering(); } } @@ -125,6 +153,7 @@ public class NewProductTestForm extends AbstractRendering { table1.getColumnModel().getColumn(1).setPreferredWidth(100); table1.getColumnModel().getColumn(2).setPreferredWidth(100); table1.getColumnModel().getColumn(3).setPreferredWidth(200); + table1.putClientProperty("terminateEditOnFocusLost", true); DefaultTableCellRenderer tcr1 = new DefaultTableCellRenderer() { // 重写方法 @@ -132,6 +161,9 @@ public class NewProductTestForm extends AbstractRendering { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { // TODO Auto-generated method stub + if (value instanceof JCheckPanel) { + return (JCheckPanel) value; + } int maxPreferredHeight = 0; for (int i = 0; i < table.getColumnCount(); i++) { @@ -177,16 +209,10 @@ public class NewProductTestForm extends AbstractRendering { data = TCTableUtil.getTableRows(form, "jd2_xpcsxqd", colNames); if (data.length == 0) { - try { - dbData = Db.use().query("select * from JD2_Machine ORDER BY TEST_TYPE ASC"); - model2 = new CTMap(dbData.size() + 3, 9); - } catch (SQLException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + model2 = new CTMap(dbData.size() + 3, 9); for (int i = 0; i < dbData.size(); i++) { - System.out.println(dbData.get(i).toString()); + realIdStr.add(dbData.get(i).getStr("TEST_ID")); modelList2.add(new ModelValue(dbData.get(i).getStr("TEST_PROJECT"), false, i + 2, 2, false)); modelList2.add(new ModelValue(dbData.get(i).getInt("TEST_COST") + "", false, i + 2, 3, false)); if (i == 0) { @@ -199,7 +225,8 @@ public class NewProductTestForm extends AbstractRendering { type = dbData.get(i).getStr("TEST_TYPE"); typeSpan = 0; } - if ((i == dbData.size() - 1)) { + System.out.println(dbData.get(i).toString()); + if (i == dbData.size() - 1) { System.out.println(type); modelList2.add( new ModelValue(type, false, i - typeSpan + 2, 1, false, i - typeSpan + 2, i + 2, 1, 1)); @@ -211,11 +238,44 @@ public class NewProductTestForm extends AbstractRendering { typeSpan++; } } else { + for (int i = 0; i < data.length; i++) { + compareDataList.add(data[i]); + realIdStr.add(data[i][0]); + } + for (int i = 0; i < dbData.size(); i++) { + String realId = dbData.get(i).getStr("TEST_ID"); + String[] rowData; + if (realIdStr.indexOf(realId) >= 0) { + rowData = compareDataList.get(realIdStr.indexOf(realId)); + rowData[1] = dbData.get(i).getStr("TEST_TYPE"); + rowData[2] = dbData.get(i).getStr("TEST_PROJECT"); + rowData[3] = dbData.get(i).getStr("TEST_COST"); + compareDataList.set(realIdStr.indexOf(realId), rowData); + } else { + rowData = new String[data[0].length]; + rowData[0] = realId; + rowData[1] = dbData.get(i).getStr("TEST_TYPE"); + rowData[2] = dbData.get(i).getStr("TEST_PROJECT"); + rowData[3] = dbData.get(i).getStr("TEST_COST"); + rowData[data[0].length - 1] = ""; + compareDataList.add(rowData); + } + } + Collections.sort(compareDataList, new Comparator() { + + @Override + public int compare(String[] o1, String[] o2) { + // TODO Auto-generated method stub + return o1[1].compareTo(o2[1]); + } + }); + data = compareDataList.toArray(new String[compareDataList.size()][]); model2 = new CTMap(data.length + 3, 9); + realIdStr.clear(); for (int i = 0; i < data.length; i++) { - System.out.println(Arrays.toString(data[i])); - modelList2.add(new ModelValue(data[i][2], false, i + 2, 2, false)); - modelList2.add(new ModelValue(data[i][3], false, i + 2, 3, false)); + realIdStr.add(data[i][0]); + modelList2.add(new ModelValue(data[i][2] == null ? "" : data[i][2], false, i + 2, 2, false)); + modelList2.add(new ModelValue(data[i][3] == null ? "" : data[i][3], false, i + 2, 3, false)); if (i == 0) { type = data[i][1]; } @@ -226,14 +286,16 @@ public class NewProductTestForm extends AbstractRendering { type = data[i][1]; typeSpan = 0; } - if ((i == data.length - 1)) { + System.out.println(Arrays.toString(data[i])); + if (i == data.length - 1) { System.out.println(type); modelList2.add( new ModelValue(type, false, i - typeSpan + 2, 1, false, i - typeSpan + 2, i + 2, 1, 1)); } + model2.setValueAt(i + 1, i + 2, 0); for (int ii = 4; ii < 9; ii++) { - model2.setValueAt(data[i][ii], i + 2, ii); + model2.setValueAt((data[i][ii] == null) ? "/" : data[i][ii], i + 2, ii); } typeSpan++; } @@ -252,7 +314,7 @@ public class NewProductTestForm extends AbstractRendering { table2 = new CTable(model2) { @Override public boolean isCellEditable(int row, int col) { - if (modelList2.isDisableEdit(row, col) || col == 0 || row == table2.getRowCount() - 1) { + if (modelList2.isDisableEdit(row, col)) { return false; } return true; @@ -270,6 +332,7 @@ public class NewProductTestForm extends AbstractRendering { table2.getColumnModel().getColumn(6).setPreferredWidth(50); table2.getColumnModel().getColumn(7).setPreferredWidth(50); table2.getColumnModel().getColumn(8).setPreferredWidth(60); + table2.putClientProperty("terminateEditOnFocusLost", true); DefaultTableCellRenderer tcr2 = new DefaultTableCellRenderer() { // 重写方法 @@ -321,7 +384,7 @@ public class NewProductTestForm extends AbstractRendering { if (obj != null) { String objStr = obj.toString().trim(); try { - if ("/".equals(objStr)) { + if ("/".equals(objStr) || "".equals(objStr)) { objStr = "0"; } int num = Integer.parseInt(objStr); @@ -396,7 +459,42 @@ public class NewProductTestForm extends AbstractRendering { JPanel btns = new JPanel(new FlowLayout(FlowLayout.CENTER)); JButton create = new JButton("创建测试计划"); create.addActionListener(create()); + JButton updateDV = new JButton("更新DV"); + updateDV.addActionListener(update("DV")); + JButton updatePV = new JButton("更新PV"); + updatePV.addActionListener(update("PV")); + JButton updatePR = new JButton("更新PR"); + updatePR.addActionListener(update("PR")); + JButton updateSR = new JButton("更新SR"); + updateSR.addActionListener(update("SR")); + + JButton testBtn = new JButton("清空table内容"); + testBtn.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + String[][] temp = new String[0][]; + TCTableUtil.setTableRows(form, "jd2_xpcsxqd", "JD2_XPCSXQD", colNames, temp); +// try { +// Map testMap = ((TCComponentItemRevision) form.whereReferenced()[0].getComponent()) +// .getClassificationAttributes(); +// for (Entry entry : testMap.entrySet()) { +// System.out.println(entry.getKey() + "====>" + entry.getValue()); +// } +// } catch (TCException e1) { +// // TODO Auto-generated catch block +// e1.printStackTrace(); +// } + testFlag = true; + } + }); btns.add(create); + btns.add(updateDV); + btns.add(updatePV); + btns.add(updatePR); + btns.add(updateSR); + btns.add(testBtn); menu.setVisible(false); addR = new JMenuItem("新增测试项"); @@ -404,24 +502,26 @@ public class NewProductTestForm extends AbstractRendering { addR.addActionListener(addRow()); menu.add(addR); - ScrollPane sc = new ScrollPane(); - sc.add(inner); - root.add(sc, BorderLayout.CENTER); + JScrollPane jsp = new JScrollPane(inner); + root.add(jsp, BorderLayout.CENTER); root.add(btns, BorderLayout.SOUTH); this.add(root); } @Override public void saveRendering() { - - savePropValue(table1, modelList1); - savePropValue(table2, modelList2); + if (testFlag) { + return; + } + saveModel(table1, modelList1); + saveModel(table2, modelList2); Object obj; if (data.length == 0) { if (dbData.size() == 0) { try { - dbData = Db.use().query("select * from JD2_Machine ORDER BY TEST_TYPE ASC"); + dbData = Db.use(DBUtil.getDataSource(session)) + .query("select * from JD2_Machine ORDER BY TEST_TYPE ASC"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -430,7 +530,7 @@ public class NewProductTestForm extends AbstractRendering { data = new String[table2.getRowCount() - 3][9]; for (int i = 0; i < dbData.size(); i++) { - data[i][0] = (obj = model2.getValueAt(i + 2, 0)) == null ? "" : obj.toString(); + data[i][0] = dbData.get(i).getStr("TEST_ID"); data[i][1] = dbData.get(i).getStr("TEST_TYPE"); data[i][2] = dbData.get(i).getStr("TEST_PROJECT"); data[i][3] = dbData.get(i).getStr("TEST_COST"); @@ -440,8 +540,9 @@ public class NewProductTestForm extends AbstractRendering { } System.out.println("dbData.size() " + dbData.size()); System.out.println("table2.getRowCount() " + table2.getRowCount()); - for (int i = dbData.size() + 2; i < table2.getRowCount() - 1; i++) { - for (int ii = 0; ii < 9; ii++) { + for (int i = dbData.size(); i < table2.getRowCount() - 3; i++) { + data[i][0] = realIdStr.get(i); + for (int ii = 1; ii < 9; ii++) { data[i][ii] = (obj = model2.getValueAt(i + 2, ii)) == null ? "" : obj.toString(); } } @@ -455,8 +556,9 @@ public class NewProductTestForm extends AbstractRendering { newData[i][ii] = (obj = model2.getValueAt(i + 2, ii)) == null ? "" : obj.toString(); } } - for (int i = data.length + 2; i < table2.getRowCount() - 1; i++) { - for (int ii = 0; ii < 9; ii++) { + for (int i = data.length; i < table2.getRowCount() - 3; i++) { + newData[i][0] = realIdStr.get(i); + for (int ii = 1; ii < 9; ii++) { newData[i][ii] = (obj = model2.getValueAt(i + 2, ii)) == null ? "" : obj.toString(); } } @@ -465,22 +567,6 @@ public class NewProductTestForm extends AbstractRendering { } } - private void savePropValue(CTable table, ModelList ml) { - for (ModelValue mv : ml) { - if (mv.isProp()) { - Object obj = table.getValueAt(mv.getRow(), mv.getCol()); - try { - if (prop.containsKey(mv.getValue())) { - form.setProperty(mv.getValue(), obj == null ? "" : obj.toString()); - } - } catch (TCException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - } - } - private MouseAdapter rightClick() { return new MouseAdapter() { @Override @@ -503,8 +589,13 @@ public class NewProductTestForm extends AbstractRendering { // TODO Auto-generated method stub int row = model2.getRowCount() - 2; int num = Integer.parseInt(model2.getValueAt(row, 0).toString()); + modelList2.findAndAddRow(row + 1, table2.getColumnCount(), 1); model2.insertRow(model2.getRowCount() - 1); + realIdStr.add(System.currentTimeMillis() + ""); model2.setValueAt(num + 1, row + 1, 0); + for (int i = 4; i < 8; i++) { + model2.setValueAt("/", row + 1, i); + } table2.revalidate(); table2.repaint(); } @@ -518,65 +609,55 @@ public class NewProductTestForm extends AbstractRendering { public void actionPerformed(ActionEvent paramActionEvent) { // TODO Auto-generated method stub try { - AIFComponentContext[] comps = form.whereReferenced(); StringBuilder msg = new StringBuilder(); - for (AIFComponentContext aif : comps) { - System.out.println("ref type:" + aif.getComponent().getType()); - if ("JD2_GTXPCSXQDRevision".equals(aif.getComponent().getType())) { - TCComponentItemRevision rev = (TCComponentItemRevision) aif.getComponent(); - TCComponent[] compArr = rev.getTCProperty("JD2_CSJH").getReferenceValueArray(); - String exist = ""; - for (TCComponent t : compArr) { - exist += t.getProperty("object_name"); - } - List colData = new ArrayList(); - String ownner = form.getTCProperty("owning_user").getUIFValue(); - for (int i = 0; i < 4; i++) { - if (exist.contains(jieduan[i])) { - System.out.println("\"" + jieduan[i] + "阶段\"测试计划已创建"); - msg.append("\"" + jieduan[i] + "阶段\"测试计划已创建\n"); - continue; - } - Object obj; - Object temp; - int rowNum = 0; - for (int ii = 2; ii < table2.getRowCount() - 1; ii++) { - obj = table2.getValueAt(ii, i + 4); - if (obj != null && !"/".equals(obj.toString().trim())) { - // colNames2 = { "jd2_no", "jd2_wtry", "jd2_syxm", "jd2_syts", "jd2_syfy", - // "jd2_sycs" }; - String[] row = new String[6]; - row[0] = rowNum + ""; - row[1] = ownner; - row[2] = (temp = table2.getValueAt(ii, 2)) == null ? "" : temp.toString(); - row[3] = obj.toString().trim(); - row[4] = (temp = table2.getValueAt(ii, 3)) == null ? "0" - : temp.toString().trim(); - row[5] = "1"; - System.out.println(Arrays.toString(row)); - colData.add(row); - rowNum++; - } - } - if (colData.size() != 0) { - TCComponentItemType type = (TCComponentItemType) session - .getTypeComponent("JD2_GTXPXMCSJH"); - TCComponentItem item = type.create(null, null, "JD2_GTXPXMCSJH", - jieduan[i] + "阶段测试计划", "", null); - rev.add("JD2_CSJH", item); - TCComponentItemRevision rev1 = item.getLatestItemRevision(); - TCComponentForm form1 = (TCComponentForm) rev1 - .getRelatedComponents("IMAN_master_form_rev")[0]; - String[][] dataArr = colData.toArray(new String[colData.size()][6]); - System.out.println(Arrays.deepToString(dataArr)); - TCTableUtil.setTableRows(form1, "jd2_csjhtable", "JD2_CSJHTABLE", colNames2, - dataArr); - msg.append("\"" + jieduan[i] + "阶段\"测试计划创建成功\n"); - } - colData.clear(); + TCComponentItemRevision rev = (TCComponentItemRevision) form.whereReferenced()[0].getComponent(); + TCComponent[] comps = rev.getRelatedComponents("JD2_CSJH"); + String exist = ""; + for (TCComponent t : comps) { + exist += t.getProperty("object_name"); + } + List colData = new ArrayList(); + String ownner = form.getTCProperty("owning_user").getUIFValue(); + for (int i = 0; i < 4; i++) { + if (exist.contains(jieduan[i])) { + System.out.println("\"" + jieduan[i] + "阶段\"测试计划已创建"); + msg.append("\"" + jieduan[i] + "阶段\"测试计划已创建\n"); + continue; + } + Object obj; + Object temp; + for (int ii = 2; ii < table2.getRowCount() - 1; ii++) { + obj = table2.getValueAt(ii, i + 4); + if (obj != null && !"/".equals(obj.toString().trim())) { + // colNames2 = { "jd2_no", "jd2_wtry", "jd2_syxm", "jd2_syts", "jd2_syfy", + // "jd2_sycs" }; + String[] row = new String[6]; + row[0] = realIdStr.get(ii - 2); + row[1] = ownner; + row[2] = (temp = table2.getValueAt(ii, 2)) == null ? "" : temp.toString(); + row[3] = obj.toString().trim(); + row[4] = (temp = table2.getValueAt(ii, 3)) == null ? "0" : temp.toString().trim(); + row[5] = "1"; + System.out.println(Arrays.toString(row)); + colData.add(row); } } + if (colData.size() != 0) { + TCComponentItemType type = (TCComponentItemType) session.getTypeComponent("JD2_GTXPXMCSJH"); + TCComponentItem item = type.create(null, null, "JD2_GTXPXMCSJH", jieduan[i] + "阶段测试计划", "", + null); + rev.add("JD2_CSJH", item); + TCComponentItemRevision rev1 = item.getLatestItemRevision(); + TCComponentForm form1 = (TCComponentForm) rev1 + .getRelatedComponents("IMAN_master_form_rev")[0]; + String[][] dataArr = colData.toArray(new String[colData.size()][6]); + System.out.println(Arrays.deepToString(dataArr)); + TCTableUtil.setTableRows(form1, "jd2_csjhtable", "JD2_CSJHTABLE", colNames2, dataArr); + msg.append("\"" + jieduan[i] + "阶段\"测试计划创建成功\n"); + } + colData.clear(); } + MessageBox.post(msg.toString(), "提示", MessageBox.WARNING); } catch (TCException e) { // TODO Auto-generated catch block @@ -592,11 +673,98 @@ public class NewProductTestForm extends AbstractRendering { return form.isCheckedOut(); } +// String[] textArr1 = { "项目信息:", "立项时间:", "基本型号:", "测试型号:", "产品型号:", "项目资料:", "产品经理:", "产品变更点:", "品质经理:", "开发日程:", +// "开发等级:", "开发阶段:" }; +// String[] propArr = { "jd2_xmxx", "jd2_lxsj", "jd2_jbxh", "jd2_csxh", "jd2_cpxh", "jd2_xmzl", "jd2_cpjl", +// "jd2_cpbgd", "jd2_pzjl", "jd2_kfrc", "jd2_kfdj", "jd2_kfjd" }; private void initModel(CTMap model, ModelList modelList) { + try { + TCComponentItemRevision rev = (TCComponentItemRevision) form.whereReferenced()[0].getComponent(); + AIFComponentContext[] aifs = rev.whereReferenced(); + for (AIFComponentContext aif : aifs) { + if (aif.getComponent() instanceof TCComponentProject) { + project = (TCComponentProject) aif.getComponent(); + break; + } + } + } catch (TCException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + for (ModelValue mv : modelList) { if (mv.isProp()) { if (prop.containsKey(mv.getValue())) { - model.setValueAt(prop.get(mv.getValue()), mv.getRow(), mv.getCol()); + if (modelList == modelList1 && project != null) { + // 属性映射 + try { + switch (mv.getValue()) { + case "jd2_lxsj": + model.setValueAt(project.getProperty("creation_date"), mv.getRow(), mv.getCol()); + break; + case "jd2_xmxx": + model.setValueAt(project.getProjectID(), mv.getRow(), mv.getCol()); + break; + case "jd2_jbxh": + model.setValueAt(project.getProperty("jd2_cpxh"), mv.getRow(), mv.getCol()); + break; + case "jd2_kfdj": + model.setValueAt(project.getProperty("jd2_xmdj"), mv.getRow(), mv.getCol()); + break; + case "jd2_kfjd": + String str = form.getProperty("jd2_kfjd"); + JCheckPanel checkPanel = new JCheckPanel(jieduan, false); + checkPanel.setSelected(str); + model.setValueAt(checkPanel, mv.getRow(), mv.getCol()); + table1.getColumnModel().getColumn(mv.getCol()) + .setCellEditor(new MyCellEditor3(new JTextField())); + break; + case "jd2_cpbgd": + TCComponent[] cpbgd = project.getRelatedComponents("jd2_cpbgd");// 不知道是什么属性 + if (cpbgd.length > 0) { + String displayValue = ""; + for (TCComponent comp : cpbgd) { + displayValue += comp.toString() + ";"; + } + model.setValueAt(displayValue, mv.getRow(), mv.getCol()); + table1.addMouseListener(openCPBGD(cpbgd, mv)); + } + break; + case "jd2_kfrc": + TCComponent[] kfrc = project.getRelatedComponents("jd2_kfrc"); + if (kfrc.length > 0) { + TCComponentSchedule schedule = (TCComponentSchedule) kfrc[0]; + TCComponent[] tasks = schedule.getAllTasks(); + String startTime = ""; + String endTime = ""; + for (TCComponent task : tasks) { + if ("立项申请".equals(task.getProperty("object_name"))) { + startTime = task.getProperty(""); + } + if ("小批量产评审PRA".equals(task.getProperty("object_name"))) { + endTime = task.getProperty(""); + } + } + if (!"".equals(startTime) || !"".equals(endTime)) { + model.setValueAt(startTime + "-" + endTime, mv.getRow(), mv.getCol()); + } + } + break; + default: + if ("".equals(prop.get(mv.getValue()))) { + model.setValueAt("/", mv.getRow(), mv.getCol()); + } else { + model.setValueAt(prop.get(mv.getValue()), mv.getRow(), mv.getCol()); + } + } + } catch (TCException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } else { + model.setValueAt(prop.get(mv.getValue()), mv.getRow(), mv.getCol()); + } } else { System.out.println("属性‘" + mv.getValue() + "’不存在"); } @@ -607,14 +775,67 @@ public class NewProductTestForm extends AbstractRendering { model.combine(mv.getCombineRows(), mv.getCombineColumns()); } } + } - private void saveModel(ModelList modelList) { + private MouseAdapter openCPBGD(TCComponent[] cpbgd, ModelValue mv) { + return new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + if (e.getClickCount() == 2 && table1.getSelectedRow() == mv.getRow() + && table1.getSelectedColumn() == mv.getCol()) { + try { + if (cpbgd.length > 1) { + List data = new ArrayList(); + for (TCComponent comp : cpbgd) { + data.add(new String[] { data.size() + 1 + "", comp.toString() }); + } + DialogUtil.TableMsg msg = DialogUtil.createTableMsg(new String[] { "序号", "名称" }, data); + int res = JOptionPane.showConfirmDialog($this, msg.panel, "选择", JOptionPane.PLAIN_MESSAGE); + if (res == JOptionPane.OK_OPTION) { + if (msg.table.getSelectedRow() > 0) { + TCComponentItem item = (TCComponentItem) cpbgd[msg.table.getSelectedRow()]; + TCComponent[] tccitem = item.getLatestItemRevision() + .getTCProperty("IMAN_specification").getReferenceValueArray(); + TCComponentDataset dataset = (TCComponentDataset) tccitem[0]; + dataset.open(); + } + } + } else { + TCComponentItem item = (TCComponentItem) cpbgd[0]; + TCComponent[] tccitem = item.getLatestItemRevision().getTCProperty("IMAN_specification") + .getReferenceValueArray(); + TCComponentDataset dataset = (TCComponentDataset) tccitem[0]; + dataset.open(); + } + } catch (Exception e1) { + e1.printStackTrace(); + } + } + } + }; + } + + private void saveModel(JTable table, ModelList modelList) { Object obj; for (ModelValue mv : modelList) { if (mv.isProp()) { if (prop.containsKey(mv.getValue())) { - obj = table2.getValueAt(mv.getRow(), mv.getCol()); + obj = table.getValueAt(mv.getRow(), mv.getCol()); + if (modelList == modelList1 && project != null) { + if ("jd2_kfjd".equals(mv.getValue())) { + obj = table.getValueAt(mv.getRow(), mv.getCol()); + if (obj != null) { + String selectedText = ((JCheckPanel) obj).getSelectedText(); + try { + form.setProperty(mv.getValue(), selectedText); + } catch (TCException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + } try { form.setProperty(mv.getValue(), obj == null ? "" : obj.toString()); } catch (TCException e) { @@ -628,4 +849,82 @@ public class NewProductTestForm extends AbstractRendering { } }; + private ActionListener update(String jieduanStr) { + return new ActionListener() { + + @Override + public void actionPerformed(ActionEvent paramActionEvent) { + // TODO Auto-generated method stub + try { + TCComponentItemRevision rev = (TCComponentItemRevision) form.whereReferenced()[0].getComponent(); + TCComponent[] comps = rev.getRelatedComponents("JD2_CSJH"); + TCComponentItem item = null; + for (TCComponent comp : comps) { + System.out.println(comp.getProperty("object_string")); + if (comp.getProperty("object_string").contains(jieduanStr)) { + item = (TCComponentItem) comp; + break; + } + } + if (item == null) { + MessageBox.post("\"" + jieduanStr + "阶段\"测试计划未创建,请先创建", "提示", MessageBox.WARNING); + return; + } + + TCComponentItemRevision rev1 = item.getLatestItemRevision(); + TCComponentForm form1 = (TCComponentForm) rev1.getRelatedComponents("IMAN_master_form_rev")[0]; + List> tableRows = TCTableUtil.getTableMapList(form1, "jd2_csjhtable", + colNames3); + List realNo = new ArrayList(); + for (Map map : tableRows) { + realNo.add(map.get("jd2_no")); + } + + String ownner = form.getTCProperty("owning_user").getUIFValue(); + Object obj, temp; + List jieduanList = Arrays.asList(jieduan); + for (int i = 2; i < table2.getRowCount() - 1; i++) { + obj = table2.getValueAt(i, jieduanList.indexOf(jieduanStr) + 4); + if (obj != null && !"/".equals(obj.toString().trim())) { + // colNames2 = { "jd2_no", "jd2_wtry", "jd2_syxm", "jd2_syts", "jd2_syfy", + // "jd2_sycs" }; + Map tempMap; + if (realNo.contains(realIdStr.get(i - 2))) { + int index = realNo.indexOf(realIdStr.get(i - 2)); + for (int ii = index; ii < realNo.size(); ii++) {// 再次试验会出现重复realNo + if (realNo.get(ii).equals(realIdStr.get(i - 2))) { + tempMap = tableRows.get(ii); + tempMap.put("jd2_syxm", + (temp = table2.getValueAt(i, 2)) == null ? "" : temp.toString()); + tempMap.put("jd2_syts", obj.toString().trim()); + tempMap.put("jd2_syfy", + (temp = table2.getValueAt(i, 3)) == null ? "" : temp.toString()); + tableRows.set(ii, tempMap); + } + } + } else { + tempMap = new HashMap(); + tempMap.put("jd2_no", realIdStr.get(i - 2)); + tempMap.put("jd2_wtry", ownner); + tempMap.put("jd2_syxm", + (temp = table2.getValueAt(i, 2)) == null ? "" : temp.toString()); + tempMap.put("jd2_syts", obj.toString().trim()); + tempMap.put("jd2_syfy", + (temp = table2.getValueAt(i, 3)) == null ? "0" : temp.toString().trim()); + tempMap.put("jd2_sycs", "1"); + tableRows.add(tempMap); + } + } + } + TCTableUtil.setTableMapList(form1, "jd2_csjhtable", "JD2_CSJHTABLE", tableRows); + MessageBox.post("更新成功", "提示", MessageBox.WARNING); + + } catch (TCException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + }; + } + } diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/form/SampleConfirmationForm.java b/com.connor.jd.plm/src/com/connor/jd/plm/form/SampleConfirmationForm.java index 27f29a6..e97e0f0 100644 --- a/com.connor.jd.plm/src/com/connor/jd/plm/form/SampleConfirmationForm.java +++ b/com.connor.jd.plm/src/com/connor/jd/plm/form/SampleConfirmationForm.java @@ -6,7 +6,7 @@ import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.FlowLayout; -import java.awt.ScrollPane; +import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; @@ -21,6 +21,7 @@ import java.util.Map; import java.util.Map.Entry; import javax.swing.BorderFactory; +import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFileChooser; @@ -28,6 +29,7 @@ import javax.swing.JLabel; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JPopupMenu; +import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.SwingConstants; @@ -86,7 +88,8 @@ public class SampleConfirmationForm extends AbstractRendering { private Map general3; private List disableEdit; private List disableEdit3; - private Map pic; + private Map picMap = new HashMap();// 图片; + private Map fileMap = new HashMap();// 文件; private List disableEdit2; private JRadioPanel yssl; private JCheckPanel mqjd; @@ -132,8 +135,14 @@ public class SampleConfirmationForm extends AbstractRendering { jgItems.put("拒绝", "1"); jgItems.put("保留", "2"); jgItems.put("更改图纸", "3"); - AIFComponentContext[] ref = form.whereReferenced(); - rev = (TCComponentItemRevision) ref[0].getComponent(); + jgItems.put(" ", null); + AIFComponentContext[] aifs = form.whereReferenced(); + for (AIFComponentContext aif : aifs) { + if ("JD2_GTYPQRDRevision".equals(aif.getComponent().getType())) { + rev = (TCComponentItemRevision) aif.getComponent(); + break; + } + } setLayout(new BorderLayout()); JPanel root = new JPanel(new BorderLayout()); @@ -259,7 +268,17 @@ public class SampleConfirmationForm extends AbstractRendering { // TODO Auto-generated method stub if (value instanceof JLabel) { - return (JLabel) value; + JLabel label = (JLabel) value; + if (isSelected) { + label.setForeground(Color.WHITE); + label.setBackground(new Color(0xff0078D7)); + label.setOpaque(true); + } else { + label.setForeground(new Color(0xff0078D7)); + label.setBackground(Color.WHITE); + label.setOpaque(true); + } + return label; } if (value instanceof JComboBox) { return (JComboBox) value; @@ -287,6 +306,7 @@ public class SampleConfirmationForm extends AbstractRendering { return this; } + }; tcr3.setHorizontalAlignment(SwingConstants.CENTER); table3.setDefaultRenderer(Object.class, tcr3); @@ -297,7 +317,7 @@ public class SampleConfirmationForm extends AbstractRendering { // 属性映射 prop = form.getProperties(); - AIFComponentContext[] parents = rev.whereReferenced(); + AIFComponentContext[] parents = rev.getItem().whereReferenced(); TCComponentItemRevision parentRev = null; for (AIFComponentContext aif : parents) { try { @@ -378,7 +398,7 @@ public class SampleConfirmationForm extends AbstractRendering { System.out.println("属性‘jd2_mqjd’未找到"); } - for (Entry entry : pic.entrySet()) { + for (Entry entry : picMap.entrySet()) { int row = entry.getValue()[0]; int col = entry.getValue()[1]; if (prop.containsKey(entry.getKey())) { @@ -395,32 +415,63 @@ public class SampleConfirmationForm extends AbstractRendering { File img = dataset.getFiles(types[0], temp)[0]; System.out.println(img.getPath()); -// ImageIcon icon = new ImageIcon(img.getPath()); + ImageIcon icon = new ImageIcon(img.getPath()); + + int[] arr = model3.getSpan(row, col); + System.out.println("row:" + arr[0] + ",col:" + arr[1]); + icon.setImage(icon.getImage().getScaledInstance( + table3.getColumnModel().getColumn(col).getPreferredWidth() * arr[1], + table3.getRowHeight() * arr[0], Image.SCALE_SMOOTH)); + JLabel label = new JLabel(); + label.setLayout(new FlowLayout(FlowLayout.CENTER)); + label.setIcon(icon); + label.setHorizontalAlignment(SwingConstants.CENTER); + label.addMouseListener(showImg(img.getPath())); + label.setToolTipText(dataset.getUid()); + model3.setValueAt(label, row, col); + } else { + model3.setValueAt(new JLabel(""), row, col); + } + } catch (Exception e) { + model3.setValueAt(new JLabel(""), row, col); + e.printStackTrace(); + } + + } else { + model3.setValueAt(new JLabel(""), row, col); + System.out.println("属性‘" + entry.getKey() + "’未找到"); + } + } + + for (Entry entry : fileMap.entrySet()) { + int row = entry.getValue()[0]; + int col = entry.getValue()[1]; + if (prop.containsKey(entry.getKey())) { + TCComponent comp = null; + try { + if (!"".equals(prop.get(entry.getKey()))) { + comp = session.stringToComponent(prop.get(entry.getKey())); + TCComponentDataset dataset = (TCComponentDataset) comp; + String temp = System.getenv("temp"); + System.out.println(temp); + String[] types = dataset.getProperty("ref_names").split(","); + System.out.println(Arrays.toString(types)); + System.out.println(Arrays.toString(dataset.getFileNames(types[0]))); + File img = dataset.getFiles(types[0], temp)[0]; + System.out.println(img.getPath()); int[] arr = model3.getSpan(row, col); -// int width = 0; -// for (int i = 0; i < arr[1]; i++) { -// width+=table3.getColumnModel().getColumn() -// } System.out.println("row:" + arr[0] + ",col:" + arr[1]); -// icon.setImage(icon.getImage().getScaledInstance( -// table3.getColumnModel().getColumn(col).getPreferredWidth() * arr[1], -// table3.getRowHeight() * arr[0], Image.SCALE_SMOOTH)); JLabel label = new JLabel(); label.setLayout(new FlowLayout(FlowLayout.CENTER)); -// label.setIcon(icon); label.setForeground(new Color(0xff0078D7)); label.setText(img.getName()); - if ("jd2_icqjyzds".equals(entry.getKey())) { - label.addMouseListener(showFile(dataset)); - } else { - label.addMouseListener(showImg(img.getPath())); - } + label.setHorizontalAlignment(SwingConstants.CENTER); + label.addMouseListener(showFile(dataset)); label.setToolTipText(dataset.getUid()); model3.setValueAt(label, row, col); } else { model3.setValueAt(new JLabel(""), row, col); -// System.out.println("未找到uid为\"" + prop.get(entry.getKey()) + "\"的数据集"); } } catch (Exception e) { model3.setValueAt(new JLabel(""), row, col); @@ -432,6 +483,7 @@ public class SampleConfirmationForm extends AbstractRendering { System.out.println("属性‘" + entry.getKey() + "’未找到"); } } + if (prop.containsKey("jd2_ypqrdtable")) { String[][] tableRows = TCTableUtil.getTableRows(form, "jd2_ypqrdtable", colNames); System.out.println(Arrays.deepToString(tableRows)); @@ -466,12 +518,11 @@ public class SampleConfirmationForm extends AbstractRendering { inner.add(table, BorderLayout.CENTER); inner.add(table3, BorderLayout.SOUTH); - ScrollPane confirmScrollPanel1 = new ScrollPane(); - confirmScrollPanel1.add(inner); -// ScrollPane confirmScrollPanel3 = new ScrollPane(); -// confirmScrollPanel3.add(table3); +// ScrollPane confirmScrollPanel1 = new ScrollPane(); +// confirmScrollPanel1.add(inner); + JScrollPane confirmScrollPanel1 = new JScrollPane(inner); confirmPanel.add(confirmScrollPanel1, BorderLayout.CENTER); -// confirmPanel.add(confirmScrollPanel3, BorderLayout.SOUTH); + // 检查表 examinePanel.setBorder(BorderFactory.createLineBorder(Color.black, 1)); examinePanel.setLayout(new BorderLayout()); @@ -547,9 +598,6 @@ public class SampleConfirmationForm extends AbstractRendering { maxPreferredHeight = Math.max(maxPreferredHeight, getPreferredSize().height); } setBackground(Color.white); -// if(points1.contains(new Point(row,column))) -// setForeground(new Color(0,0,255)); -// else setForeground(Color.black); if (isSelected) { setBackground(new Color(0, 120, 215)); @@ -617,8 +665,9 @@ public class SampleConfirmationForm extends AbstractRendering { } } - ScrollPane examineScrollPanel = new ScrollPane(); - examineScrollPanel.add(examinePanel); +// ScrollPane examineScrollPanel = new ScrollPane(); +// examineScrollPanel.add(examinePanel); + JScrollPane examineScrollPanel = new JScrollPane(examinePanel); // 确认单右键菜单 menu.setVisible(false); @@ -670,6 +719,7 @@ public class SampleConfirmationForm extends AbstractRendering { center.add("confirm", confirmPanel); center.add("examine", examineScrollPanel); + root.add(buttons, BorderLayout.NORTH); root.add(center, BorderLayout.CENTER); this.add(menu); @@ -729,10 +779,14 @@ public class SampleConfirmationForm extends AbstractRendering { try { if (form.getTCProperty("jd2_fl") != null) { String[] items = form.getTCProperty("jd2_fl").getLOV().getListOfValues().getLOVDisplayValues(); + fl.addItem(" "); for (String s : items) { fl.addItem(s); } fl.setSelectedItem(form.getProperty("jd2_fl")); + if ("".equals(form.getProperty("jd2_fl"))) { + fl.setSelectedItem(" "); + } model.setValueAt(fl, 6, 17); } @@ -754,10 +808,14 @@ public class SampleConfirmationForm extends AbstractRendering { try { if (form.getTCProperty("jd2_zt") != null) { String[] items = form.getTCProperty("jd2_zt").getLOV().getListOfValues().getLOVDisplayValues(); + zt.addItem(" "); for (String s : items) { zt.addItem(s); } zt.setSelectedItem(form.getProperty("jd2_zt")); + if ("".equals(form.getProperty("jd2_zt"))) { + zt.setSelectedItem(" "); + } model.setValueAt(zt, 7, 17); } @@ -891,11 +949,11 @@ public class SampleConfirmationForm extends AbstractRendering { private void initModel3() { disableEdit3 = new ArrayList<>();// 不允许编辑 general3 = new HashMap();// 要填写的一般属性 - pic = new HashMap();// 图片 model3.setValueAt("被标记为“CTQ”的尺寸非常重要", 0, 0);// 从“底部”开始 disableEdit3.add(0 + ",0"); model3.setValueAt("SPL Picture", 1, 0); - pic.put("jd2_ypzp", new int[] { 2, 0 }); +// picMap.put("jd2_ypzp", new int[] { 2, 0 }); + picMap.put("user_data_1", new int[] { 2, 0 }); disableEdit3.add(1 + ",0"); model3.setValueAt("注塑条件", 1, 4); disableEdit3.add(1 + ",4"); @@ -919,11 +977,11 @@ public class SampleConfirmationForm extends AbstractRendering { general3.put("jd2_zs", new int[] { 2, 6 }); general3.put("jd2_lq", new int[] { 2, 7 }); general3.put("jd2_baoz", new int[] { 2, 8 }); - pic.put("jd2_gfzjbg", new int[] { 2, 9 }); -// pic.put("user_data_2", new int[] { 2, 9 }); - pic.put("jd2_gfzyzds", new int[] { 2, 12 }); - pic.put("jd2_gfqcgct", new int[] { 2, 15 }); - pic.put("jd2_wlbzjbq", new int[] { 2, 18 }); +// fileMap.put("jd2_gfzjbg", new int[] { 2, 9 }); + fileMap.put("user_data_2", new int[] { 2, 9 }); + fileMap.put("jd2_gfzyzds", new int[] { 2, 12 }); + fileMap.put("jd2_gfqcgct", new int[] { 2, 15 }); + fileMap.put("jd2_wlbzjbq", new int[] { 2, 18 }); model3.setValueAt("Shot/24Hr", 3, 5); disableEdit3.add(3 + ",5"); model3.setValueAt("吨", 3, 6); @@ -944,18 +1002,17 @@ public class SampleConfirmationForm extends AbstractRendering { disableEdit3.add(5 + ",15"); model3.setValueAt("模具标识", 5, 18); disableEdit3.add(5 + ",18"); - pic.put("jd2_zsgytj", new int[] { 6, 7 }); - pic.put("jd2_icqsjbg", new int[] { 6, 9 }); - pic.put("jd2_csbg", new int[] { 6, 12 }); - pic.put("jd2_czbg", new int[] { 6, 15 }); - pic.put("jd2_mjbs", new int[] { 6, 18 }); + fileMap.put("jd2_zsgytj", new int[] { 6, 7 }); + fileMap.put("jd2_icqsjbg", new int[] { 6, 9 }); + fileMap.put("jd2_csbg", new int[] { 6, 12 }); + fileMap.put("jd2_czbg", new int[] { 6, 15 }); + fileMap.put("jd2_mjbs", new int[] { 6, 18 }); model3.setValueAt("实测重量", 7, 4); disableEdit3.add(7 + ",4"); general3.put("jd2_sczl", new int[] { 7, 5 }); model3.setValueAt("IQC作业指导书", 9, 4); disableEdit3.add(9 + ",4"); - pic.put("jd2_icqjyzds", new int[] { 10, 4 }); -// pic.put("user_data_1", new int[] { 10, 4 }); + fileMap.put("jd2_icqjyzds", new int[] { 10, 4 }); model3.setValueAt("决定", 11, 12); disableEdit3.add(11 + ",12"); jued = new JComboBox(); @@ -963,10 +1020,14 @@ public class SampleConfirmationForm extends AbstractRendering { try { if (form.getTCProperty("jd2_jued") != null) { String[] items = form.getTCProperty("jd2_jued").getLOV().getListOfValues().getLOVDisplayValues(); + jued.addItem(" "); for (String s : items) { jued.addItem(s); } jued.setSelectedItem(form.getProperty("jd2_jued")); + if ("".equals(form.getProperty("jd2_jued"))) { + jued.setSelectedItem(" "); + } model3.setValueAt(jued, 11, 15); } @@ -974,7 +1035,7 @@ public class SampleConfirmationForm extends AbstractRendering { // TODO Auto-generated catch block e.printStackTrace(); } - pic.put("jd2_qtbg", new int[] { 9, 7 }); + fileMap.put("jd2_qtbg", new int[] { 9, 7 }); model3.combine(new int[] { 0 }, new int[] { 0, 1, 2, 3, 4, 5 }); model3.combine(new int[] { 1 }, new int[] { 0, 1 }); @@ -1017,7 +1078,22 @@ public class SampleConfirmationForm extends AbstractRendering { public void saveRendering() { // 保存图片 JLabel label = null; - for (Entry entry : pic.entrySet()) { + for (Entry entry : picMap.entrySet()) { + if (prop.containsKey(entry.getKey())) { + System.out.println(entry.getKey()); + label = (JLabel) model3.getValueAt(entry.getValue()[0], entry.getValue()[1]); + try { + form.setProperty(entry.getKey(), label.getToolTipText() == null ? "" : label.getToolTipText()); + } catch (TCException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + } + + // 保存文件 + for (Entry entry : fileMap.entrySet()) { if (prop.containsKey(entry.getKey())) { System.out.println(entry.getKey()); label = (JLabel) model3.getValueAt(entry.getValue()[0], entry.getValue()[1]); @@ -1030,6 +1106,7 @@ public class SampleConfirmationForm extends AbstractRendering { } } + // 保存选择 try { if (prop.containsKey("jd2_yssl")) { @@ -1047,32 +1124,32 @@ public class SampleConfirmationForm extends AbstractRendering { form.setProperty("jd2_mqjd", value); } if (prop.containsKey("jd2_bpdj")) { - String value = bpdj.getSelectedItem() == null ? "" : bpdj.getSelectedItem().toString(); - if (form.getTCProperty("jd2_bpdj").getLOV() != null && !"".equals(value)) { + String value = bpdj.getSelectedItem() == null ? " " : bpdj.getSelectedItem().toString(); + if (form.getTCProperty("jd2_bpdj").getLOV() != null && !" ".equals(value)) { value = (String) form.getTCProperty("jd2_bpdj").getLOV().getListOfValues().getRealValue(value); } - form.setProperty("jd2_bpdj", value); + form.setProperty("jd2_bpdj", " ".equals(value) ? null : value); } if (prop.containsKey("jd2_fl")) { - String value = fl.getSelectedItem() == null ? "" : fl.getSelectedItem().toString(); - if (form.getTCProperty("jd2_fl").getLOV() != null && !"".equals(value)) { + String value = fl.getSelectedItem() == null ? " " : fl.getSelectedItem().toString(); + if (form.getTCProperty("jd2_fl").getLOV() != null && !" ".equals(value)) { value = (String) form.getTCProperty("jd2_fl").getLOV().getListOfValues().getRealValue(value); } - form.setProperty("jd2_fl", value); + form.setProperty("jd2_fl", " ".equals(value) ? null : value); } if (prop.containsKey("jd2_zt")) { - String value = zt.getSelectedItem() == null ? "" : zt.getSelectedItem().toString(); - if (form.getTCProperty("jd2_zt").getLOV() != null && !"".equals(value)) { + String value = zt.getSelectedItem() == null ? " " : zt.getSelectedItem().toString(); + if (form.getTCProperty("jd2_zt").getLOV() != null && !" ".equals(value)) { value = (String) form.getTCProperty("jd2_zt").getLOV().getListOfValues().getRealValue(value); } - form.setProperty("jd2_zt", value); + form.setProperty("jd2_zt", " ".equals(value) ? null : value); } if (prop.containsKey("jd2_jued")) { - String value = jued.getSelectedItem() == null ? "" : jued.getSelectedItem().toString(); - if (form.getTCProperty("jd2_jued").getLOV() != null && !"".equals(value)) { + String value = jued.getSelectedItem() == null ? " " : jued.getSelectedItem().toString(); + if (form.getTCProperty("jd2_jued").getLOV() != null && !" ".equals(value)) { value = (String) form.getTCProperty("jd2_jued").getLOV().getListOfValues().getRealValue(value); } - form.setProperty("jd2_jued", value); + form.setProperty("jd2_jued", " ".equals(value) ? null : value); } } catch (TCException e) { @@ -1306,7 +1383,7 @@ public class SampleConfirmationForm extends AbstractRendering { int row = table3.getSelectedRow(); int col = table3.getSelectedColumn(); boolean flag = false; - for (Entry entry : pic.entrySet()) { + for (Entry entry : picMap.entrySet()) { if (entry.getValue()[0] == row && entry.getValue()[1] == col) { flag = true; break; @@ -1314,14 +1391,15 @@ public class SampleConfirmationForm extends AbstractRendering { } addP.setEnabled(flag); delP.setEnabled(flag); - addF.setEnabled(false); - delF.setEnabled(false); - if (pic.get("jd2_icqjyzds")[0] == row && pic.get("jd2_icqjyzds")[1] == col) { - addF.setEnabled(true); - delF.setEnabled(true); - addP.setEnabled(false); - delP.setEnabled(false); + flag = false; + for (Entry entry : fileMap.entrySet()) { + if (entry.getValue()[0] == row && entry.getValue()[1] == col) { + flag = true; + break; + } } + addF.setEnabled(flag); + delF.setEnabled(flag); menu3.show(e.getComponent(), e.getX(), e.getY()); } @@ -1369,7 +1447,7 @@ public class SampleConfirmationForm extends AbstractRendering { rev.add("IMAN_specification", dataset); String uid = dataset.getUid(); System.out.println("uid:" + uid); -// ImageIcon icon = new ImageIcon(file.getPath()); + ImageIcon icon = new ImageIcon(file.getPath()); int row = table3.getSelectedRow(); int col = table3.getSelectedColumn(); String str = ((JLabel) model3.getValueAt(row, col)).getToolTipText(); @@ -1385,14 +1463,12 @@ public class SampleConfirmationForm extends AbstractRendering { } int[] arr = model3.getSpan(row, col); System.out.println("row:" + arr[0] + ",col:" + arr[1]); -// icon.setImage(icon.getImage().getScaledInstance( -// table3.getColumnModel().getColumn(col).getPreferredWidth() * arr[1], -// table3.getRowHeight() * arr[0], Image.SCALE_SMOOTH)); + icon.setImage(icon.getImage().getScaledInstance( + table3.getColumnModel().getColumn(col).getPreferredWidth() * arr[1], + table3.getRowHeight() * arr[0], Image.SCALE_SMOOTH)); JLabel label = new JLabel(); label.setLayout(new FlowLayout(FlowLayout.CENTER)); -// label.setIcon(icon); - label.setText(file.getName()); - label.setForeground(new Color(0xff0078D7)); + label.setIcon(icon); label.addMouseListener(showImg(file.getPath())); label.setToolTipText(uid); model3.setValueAt(label, table3.getSelectedRow(), table3.getSelectedColumn()); @@ -1448,8 +1524,6 @@ public class SampleConfirmationForm extends AbstractRendering { model.setValueAt(num + 1, bottom, 0); model.combine(new int[] { bottom }, new int[] { 2, 3, 4 }); -// System.out.println(bottom); -// initModel(); table.revalidate(); table.repaint(); } @@ -1489,8 +1563,6 @@ public class SampleConfirmationForm extends AbstractRendering { } model.combine(new int[] { row }, new int[] { 2, 3, 4 }); -// System.out.println(bottom); -// initModel(); table.revalidate(); table.repaint(); } @@ -1535,8 +1607,6 @@ public class SampleConfirmationForm extends AbstractRendering { } } -// System.out.println(bottom); -// initModel(); table.revalidate(); table.repaint(); } @@ -1617,14 +1687,16 @@ public class SampleConfirmationForm extends AbstractRendering { @Override public String getDescription() { // TODO Auto-generated method stub - return "(文档,表格)*.doc;*.docx;*.xls;*.xlsx;"; + return "(文档,表格,图片)*.doc;*.docx;*.xls;*.xlsx;*.png;*.jpg;*.jpeg;*.bmp;"; } @Override public boolean accept(File var1) { // TODO Auto-generated method stub return var1.getName().endsWith(".doc") || var1.getName().endsWith(".docx") - || var1.getName().endsWith(".xls") || var1.getName().endsWith(".xlsx"); + || var1.getName().endsWith(".xls") || var1.getName().endsWith(".xlsx") + || var1.getName().endsWith(".png") || var1.getName().endsWith(".jpg") + || var1.getName().endsWith(".jpeg") || var1.getName().endsWith(".bmp"); } }); fileChooser.showOpenDialog(menu3);// 参数表示定位 @@ -1646,6 +1718,9 @@ public class SampleConfirmationForm extends AbstractRendering { } else if (file.getName().endsWith(".xlsx")) { as2[0] = "excel"; type = "MSExcelX"; + } else { + as2[0] = "Image"; + type = "Image"; } TCComponentDatasetType datasetType; try { @@ -1656,7 +1731,6 @@ public class SampleConfirmationForm extends AbstractRendering { rev.add("IMAN_specification", dataset); String uid = dataset.getUid(); System.out.println("uid:" + uid); -// ImageIcon icon = new ImageIcon(file.getPath()); int row = table3.getSelectedRow(); int col = table3.getSelectedColumn(); String str = ((JLabel) model3.getValueAt(row, col)).getToolTipText(); @@ -1672,13 +1746,10 @@ public class SampleConfirmationForm extends AbstractRendering { } int[] arr = model3.getSpan(row, col); System.out.println("row:" + arr[0] + ",col:" + arr[1]); -// icon.setImage(icon.getImage().getScaledInstance( -// table3.getColumnModel().getColumn(col).getPreferredWidth() * arr[1], -// table3.getRowHeight() * arr[0], Image.SCALE_SMOOTH)); JLabel label = new JLabel(); label.setLayout(new FlowLayout(FlowLayout.CENTER)); -// label.setIcon(icon); label.setText(file.getName()); + label.setHorizontalAlignment(SwingConstants.CENTER); label.setForeground(new Color(0xff0078D7)); label.addMouseListener(showFile(dataset)); label.setToolTipText(uid); diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/handlers/AddHLBOMHandler.java b/com.connor.jd.plm/src/com/connor/jd/plm/handlers/AddHLBOMHandler.java new file mode 100644 index 0000000..f62fd68 --- /dev/null +++ b/com.connor.jd.plm/src/com/connor/jd/plm/handlers/AddHLBOMHandler.java @@ -0,0 +1,22 @@ +package com.connor.jd.plm.handlers; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; + +import com.connor.jd.plm.action.AddHLBOMAction; +import com.teamcenter.rac.aif.AbstractAIFApplication; +import com.teamcenter.rac.aifrcp.AIFUtility; + +public class AddHLBOMHandler extends AbstractHandler { + + @Override + public Object execute(ExecutionEvent arg0) throws ExecutionException { + // TODO Auto-generated method stub + AbstractAIFApplication app = AIFUtility.getCurrentApplication(); + AddHLBOMAction action = new AddHLBOMAction(app, ""); + new Thread(action).start(); + return null; + } + +} diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/handlers/BOMManagementHandler.java b/com.connor.jd.plm/src/com/connor/jd/plm/handlers/BOMManagementHandler.java new file mode 100644 index 0000000..344d47d --- /dev/null +++ b/com.connor.jd.plm/src/com/connor/jd/plm/handlers/BOMManagementHandler.java @@ -0,0 +1,22 @@ +package com.connor.jd.plm.handlers; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; + +import com.connor.jd.plm.action.BOMManagementAction; +import com.teamcenter.rac.aif.AbstractAIFApplication; +import com.teamcenter.rac.aifrcp.AIFUtility; + +public class BOMManagementHandler extends AbstractHandler { + + @Override + public Object execute(ExecutionEvent arg0) throws ExecutionException { + // TODO Auto-generated method stub + AbstractAIFApplication app = AIFUtility.getCurrentApplication(); + BOMManagementAction action = new BOMManagementAction(app, ""); + new Thread(action).start(); + return null; + } + +} diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/handlers/ExportBOMHandler.java b/com.connor.jd.plm/src/com/connor/jd/plm/handlers/ExportBOMHandler.java new file mode 100644 index 0000000..3420d03 --- /dev/null +++ b/com.connor.jd.plm/src/com/connor/jd/plm/handlers/ExportBOMHandler.java @@ -0,0 +1,21 @@ +package com.connor.jd.plm.handlers; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; + +import com.connor.jd.plm.action.ExportBOMAction; +import com.teamcenter.rac.aif.AbstractAIFApplication; +import com.teamcenter.rac.aifrcp.AIFUtility; + +public class ExportBOMHandler extends AbstractHandler { + + @Override + public Object execute(ExecutionEvent arg0) throws ExecutionException { + AbstractAIFApplication app = AIFUtility.getCurrentApplication(); + ExportBOMAction action = new ExportBOMAction(app, ""); + new Thread(action).start(); + return null; + } + +} diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/handlers/Wf001ScheduleHandler.java b/com.connor.jd.plm/src/com/connor/jd/plm/handlers/Wf001ScheduleHandler.java index 41c4f68..66dd04b 100644 --- a/com.connor.jd.plm/src/com/connor/jd/plm/handlers/Wf001ScheduleHandler.java +++ b/com.connor.jd.plm/src/com/connor/jd/plm/handlers/Wf001ScheduleHandler.java @@ -13,7 +13,6 @@ import org.eclipse.ui.PlatformUI; import com.teamcenter.rac.aif.AbstractAIFApplication; import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; import com.teamcenter.rac.aifrcp.AIFUtility; -import com.teamcenter.rac.kernel.TCComponentFolder; import com.teamcenter.rac.kernel.TCPreferenceService; import com.teamcenter.rac.kernel.TCSession; import com.teamcenter.rac.schedule.commands.newschedule.NewScheduleHandler; @@ -44,29 +43,28 @@ public class Wf001ScheduleHandler extends NewBOHandler { if (targetComp == null) { return null; } - if (targetComp instanceof TCComponentFolder) { - scheduleModel = null; - wizardId = "com.teamcenter.rac.schedule.commands.newschedule.GenericScheduleWizard"; - TCSession tcsession = (TCSession) Activator.getDefault().getSessionService().getDefaultSession(); - TCPreferenceService tcpreferenceservice = tcsession.getPreferenceService(); - String s = tcpreferenceservice.getString(4, "SiteTimeZone", "null"); - IWorkbench iworkbench = PlatformUI.getWorkbench(); - IWorkbenchWindow iworkbenchwindow = iworkbench.getActiveWorkbenchWindow(); - Shell shell = iworkbenchwindow.getShell(); - if ("null".equals(s) || s == null) { - MessageDialog.openInformation(shell, textRegistry.getString("tzNotSet.TITLE"), - textRegistry.getString("tzNotSet.MSG")); - return Boolean.valueOf(false); - } - if (!TimeZoneCalUtil.testTimeZoneID(s)) { - String s1 = textRegistry.getString("tzInvalid.MSG"); - s1 = MessageFormat.format(s1, new Object[] { s }); - MessageDialog.openInformation(shell, textRegistry.getString("tzInvalid.TITLE"), s1); - return Boolean.valueOf(false); - } else { - return super.execute(executionevent); - } + scheduleModel = null; + wizardId = "com.teamcenter.rac.schedule.commands.newschedule.GenericScheduleWizard"; + TCSession tcsession = (TCSession) Activator.getDefault().getSessionService().getDefaultSession(); + TCPreferenceService tcpreferenceservice = tcsession.getPreferenceService(); + String s = tcpreferenceservice.getString(4, "SiteTimeZone", "null"); + IWorkbench iworkbench = PlatformUI.getWorkbench(); + IWorkbenchWindow iworkbenchwindow = iworkbench.getActiveWorkbenchWindow(); + Shell shell = iworkbenchwindow.getShell(); + if ("null".equals(s) || s == null) { + MessageDialog.openInformation(shell, textRegistry.getString("tzNotSet.TITLE"), + textRegistry.getString("tzNotSet.MSG")); + return Boolean.valueOf(false); + } + if (!TimeZoneCalUtil.testTimeZoneID(s)) { + String s1 = textRegistry.getString("tzInvalid.MSG"); + s1 = MessageFormat.format(s1, new Object[] { s }); + MessageDialog.openInformation(shell, textRegistry.getString("tzInvalid.TITLE"), s1); + return Boolean.valueOf(false); + } else { + return super.execute(executionevent); + } // // } else // @@ -80,8 +78,6 @@ public class Wf001ScheduleHandler extends NewBOHandler { // } else { // MessageBox.post("脟毛脩隆脰脨脧卯脛驴脰麓脨脨麓麓陆篓!!", "麓铆脦贸", MessageBox.ERROR); // return null; - } - return null; } @Override diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/table/DatePickerCellEditor.java b/com.connor.jd.plm/src/com/connor/jd/plm/table/DatePickerCellEditor.java new file mode 100644 index 0000000..3bbf573 --- /dev/null +++ b/com.connor.jd.plm/src/com/connor/jd/plm/table/DatePickerCellEditor.java @@ -0,0 +1,34 @@ +package com.connor.jd.plm.table; + +import java.awt.Component; + +import javax.swing.DefaultCellEditor; +import javax.swing.JTable; +import javax.swing.JTextField; + +import com.connor.jd.plm.utils.DatePickerUtil; +import com.eltima.components.ui.DatePicker; + +public class DatePickerCellEditor extends DefaultCellEditor { + + private DatePicker datePicker; + + public DatePickerCellEditor(JTextField arg0) { + super(arg0); + // TODO Auto-generated constructor stub + } + + @Override + public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { + // TODO Auto-generated method stub + datePicker = DatePickerUtil.getDatePicker(null); + return datePicker; + } + + @Override + public Object getCellEditorValue() { + // TODO Auto-generated method stub + return datePicker.getText(); + } + +} diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/table/JCheckPanel.java b/com.connor.jd.plm/src/com/connor/jd/plm/table/JCheckPanel.java index 3e31e46..99a20af 100644 --- a/com.connor.jd.plm/src/com/connor/jd/plm/table/JCheckPanel.java +++ b/com.connor.jd.plm/src/com/connor/jd/plm/table/JCheckPanel.java @@ -25,6 +25,19 @@ public class JCheckPanel extends JPanel { setLayout(new FlowLayout(FlowLayout.LEFT)); } + public JCheckPanel(String[] text, boolean isSingle) { + buttons = new JCheckBox[text.length]; + for (int i = 0; i < text.length; i++) { + buttons[i] = new JCheckBox(text[i]); + buttons[i].setPreferredSize(new Dimension(100, 25)); + if (isSingle) { + buttonGroup.add(buttons[i]); + } + add(buttons[i]); + } + setLayout(new FlowLayout(FlowLayout.LEFT)); + } + public JCheckBox[] getButtons() { return buttons; } diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/table/ModelList.java b/com.connor.jd.plm/src/com/connor/jd/plm/table/ModelList.java index c7d690a..cd14d7e 100644 --- a/com.connor.jd.plm/src/com/connor/jd/plm/table/ModelList.java +++ b/com.connor.jd.plm/src/com/connor/jd/plm/table/ModelList.java @@ -67,4 +67,21 @@ public class ModelList extends ArrayList { return disableEdit.contains(row + "," + col); } + public void findAndAddRow(int row, int tableColumsCount, int offset) { + if (offset <= 0) { + return; + } + if (this.size() == 0) { + return; + } + for (int i = 0; i < tableColumsCount; i++) { + if (this.getModelValue(row, i) != null) { + System.out.println(this.getModelValue(row, i).getValue()); + this.getModelValue(row, i).setRow(row + offset); + this.removeDisableEdit(row, i); + this.addDisableEdit(row + offset, i); + } + } + } + } diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/table/MyCellRenderer.java b/com.connor.jd.plm/src/com/connor/jd/plm/table/MyCellRenderer.java new file mode 100644 index 0000000..ed11b04 --- /dev/null +++ b/com.connor.jd.plm/src/com/connor/jd/plm/table/MyCellRenderer.java @@ -0,0 +1,19 @@ +package com.connor.jd.plm.table; + +import java.awt.Component; + +import javax.swing.JCheckBox; +import javax.swing.JTable; +import javax.swing.table.DefaultTableCellRenderer; + +public class MyCellRenderer extends DefaultTableCellRenderer { + @Override + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, + int row, int column) { + // TODO Auto-generated method stub + if (value instanceof JCheckBox) { + return (JCheckBox) value; + } + return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); + } +} diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/table/TCTableUtil.java b/com.connor.jd.plm/src/com/connor/jd/plm/table/TCTableUtil.java index 1046c49..9141026 100644 --- a/com.connor.jd.plm/src/com/connor/jd/plm/table/TCTableUtil.java +++ b/com.connor.jd.plm/src/com/connor/jd/plm/table/TCTableUtil.java @@ -40,6 +40,31 @@ public class TCTableUtil { return null; } + public static List> getTableMapList(TCComponentForm form, String prop, String[] colNames) { + try { + TCProperty tcProperty = form.getTCProperty(prop); + TCComponent[] components = tcProperty.getReferenceValueArray(); + List> res = new ArrayList>(); + for (int i = 0; i < components.length; i++) { + Map temp = new HashMap(); + for (int ii = 0; ii < colNames.length; ii++) { + temp.put(colNames[ii], components[i].getPropertyDisplayableValue(colNames[ii])); + } + res.add(temp); + } + return res; + } catch (NullPointerException e) { + System.out.println("属性\"" + prop + "\"不存在"); + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + + e.printStackTrace(); + } + + return null; + } + public static boolean setTableRows(TCComponentForm form, String prop, String refName, String[] colNames, String[][] rows) { List list = new ArrayList(); @@ -79,4 +104,38 @@ public class TCTableUtil { return false; } + public static boolean setTableMapList(TCComponentForm form, String prop, String refName, + List> dataList) { + List list = new ArrayList(); + DataManagementService service = DataManagementService + .getService((TCSession) AIFUtility.getCurrentApplication().getSession()); + CreateIn ci = new CreateIn(); + ci.data.boName = refName; + for (int i = 0; i < dataList.size(); i++) { + System.out.println(dataList.get(i).size()); + ci.data.stringProps = dataList.get(i); + try { + CreateResponse response = service.createObjects(new CreateIn[] { ci }); + System.out.println("CreateResponse size:" + response.serviceData.sizeOfCreatedObjects()); + if (response.serviceData.sizeOfCreatedObjects() > 0) { + list.add(response.output[0].objects[0]); + } else { + String str = String.join(",", response.serviceData.getPartialError(0).getMessages()); + System.out.println(str); + } + } catch (ServiceException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + try { + form.getTCProperty(prop).setReferenceValueArray(list.toArray(new TCComponent[list.size()])); + System.out.println("保存table成功"); + return true; + } catch (TCException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return false; + } } diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/utils/DBConnectionUtil.java b/com.connor.jd.plm/src/com/connor/jd/plm/utils/DBConnectionUtil.java index 6b21821..328c9ef 100644 --- a/com.connor.jd.plm/src/com/connor/jd/plm/utils/DBConnectionUtil.java +++ b/com.connor.jd.plm/src/com/connor/jd/plm/utils/DBConnectionUtil.java @@ -3,10 +3,15 @@ package com.connor.jd.plm.utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; +import java.util.HashMap; +import java.util.Map; + +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.util.MessageBox; public class DBConnectionUtil { - public static Connection dbConn(String name, String pass) { + public static Connection dbConn(TCSession session) { Connection c = null; try { Class.forName("oracle.jdbc.driver.OracleDriver"); @@ -15,7 +20,18 @@ public class DBConnectionUtil { e.printStackTrace(); } try { - c = DriverManager.getConnection("jdbc:oracle:thin:@10.20.4.75:1521:TC12", name, pass); + String[] dbSettings = JDMethodUtil.getPrefStrArray("jd2_db_settings", session); + if (dbSettings.length != 3) { + MessageBox.post("jd2_db_settings数据库连接配置错误", "错误", MessageBox.ERROR); + throw new Exception("jd2_db_settings数据库连接配置错误"); + } else { + Map settingMap = new HashMap(); + for (String s : dbSettings) { + settingMap.put(s.substring(0, s.indexOf(":")), s.substring(s.indexOf(":") + 1, s.length())); + } + System.out.println(settingMap.get("url") + settingMap.get("user") + settingMap.get("pass")); + c = DriverManager.getConnection(settingMap.get("url"), settingMap.get("user"), settingMap.get("pass")); + } // c = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:TC", name, pass); // 连接数据的方法有四种, 这个属于最简单的,一般用网页程序 TC是你的数据库实例名称,在下载的文件test.sql中可以执行语句查看 // "jdbc:oracle:thin:@计算机名称:监听端口:系统实例名", username, password, @@ -26,6 +42,8 @@ public class DBConnectionUtil { } catch (SQLException e) { e.printStackTrace(); + } catch (Exception e1) { + e1.printStackTrace(); } return c; } diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/utils/DBUtil.java b/com.connor.jd.plm/src/com/connor/jd/plm/utils/DBUtil.java new file mode 100644 index 0000000..997eda4 --- /dev/null +++ b/com.connor.jd.plm/src/com/connor/jd/plm/utils/DBUtil.java @@ -0,0 +1,38 @@ +package com.connor.jd.plm.utils; + +import java.util.HashMap; +import java.util.Map; + +import javax.sql.DataSource; +import javax.swing.JOptionPane; + +import com.teamcenter.rac.kernel.TCSession; + +import cn.hutool.db.ds.simple.SimpleDataSource; + +public class DBUtil { + + public static DataSource getDataSource(TCSession session) { + + Map settingMap = getDbSetting(session); + String str = settingMap.get("url") + settingMap.get("user") + settingMap.get("pass"); + DataSource dataSource = new SimpleDataSource(settingMap.get("url"), settingMap.get("user"), + settingMap.get("pass")); + return dataSource; + } + + private static Map getDbSetting(TCSession session) { + Map settingMap = null; + String[] dbSettings = JDMethodUtil.getPrefStrArray("jd2_db_settings", session); + if (dbSettings.length != 3) { + JOptionPane.showMessageDialog(null, "jd2_db_settings数据库连接配置错误", "错误", JOptionPane.ERROR); + } else { + settingMap = new HashMap(); + for (String s : dbSettings) { + settingMap.put(s.substring(0, s.indexOf(":")), s.substring(s.indexOf(":") + 1, s.length())); + } + } + return settingMap; + } + +} diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/utils/DatePickerUtil.java b/com.connor.jd.plm/src/com/connor/jd/plm/utils/DatePickerUtil.java new file mode 100644 index 0000000..c5eb47e --- /dev/null +++ b/com.connor.jd.plm/src/com/connor/jd/plm/utils/DatePickerUtil.java @@ -0,0 +1,80 @@ +package com.connor.jd.plm.utils; + +import java.awt.Dimension; +import java.awt.Font; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.Date; +import java.util.Locale; + +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JOptionPane; + +import com.eltima.components.ui.DatePicker; + +public class DatePickerUtil { + public static void main(String[] args) { + + JFrame f = new JFrame("LoL"); + f.setSize(400, 300); + f.setLocation(200, 200); + f.setLayout(null); + + final DatePicker datepick; + datepick = getDatePicker("yyyy-MM-dd hh:mm"); + + f.add(datepick); + + JButton b = new JButton("获取时间"); + b.setBounds(137, 183, 100, 30); + f.add(b); + + b.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + JOptionPane.showMessageDialog(f, "获取控件中的日期:" + datepick.getText()); + System.out.println(datepick.getValue()); + } + }); + + f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + f.setVisible(true); + } + + public static DatePicker getDatePicker(String format) { + final DatePicker datepick; + // 格式 如果包含事件会出现时间选择的UI + String DefaultFormat = "yyyy-MM-dd"; + // 当前时间 + Date date = new Date(); + // 字体 + Font font = new Font("Times New Roman", Font.BOLD, 14); + + Dimension dimension = new Dimension(180, 24); + +// int[] hilightDays = { 1, 3, 5, 7 }; + +// int[] disabledDays = { 4, 6, 5, 9 }; + + datepick = new DatePicker(date, format == null ? DefaultFormat : format, font, dimension); + + datepick.setLocation(137, 83); + datepick.setBounds(137, 83, 180, 24); + // 设置一个月份中需要高亮显示的日子 +// datepick.setHightlightdays(hilightDays, Color.red); + // 设置一个月份中不需要的日子,呈灰色显示 +// datepick.setDisableddays(disabledDays); + // 设置国家 + datepick.setLocale(Locale.CHINA); + // 设置时钟面板可见 + if (format != null) { + datepick.setTimePanleVisible(true); + } else { + datepick.setTimePanleVisible(false); + } + return datepick; + } +} diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/utils/DialogUtil.java b/com.connor.jd.plm/src/com/connor/jd/plm/utils/DialogUtil.java new file mode 100644 index 0000000..bb2dd18 --- /dev/null +++ b/com.connor.jd.plm/src/com/connor/jd/plm/utils/DialogUtil.java @@ -0,0 +1,286 @@ +package com.connor.jd.plm.utils; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Dialog.ModalityType; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.util.ArrayList; +import java.util.List; + +import javax.swing.BorderFactory; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JDialog; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.JTextField; +import javax.swing.table.DefaultTableModel; +import javax.swing.table.TableColumn; +import javax.swing.table.TableColumnModel; + +import com.connor.jd.plm.dialogs.BOMManagementFrame; +import com.teamcenter.rac.aifrcp.AIFUtility; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentItem; +import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCSession; + +public class DialogUtil { + + public static TableMsg createTableMsg(String[] header, List msgContent) { + DefaultTableModel msgModel = new DefaultTableModel(header, 0) { + @Override + public boolean isCellEditable(int paramInt1, int paramInt2) { + // TODO Auto-generated method stub + return false; + } + }; + JTable msgTable = new JTable(msgModel); + for (int columnIndex = 0; columnIndex < msgTable.getColumnCount(); columnIndex++) { + msgTable.getColumnModel().getColumn(columnIndex).setMinWidth(100); + } + msgTable.setRowHeight(25); + msgTable.setShowGrid(false); + msgTable.setAutoscrolls(true); + msgTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + msgTable.getTableHeader().setReorderingAllowed(false); +// msgTable.getTableHeader().setVisible(false); + + for (String[] row : msgContent) { + msgModel.addRow(row); + } + + msgTable.invalidate(); + msgTable.repaint(); + JScrollPane msgPanel = new JScrollPane(msgTable); + msgPanel.setPreferredSize(new Dimension(header.length * 100, 200)); + msgPanel.setBorder(BorderFactory.createEmptyBorder()); + return new TableMsg(msgPanel, msgTable); + } + + public static JDialog createSearchAndSelectRevDialog(BOMManagementFrame frame, JTable paramTable, + JCheckBox selectAll, JButton field) { + JDialog dialog = new JDialog(); + dialog.setTitle("搜索零组件版本"); + dialog.setSize(520, 400); + dialog.setResizable(true); + dialog.setAutoRequestFocus(true); + dialog.setAlwaysOnTop(true); + dialog.setLocationRelativeTo(frame); + dialog.setModalityType(ModalityType.APPLICATION_MODAL); + + JPanel content = new JPanel(); + content.setLayout(null); + content.setPreferredSize(new Dimension(520, 400)); + JLabel targetLabel = new JLabel("目标"); + targetLabel.setBounds(10, 10, 50, 25); + JTextField targetText = new JTextField(); + targetText.setText("输入要搜索的零组件ID"); + targetText.setForeground(Color.GRAY); + if (!"".equals(field.getText())) { + targetText.setText(field.getText().substring(0, field.getText().indexOf("/"))); + targetText.setForeground(Color.BLACK); + } + targetText.setBounds(20, 50, 300, 25); + JButton searchBtn = new JButton("查找"); + searchBtn.setBounds(380, 50, 100, 25); + + String[] colDisplayNames = new String[] { "对象", "描述", "发布状态", "所有者", "组ID", "对象" }; + DefaultTableModel model = new DefaultTableModel(colDisplayNames, 0) { + @Override + public boolean isCellEditable(int paramInt1, int paramInt2) { + return false; + } + }; + JTable table = new JTable(model); + table.getColumnModel().getColumn(0).setMinWidth(100); + table.getColumnModel().getColumn(1).setMinWidth(100); + table.getColumnModel().getColumn(2).setMinWidth(100); + table.getColumnModel().getColumn(3).setMinWidth(100); + table.getColumnModel().getColumn(4).setMinWidth(60); + table.getColumnModel().getColumn(4).setPreferredWidth(60); + TableColumnModel tcm = table.getColumnModel(); + TableColumn tc = tcm.getColumn(5); + tc.setWidth(0); + tc.setPreferredWidth(0); + tc.setMaxWidth(0); + tc.setMinWidth(0); + table.getTableHeader().getColumnModel().getColumn(5).setMaxWidth(0); + table.getTableHeader().getColumnModel().getColumn(5).setMinWidth(0); + table.setRowHeight(25); + table.setAutoscrolls(true); + table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + table.getTableHeader().setReorderingAllowed(false); + JScrollPane jsp = new JScrollPane(table); + jsp.setBounds(20, 100, 460, 200); + + JButton okBtn = new JButton("确定"); + okBtn.setBounds(140, 320, 100, 25); + JButton cancelBtn = new JButton("取消"); + cancelBtn.setBounds(260, 320, 100, 25); + + targetText.addFocusListener(new FocusListener() { + + @Override + public void focusLost(FocusEvent e) { + // TODO Auto-generated method stub + if ("".equals(targetText.getText())) { + targetText.setText("输入要搜索的零组件ID"); + targetText.setForeground(Color.GRAY); + } + } + + @Override + public void focusGained(FocusEvent e) { + // TODO Auto-generated method stub + if ("输入要搜索的零组件ID".equals(targetText.getText())) { + targetText.setText(""); + targetText.setForeground(Color.BLACK); + } + } + }); + + targetText.addKeyListener(new KeyAdapter() { + @Override + public void keyTyped(KeyEvent paramKeyEvent) { + // TODO Auto-generated method stub + super.keyTyped(paramKeyEvent); + if (paramKeyEvent.getKeyChar() == KeyEvent.VK_ENTER) { + searchBtn.doClick(); + } + } + }); + + searchBtn.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + int cnt = model.getRowCount(); + for (int i = 0; i < cnt; i++) { + model.removeRow(0); + } + table.revalidate(); + table.repaint(); + String text = targetText.getText(); + System.out.println(text); + if ("输入要搜索的零组件ID".equals(text)) { + return; + } + long startTime = System.currentTimeMillis(); + TCSession session = (TCSession) AIFUtility.getCurrentApplication().getSession(); + TCComponentItem[] items = getTarget(content, text, session); + if (items == null) { + return; + } + List tableDataList = new ArrayList(); + for (TCComponentItem item : items) { + try { + TCComponent[] comps = item.getRelatedComponents("revision_list"); + for (TCComponent comp : comps) { + String objetcString = comp.getProperty("object_string"); + TCComponent[] forms = comp.getRelatedComponents("IMAN_master_form_rev"); + String desc = ""; + if (forms.length > 0) { + desc = forms[0].getProperty("jd2_wlms"); + } + TCComponent[] statusArray = comp.getRelatedComponents("release_status_list"); + String status = ""; + if (statusArray != null && statusArray.length > 0) { + status = statusArray[statusArray.length - 1].getProperty("object_name"); + } + String owningUser = comp.getProperty("owning_user"); + String groupId = comp.getProperty("owning_group"); + tableDataList.add(new Object[] { objetcString, desc, status, owningUser, groupId, comp }); + } + } catch (TCException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } + for (Object[] rowData : tableDataList) { + model.addRow(rowData); + } + table.revalidate(); + table.repaint(); + System.out.println("搜索结果已显示,用时" + (System.currentTimeMillis() - startTime) + "ms"); + } + }); + + okBtn.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent paramActionEvent) { + // TODO Auto-generated method stub + frame.okCallback(table, paramTable, selectAll, field); +// dialog.setVisible(false); + dialog.dispose(); + } + }); + + cancelBtn.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent paramActionEvent) { + // TODO Auto-generated method stub +// dialog.setVisible(false); + dialog.dispose(); + } + }); + + content.add(targetLabel); + content.add(targetText); + content.add(searchBtn); + content.add(jsp); + content.add(okBtn); + content.add(cancelBtn); + + dialog.add(content); + dialog.setVisible(true); + + return dialog; + } + + private static TCComponentItem[] getTarget(Component parent, String itemId, TCSession session) { + TCComponent[] comps = null; + try { + comps = session.search("Item ID", new String[] { "零组件 ID" }, new String[] { itemId }); +// TCComponentItemType type = new TCComponentItemType(); +// comps = type.findItems(itemId); + } catch (Exception e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + return null; + } + if (comps == null || comps.length == 0) { + JOptionPane.showMessageDialog(parent, "无效的物料编码,请确认编码是否正确", "提示", JOptionPane.WARNING_MESSAGE); + return null; + } + TCComponentItem[] items = new TCComponentItem[comps.length]; + for (int i = 0; i < comps.length; i++) { + items[i] = (TCComponentItem) comps[i]; + } + return items; + } + + public static class TableMsg { + public JScrollPane panel; + public JTable table; + + public TableMsg(JScrollPane panel, JTable table) { + super(); + this.panel = panel; + this.table = table; + } + + } +} diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/utils/ExcelInfoScanner.java b/com.connor.jd.plm/src/com/connor/jd/plm/utils/ExcelInfoScanner.java new file mode 100644 index 0000000..11ce297 --- /dev/null +++ b/com.connor.jd.plm/src/com/connor/jd/plm/utils/ExcelInfoScanner.java @@ -0,0 +1,47 @@ +package com.connor.jd.plm.utils; + +import java.io.InputStream; +import java.util.HashMap; +import java.util.Map; + +import com.aspose.cells.Cells; +import com.aspose.cells.License; +import com.aspose.cells.Workbook; +import com.aspose.cells.WorksheetCollection; + +public class ExcelInfoScanner { + + public static Map getClassPropOptions(String path, String nodeName) { + Map res = new HashMap(); + try { + getLicense(); + Workbook excel = new Workbook(path); + WorksheetCollection wc = excel.getWorksheets(); + Cells cells = wc.get(0).getCells(); + for (int i = 0; i <= cells.getMaxDataRow(); i++) { + if (cells.get(i, 0).getStringValue().equals(nodeName)) { + res.put(cells.get(i, 1).getIntValue(), cells.get(i, 2).getStringValue()); + } + } + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return res; + } + + public static boolean getLicense() throws Exception { + boolean result = false; + try { + InputStream is = com.aspose.cells.Cell.class.getResourceAsStream("/com/aspose/cells/resources/license.xml"); + License aposeLic = new License(); + aposeLic.setLicense(is); + result = true; + is.close(); + } catch (Exception e) { + e.printStackTrace(System.out); + throw e; + } + return result; + } +} diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/utils/KeyValComboBox.java b/com.connor.jd.plm/src/com/connor/jd/plm/utils/KeyValComboBox.java new file mode 100644 index 0000000..5659013 --- /dev/null +++ b/com.connor.jd.plm/src/com/connor/jd/plm/utils/KeyValComboBox.java @@ -0,0 +1,96 @@ +package com.connor.jd.plm.utils; + +import java.awt.Component; +import java.util.Vector; + +import javax.swing.DefaultComboBoxModel; +import javax.swing.DefaultListCellRenderer; +import javax.swing.JComboBox; +import javax.swing.JList; + +import com.connor.jd.plm.beans.CheckBoxPo; + +public class KeyValComboBox extends JComboBox { + + public KeyValComboBox(Vector values) { + super(values); + rendererData(); // 渲染数据 + } + + public void rendererData() { + DefaultListCellRenderer render = new DefaultListCellRenderer() { + @Override + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, + boolean cellHasFocus) { + super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); + if (value instanceof CheckBoxPo) { + CheckBoxPo po = (CheckBoxPo) value; + this.setText(po.text); + } + return this; + } + }; + this.setRenderer(render); + } + + // 修改Combox中的数据 + public void updateData(Vector values) { + setModel(new DefaultComboBoxModel(values)); + rendererData(); + } + + @Override + public void setSelectedItem(Object anObject) { // 选中text与传入的参数相同的项 + if (anObject != null) { + if (anObject instanceof CheckBoxPo) { + super.setSelectedItem(anObject); + } + if (anObject instanceof String) { + for (int index = 0; index < getItemCount(); index++) { + CheckBoxPo po = (CheckBoxPo) getItemAt(index); + if (po.text.equals(anObject.toString())) { + super.setSelectedIndex(index); + } + } + } + } else { + super.setSelectedItem(anObject); + } + } + + public void setSelectedValue(Object anObject) { // 选中value与传入的参数相同的项 + if (anObject != null) { + if (anObject instanceof CheckBoxPo) { + super.setSelectedItem(anObject); + } + if (anObject instanceof String) { + for (int index = 0; index < getItemCount(); index++) { + CheckBoxPo po = (CheckBoxPo) getItemAt(index); + if (po.value.equals(anObject.toString())) { + super.setSelectedIndex(index); + } + } + } + } else { + super.setSelectedItem(anObject); + } + } + + // 获得选中项的键值 + public Object getSelectedValue() { + if (getSelectedItem() instanceof CheckBoxPo) { + CheckBoxPo po = (CheckBoxPo) getSelectedItem(); + return po.value; + } + return (getSelectedItem() != null) ? getSelectedItem().toString() : null; + } + + // 获得选中项的显示文本 + public String getSelectedText() { + if (getSelectedItem() instanceof CheckBoxPo) { + CheckBoxPo po = (CheckBoxPo) getSelectedItem(); + return po.text; + } + return (getSelectedItem() != null) ? getSelectedItem().toString() : null; + } +} \ No newline at end of file diff --git a/com.connor.jd.plm/src/com/connor/jd/plm/utils/StringCreateUtil.java b/com.connor.jd.plm/src/com/connor/jd/plm/utils/StringCreateUtil.java new file mode 100644 index 0000000..57e6a19 --- /dev/null +++ b/com.connor.jd.plm/src/com/connor/jd/plm/utils/StringCreateUtil.java @@ -0,0 +1,21 @@ +package com.connor.jd.plm.utils; + +public class StringCreateUtil { + public static String createBlank(int num) { + StringBuilder sb = new StringBuilder(); + while (num > 0) { + sb.append(" "); + num--; + } + return sb.toString(); + } + + public static String createPoint(int num) { + StringBuilder sb = new StringBuilder(); + while (num > 0) { + sb.append("."); + num--; + } + return sb.toString(); + } +} diff --git a/com.connor.jd.plm/config/db.setting b/com.connor.jd.plm/src/config/db.setting similarity index 100% rename from com.connor.jd.plm/config/db.setting rename to com.connor.jd.plm/src/config/db.setting