diff --git a/com.connor.chint.sap2/.settings/org.eclipse.jdt.core.prefs b/com.connor.chint.sap2/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index fb1077b..0000000 --- a/com.connor.chint.sap2/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,8 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.compliance=1.8 -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.release=enabled -org.eclipse.jdt.core.compiler.source=1.8 diff --git a/com.connor.chint.sap2/META-INF/MANIFEST.MF b/com.connor.chint.sap2/META-INF/MANIFEST.MF index bdadb3a..0baf468 100644 --- a/com.connor.chint.sap2/META-INF/MANIFEST.MF +++ b/com.connor.chint.sap2/META-INF/MANIFEST.MF @@ -50,7 +50,8 @@ Require-Bundle: org.eclipse.ui, com.teamcenter.rac.util;bundle-version="11000.2.0", org.eclipse.osgi.services;bundle-version="3.3.100", TcSoaCaeRac;bundle-version="11000.2.0", - com.teamcenter.rac.project;bundle-version="11000.2.0" + com.teamcenter.rac.project;bundle-version="11000.2.0", + com.connor.chint.wuhan;bundle-version="1.0.0" Automatic-Module-Name: com.connor.chint.sap2 Bundle-ActivationPolicy: lazy Bundle-ClassPath: ., diff --git a/com.connor.chint.sap2/plugin.xml b/com.connor.chint.sap2/plugin.xml index 7d64888..d92537a 100644 --- a/com.connor.chint.sap2/plugin.xml +++ b/com.connor.chint.sap2/plugin.xml @@ -136,7 +136,8 @@ - + + @@ -186,6 +187,7 @@ + @@ -211,6 +213,7 @@ + @@ -259,6 +262,8 @@ + + @@ -307,6 +312,7 @@ + @@ -527,9 +533,11 @@ + + @@ -594,6 +602,8 @@ + + @@ -834,6 +844,28 @@ + + + + + + + + + + + + + + + + + + + @@ -881,6 +913,28 @@ + + + + + + + + + + + + + + + + + + + @@ -4369,6 +4423,27 @@ + + + + + + + + + + + + + + + + + + @@ -4568,6 +4643,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/com.connor.chint.sap2/src/com/chint/plm/common/context/ApiContext.java b/com.connor.chint.sap2/src/com/chint/plm/common/context/ApiContext.java index b1dac6a..422baaf 100644 --- a/com.connor.chint.sap2/src/com/chint/plm/common/context/ApiContext.java +++ b/com.connor.chint.sap2/src/com/chint/plm/common/context/ApiContext.java @@ -12,14 +12,25 @@ public class ApiContext { } public static String getApiUrl(TCSession session) { + return getApiUrl(session, "CHINT_API_URL", AppConst.PLM_API_URL); + } + + public static String getApiUrl(TCSession session, String paramKey) { + return getApiUrl(session, paramKey, ""); + } + + public static String getApiUrl(TCSession session, String paramKey, String defaultValue) { try { - String result = session.getPreferenceService().getStringValue("CHINT_API_URL"); + String result = session.getPreferenceService().getStringValue(paramKey); + if (StringUtils.isBlank(result)) { + result = defaultValue; + } if (StringUtils.isBlank(result)) { - result = AppConst.PLM_API_URL; + throw new RuntimeException("֪ͨԱѡ<" + paramKey + ">ǷãѯΪ"); } - return result; + return result; } catch (Exception e) { - throw new RuntimeException("֪ͨԱѡCHINT_API_URLǷ"); + throw new RuntimeException("֪ͨԱѡ<" + paramKey + ">Ƿ"); } } diff --git a/com.connor.chint.sap2/src/com/chint/plm/modules/custom/meprocessmng/MEProcessMngHelper.java b/com.connor.chint.sap2/src/com/chint/plm/modules/custom/meprocessmng/MEProcessMngHelper.java index a88dad7..141e9f7 100644 --- a/com.connor.chint.sap2/src/com/chint/plm/modules/custom/meprocessmng/MEProcessMngHelper.java +++ b/com.connor.chint.sap2/src/com/chint/plm/modules/custom/meprocessmng/MEProcessMngHelper.java @@ -5,21 +5,23 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import com.chint.plm.common.util.ArrayUtils; import com.chint.plm.common.util.CollectionUtils; import com.chint.plm.common.util.LoggerUtils; import com.chint.plm.common.util.StringUtils; import com.connor.chint.sap2.proc.CreateProcessController; +import com.connor.chint.sap2.util.BomToSapUtil; import com.connor.chint.sap2.util.ChintPreferenceUtil; import com.connor.chint.sap2.util.ProgressBar; import com.connor.chint.sap2.util.SqlUtil; -import com.teamcenter.rac.aif.kernel.AIFComponentContext; 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.TCSession; import com.teamcenter.rac.util.MessageBox; +import com.teamcenter.services.rac.cad.StructureManagementService; +import com.teamcenter.services.rac.cad._2007_01.StructureManagement; +import com.teamcenter.services.rac.cad._2007_01.StructureManagement.ExpandPSData; /** * չ @@ -29,22 +31,32 @@ public class MEProcessMngHelper { public static void onAutoFeeding(TCSession session, String groupId, ProgressBar pb, List itemRevisionList) throws Exception { LoggerUtils.debug("ԶͶϿʼ..."); + long start = System.nanoTime(); if (CollectionUtils.isNotEmpty(itemRevisionList)) { pb.setText("ԶͶϿʼ..."); pb.showDialog(); Map> wlflmMap = getWlflmMap(session, groupId); + LoggerUtils.debug("wlflmMap:" + (System.nanoTime() - start) / 1000000000); + TCComponentBOMWindowType bomWinType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow"); + TCComponentBOMWindow win = bomWinType.create(null); + StructureManagement structureService = StructureManagementService.getService(session); for (TCComponentItemRevision itemRevision : itemRevisionList) { - if (itemRevision!=null) { - onAutoFeeding(session, groupId, pb, itemRevision, wlflmMap); + if (itemRevision != null) { + long rs = System.nanoTime(); + onAutoFeeding(session, groupId, pb, itemRevision, wlflmMap, win, structureService); + LoggerUtils.debug("onAutoFeeding:" + (System.nanoTime() - rs) / 1000000); } } + win.close(); } + LoggerUtils.debug(itemRevisionList.size() + "end:" + (System.nanoTime() - start) / 1000000000); LoggerUtils.debug("ԶͶϽ"); pb.disposeDialog(); } - @SuppressWarnings("deprecation") - private static void onAutoFeeding(TCSession session, String groupId, ProgressBar pb, TCComponentItemRevision itemRevision, Map> wlflmMap) throws Exception { +// @SuppressWarnings("deprecation") + private static void onAutoFeeding(TCSession session, String groupId, ProgressBar pb, TCComponentItemRevision itemRevision, Map> wlflmMap, + TCComponentBOMWindow win, StructureManagement structureService) throws Exception { LoggerUtils.debug("ԶͶϣ" + itemRevision); pb.setText("ԶͶϣ" + itemRevision); // 㼶ϱ @@ -67,43 +79,42 @@ public class MEProcessMngHelper { return; } // Ͷ - TCComponentBOMWindowType bomWinType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow"); - TCComponentBOMWindow win = bomWinType.create(null); - win.setWindowTopLine(itemRevision.getItem(), itemRevision, null, null); - TCComponentBOMLine topLine = win.getTopBOMLine(); - onAutoFeedingLine(topLine, innerMap); + TCComponentBOMLine topLine = win.setWindowTopLine(itemRevision.getItem(), itemRevision, null, null); +// TCComponentBOMLine topLine = win.getTopBOMLine(); + Map bomLineMap = BomToSapUtil.getBomLineTreeNodeSOA(structureService, topLine); + + onAutoFeedingLine(topLine, innerMap, bomLineMap); win.save(); - win.refresh(); - win.unlock(); +// win.refresh(); +// win.unlock(); LoggerUtils.debug("ԶͶɣ" + itemRevision); } @SuppressWarnings("deprecation") - private static void onAutoFeedingLine(TCComponentBOMLine line, Map wlflmMap) throws Exception { - if (ArrayUtils.isNotEmpty(line.getChildren())) { - for (AIFComponentContext child : line.getChildren()) { - TCComponentBOMLine childLine = (TCComponentBOMLine) child.getComponent(); - // ʵͶϵ汾 - TCComponentItemRevision itemRevision = childLine.getItemRevision(); - // Ϸ - String zt2_ClassificationCode = itemRevision.getProperty("zt2_ClassificationCode"); - // - String name = itemRevision.getProperty("object_name"); - // 㼶 - String level = childLine.getProperty("bl_level_starting_0"); - // ֵ - String wlflm = ""; - wlflm = wlflmMap.get(name); - if (StringUtils.isBlank(wlflm)) { - wlflm = wlflmMap.get("*"); - } - if (StringUtils.isNotBlank(wlflm)) { - LoggerUtils.debug("ԶͶϣ" + itemRevision + "-" + level + "-" + zt2_ClassificationCode + "-" + wlflm); - CreateProcessController.feeding(childLine, wlflm); - } - childLine.save(); - onAutoFeedingLine(childLine, wlflmMap); + private static void onAutoFeedingLine(TCComponentBOMLine line, Map wlflmMap, Map bomLineMap) throws Exception { + ExpandPSData[] expandPSDatas = bomLineMap.get(line.getUid()); + for (ExpandPSData child : expandPSDatas) { + TCComponentBOMLine childLine = child.bomLine; + // ʵͶϵ汾 + TCComponentItemRevision itemRevision = child.itemRevOfBOMLine; + // Ϸ + String zt2_ClassificationCode = itemRevision.getProperty("zt2_ClassificationCode"); + // + String name = itemRevision.getProperty("object_name"); + // 㼶 + String level = childLine.getProperty("bl_level_starting_0"); + // ֵ + String wlflm = ""; + wlflm = wlflmMap.get(name); + if (StringUtils.isBlank(wlflm)) { + wlflm = wlflmMap.get("*"); + } + if (StringUtils.isNotBlank(wlflm)) { + LoggerUtils.debug("ԶͶϣ" + itemRevision + "-" + level + "-" + zt2_ClassificationCode + "-" + wlflm); + CreateProcessController.feeding(childLine, wlflm); } + childLine.save(); + onAutoFeedingLine(childLine, wlflmMap, bomLineMap); } } diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/assignfactoryno/FactoryNoZYDialog2zt.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/assignfactoryno/FactoryNoZYDialog2zt.java index 085631d..4dfedf5 100644 --- a/com.connor.chint.sap2/src/com/connor/chint/sap2/assignfactoryno/FactoryNoZYDialog2zt.java +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/assignfactoryno/FactoryNoZYDialog2zt.java @@ -809,6 +809,12 @@ public class FactoryNoZYDialog2zt extends AbstractAIFDialog { System.out.println(map_fn_size); Date date = new Date(); String dateString = sdf.format(date); + if(isAdd) { + //TODO lidy20240619 + String prefix0 = (String) t_bom.getValueAt(0, 5); + dateString = prefix0.substring(prefix0.length() - 4); + } + System.out.println("dateString:" + dateString); // String query = "select * from \"CHINT_M008_FactoryNo\" WHERE TIME='" + dateString + "'"; ResultSet rs = null; String selectQuery = "select * from \"CHINT_M008_FactoryNo\" where TYPE=? and TIME=?"; diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/commands/CreateBOMDifferenceCommandAll.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/commands/CreateBOMDifferenceCommandAll.java new file mode 100644 index 0000000..5a6c5e0 --- /dev/null +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/commands/CreateBOMDifferenceCommandAll.java @@ -0,0 +1,59 @@ +package com.connor.chint.sap2.commands; + +import com.chint.plm.createbomdifference.CreateBOMDifferenceDialogWh; +import com.connor.chint.sap2.KCommand; +import com.connor.chint.sap2.dy.createBOMDifference.CreateBOMDifferenceDialog; +import com.connor.chint.sap2.dy.createBOMDifference.CreateBOMDifferenceDialogzt; +import com.connor.chint.sap2.util.ChintPreferenceUtil; +import com.connor.chint.sap2.util.SAPUtil; +import com.teamcenter.rac.aif.AbstractAIFApplication; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.util.MessageBox; + +/** + * ɸIJļͨ + * + * @author xiaol + * + */ +public class CreateBOMDifferenceCommandAll extends KCommand { + + public CreateBOMDifferenceCommandAll(AbstractAIFApplication app, String commandId, String actionInfo) { + super(app, commandId, actionInfo); + try { + TCSession session = (TCSession) app.getSession(); + String groupID = SAPUtil.getGroupID(session); + String[] prefs = ChintPreferenceUtil.getPreferences("CHINT_ECN_COMPARE_RULE", session); + if(prefs == null || prefs.length == 0) { + MessageBox.post("CHINT_ECN_COMPARE_RULEѡòȷ", "", MessageBox.ERROR); + return; + } + String fa = "C"; + for(String pref:prefs) { + String[] split = pref.split(":"); + String type = split[0]; + String[] split2 = split[1].split(";"); + for(String grpId:split2) { + if(grpId.equals(groupID)) { + fa = type; + break; + } + } + } + System.out.println("group:" + groupID + "==>" + fa); + if(fa.equals("A")) { + //人 + this.setRunnable(new CreateBOMDifferenceDialogWh(app)); + } else if(fa.equals("B")) { + //̩ + this.setRunnable(new CreateBOMDifferenceDialogzt(app)); + } else { + this.setRunnable(new CreateBOMDifferenceDialog(app)); + } + }catch(Exception e) { + MessageBox.post("" + e.getMessage(), "", MessageBox.ERROR); + return; + } + } + +} diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/commands/CreateElectricalBOMCommand.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/commands/CreateElectricalBOMCommand.java index cbfb56f..168b6fc 100644 --- a/com.connor.chint.sap2/src/com/connor/chint/sap2/commands/CreateElectricalBOMCommand.java +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/commands/CreateElectricalBOMCommand.java @@ -4,6 +4,7 @@ import com.connor.chint.sap2.KCommand; import com.connor.chint.sap2.dy.createElectricalBOM.DYCreateElectricalBOMOperation; import com.connor.chint.sap2.dy.createElectricalBOM.DYCreateElectricalBOMOperation2; import com.connor.chint.sap2.dy.createElectricalBOM.DYSHCreateElectricalBOMOperation; +import com.connor.chint.sap2.dy.createElectricalBOM.DYSHCreateElectricalBOMOperationV2; import com.teamcenter.rac.aif.AbstractAIFApplication; public class CreateElectricalBOMCommand extends KCommand { @@ -25,6 +26,9 @@ public class CreateElectricalBOMCommand extends KCommand { case "M030_002": new DYSHCreateElectricalBOMOperation(app).executeOperation(); break; + case "M030_002V2": + new DYSHCreateElectricalBOMOperationV2(app).executeOperation(); + break; case "M030_001ztdz": new DYCreateElectricalBOMOperation(app).executeOperation(); break; diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/commands/ElectricalTasksCommand.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/commands/ElectricalTasksCommand.java index 505eb08..36d08b9 100644 --- a/com.connor.chint.sap2/src/com/connor/chint/sap2/commands/ElectricalTasksCommand.java +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/commands/ElectricalTasksCommand.java @@ -4,6 +4,7 @@ import com.connor.chint.sap2.KCommand; import com.connor.chint.sap2.electrical_task.DYElectricalTasksOperation2; import com.connor.chint.sap2.electrical_task.DYElectricalTasksOperationNew2; import com.connor.chint.sap2.electrical_task.DYSHElectricalTasksOperation; +import com.connor.chint.sap2.electrical_task.DYSHElectricalTasksOperationV2; import com.teamcenter.rac.aif.AbstractAIFApplication; public class ElectricalTasksCommand extends KCommand { @@ -25,6 +26,9 @@ public class ElectricalTasksCommand extends KCommand { case "M030_002": new DYSHElectricalTasksOperation(app).executeOperation(); break; + case "M030_002V2": + new DYSHElectricalTasksOperationV2(app).executeOperation(); + break; case "M030_001ztdz": // new DYElectricalTasksOperation(app).executeOperation(); new DYElectricalTasksOperation2(app).executeOperation(); diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/downloadFiles/DownloadFilesController.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/downloadFiles/DownloadFilesController.java index 38ec3f0..dc94c23 100644 --- a/com.connor.chint.sap2/src/com/connor/chint/sap2/downloadFiles/DownloadFilesController.java +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/downloadFiles/DownloadFilesController.java @@ -3,7 +3,9 @@ package com.connor.chint.sap2.downloadFiles; import java.io.File; import java.util.ArrayList; import java.util.List; +import java.util.Map; +import com.connor.chint.sap2.util.BomToSapUtil; import com.connor.chint.sap2.util.ChintPreferenceUtil; import com.connor.chint.sap2.util.KUtil; import com.connor.chint.sap2.util.MyProgressBarCompent; @@ -23,6 +25,7 @@ import com.teamcenter.rac.kernel.TCComponentTask; import com.teamcenter.rac.kernel.TCException; import com.teamcenter.rac.kernel.TCSession; import com.teamcenter.rac.util.MessageBox; +import com.teamcenter.services.rac.cad._2007_01.StructureManagement.ExpandPSData; /** * ͨͼֽ @@ -37,15 +40,15 @@ public class DownloadFilesController { /* ѡеİ汾 */ private List selects = new ArrayList<>(); /* ѡеݼ */ - private List datasets = new ArrayList(); - private List folders = new ArrayList(); + private List datasets = new ArrayList<>(); + private List folders = new ArrayList<>(); /* Ϣ֪ͨ/֪ͨ */ private List changes = new ArrayList<>(); protected StringBuffer errBuff = new StringBuffer(); private DownloadFileDialog dialog; public DownloadFilesController(AbstractAIFApplication app, DownloadFileDialog dialog) { - // TODO Auto-generated constructor stub + // Auto-generated constructor stub this.app = app; this.session = (TCSession) app.getSession(); this.dialog = dialog; @@ -158,7 +161,7 @@ public class DownloadFilesController { file.mkdirs(); List isDownloads = new ArrayList<>(); for (int i = 0; i < selects.size(); i++) { - TCComponentItemRevision rev = selects.get(i); +// TCComponentItemRevision rev = selects.get(i); TCComponentBOMLine bomline = SAPUtil.getNewBOMLine(selects.get(i), session); downFiles(bomline, 0, pdf_path, jt_path, isDownloads, isDownloadBOM, isDdownloadDiagram); } @@ -210,7 +213,7 @@ public class DownloadFilesController { MessageBox.post(buff.toString(), "", MessageBox.INFORMATION); } - public void download(String path, TCSession session, MyProgressBarCompent my) throws Exception { + public void download(String path, TCSession session, MyProgressBarCompent my) throws Exception {//TODO download // File file = new File(path); // TCComponentItemRevision tcComponentItemRevision = selects.get(0); // String name = tcComponentItemRevision.getStringProperty("object_name"); @@ -240,7 +243,7 @@ public class DownloadFilesController { CAD_path = path; catia_path = path; } - List list_paths = new ArrayList(); + List list_paths = new ArrayList<>(); list_paths.add(pdf_path); list_paths.add(jt_path); list_paths.add(excel_path); @@ -260,6 +263,7 @@ public class DownloadFilesController { if (!file.exists() && !file.isDirectory()) file.mkdirs(); } +// System.out.println("download:1"); /** * list_paths 0:PDF· 1:JTļ· 2:excelļ· 3:wordļ· 4:CADļ· * 5:άͼļ· @@ -272,19 +276,24 @@ public class DownloadFilesController { TCComponentItemRevision rev; for (int i = 0, len = selects.size(); i < len; i++) { rev = selects.get(i); +// System.out.println("getFiles:" + rev); getFiles(rev, isDownloads, flag_downloadDiagram, flag_CAD, flag_CATIA, flag_PDF, list_paths,flag_doc); if (flag_downloadBOM) { + System.out.println("չBOM..."); win = win == null ? bomWinType.create(null) : win; // win.lock(); win.setWindowTopLine(rev.getItem(), rev, null, null); topLine = win.getTopBOMLine(); - downFiles(topLine, isDownloads, flag_downloadDiagram, flag_CAD, flag_CATIA, flag_PDF, list_paths,flag_doc); + Map bomLineTree = BomToSapUtil.getBomLineTreeNodeSOA(topLine); + System.out.println("downFiles:" + topLine); + downFiles(topLine, bomLineTree, isDownloads, flag_downloadDiagram, flag_CAD, flag_CATIA, flag_PDF, list_paths,flag_doc); // win.unlock(); if (i == len - 1) { win.close(); } } } +// System.out.println("download:2"); String object_type; for (int i = 0; i < datasets.size(); i++) { @@ -305,6 +314,7 @@ public class DownloadFilesController { break; } } +// System.out.println("download:3"); StringBuffer buff = new StringBuffer(); buff.append("سɹ,ļ·:\n"); @@ -316,6 +326,7 @@ public class DownloadFilesController { buff.append(" " + folder_path + "\n"); } } +// System.out.println("download:4"); for (int i = 0; i < changes.size(); i++) { TCComponent[] comps = changes.get(i).getRelatedComponents("IMAN_reference"); for (TCComponent comp : comps) { @@ -327,11 +338,13 @@ public class DownloadFilesController { } } } +// System.out.println("download:5"); // ɾļ for (int i = 0, len = list_paths.size(); i < len; i++) { deleteFolder(list_paths.get(i)); } +// System.out.println("download:6"); String temp_path; for (int i = 0, len = list_paths.size(); i < len; i++) { @@ -340,7 +353,9 @@ public class DownloadFilesController { buff.append(" " + temp_path + "\n"); } } +// System.out.println("download:7"); KUtil.closeMyProgressBar(my); + my.dispose(); MessageBox.post(buff.toString(), "", MessageBox.INFORMATION); } @@ -365,7 +380,7 @@ public class DownloadFilesController { String[] types = type.split(","); for (int l = 0; l < types.length; l++) { try { - File[] files = dataset.getFiles(types[l], path); + dataset.getFiles(types[l], path); } catch (Exception e) { e.printStackTrace(); } @@ -398,24 +413,27 @@ public class DownloadFilesController { * * @throws Exception */ - private void downFiles(TCComponentBOMLine line, List isDownloads, + private void downFiles(TCComponentBOMLine line, Map bomLineTree, List isDownloads, boolean flag_downloadDiagram, boolean flag_CAD, boolean flag_CATIA, boolean flag_PDF, List list_paths,boolean flag_doc) throws Exception { - AIFComponentContext[] contexts = line.getChildren(); - TCComponentBOMLine child; - TCComponentItemRevision rev; - for (int i = 0, len = contexts.length; i < len; i++) { - child = (TCComponentBOMLine) contexts[i].getComponent(); - rev = child.getItemRevision(); +// AIFComponentContext[] contexts = line.getChildren(); + System.out.println("downFiles parent:" + line); + if(!bomLineTree.containsKey(line.getUid())) + return; + for (ExpandPSData data : bomLineTree.get(line.getUid())) { + TCComponentBOMLine child = data.bomLine; +// System.out.println("downFiles child:" + child); + TCComponentItemRevision rev = child.getItemRevision(); checkChindren(rev, isDownloads, flag_downloadDiagram, flag_CAD, flag_CATIA, flag_PDF, list_paths,flag_doc); getFiles(rev, isDownloads, flag_downloadDiagram, flag_CAD, flag_CATIA, flag_PDF, list_paths,flag_doc); - downFiles(child, isDownloads, flag_downloadDiagram, flag_CAD, flag_CATIA, flag_PDF, list_paths,flag_doc); + downFiles(child, bomLineTree, isDownloads, flag_downloadDiagram, flag_CAD, flag_CATIA, flag_PDF, list_paths,flag_doc); } } // ΪϣϹ°ͼֽͼֽҲBOMĻBOMеͼֽҲҪ + @SuppressWarnings("deprecation") public void checkChindren(TCComponentItemRevision rev, List isDownloads, String pdf_Path, String jt_Path, boolean isDownloadBOM, boolean isDdownloadDiagram) throws Exception { // TC_Is_Represented_By @@ -433,7 +451,7 @@ public class DownloadFilesController { downFiles(componentbomline, 0, pdf_Path, jt_Path, isDownloads, isDownloadBOM, isDdownloadDiagram); win.refresh(); win.close(); - } catch (TCException e) { + } catch (Exception e) { e.printStackTrace(); } @@ -442,6 +460,7 @@ public class DownloadFilesController { } // ΪϣϹ°ͼֽͼֽҲBOMĻBOMеͼֽҲҪ + @SuppressWarnings("deprecation") public void checkChindren(TCComponentItemRevision rev, List isDownloads, boolean flag_downloadDiagram, boolean flag_CAD, boolean flag_CATIA, boolean flag_PDF, List list_paths, boolean flag_doc) throws Exception { @@ -457,7 +476,8 @@ public class DownloadFilesController { win.lock(); win.setWindowTopLine(design_rev.getItem(), design_rev, null, null); TCComponentBOMLine componentbomline = win.getTopBOMLine(); - downFiles(componentbomline, isDownloads, flag_downloadDiagram, flag_CAD, flag_CATIA, flag_PDF, + Map bomLineTree = BomToSapUtil.getBomLineTreeNodeSOA(componentbomline); + downFiles(componentbomline, bomLineTree, isDownloads, flag_downloadDiagram, flag_CAD, flag_CATIA, flag_PDF, list_paths,flag_doc); win.refresh(); win.close(); @@ -499,6 +519,7 @@ public class DownloadFilesController { if (datasets[j] instanceof TCComponentDataset) { dataset = (TCComponentDataset) datasets[j]; type = dataset.getType(); + System.out.println("getFiles:" + rev + ">>" + dataset); switch (type) { case "MSExcel": if (flag_doc) { @@ -598,7 +619,7 @@ public class DownloadFilesController { TCComponent[] comps1 = rev.getRelatedComponents("IMAN_Rendering"); TCComponent[] comps2 = rev.getRelatedComponents("IMAN_specification"); - String object_name = rev.getProperty("object_name"); +// String object_name = rev.getProperty("object_name"); String m_path = else_Path; /* * File d_file = new File(m_path); if( !d_file.exists() && @@ -617,7 +638,8 @@ public class DownloadFilesController { String[] types = type.split(","); for (int l = 0; l < types.length; l++) { try { - File[] files = dataset.getFiles(types[l], m_path); + System.out.println("getFiles2:" + rev + ">>" + dataset); + dataset.getFiles(types[l], m_path); } catch (Exception e) { e.printStackTrace(); } @@ -627,13 +649,14 @@ public class DownloadFilesController { for (int i = 0; i < comps1.length; i++) { if (comps1[i] instanceof TCComponentDataset) { TCComponentDataset dataset = (TCComponentDataset) comps1[i]; - String d_type = dataset.getType(); +// String d_type = dataset.getType(); m_path = else_Path; String type = dataset.getProperty("ref_names"); String[] types = type.split(","); for (int l = 0; l < types.length; l++) { try { - File[] files = dataset.getFiles(types[l], m_path); + System.out.println("getFiles2:" + rev + ">>" + dataset); + dataset.getFiles(types[l], m_path); } catch (Exception e) { // e.printStackTrace(); } @@ -647,12 +670,14 @@ public class DownloadFilesController { * ݼ */ private void dataserDownload(TCComponentDataset dataset, String path) throws Exception { - String d_type = dataset.getType(); + System.out.println("dataserDownload:" + dataset); +// String d_type = dataset.getType(); String type = dataset.getProperty("ref_names"); String[] types = type.split(","); for (int l = 0; l < types.length; l++) { try { - File[] files = dataset.getFiles(types[l], path); + System.out.println("dataserDownload:" + dataset); + dataset.getFiles(types[l], path); } catch (Exception e) { } diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/dy/createBOMDifference/BOMCompareBean.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/dy/createBOMDifference/BOMCompareBean.java index cf5c0af..58b39b6 100644 --- a/com.connor.chint.sap2/src/com/connor/chint/sap2/dy/createBOMDifference/BOMCompareBean.java +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/dy/createBOMDifference/BOMCompareBean.java @@ -3,7 +3,7 @@ package com.connor.chint.sap2.dy.createBOMDifference; public class BOMCompareBean { private int index; private String changeType; // - private String zt2_MaterialNo_Parent; // ϱ + private String zt2_MaterialNo_Parent; // ϱ루 private String object_desc_Parent; // private String zt2_MaterialNo_Old; // ϱ private String object_desc_Old; // @@ -11,6 +11,7 @@ public class BOMCompareBean { private String zt2_MaterialNo_new; // ϱ private String object_desc_new; // private String num_new; // + private String parent; // ϱ public int getIndex() { return index; @@ -60,6 +61,14 @@ public class BOMCompareBean { this.num_Old = num_Old; } + public void addNum_Old(String num) { + if(!num_Old.isEmpty() && !num.isEmpty()) + this.num_Old = String.format("%.3f", Double.parseDouble(num_Old) + Double.parseDouble(num)); + else if(num_Old.isEmpty() && !num.isEmpty()) { + this.num_Old = num; + } + } + public String getZt2_MaterialNo_new() { return zt2_MaterialNo_new; } @@ -76,14 +85,22 @@ public class BOMCompareBean { this.object_desc_new = object_desc_new; } - public String getNum_new() { + public String getNum_New() { return num_new; } - public void setNum_new(String num_new) { + public void setNum_New(String num_new) { this.num_new = num_new; } + public void addNum_New(String num) { + if(!num_new.isEmpty() && !num.isEmpty()) + this.num_new = String.format("%.3f", Double.parseDouble(num_new) + Double.parseDouble(num)); + else if(num_new.isEmpty() && !num.isEmpty()) { + this.num_new = num; + } + } + public String getChangeType() { return changeType; } @@ -92,6 +109,14 @@ public class BOMCompareBean { this.changeType = changeType; } +// public String getParent() { +// return parent; +// } + + public void setParent(String parent) { + this.parent = parent; + } + public BOMCompareBean(String changeType, String zt2_MaterialNo_Parent, String object_desc_Parent, String zt2_MaterialNo_Old, String object_desc_Old, String num_Old, String zt2_MaterialNo_new, String object_desc_new, String num_new) { @@ -113,7 +138,7 @@ public class BOMCompareBean { + zt2_MaterialNo_Parent + ", object_desc_Parent=" + object_desc_Parent + ", zt2_MaterialNo_Old=" + zt2_MaterialNo_Old + ", object_desc_Old=" + object_desc_Old + ", num_Old=" + num_Old + ", zt2_MaterialNo_new=" + zt2_MaterialNo_new + ", object_desc_new=" + object_desc_new + ", num_new=" - + num_new + "]"; + + num_new + ", parent=" + parent + "]"; } public Object[] getRowData(int index) { @@ -123,4 +148,21 @@ public class BOMCompareBean { object_desc_Old, num_Old, zt2_MaterialNo_new, object_desc_new, num_new, "", "", "" }; } + public String getMaterial() { + String material = ""; + if(zt2_MaterialNo_Old != null && !zt2_MaterialNo_Old.isEmpty()) + material = zt2_MaterialNo_Old; + else if(zt2_MaterialNo_new != null && !zt2_MaterialNo_new.isEmpty()) + material = zt2_MaterialNo_new; + return material; + } + + public String getId() { + return (zt2_MaterialNo_Parent == null ? "" : zt2_MaterialNo_Parent) + "@" + getMaterial(); + } + + public String getParentId() { + return (parent == null ? "" : parent) + "@" + getMaterial(); + } + } diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/dy/createBOMDifference/BOMDifCellEditor.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/dy/createBOMDifference/BOMDifCellEditor.java index 7cdd119..48bc824 100644 --- a/com.connor.chint.sap2/src/com/connor/chint/sap2/dy/createBOMDifference/BOMDifCellEditor.java +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/dy/createBOMDifference/BOMDifCellEditor.java @@ -133,5 +133,20 @@ public class BOMDifCellEditor extends AbstractCellEditor implements TableCellEdi return null; } - + /** + * ӡɾ + * @param index ӻɾк + * @param add trueӣfalseɾ + */ + public void changeRow(int index, boolean add) { + if(add) { + JComboBox jcom = new JComboBox(); + JTextField jtf = new JTextField(); + jcom_subclass.add(index, jcom); + jtf_subclass.add(index, jtf); + }else { + jcom_subclass.remove(index); + jtf_subclass.remove(index); + } + } } diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/dy/createBOMDifference/BOMDifferenceBean.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/dy/createBOMDifference/BOMDifferenceBean.java index fe1c215..b3c8c2f 100644 --- a/com.connor.chint.sap2/src/com/connor/chint/sap2/dy/createBOMDifference/BOMDifferenceBean.java +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/dy/createBOMDifference/BOMDifferenceBean.java @@ -54,7 +54,7 @@ public class BOMDifferenceBean { /** * */ - public TCComponentItem item; + private TCComponentItem item; /** * µBOMLine */ @@ -276,4 +276,8 @@ public class BOMDifferenceBean { this.rev = rev; } + public String getId() { + return (zt2_MaterialNo_Parent == null ? "" : zt2_MaterialNo_Parent) + "@" + (item == null ? "" : item); + } + } diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/dy/createBOMDifference/CreateBOMDifferenceDialog.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/dy/createBOMDifference/CreateBOMDifferenceDialog.java index daced21..4a997ca 100644 --- a/com.connor.chint.sap2/src/com/connor/chint/sap2/dy/createBOMDifference/CreateBOMDifferenceDialog.java +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/dy/createBOMDifference/CreateBOMDifferenceDialog.java @@ -25,6 +25,8 @@ import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; +import javax.swing.event.CellEditorListener; +import javax.swing.event.ChangeEvent; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.event.TableModelEvent; @@ -64,13 +66,15 @@ public class CreateBOMDifferenceDialog extends AbstractAIFDialog { private static final long serialVersionUID = 1190944518442503011L; public static final String[] HEADER = { "", "", "ϱ", "", "ϱ", "", "", "ϱ", - "", "", "ԭ", "ԭС", "" }; - public static final int[] HEADERWIDTH = new int[] { 50, 80, 120, 220, 120, 180, 80, 120, 180, 80, 100, 100, 100 }; + "", "", "ԭ", "ԭС", "", "Դ" }; + public static final int[] HEADERWIDTH = new int[] { 50, 80, 120, 220, 120, 180, 80, 120, 180, 80, 100, 100, 100, 80 }; private AbstractAIFApplication app; private TCSession session; - private final JButton btn_ok = new JButton("ȷ"); - private final JButton btn_cel = new JButton("ȡ"); + private JButton btn_add = new JButton(""); + private JButton btn_del = new JButton("ɾ"); + private JButton btn_ok = new JButton("ȷ"); + private JButton btn_cel = new JButton("ȡ"); private JTable t_part; private DefaultTableModel tm_part; @@ -88,8 +92,9 @@ public class CreateBOMDifferenceDialog extends AbstractAIFDialog { private Map map_class = new HashMap<>(8); // private Map map_subclass = new HashMap<>(64); // С + private BOMDifCellEditor cellEditor; // ѡ༭ - JPanel selectPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); + private JPanel selectPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); private JComboBox box_class = new JComboBox(); private JComboBox box_subClass = new JComboBox(); private JComboBox box_processType = new JComboBox(); @@ -104,11 +109,11 @@ public class CreateBOMDifferenceDialog extends AbstractAIFDialog { this.session = (TCSession) app.getSession(); } - private void initUI() { + private void initUI() throws Exception { this.setTitle("BOM"); this.setLayout(new BorderLayout()); - this.setPreferredSize(new Dimension(1400, 400)); - this.setMinimumSize(new Dimension(1300, 300)); + this.setPreferredSize(new Dimension(1400, 600)); + this.setMinimumSize(new Dimension(1300, 500)); this.add(BorderLayout.NORTH, getSelectPanel()); this.add(BorderLayout.CENTER, getTablePanel()); this.add(BorderLayout.SOUTH, getButtonPanel()); @@ -266,7 +271,6 @@ public class CreateBOMDifferenceDialog extends AbstractAIFDialog { ccps = getAssembly(newRev); CreateBOMDifferenceController.bomCompare(oldline, newLine, 1, 1, childRevs, codeRemark, icsId, errBuff, compares, ccps, session); - } } @@ -285,7 +289,7 @@ public class CreateBOMDifferenceDialog extends AbstractAIFDialog { return; } - BOMDifCellEditor cellEditor = new BOMDifCellEditor(class_subclass, map_class, size); + cellEditor = new BOMDifCellEditor(class_subclass, map_class, size); t_part.getColumnModel().getColumn(11).setCellEditor(cellEditor); new Thread(new Runnable() { @@ -300,6 +304,8 @@ public class CreateBOMDifferenceDialog extends AbstractAIFDialog { for (int i = 0, len = compares.size(); i < len; i++) { System.out.println(i + "--" + compares.get(i)); tm_part.addRow(compares.get(i).getRowData(i + 1)); + //TODO + t_part.setValueAt("Զ", i, 13); } pb.disposeDialog(); } catch (Exception e) { @@ -665,7 +671,7 @@ public class CreateBOMDifferenceDialog extends AbstractAIFDialog { } } - private JPanel getTablePanel() { + private JPanel getTablePanel() throws Exception { JPanel panel = new JPanel(new BorderLayout()); tm_part = new DefaultTableModel(); t_part = new JTable(tm_part) { @@ -677,7 +683,11 @@ public class CreateBOMDifferenceDialog extends AbstractAIFDialog { @Override public boolean isCellEditable(int row, int column) { // Auto-generated method stub - if (column > 9) { + if (column == 13) { + return false; + } else if (column > 9) { + return true; + } else if(column != 0 && getValueAt(row, 13).equals("ֹ")) { return true; } return false; @@ -703,17 +713,15 @@ public class CreateBOMDifferenceDialog extends AbstractAIFDialog { // Auto-generated method stub return o1.getValue().compareTo(o2.getValue()); } - }); for (int i = 0, len = list.size(); i < len; i++) { jcm_reason.addItem(list.get(i).getKey()); box_class.addItem(list.get(i).getKey()); } - t_part.getColumnModel().getColumn(10).setCellEditor(new DefaultCellEditor(jcm_reason)); + colModel.getColumn(10).setCellEditor(new DefaultCellEditor(jcm_reason)); t_part.getModel().addTableModelListener(new TableModelListener() { - @Override public void tableChanged(TableModelEvent e) { int col = e.getColumn(); @@ -727,6 +735,13 @@ public class CreateBOMDifferenceDialog extends AbstractAIFDialog { } } }); + //TODO Ϊ + Object[] values = map_indexs.keySet().toArray(); + JComboBox changeType = new JComboBox(); + changeType.addItem(""); + for(Object s : values) + changeType.addItem(s.toString()); + colModel.getColumn(1).setCellEditor(new DefaultCellEditor(changeType)); System.out.println("processType:" + processType); if (processType.size() > 0) { @@ -746,6 +761,66 @@ public class CreateBOMDifferenceDialog extends AbstractAIFDialog { box_processType.addItem(processType); } } + for(int i = 0; i < t_part.getColumnCount(); i++) { + if(i == 2 || i == 4 || i == 7) { + //븸ϱ롢ϱ롢ϱͨѯԶд + TableCellEditor descEditor = new DefaultCellEditor(new JTextField()); + descEditor.addCellEditorListener(new CellEditorListener() { + public void editingStopped(ChangeEvent e) { + // ༭ɺIJ + try { + int row = t_part.getSelectedRow(), col = t_part.getSelectedColumn(); + String val = "" + ((TableCellEditor)e.getSource()).getCellEditorValue(); + System.out.println("༭: " + row + "," + col + "==" + val); + HashMap fields = new HashMap<>(); + fields.put("materialno", val); + AIFComponentContext[] parts = KUtil.query(session, "chint_query_material", fields).toArray(); + if(parts.length == 0) + return; + TCComponentItemRevision part = (TCComponentItemRevision) parts[0].getComponent(); + t_part.setValueAt(part.getProperty("object_desc"), row, col + 1); + }catch(Exception e1) { + e1.printStackTrace(); + MessageBox.post(CreateBOMDifferenceDialog.this, "" + e1, "", MessageBox.ERROR); + } + } + public void editingCanceled(ChangeEvent e) { + // ༭ȡIJ + System.out.println("༭ȡ: " + t_part.getSelectedRow() + "," + t_part.getSelectedColumn() + "==" + ((TableCellEditor)e.getSource()).getCellEditorValue()); + } + }); + colModel.getColumn(i).setCellEditor(descEditor); + }else if(i == 6 || i == 9) { + TableCellEditor descEditor = new DefaultCellEditor(new JTextField()); + descEditor.addCellEditorListener(new CellEditorListener() { + public void editingStopped(ChangeEvent e) { + // ༭ɺIJ + int row = t_part.getSelectedRow(), col = t_part.getSelectedColumn(); + DefaultCellEditor editor = (DefaultCellEditor)e.getSource(); + try { + String val = "" + editor.getCellEditorValue(); + System.out.println("༭: " + row + "," + col + "==" + val); + Double.parseDouble("" + val); + if(val.contains("d") || val.contains("D")) { + MessageBox.post(CreateBOMDifferenceDialog.this, "дҪ", "", MessageBox.ERROR); +// t_part.setValueAt(e.toString(), row, col); + } + } catch (NumberFormatException e1) { + MessageBox.post(CreateBOMDifferenceDialog.this, "дҪ", "", MessageBox.ERROR); +// t_part.setValueAt(e.toString(), row, col); +// ((JTextField)editor.getComponent()).requestFocus(); + } + } + public void editingCanceled(ChangeEvent e) { + // ༭ȡIJ + System.out.println("༭ȡ: " + t_part.getSelectedRow() + "," + t_part.getSelectedColumn() + "==" + ((TableCellEditor)e.getSource()).getCellEditorValue()); + } + }); + colModel.getColumn(i).setCellEditor(descEditor); + }else if(i != 1 && i != 10 && i != 11 && i != 12) { + colModel.getColumn(i).setCellEditor(new DefaultCellEditor(new JTextField())); + } + } JScrollPane scroll = new JScrollPane(t_part); panel.add(BorderLayout.CENTER, scroll); @@ -753,18 +828,58 @@ public class CreateBOMDifferenceDialog extends AbstractAIFDialog { } private JPanel getButtonPanel() { + JPanel south = new JPanel(new BorderLayout()); JPanel panel = new JPanel(new FlowLayout()); + panel.add(btn_add); + panel.add(btn_del); panel.add(btn_ok); - for (int i = 0; i < 4; i++) { - panel.add(new JLabel(" ")); - } +// for (int i = 0; i < 4; i++) { +// panel.add(new JLabel(" ")); +// } panel.add(btn_cel); - return panel; + south.add(BorderLayout.WEST, new JLabel("ֻǵǰ**ٵ**
ǰ****
ɾϴBOMȫƳ")); + south.add(BorderLayout.CENTER, panel); + return south; } private void addListener() { + //TODO + btn_add.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + int[] rows = t_part.getSelectedRows(); + if(rows.length == 0) { + tm_part.addRow(new Object[] { 0, "", "", "", "", "", "", "", "", "", "", "", "", "ֹ" }); + cellEditor.changeRow(t_part.getRowCount() - 1, true); + }else { + int row = rows[rows.length - 1] + 1; + tm_part.insertRow(row, new Object[] { 0, "", "", "", "", "", "", "", "", "", "", "", "", "ֹ" }); + cellEditor.changeRow(row, true); + } + KUtil.refrashNo(t_part); + } + }); + + btn_del.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + int[] rows = t_part.getSelectedRows(); + if(rows.length == 0) { + MessageBox.post("ѡҪɾ", "", MessageBox.WARNING); + return; + } + for(int i = rows.length - 1; i >= 0; i--) { + if(!t_part.getValueAt(rows[i], 13).equals("ֹ")) + continue; + tm_part.removeRow(rows[i]); + cellEditor.changeRow(rows[i], false); + } + KUtil.refrashNo(t_part); + } + }); +// t_part.getCellEditor() + btn_cel.addActionListener(new ActionListener() { - @Override public void actionPerformed(ActionEvent e) { // Auto-generated method stub @@ -773,7 +888,6 @@ public class CreateBOMDifferenceDialog extends AbstractAIFDialog { }); // OK 򽫽ʾдzt2_BOMEC,ص֪ͨ btn_ok.addActionListener(new ActionListener() { - @Override public void actionPerformed(ActionEvent e) { new Thread(new Runnable() { @@ -783,6 +897,32 @@ public class CreateBOMDifferenceDialog extends AbstractAIFDialog { KUtil.stopTableEditing(t_part); // ֯ try { + //ɾ + int last = HEADER.length - 1; + for(int i = t_part.getRowCount() - 1; i >= 0; i--) { + if(t_part.getValueAt(i, last).equals("Զ")) + continue; + try { + if(!KUtil.isEmpty(t_part.getValueAt(i, 4))) + Double.parseDouble("" + t_part.getValueAt(i, 6)); + if(!KUtil.isEmpty(t_part.getValueAt(i, 7))) + Double.parseDouble("" + t_part.getValueAt(i, 9)); + } catch (NumberFormatException e) { + throw new Exception("дҪ"); + } + boolean del = true; + for(int j = 1; j < last; j++) { + if(!KUtil.isEmpty(t_part.getValueAt(i, j))) { + del = false; + break; + } + } + if(del) { + tm_part.removeRow(i); + } + } + KUtil.refrashNo(t_part); + createBOMEC(t_part.getRowCount()); btn_ok.setEnabled(false); MessageBox.post("BOMɳɹ", "", 2); @@ -791,13 +931,11 @@ public class CreateBOMDifferenceDialog extends AbstractAIFDialog { e.printStackTrace(); MessageBox.post("BOMʧ:" + e.getMessage(), "", 2); } - } }).start(); } }); t_part.getSelectionModel().addListSelectionListener(new ListSelectionListener() { - @Override public void valueChanged(ListSelectionEvent e) { if (t_part.getSelectedRowCount() >= 2) { @@ -808,10 +946,8 @@ public class CreateBOMDifferenceDialog extends AbstractAIFDialog { } }); box_class.addItemListener(new ItemListener() { - @Override public void itemStateChanged(ItemEvent e) { - // ʹTable༭ʧȥ TableCellEditor tableCellEditor = t_part.getCellEditor(); if (tableCellEditor != null) { @@ -829,7 +965,6 @@ public class CreateBOMDifferenceDialog extends AbstractAIFDialog { private void setSubClassBoxValue() { if (selectClassItemString != "") { - field_subClass.setVisible(false); box_subClass.setVisible(true); box_subClass.removeAllItems(); @@ -838,7 +973,6 @@ public class CreateBOMDifferenceDialog extends AbstractAIFDialog { for (String item : subClassMap.keySet()) { box_subClass.addItem(item); } - } else { field_subClass.setVisible(true); box_subClass.setVisible(false); @@ -857,7 +991,6 @@ public class CreateBOMDifferenceDialog extends AbstractAIFDialog { }); box_subClass.addItemListener(new ItemListener() { - @Override public void itemStateChanged(ItemEvent e) { // ʹTable༭ʧȥ @@ -873,7 +1006,6 @@ public class CreateBOMDifferenceDialog extends AbstractAIFDialog { setTableSubClassCellValue(); selectSubClassItemString = null; } - } private void setTableSubClassCellValue() { @@ -884,8 +1016,8 @@ public class CreateBOMDifferenceDialog extends AbstractAIFDialog { } }); + box_processType.addItemListener(new ItemListener() { - @Override public void itemStateChanged(ItemEvent e) { // ʹTable༭ʧȥ @@ -901,7 +1033,6 @@ public class CreateBOMDifferenceDialog extends AbstractAIFDialog { setTableSubClassCellValue(); selectProcessTypeItemString = null; } - } private void setTableSubClassCellValue() { @@ -909,7 +1040,6 @@ public class CreateBOMDifferenceDialog extends AbstractAIFDialog { for (int index : selectRowsIndex) { t_part.setValueAt(selectProcessTypeItemString, index, 12); } - } }); @@ -931,7 +1061,7 @@ public class CreateBOMDifferenceDialog extends AbstractAIFDialog { } System.out.println("form uid:" + form.getUid()); List list = new ArrayList<>(rowCout); - for (int i = 0; i < 13; i++) { + for (int i = 0; i < 14; i++) { String[] values = KUtil.getColumnValues(rowCout, i, list, t_part).toArray(new String[rowCout]); System.out.println("ֵ:" + "zt2_property" + (i + 1) + ";" + Arrays.toString(values)); switch (i) { @@ -968,7 +1098,6 @@ public class CreateBOMDifferenceDialog extends AbstractAIFDialog { KUtil.setProperty(form, "zt2_property" + (i + 1), values); // form.unlock(); } - // tar.unlock(); return form; } @@ -1010,5 +1139,4 @@ public class CreateBOMDifferenceDialog extends AbstractAIFDialog { return revs; } - } diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/dy/createBOMDifference/CreateBOMDifferenceDialogzt.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/dy/createBOMDifference/CreateBOMDifferenceDialogzt.java index a9a8415..fc8cccd 100644 --- a/com.connor.chint.sap2/src/com/connor/chint/sap2/dy/createBOMDifference/CreateBOMDifferenceDialogzt.java +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/dy/createBOMDifference/CreateBOMDifferenceDialogzt.java @@ -25,6 +25,8 @@ import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; +import javax.swing.event.CellEditorListener; +import javax.swing.event.ChangeEvent; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.event.TableModelEvent; @@ -35,10 +37,8 @@ import javax.swing.table.TableColumnModel; import com.connor.chint.sap2.create_proc.CreateProcBean; import com.connor.chint.sap2.create_proc.CreateProcController; -import com.connor.chint.sap2.sap.YCLMaterialBean; import com.connor.chint.sap2.util.ChintPreferenceUtil; import com.connor.chint.sap2.util.KUtil; -import com.connor.chint.sap2.util.POIUtil; import com.connor.chint.sap2.util.ProgressBar; import com.connor.chint.sap2.util.SAPUtil; import com.teamcenter.rac.aif.AbstractAIFApplication; @@ -56,7 +56,6 @@ import com.teamcenter.rac.kernel.TCComponentGroup; import com.teamcenter.rac.kernel.TCComponentItem; import com.teamcenter.rac.kernel.TCComponentItemRevision; import com.teamcenter.rac.kernel.TCComponentListOfValues; -import com.teamcenter.rac.kernel.TCException; import com.teamcenter.rac.kernel.TCSession; import com.teamcenter.rac.util.MessageBox; @@ -68,23 +67,26 @@ public class CreateBOMDifferenceDialogzt extends AbstractAIFDialog { private static final long serialVersionUID = 1190944518442503011L; public static final String[] HEADER = { "", "", "ϱ", "", "ϱ", "", "", "ϱ", - "", "", "ԭ", "ԭС", "" }; - public static final int[] HEADERWIDTH = new int[] { 50, 80, 120, 220, 120, 180, 80, 120, 180, 80, 100, 100, 100 }; + "", "", "ԭ", "ԭС", "", "Դ" }; + public static final int[] HEADERWIDTH = new int[] { 50, 80, 120, 220, 120, 180, 80, 120, 180, 80, 100, 100, 100, 80 }; private AbstractAIFApplication app; private TCSession session; + private JButton btn_add = new JButton(""); + private JButton btn_del = new JButton("ɾ"); private final JButton btn_ok = new JButton("ȷ"); private final JButton btn_cel = new JButton("ȡ"); private JTable t_part; private DefaultTableModel tm_part; // private JComboBox jcom_Subclass = null; //С + private BOMDifCellEditor cellEditor; private TCComponent tar = null; // 켯 private List compares = new ArrayList<>(); private ProgressBar pb = null; // private Map map_material = new HashMap<>(6); // ԭϿ - private Map map_Materials = new HashMap<>();; // ԭ +// private Map map_Materials = new HashMap<>();; // ԭ private Map processType = new HashMap<>(32); // private Map map_indexs = new HashMap<>(8); // @@ -93,7 +95,7 @@ public class CreateBOMDifferenceDialogzt extends AbstractAIFDialog { private Map map_subclass = new HashMap<>(64); // С // ѡ༭ - JPanel selectPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); + private JPanel selectPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); private JComboBox box_class = new JComboBox(); private JComboBox box_subClass = new JComboBox(); private JComboBox box_processType = new JComboBox(); @@ -111,8 +113,8 @@ public class CreateBOMDifferenceDialogzt extends AbstractAIFDialog { private void initUI() { this.setTitle("BOM"); this.setLayout(new BorderLayout()); - this.setPreferredSize(new Dimension(1400, 400)); - this.setMinimumSize(new Dimension(1300, 300)); + this.setPreferredSize(new Dimension(1400, 600)); + this.setMinimumSize(new Dimension(1300, 500)); this.add(BorderLayout.NORTH, getSelectPanel()); this.add(BorderLayout.CENTER, getTablePanel()); this.add(BorderLayout.SOUTH, getButtonPanel()); @@ -180,6 +182,7 @@ public class CreateBOMDifferenceDialogzt extends AbstractAIFDialog { } + @SuppressWarnings("deprecation") @Override public void run() { try { @@ -263,8 +266,8 @@ public class CreateBOMDifferenceDialogzt extends AbstractAIFDialog { // String groupID = ""; try { groupID = SAPUtil.getGroupID(session); - } catch (TCException e1) { - // TODO Auto-generated catch block + } catch (Exception e1) { + // Auto-generated catch block e1.printStackTrace(); } String fa = ""; @@ -327,7 +330,7 @@ public class CreateBOMDifferenceDialogzt extends AbstractAIFDialog { return; } - BOMDifCellEditor cellEditor = new BOMDifCellEditor(class_subclass, map_class, size); + cellEditor = new BOMDifCellEditor(class_subclass, map_class, size); t_part.getColumnModel().getColumn(11).setCellEditor(cellEditor); new Thread(new Runnable() { @@ -342,6 +345,8 @@ public class CreateBOMDifferenceDialogzt extends AbstractAIFDialog { for (int i = 0, len = compares.size(); i < len; i++) { System.out.println(i + "--" + compares.get(i)); tm_part.addRow(compares.get(i).getRowData(i + 1)); + //TODO + t_part.setValueAt("Զ", i, 13); } pb.disposeDialog(); } catch (Exception e) { @@ -542,7 +547,7 @@ public class CreateBOMDifferenceDialogzt extends AbstractAIFDialog { // // @Override // public int compare(BOMCoutBean o1, BOMCoutBean o2) { -// // TODO Auto-generated method stub +// // Auto-generated method stub // return o1.getIndex_num() - o2.getIndex_num(); // } // }); @@ -718,8 +723,12 @@ public class CreateBOMDifferenceDialogzt extends AbstractAIFDialog { @Override public boolean isCellEditable(int row, int column) { - // TODO Auto-generated method stub - if (column > 9) { + // Auto-generated method stub + if (column == 13) { + return false; + } else if (column > 9) { + return true; + } else if(column != 0 && getValueAt(row, 13).equals("ֹ")) { return true; } return false; @@ -742,7 +751,7 @@ public class CreateBOMDifferenceDialogzt extends AbstractAIFDialog { Collections.sort(list, new Comparator>() { @Override public int compare(Entry o1, Entry o2) { - // TODO Auto-generated method stub + // Auto-generated method stub return o1.getValue().compareTo(o2.getValue()); } @@ -752,7 +761,7 @@ public class CreateBOMDifferenceDialogzt extends AbstractAIFDialog { jcm_reason.addItem(list.get(i).getKey()); box_class.addItem(list.get(i).getKey()); } - t_part.getColumnModel().getColumn(10).setCellEditor(new DefaultCellEditor(jcm_reason)); + colModel.getColumn(10).setCellEditor(new DefaultCellEditor(jcm_reason)); t_part.getModel().addTableModelListener(new TableModelListener() { @@ -769,6 +778,13 @@ public class CreateBOMDifferenceDialogzt extends AbstractAIFDialog { } } }); + //TODO Ϊ + Object[] values = map_indexs.keySet().toArray(); + JComboBox changeType = new JComboBox(); + changeType.addItem(""); + for(Object s : values) + changeType.addItem(s.toString()); + colModel.getColumn(1).setCellEditor(new DefaultCellEditor(changeType)); System.out.println("processType:" + processType); if (processType.size() > 0) { @@ -782,12 +798,71 @@ public class CreateBOMDifferenceDialogzt extends AbstractAIFDialog { } Collections.sort(list2); JComboBox jcom_Type = new JComboBox(list2.toArray(new String[size])); - t_part.getColumnModel().getColumn(12).setCellEditor(new DefaultCellEditor(jcom_Type)); + colModel.getColumn(12).setCellEditor(new DefaultCellEditor(jcom_Type)); for (String processType : list2) { box_processType.addItem(processType); } } + for(int i = 0; i < t_part.getColumnCount(); i++) { + if(i == 2 || i == 4 || i == 7) { + //븸ϱ롢ϱ롢ϱͨѯԶд + TableCellEditor descEditor = new DefaultCellEditor(new JTextField()); + descEditor.addCellEditorListener(new CellEditorListener() { + public void editingStopped(ChangeEvent e) { + // ༭ɺIJ + try { + int row = t_part.getSelectedRow(), col = t_part.getSelectedColumn(); + String val = "" + ((TableCellEditor)e.getSource()).getCellEditorValue(); + System.out.println("༭: " + row + "," + col + "==" + val); + HashMap fields = new HashMap<>(); + fields.put("materialno", val); + AIFComponentContext[] parts = KUtil.query(session, "chint_query_material", fields).toArray(); + if(parts.length == 0) + return; + TCComponentItemRevision part = (TCComponentItemRevision) parts[0].getComponent(); + t_part.setValueAt(part.getProperty("object_desc"), row, col + 1); + }catch(Exception e1) { + e1.printStackTrace(); + MessageBox.post(CreateBOMDifferenceDialogzt.this, "" + e1, "", MessageBox.ERROR); + } + } + public void editingCanceled(ChangeEvent e) { + // ༭ȡIJ + System.out.println("༭ȡ: " + t_part.getSelectedRow() + "," + t_part.getSelectedColumn() + "==" + ((TableCellEditor)e.getSource()).getCellEditorValue()); + } + }); + colModel.getColumn(i).setCellEditor(descEditor); + }else if(i == 6 || i == 9) { + TableCellEditor descEditor = new DefaultCellEditor(new JTextField()); + descEditor.addCellEditorListener(new CellEditorListener() { + public void editingStopped(ChangeEvent e) { + // ༭ɺIJ + int row = t_part.getSelectedRow(), col = t_part.getSelectedColumn(); + TableCellEditor editor = ((TableCellEditor)e.getSource()); + try { + String val = "" + editor.getCellEditorValue(); + System.out.println("༭: " + row + "," + col + "==" + val); + Double.parseDouble("" + val); + if(val.contains("d") || val.contains("D")) { + MessageBox.post(CreateBOMDifferenceDialogzt.this, "дҪ", "", MessageBox.ERROR); +// t_part.setValueAt(e.toString(), row, col); + } + } catch (NumberFormatException e1) { + MessageBox.post(CreateBOMDifferenceDialogzt.this, "дҪ", "", MessageBox.ERROR); +// t_part.setValueAt(e.toString(), row, col); + } + } + public void editingCanceled(ChangeEvent e) { + // ༭ȡIJ + System.out.println("༭ȡ: " + t_part.getSelectedRow() + "," + t_part.getSelectedColumn() + "==" + ((TableCellEditor)e.getSource()).getCellEditorValue()); + } + }); + colModel.getColumn(i).setCellEditor(descEditor); + }else if(i != 1 && i != 10 && i != 11 && i != 12) { + colModel.getColumn(i).setCellEditor(new DefaultCellEditor(new JTextField())); + } + } JScrollPane scroll = new JScrollPane(t_part); panel.add(BorderLayout.CENTER, scroll); @@ -795,27 +870,64 @@ public class CreateBOMDifferenceDialogzt extends AbstractAIFDialog { } private JPanel getButtonPanel() { + JPanel south = new JPanel(new BorderLayout()); JPanel panel = new JPanel(new FlowLayout()); + panel.add(btn_add); + panel.add(btn_del); panel.add(btn_ok); - for (int i = 0; i < 4; i++) { - panel.add(new JLabel(" ")); - } +// for (int i = 0; i < 4; i++) { +// panel.add(new JLabel(" ")); +// } panel.add(btn_cel); - return panel; + south.add(BorderLayout.WEST, new JLabel("ֻǵǰ**ٵ**
ǰ****
ɾϴBOMȫƳ")); + south.add(BorderLayout.CENTER, panel); + return south; } private void addListener() { + //TODO + btn_add.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + int[] rows = t_part.getSelectedRows(); + if(rows.length == 0) { + tm_part.addRow(new Object[] { 0, "", "", "", "", "", "", "", "", "", "", "", "", "ֹ" }); + cellEditor.changeRow(t_part.getRowCount() - 1, true); + }else { + int row = rows[rows.length - 1] + 1; + tm_part.insertRow(row, new Object[] { 0, "", "", "", "", "", "", "", "", "", "", "", "", "ֹ" }); + cellEditor.changeRow(row, true); + } + KUtil.refrashNo(t_part); + } + }); + + btn_del.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + int[] rows = t_part.getSelectedRows(); + if(rows.length == 0) { + MessageBox.post("ѡҪɾ", "", MessageBox.WARNING); + return; + } + for(int i = rows.length - 1; i >= 0; i--) { + if(!t_part.getValueAt(rows[i], 13).equals("ֹ")) + continue; + tm_part.removeRow(rows[i]); + cellEditor.changeRow(rows[i], false); + } + KUtil.refrashNo(t_part); + } + }); btn_cel.addActionListener(new ActionListener() { - @Override public void actionPerformed(ActionEvent e) { - // TODO Auto-generated method stub + // Auto-generated method stub disposeDialog(); } }); // OK 򽫽ʾдzt2_BOMEC,ص֪ͨ btn_ok.addActionListener(new ActionListener() { - @Override public void actionPerformed(ActionEvent e) { new Thread(new Runnable() { @@ -825,6 +937,32 @@ public class CreateBOMDifferenceDialogzt extends AbstractAIFDialog { KUtil.stopTableEditing(t_part); // ֯ try { + //ɾ + int last = HEADER.length - 1; + for(int i = t_part.getRowCount() - 1; i >= 0; i--) { + if(t_part.getValueAt(i, last).equals("Զ")) + continue; + try { + if(!KUtil.isEmpty(t_part.getValueAt(i, 4))) + Double.parseDouble("" + t_part.getValueAt(i, 6)); + if(!KUtil.isEmpty(t_part.getValueAt(i, 7))) + Double.parseDouble("" + t_part.getValueAt(i, 9)); + } catch (NumberFormatException e) { + throw new Exception("дҪ"); + } + boolean del = true; + for(int j = 1; j < last; j++) { + if(!KUtil.isEmpty(t_part.getValueAt(i, j))) { + del = false; + break; + } + } + if(del) { + tm_part.removeRow(i); + } + } + KUtil.refrashNo(t_part); + createBOMEC(t_part.getRowCount()); btn_ok.setEnabled(false); MessageBox.post("BOMɳɹ", "", 2); @@ -833,13 +971,11 @@ public class CreateBOMDifferenceDialogzt extends AbstractAIFDialog { e.printStackTrace(); MessageBox.post("BOMʧ:" + e.getMessage(), "", 2); } - } }).start(); } }); t_part.getSelectionModel().addListSelectionListener(new ListSelectionListener() { - @Override public void valueChanged(ListSelectionEvent e) { if (t_part.getSelectedRowCount() >= 2) { @@ -850,10 +986,8 @@ public class CreateBOMDifferenceDialogzt extends AbstractAIFDialog { } }); box_class.addItemListener(new ItemListener() { - @Override public void itemStateChanged(ItemEvent e) { - // ʹTable༭ʧȥ TableCellEditor tableCellEditor = t_part.getCellEditor(); if (tableCellEditor != null) { @@ -871,7 +1005,6 @@ public class CreateBOMDifferenceDialogzt extends AbstractAIFDialog { private void setSubClassBoxValue() { if (selectClassItemString != "") { - field_subClass.setVisible(false); box_subClass.setVisible(true); box_subClass.removeAllItems(); @@ -880,7 +1013,6 @@ public class CreateBOMDifferenceDialogzt extends AbstractAIFDialog { for (String item : subClassMap.keySet()) { box_subClass.addItem(item); } - } else { field_subClass.setVisible(true); box_subClass.setVisible(false); @@ -899,7 +1031,6 @@ public class CreateBOMDifferenceDialogzt extends AbstractAIFDialog { }); box_subClass.addItemListener(new ItemListener() { - @Override public void itemStateChanged(ItemEvent e) { // ʹTable༭ʧȥ @@ -915,7 +1046,6 @@ public class CreateBOMDifferenceDialogzt extends AbstractAIFDialog { setTableSubClassCellValue(); selectSubClassItemString = null; } - } private void setTableSubClassCellValue() { @@ -923,11 +1053,9 @@ public class CreateBOMDifferenceDialogzt extends AbstractAIFDialog { for (int index : selectRowsIndex) { t_part.setValueAt(selectSubClassItemString, index, 11); } - } }); box_processType.addItemListener(new ItemListener() { - @Override public void itemStateChanged(ItemEvent e) { // ʹTable༭ʧȥ @@ -943,7 +1071,6 @@ public class CreateBOMDifferenceDialogzt extends AbstractAIFDialog { setTableSubClassCellValue(); selectProcessTypeItemString = null; } - } private void setTableSubClassCellValue() { @@ -951,12 +1078,11 @@ public class CreateBOMDifferenceDialogzt extends AbstractAIFDialog { for (int index : selectRowsIndex) { t_part.setValueAt(selectProcessTypeItemString, index, 12); } - } }); - } + @SuppressWarnings("deprecation") public TCComponentForm createBOMEC(int rowCout) throws Exception { TCComponentForm form = null; TCComponent[] comps = tar.getRelatedComponents("IMAN_reference"); @@ -973,7 +1099,7 @@ public class CreateBOMDifferenceDialogzt extends AbstractAIFDialog { } System.out.println("form uid:" + form.getUid()); List list = new ArrayList<>(rowCout); - for (int i = 0; i < 13; i++) { + for (int i = 0; i < HEADER.length; i++) { String[] values = KUtil.getColumnValues(rowCout, i, list, t_part).toArray(new String[rowCout]); System.out.println("ֵ:" + "zt2_property" + (i + 1) + ";" + Arrays.toString(values)); switch (i) { diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/dy/createElectricalBOM/DYSHCreateElectricalBOMOperationV2.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/dy/createElectricalBOM/DYSHCreateElectricalBOMOperationV2.java new file mode 100644 index 0000000..e2a4b77 --- /dev/null +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/dy/createElectricalBOM/DYSHCreateElectricalBOMOperationV2.java @@ -0,0 +1,347 @@ +package com.connor.chint.sap2.dy.createElectricalBOM; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.chint.plm.common.context.ApiContext; +import com.chint.plm.common.util.ArrayUtils; +import com.chint.plm.common.util.HttpUtils; +import com.chint.plm.common.util.LoggerUtils; +import com.chint.plm.common.util.StringUtils; +import com.connor.chint.sap2.dy.createElectricalBOM.bean.CcemEb; +import com.connor.chint.sap2.util.KUtil; +import com.connor.chint.sap2.util.MyProgressBarCompent; +import com.connor.chint.sap2.util.POIUtil; +import com.teamcenter.rac.aif.AbstractAIFApplication; +import com.teamcenter.rac.aif.AbstractAIFOperation; +import com.teamcenter.rac.aif.kernel.AIFComponentContext; +import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentContextList; +import com.teamcenter.rac.kernel.TCComponentFolder; +import com.teamcenter.rac.kernel.TCComponentItem; +import com.teamcenter.rac.kernel.TCComponentItemRevision; +import com.teamcenter.rac.kernel.TCComponentItemType; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.util.MessageBox; +import com.teamcenter.services.rac.cad.StructureManagementService; +import com.teamcenter.services.rac.cad._2007_01.StructureManagement.AttributesInfo; +import com.teamcenter.services.rac.cad._2007_01.StructureManagement.CreateOrUpdateRelativeStructureInfo; +import com.teamcenter.services.rac.cad._2007_01.StructureManagement.CreateOrUpdateRelativeStructurePref; +import com.teamcenter.services.rac.cad._2007_01.StructureManagement.CreateOrUpdateRelativeStructureResponse; +import com.teamcenter.services.rac.cad._2007_01.StructureManagement.RelOccInfo; +import com.teamcenter.services.rac.cad._2007_01.StructureManagement.RelativeStructureChildInfo; + +/** + * ȡBOM + * + */ +public class DYSHCreateElectricalBOMOperationV2 extends AbstractAIFOperation { + + private AbstractAIFApplication app; + + public DYSHCreateElectricalBOMOperationV2(AbstractAIFApplication app) { + this.app = app; + } + + @Override + public void executeOperation() throws Exception { + MyProgressBarCompent my = null; + try { + TCComponent project = null; + TCComponent folder = null; + TCSession session = (TCSession) app.getSession(); + InterfaceAIFComponent target = app.getTargetComponent(); + if (target == null || !(target instanceof TCComponent)) { + return; + } + String type = target.getType(); + if (type.equals("ZT2_ProjectItem")) { + project = (TCComponent) target; + String zt2_WBSNo = project.getProperty("zt2_WBSNo"); + } + if (project == null) { + MessageBox.post("ѡĿ", "", 2); + return; + } + TCComponentFolder xxzx_folder = KUtil.getXMZXFolderFromProject(project); + if (xxzx_folder == null) { + MessageBox.post("δҵĿִļ,Ŀ ", "", 2); + return; + } + AIFComponentContext[] childs = xxzx_folder.getChildren(); + for (int i = 0, len = childs.length; i < len; i++) { + folder = (TCComponent) childs[i].getComponent(); + if (folder.getProperty("object_name").contains("") && folder instanceof TCComponentFolder) { + break; + } + folder = null; + } + if (folder == null) { + MessageBox.post("δҵļ,Ŀ ", "", 2); + return; + } + my = new MyProgressBarCompent("", "ȡĿBOMϢ......"); + String projectId = project.getProperty("item_id"); + String zt2_WBSNo = project.getProperty("zt2_WBSNo"); + // ȡBOM + String cadUrl = ApiContext.getApiUrl(session, "CHINT_EX_CADTOOL_URL"); + String urlString = cadUrl + "/api/PLM/PullProject"; + Map paramMap = new HashMap(); + paramMap.put("plmId", projectId); + String resp = HttpUtils.get(urlString, paramMap); + try { + JSONObject respObject = JSONObject.parseObject(resp); + if (respObject.containsKey("isOK") && respObject.getBoolean("isOK")) { + JSONObject dataObject = respObject.getJSONObject("data"); + JSONArray products = dataObject.getJSONArray("products"); + if (products != null && products.size() > 0) { + TCComponentItemType itemType = (TCComponentItemType) session.getTypeComponent("Part"); + for (int i = 0; i < products.size(); i++) { + JSONObject product = products.getJSONObject(i); + String factoryId = product.getString("factoryId"); + // String flowNo = product.getString("flowNo"); + JSONArray items = product.getJSONArray("items"); + if (items != null && items.size() > 0) { + // Ŀִ/ £̶Ԫ + String objectName = "̶Ԫ"; + int index = getTypeNumber(session, "9900000135", zt2_WBSNo); + // + List factoryNoComps = new ArrayList<>(); + List factoryNos = getFactoryNos(factoryId); + for (String factoryNo : factoryNos) { + Map queryCondition = new HashMap<>(); + queryCondition.put("fid", factoryNo); + // ѯ + TCComponentContextList contextList = KUtil.query(session, "chint_query_FactoryNo", queryCondition); + if (contextList.getListCount() > 0) { + TCComponent comp = (TCComponent) contextList.get(0).getComponent(); + if (comp instanceof TCComponentItem) { + TCComponentItem item = (TCComponentItem) comp; + factoryNoComps.add(item); + } + } + } + // BOM + CcemEb parent = new CcemEb(); + List bomChilds = new ArrayList(); + Map partItemRevMaps = new LinkedHashMap(); + for (int j = 0; j < items.size(); j++) { + JSONObject item = items.getJSONObject(j); + String code = item.getString("code"); + BigDecimal quantity = item.getBigDecimal("quantity").setScale(2, RoundingMode.HALF_UP); + Map queryCondition = new HashMap<>(); + queryCondition.put("ID", code); + // ѯ + TCComponentContextList contextList = KUtil.query(session, "chint_query_item", queryCondition); + if (contextList.getListCount() > 0) { + TCComponent comp = (TCComponent) contextList.get(0).getComponent(); + if (comp instanceof TCComponentItemRevision) { + TCComponentItemRevision partItemRev = (TCComponentItemRevision) comp; + System.out.print(partItemRev); + partItemRevMaps.put(code, partItemRev); + } + } + CcemEb ccemEb = new CcemEb(); + ccemEb.setZt2_MaterialNo(code); + ccemEb.setEbQty(quantity.toString()); + ccemEb.setBl_sequence_no(""); + ccemEb.setBl_ref_designator(""); + bomChilds.add(ccemEb); + } + parent.setChilds(bomChilds); + // ̶Ԫ + String zt2_MaterialNo = "9900000135-"; + // Ϸ + String pmpcCode = "990101002"; + TCComponentItemRevision partItmeRevision = createPart(session, folder, factoryNoComps, itemType, + objectName, zt2_WBSNo, zt2_MaterialNo + String.format("%05d", index), pmpcCode); + // ̶ԪµͼBOM + int p_size = 1; + createBOM(session, parent, partItmeRevision, partItemRevMaps, p_size); + } + } + } + my.setVisible(false); + MessageBox.post("()ȡBOMɹ", "", 2); + } else { + my.setVisible(false); + MessageBox.post("ýӿӦ" + respObject.getString("message"), "", 2); + } + } catch (Exception e) { + e.printStackTrace(); + my.setVisible(false); + MessageBox.post("쳣" + e.getMessage() + "ӿӦ" + resp, "", 2); + return; + } + } catch (Exception e) { + KUtil.closeMyProgressBar(my); + e.printStackTrace(); + MessageBox.post("쳣:" + e.getMessage(), "", 2); + } + } + + public TCComponentItemRevision createPart(TCSession session, TCComponent folder, List factoryNos, TCComponentItemType itemType, + String object_name, String zt2_WBSNo, String zt2_MaterialNo, String pmpcCode) throws Exception { + // + String item_id = itemType.getNewID(); + TCComponentItem item = itemType.create(item_id, "A", "Part", object_name, null, null); + item.setProperty("zt2_unit", "TAI"); + // + folder.add("contents", item); + // ϱ + item.getLatestItemRevision().setProperty("zt2_MaterialNo", zt2_MaterialNo); + // WBS + item.getLatestItemRevision().setProperty("zt2_WBSNo", zt2_WBSNo); + // + item.getLatestItemRevision().setProperty("zt2_Quantity", "1"); + // item.getLatestItemRevision().setProperty("zt2_unit", "TAI"); + // Ϸ + item.getLatestItemRevision().setProperty("zt2_ClassificationCode", pmpcCode); + TCComponentItemRevision rev = item.getLatestItemRevision(); + // ӳ + if (factoryNos.size() > 0) { + rev.add("ZT2_FactoryNumber", factoryNos); + } + return rev; + } + + private void createBOM(TCSession session, CcemEb parent, TCComponentItemRevision rev, Map partItemRevMaps, int p_size) { + List childs = parent.getChilds(); + if (childs.size() == 0) + return; + // + Collections.sort(childs, new Comparator() { + @Override + public int compare(CcemEb o1, CcemEb o2) { + return POIUtil.getIntValue(o1.getBl_sequence_no()) - POIUtil.getIntValue(o2.getBl_sequence_no()); + } + }); + // ṹӼ + List childInfos = new ArrayList<>(); + AttributesInfo attr, attr1, attr2; + for (int i = 0, len = childs.size(); i < len; i++) { + // ӼϢ + RelativeStructureChildInfo childInfo = new RelativeStructureChildInfo(); + RelOccInfo occInfo = new RelOccInfo(); + // + attr = new AttributesInfo(); + attr.name = "bl_quantity"; + attr.value = POIUtil.getIntValue(childs.get(i).getEbQty()) * p_size + ""; + // ұ + attr1 = new AttributesInfo(); + attr1.name = "bl_sequence_no"; + attr1.value = (i + 1) * 10 + ""; + // + attr2 = new AttributesInfo(); + attr2.name = "bl_ref_designator"; + attr2.value = childs.get(i).getBl_ref_designator(); + occInfo.attrsToSet = new AttributesInfo[] { attr, attr1, attr2 }; + childInfo.child = partItemRevMaps.get(childs.get(i).getZt2_MaterialNo()); + childInfo.occInfo = occInfo; + childInfos.add(childInfo); + } + // صĽṹ + saveRelativeStructure(session, rev, childInfos); + } + + @SuppressWarnings("deprecation") + private void saveRelativeStructure(TCSession session, TCComponentItemRevision parent, List childInfos) { + StructureManagementService service = StructureManagementService.getService(session); + // ޸صĽṹ + CreateOrUpdateRelativeStructurePref structurePref = new CreateOrUpdateRelativeStructurePref(); + CreateOrUpdateRelativeStructureInfo structureInfo = new CreateOrUpdateRelativeStructureInfo(); + structureInfo.childInfo = childInfos.toArray(new RelativeStructureChildInfo[] {}); + structureInfo.parent = parent; + structureInfo.precise = false; + CreateOrUpdateRelativeStructureResponse resp; + try { + resp = service.createOrUpdateRelativeStructure(new CreateOrUpdateRelativeStructureInfo[] { structureInfo }, "view", true, structurePref); + KUtil.throwServiceDataError(resp.serviceData); + } catch (Exception e) { + e.printStackTrace(); + LoggerUtils.debug(e.getMessage()); + } + } + + private static int getTypeNumber(TCSession session, String type, String zt2_WBSNo) throws Exception { + Map fields = new HashMap<>(); + fields.put("WBS", zt2_WBSNo); + fields.put("ϱ", type + "-*"); + TCComponentContextList querys = KUtil.query(session, "ѯ", fields); + List list = querys.toComponentVector(); + int size = list.size(); + Collections.sort(list, new Comparator() { + @Override + public int compare(InterfaceAIFComponent o1, InterfaceAIFComponent o2) { + try { + return o2.getProperty("zt2_MaterialNo").compareTo(o1.getProperty("zt2_MaterialNo")); + } catch (Exception e) { + e.printStackTrace(); + } + return 0; + } + }); + if (size > 0) { + String zt2_MaterialNo = list.get(0).getProperty("zt2_MaterialNo"); + int index = zt2_MaterialNo.indexOf("-"); + if (index != -1) { + int value = POIUtil.getIntValue(zt2_MaterialNo.substring(index + 1)); + return value == 0 ? 1 : value + 1; + } + } + return 1; + } + + private static List getFactoryNos(String factoryId) { + List factoryNos = new ArrayList<>(64); + if (StringUtils.isNotBlank(factoryId)) { + String[] noStrs = factoryId.split(","); + if (ArrayUtils.isNotEmpty(noStrs)) { + for (String str : noStrs) { + String[] nos = str.split("~"); + if (ArrayUtils.isNotEmpty(nos)) { + if (nos.length == 1) { + factoryNos.add(nos[0]); + } else if (nos.length == 2) { + String one = nos[0]; + String two = nos[1]; + String prefix = one.substring(0, one.length() - 8); + String serial = one.substring(one.length() - 8, one.length()); + int serialNum = Integer.parseInt(serial); + for (int i = 0; i < 1000; i++) { + String next = prefix + (serialNum + i); + factoryNos.add(next); + if (next.equals(two)) { + break; + } + } + } else { + throw new RuntimeException("Ÿʽߣ" + factoryId); + } + } + } + } + } + return factoryNos; + } + + public static void main(String[] args) { + List nos = getFactoryNos("DX323041400"); + System.out.println(nos.size()); + nos = getFactoryNos("DX323041400~DX323041432"); + System.out.println(nos.size()); + nos = getFactoryNos("DX323041400~DX323041432,DX323041388~DX323041399"); + System.out.println(nos.size()); + } +} diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/electrical_task/DYSHElectricalTasksOperationV2.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/electrical_task/DYSHElectricalTasksOperationV2.java new file mode 100644 index 0000000..160cf1b --- /dev/null +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/electrical_task/DYSHElectricalTasksOperationV2.java @@ -0,0 +1,171 @@ +package com.connor.chint.sap2.electrical_task; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.chint.plm.common.context.ApiContext; +import com.chint.plm.common.util.HttpUtils; +import com.connor.chint.sap2.util.KUtil; +import com.connor.chint.sap2.util.MyProgressBarCompent; +import com.connor.chint.sap2.util.ZYFactoryUtil; +import com.teamcenter.rac.aif.AbstractAIFApplication; +import com.teamcenter.rac.aif.AbstractAIFOperation; +import com.teamcenter.rac.aif.kernel.AIFComponentContext; +import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentFolder; +import com.teamcenter.rac.kernel.TCComponentItem; +import com.teamcenter.rac.kernel.TCComponentItemRevision; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.util.MessageBox; + +/** + *  · + * @since 2024-05-10 + */ +public class DYSHElectricalTasksOperationV2 extends AbstractAIFOperation { + + private AbstractAIFApplication app; + + public DYSHElectricalTasksOperationV2(AbstractAIFApplication app) { + this.app = app; + } + + @Override + public void executeOperation() throws Exception { + MyProgressBarCompent my = null; + try { + TCSession session = (TCSession) app.getSession(); + InterfaceAIFComponent target = app.getTargetComponent(); + if (target == null || !target.getType().equals("ZT2_ProjectItem")) { + MessageBox.post("ѡĿ", "", 2); + return; + } + my = new MyProgressBarCompent("·", "()񴫵......"); + // Ŀ + TCComponent project = (TCComponent) target; + // Ʒļ + TCComponentFolder ccpFolder = KUtil.getCCPFolderFromProject(project); + if (ccpFolder == null) { + MessageBox.post("δҵƷϢ,Ŀ", "", 2); + return; + } + // ĿϢ + String itemId = project.getProperty("item_id"); + String projectCode = project.getProperty("zt2_ProjectNo"); + String projectName = project.getProperty("object_name"); + // ͬһǰ׺Ʒ + Map ccp_types = new HashMap<>(16); + // ƷͳŹϵ + Map> ccp_factoryNos = new HashMap<>(16); + // Ʒ + Map ccp_names = new HashMap<>(16); + // :ϱ + Map map_factory_ccp = new HashMap<>(32); + // ƷļӼ + AIFComponentContext[] ccpChilds = ccpFolder.getChildren(); + for (int i = 0, len = ccpChilds.length; i < len; i++) { + if (ccpChilds[i].getComponent().getType().equals("Part")) { + // 汾 + TCComponentItemRevision rev = ((TCComponentItem) ccpChilds[i].getComponent()).getLatestItemRevision(); + String zt2_MaterialNo = rev.getProperty("zt2_MaterialNo"); + int index = zt2_MaterialNo.indexOf("-"); + // ϱ + String type = index > -1 ? zt2_MaterialNo.substring(0, index) : zt2_MaterialNo; + // + TCComponent[] meops = rev.getRelatedComponents("ZT2_FactoryNumber"); + // Ʒ + String object_name = rev.getProperty("object_name"); + ccp_names.put(zt2_MaterialNo, object_name); + if (ccp_types.containsKey(type)) { + String value = ccp_types.get(type); + if (zt2_MaterialNo.compareTo(value) < 0) { + ccp_types.put(type, zt2_MaterialNo); + } + List factoryNos = ccp_factoryNos.get(type); + for (int j = 0; j < meops.length; j++) { + String factoryID = meops[j].getProperty("item_id"); + map_factory_ccp.put(factoryID, zt2_MaterialNo); + if (!factoryNos.contains(factoryID)) { + factoryNos.add(factoryID); + } + } + } else { + ccp_types.put(type, zt2_MaterialNo); + List factoryNos = new ArrayList<>(); + for (int j = 0; j < meops.length; j++) { + String factoryID = meops[j].getProperty("item_id"); + factoryNos.add(factoryID); + map_factory_ccp.put(factoryID, zt2_MaterialNo); + } + ccp_factoryNos.put(type, factoryNos); + } + } + } + // + List keys = new java.util.ArrayList<>(ccp_types.keySet()); + Collections.sort(keys); + if (ccp_types.size() > 0) { + // ֯ + JSONObject param = new JSONObject(); + JSONArray products = new JSONArray(); + param.put("PLMId", itemId); + param.put("Code", projectCode); + param.put("Name", projectName); + for (Map.Entry entry : ccp_types.entrySet()) { + String materialCode = entry.getKey(); + String materialCodePart = entry.getValue(); + List factoryNos = ccp_factoryNos.get(materialCode); + String factoryId = ""; + if (factoryNos.size() > 0) { + Collections.sort(factoryNos); + if (factoryNos.size() == 1) { + factoryId = factoryNos.get(0); + } else { + factoryId = ZYFactoryUtil.getFactory2(factoryNos, 4, "~"); + } + } + JSONObject product = new JSONObject(); + product.put("PartId", materialCode); + product.put("PartName", ccp_names.get(materialCodePart)); + product.put("FactoryId", factoryId); + product.put("Status", "0"); + product.put("FlowNo", "-00001"); + products.add(product); + } + param.put("Products", products); + // · + String cadUrl = ApiContext.getApiUrl(session, "CHINT_EX_CADTOOL_URL"); + String urlString = cadUrl + "/api/PLM/ReceiveProject"; + String resp = HttpUtils.post(urlString, param.toString()); + try { + JSONObject respObject = JSONObject.parseObject(resp); + if (respObject.containsKey("isOK") && respObject.getBoolean("isOK")) { + my.setVisible(false); + MessageBox.post("()·ɹ", "", 2); + } else { + my.setVisible(false); + MessageBox.post("ýӿӦ" + respObject.getString("message"), "", 2); + } + } catch (Exception e) { + my.setVisible(false); + MessageBox.post("ýӿӦ" + resp, "", 2); + return; + } + } else { + my.setVisible(false); + MessageBox.post("δҵƷϢ,Ŀ", "", 2); + return; + } + } catch (Exception e) { + KUtil.closeMyProgressBar(my); + e.printStackTrace(); + MessageBox.post("쳣:" + e.getMessage(), "", 2); + } + } +} diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/general/BatchReviewDialog.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/general/BatchReviewDialog.java index 68943b3..ab62a5d 100644 --- a/com.connor.chint.sap2/src/com/connor/chint/sap2/general/BatchReviewDialog.java +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/general/BatchReviewDialog.java @@ -7,6 +7,7 @@ import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowEvent; +import java.sql.ResultSet; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -28,14 +29,13 @@ import com.connor.chint.sap2.modelAudit.ModelAudiTableModel; import com.connor.chint.sap2.util.CheckBoxTableHeaderRenderer; import com.connor.chint.sap2.util.KUtil; import com.connor.chint.sap2.util.ProgressBar; +import com.connor.chint.sap2.util.SqlUtil; import com.teamcenter.rac.aif.AIFDesktop; import com.teamcenter.rac.aif.AbstractAIFApplication; import com.teamcenter.rac.aif.AbstractAIFDialog; -import com.teamcenter.rac.aif.kernel.AIFComponentContext; import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; import com.teamcenter.rac.kernel.TCComponent; -import com.teamcenter.rac.kernel.TCComponentItem; -import com.teamcenter.rac.kernel.TCComponentItemRevision; +import com.teamcenter.rac.kernel.TCSession; import com.teamcenter.rac.util.MessageBox; import com.teamcenter.rac.workflow.commands.newprocess.NewProcessDialog; @@ -51,10 +51,10 @@ public class BatchReviewDialog extends AbstractAIFDialog { * */ private static final long serialVersionUID = 1L; - private List targets; +// private List targets; private List beans; private AbstractAIFApplication app; -// private TCSession session; + private TCSession session; protected ModelAudiTableModel tm_part; protected JTable t_part; // private CheckBoxTableHeaderRenderer tableHeaderRenderer; @@ -74,17 +74,18 @@ public class BatchReviewDialog extends AbstractAIFDialog { // Auto-generated constructor stub super(false); this.app = app; -// this.session = (TCSession) app.getSession(); + this.session = (TCSession) app.getSession(); } @Override public void run() { + long start = System.nanoTime(); initUI(); showDialog(); + System.out.println("time1:" + (System.nanoTime() - start)/1000000000); SwingUtilities.invokeLater(new Runnable() { - @Override public void run() { // Auto-generated method stub @@ -93,9 +94,9 @@ public class BatchReviewDialog extends AbstractAIFDialog { try { pb.setText("..."); pb.startProgress(); - pb.setText("..."); pb.showDialog(); - if (!getTarget()) { + System.out.println("time2:" + (System.nanoTime() - start)/1000000000); + if (!getTargetSql()) { pb.disposeDialog(); MessageBox.post("ǰļ˶", "", 2); disposeDialog(); @@ -107,6 +108,7 @@ public class BatchReviewDialog extends AbstractAIFDialog { disposeDialog(); return; } + System.out.println("time3:" + (System.nanoTime() - start)/1000000000); refreshTable(beans); timer = new Timer(); check(); @@ -121,7 +123,7 @@ public class BatchReviewDialog extends AbstractAIFDialog { } // ˢ± - public void refreshTable(List beans) { + private void refreshTable(List beans) { t_part.clearSelection(); tm_part.getDataVector().clear(); int rowCount = t_part.getRowCount(); @@ -129,7 +131,6 @@ public class BatchReviewDialog extends AbstractAIFDialog { tm_part.removeRow(i); } Collections.sort(beans, new Comparator() { - @Override public int compare(BatchReviewBean o1, BatchReviewBean o2) { // Auto-generated method stub @@ -145,7 +146,52 @@ public class BatchReviewDialog extends AbstractAIFDialog { } // ȡδδеĶ - public boolean getTarget() throws Exception { + //TODO lidy20240514ݿѯ + private boolean getTargetSql() throws Exception { + long start = System.nanoTime(); + boolean flag = false; + beans = new ArrayList<>(); + String strs[] = session.getPreferenceService().getStringValues("database_tc"); + if (SqlUtil.getTCDataConnection(strs) == null) { + MessageBox.post("ݿʧ,ѡ", "", 2); + return flag; + } + StringBuilder uids = new StringBuilder(""); + InterfaceAIFComponent[] folders = app.getTargetComponents(); + for(InterfaceAIFComponent folder : folders) { + uids.append("','").append(folder.getUid()); + } + StringBuilder sql = new StringBuilder("select distinct a1.POBJECT_NAME,"); + sql.append("decode(a1.pobject_type,'ZT2_Design3DRevision',decode(b2.pzt2_materialno,'',a.pitem_id,b2.pzt2_materialno),'Part Revision',b1.pzt2_materialno,a.pitem_id) as DRAWNO,") + .append("a.COMP from (select t1.puid,decode(t1.pobject_type,'ZT2_Change',t2.puid,'ZT2_SCXXCDTZD',t2.puid,t3.puid) as COMP,t2.pitem_id from pworkspaceobject t1,pitem t2,CHINT_LATESTREV t3 ") + .append("where t1.puid=t2.puid and t2.puid=t3.item and t1.puid in (select PVALU_0 from pcontents where puid in ('").append(uids.substring(3)).append("')) ") + .append("union select t.puid,t.puid as comp,t0.pitem_id from PITEMREVISION t,pitem t0 where t.RITEMS_TAGU=t0.puid ") + .append("and t.puid in (select PVALU_0 from pcontents where puid in ('").append(uids.substring(3)).append("'))) a,pworkspaceobject a1 ") + .append("left join ppart_0_revision_alt b1 on b1.puid=a1.puid left join pzt2_design3drevision b2 on b2.puid=a1.puid where a.comp=a1.puid ") + .append("and not exists (select pvalu_0 from prelease_status_list where puid=a.puid) ") + .append("and not exists (select r.puid from pepmtask r,pimanrelation r0 where r.puid=r0.rprimary_objectu and r.pstate_value=4 and r0.rsecondary_objectu=a.comp)"); + System.out.println("sql==>" + sql); + ResultSet rs = SqlUtil.read(sql.toString()); + System.out.println("rs==>" + rs.getRow()); + while(rs.next()) { + String object_name = rs.getString(1); + String drawNo = rs.getString(2); + TCComponent comp = session.stringToComponent(rs.getString(3)); +// System.out.println("POBJECT_NAME==>" + object_name); +// System.out.println("DRAWNO==>" + drawNo); +// System.out.println("COMP==>" + rs.getString(3) + "@@" + comp); + beans.add(new BatchReviewBean(true, object_name, "", drawNo, comp)); + flag = true; + } + SqlUtil.free(); + System.out.println("t2:" + (System.nanoTime() - start)/1000000); + + return flag; + } + + // ȡδδеĶ + /*private boolean getTarget() throws Exception { + long start = System.nanoTime(); // TCComponentFolder folder = (TCComponentFolder) app.getTargetComponent(); // AIFComponentContext[] childs = folder.getChildren(); InterfaceAIFComponent[] folders = app.getTargetComponents(); @@ -155,10 +201,12 @@ public class BatchReviewDialog extends AbstractAIFDialog { childs.add(c); } } + System.out.println("childs:" + childs.size()); + System.out.println("t1:" + (System.nanoTime() - start)/1000000); TCComponentItem item = null; TCComponentItemRevision rev = null; - targets = new ArrayList<>(64); - beans = new ArrayList<>(64); + targets = new ArrayList<>(); + beans = new ArrayList<>(); boolean flag = false; String object_name = ""; String drawNo = ""; @@ -167,7 +215,7 @@ public class BatchReviewDialog extends AbstractAIFDialog { for (AIFComponentContext c : childs) { InterfaceAIFComponent child = c.getComponent(); type = child.getType(); - if (child.getType().equals("ZT2_ProjectItem")) { + if (type.equals("ZT2_ProjectItem")) { continue; } flag = true; @@ -191,7 +239,7 @@ public class BatchReviewDialog extends AbstractAIFDialog { // System.out.println("comp2:"+comp); // System.out.println("flag1:"+!KUtil.isTCM(comp)+";flag2:"+!KUtil.isInProcess(comp)+";flag3:"+targets.contains(comp)); // System.out.println("ccc"); - if (!KUtil.isTCM(comp) && !KUtil.isInProcess(comp) && !targets.contains(comp)) { + if (!targets.contains(comp) && !KUtil.isTCM(comp) && !KUtil.isInProcess(comp)) { targets.add(comp); object_name = comp.getProperty("object_name"); drawNo = ""; @@ -206,9 +254,10 @@ public class BatchReviewDialog extends AbstractAIFDialog { beans.add(new BatchReviewBean(true, object_name, isTCM, drawNo, comp)); } } + System.out.println("t2:" + (System.nanoTime() - start)/1000000); return flag; - } + }*/ @Override protected void processWindowEvent(WindowEvent e) { @@ -225,7 +274,7 @@ public class BatchReviewDialog extends AbstractAIFDialog { } // ʼ - public void check() { + private void check() { thread = new TimerTask() { @Override public void run() { @@ -254,7 +303,6 @@ public class BatchReviewDialog extends AbstractAIFDialog { } } } - } catch (Exception e) { // Auto-generated catch block e.printStackTrace(); @@ -262,11 +310,10 @@ public class BatchReviewDialog extends AbstractAIFDialog { } }; timer.schedule(thread, 1000, 2000); - } // ֹͣ - public void stopTimerTask() { + private void stopTimerTask() { System.out.println("ֹͣʱ"); if (thread != null) { @@ -278,8 +325,10 @@ public class BatchReviewDialog extends AbstractAIFDialog { } // - public void modelAudit() throws Exception { + private void modelAudit() throws Exception { + long start = System.nanoTime(); List list = getSelectedParts(); + System.out.println("modelAudit1:" + (System.nanoTime() - start)/1000000); int len = list.size(); System.out.println("ѡи:" + len); @@ -294,9 +343,11 @@ public class BatchReviewDialog extends AbstractAIFDialog { System.out.println("ģ:" + com); command.selectTargets.add(com.getComp()); } + System.out.println("modelAudit2:" + (System.nanoTime() - start)/1000000); // AIFDesktop command.targetArray = command.selectTargets.toArray(new InterfaceAIFComponent[command.selectTargets.size()]); new NewProcessDialog(command); + System.out.println("modelAudit3:" + (System.nanoTime() - start)/1000000); // new Thread().sleep(30000); for (BatchReviewBean com : list) { System.out.println("ģ:" + com); @@ -315,6 +366,7 @@ public class BatchReviewDialog extends AbstractAIFDialog { tm_part.setValueAt("", com.getIndex(), com.model_isTCM_INDEX); } } + System.out.println("modelAudit4:" + (System.nanoTime() - start)/1000000); } // ȡѡеĶ @@ -333,7 +385,6 @@ public class BatchReviewDialog extends AbstractAIFDialog { private void addListeners() { // Auto-generated method stub btn_cel.addActionListener(new ActionListener() { - @Override public void actionPerformed(ActionEvent e) { // Auto-generated method stub @@ -342,12 +393,10 @@ public class BatchReviewDialog extends AbstractAIFDialog { } }); btn_audit.addActionListener(new ActionListener() { - @Override public void actionPerformed(ActionEvent e) { // Auto-generated method stub SwingUtilities.invokeLater(new Runnable() { - @Override public void run() { // Auto-generated method stub @@ -360,7 +409,6 @@ public class BatchReviewDialog extends AbstractAIFDialog { } } }); - } }); } diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/gylxgs/GylxGsBatchImportBean.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/gylxgs/GylxGsBatchImportBean.java new file mode 100644 index 0000000..ec11312 --- /dev/null +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/gylxgs/GylxGsBatchImportBean.java @@ -0,0 +1,82 @@ +package com.connor.chint.sap2.gylxgs; + +public class GylxGsBatchImportBean { + + // + private int no; + + // ͼ + private String tydh; + + // պ + private String gyh; + + // + private String gxh; + + // ˹ʱ + private Double rgTime; + + // ʱ + private Double jqTime; + + // ׼ʱ + private Double zbTime; + + public int getNo() { + return no; + } + + public void setNo(int no) { + this.no = no; + } + + public String getTydh() { + return tydh; + } + + public void setTydh(String tydh) { + this.tydh = tydh; + } + + public String getGyh() { + return gyh; + } + + public void setGyh(String gyh) { + this.gyh = gyh; + } + + public String getGxh() { + return gxh; + } + + public void setGxh(String gxh) { + this.gxh = gxh; + } + + public Double getRgTime() { + return rgTime; + } + + public void setRgTime(Double rgTime) { + this.rgTime = rgTime; + } + + public Double getJqTime() { + return jqTime; + } + + public void setJqTime(Double jqTime) { + this.jqTime = jqTime; + } + + public Double getZbTime() { + return zbTime; + } + + public void setZbTime(Double zbTime) { + this.zbTime = zbTime; + } + +} diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/gylxgs/GylxGsBatchImportCommand.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/gylxgs/GylxGsBatchImportCommand.java new file mode 100644 index 0000000..b18150e --- /dev/null +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/gylxgs/GylxGsBatchImportCommand.java @@ -0,0 +1,17 @@ +package com.connor.chint.sap2.gylxgs; + +import com.connor.chint.sap2.KCommand; +import com.teamcenter.rac.aif.AbstractAIFApplication; + +/** + * 빤·빤ʱ + * + */ +public class GylxGsBatchImportCommand extends KCommand { + + public GylxGsBatchImportCommand(AbstractAIFApplication app, String commandId, String actionInfo) { + super(app, commandId, actionInfo); + this.setRunnable(new GylxGsBatchImportDialog(app)); + } + +} diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/gylxgs/GylxGsBatchImportDialog.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/gylxgs/GylxGsBatchImportDialog.java new file mode 100644 index 0000000..07293c4 --- /dev/null +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/gylxgs/GylxGsBatchImportDialog.java @@ -0,0 +1,628 @@ +package com.connor.chint.sap2.gylxgs; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.Transferable; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JFileChooser; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JTextField; +import javax.swing.TransferHandler; +import javax.swing.filechooser.FileSystemView; + +import org.apache.poi.hssf.usermodel.HSSFDateUtil; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellValue; +import org.apache.poi.ss.usermodel.DateUtil; +import org.apache.poi.ss.usermodel.FormulaEvaluator; +import org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator; +import org.apache.poi.xssf.usermodel.XSSFRow; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +import com.chint.plm.common.context.AppContext; +import com.chint.plm.common.util.LoggerUtils; +import com.chint.plm.common.util.tc.TCMEProcessUtils; +import com.connor.chint.sap2.util.KUtil; +import com.connor.chint.sap2.util.ProgressReporter; +import com.teamcenter.rac.aif.AbstractAIFApplication; +import com.teamcenter.rac.aif.AbstractAIFDialog; +import com.teamcenter.rac.aif.kernel.AIFComponentContext; +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.TCComponentContextList; +import com.teamcenter.rac.kernel.TCComponentItem; +import com.teamcenter.rac.kernel.TCComponentItemRevision; +import com.teamcenter.rac.kernel.TCComponentMEProcessRevision; +import com.teamcenter.rac.kernel.TCComponentUser; +import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.util.MessageBox; +import com.teamcenter.rac.util.PropertyLayout; +import com.teamcenter.rac.util.Registry; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; + +/** + * 빤·빤ʱ + * + */ +public class GylxGsBatchImportDialog extends AbstractAIFDialog { + + /** + * + */ + private static final long serialVersionUID = 1L; + + private JButton fileBtn; // ļ· + private JButton importBtn; // + private JButton cancelBtn; // ȡ + private JTextField filePath; // ļѡ + private JFileChooser jfc = new JFileChooser(); + + private String path; + private AbstractAIFApplication app; + private TCSession session; + private Registry registry; + private ProgressReporter report; + + private String registryParam = "GylxGs.GENERAL.PATH"; + + public GylxGsBatchImportDialog(AbstractAIFApplication app) { + super(false); + this.app = app; + this.session = (TCSession) this.app.getSession(); + registry = Registry.getRegistry(this); + } + + @Override + public void run() { + try { + // String userId = AppContext.getUserId(); + // String userName = session.getUser().getProperty("user_name"); + TCComponentUser user = session.getUser(); + String user_object_string = user.getTCProperty("object_string").getStringValue(); + // TCComponentGroup group = session.getCurrentGroup(); + String group_object_string = AppContext.getCurrentGroupValue("object_string"); + Object[] options = {"", ""}; + int res = JOptionPane.showOptionDialog(this, "ǰûΪ " + user_object_string + " - " + group_object_string + "Ƿ", "ѯ",JOptionPane.YES_OPTION, + JOptionPane.QUESTION_MESSAGE, null, options, options[0]); + if (res == 0) { + return; + } + } catch (TCException e) { + e.printStackTrace(); + MessageBox.post(e.getMessage(), "", MessageBox.ERROR); + } + initUI(); + report = new ProgressReporter(); + addListren(); + showDialog(); + } + + private void initUI() { + setTitle("·빤ʱ"); + setPreferredSize(new Dimension(700, 300)); + setMinimumSize(new Dimension(600, 200)); + setLayout(new BorderLayout()); + JPanel panel = new JPanel(new PropertyLayout()); + this.fileBtn = new JButton("λ"); + this.filePath = new JTextField(30); + String path = registry.getString(registryParam); + if (KUtil.isEmpty(path)) { + System.out.println("Ĭ·Ϊ"); + File desktopDir = FileSystemView.getFileSystemView().getHomeDirectory(); + String desktopPath = desktopDir.getAbsolutePath(); + path = desktopPath; + } else { + File file = new File(path); + if (!file.exists() || !file.isDirectory()) { + File desktopDir = FileSystemView.getFileSystemView().getHomeDirectory(); + String desktopPath = desktopDir.getAbsolutePath(); + path = desktopPath; + } + } + jfc.setCurrentDirectory(new File(path)); + filePath.setText(""); + filePath.setEditable(false); + panel.add("1.1.left.top", new JLabel("ģļ:")); + panel.add("1.2.left.top", filePath); + panel.add("1.3.left.top", fileBtn); + add("Center", panel); + importBtn = new JButton(""); + cancelBtn = new JButton("ȡ"); + JPanel panel2 = new JPanel(new FlowLayout(1, 10, 10)); + importBtn.setEnabled(true); + panel2.add(this.importBtn); + panel2.add(this.cancelBtn); + add("South", panel2); + } + + private void addListren() { + + filePath.setTransferHandler(new TransferHandler() { + private static final long serialVersionUID = 1L; + + @Override + public boolean importData(JComponent comp, Transferable t) { + + try { + Object o = t.getTransferData(DataFlavor.javaFileListFlavor); + + String filepath = o.toString(); + if (filepath.startsWith("[")) { + filepath = filepath.substring(1); + } + if (filepath.endsWith("]")) { + filepath = filepath.substring(0, filepath.length() - 1); + } + if (filepath.endsWith(".xlsx") || filepath.endsWith(".XLSX")) { + + } else { + return false; + } + + filePath.setText(filepath); + final File file = new File(filepath); + if (file.exists() && file.isFile()) { + new Thread(new Runnable() { + @Override + public void run() { + Registry.setString(registryParam, file.getParent()); + + + } + }).start(); + } + + return true; + } catch (Exception e) { + e.printStackTrace(); + } + return false; + } + + @Override + public boolean canImport(JComponent comp, DataFlavor[] flavors) { + for (int i = 0; i < flavors.length; i++) { + if (DataFlavor.javaFileListFlavor.equals(flavors[i])) { + return true; + } + } + return false; + } + }); + + this.fileBtn.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + new Thread(new Runnable() { + @Override + public void run() { + jfc.showOpenDialog(GylxGsBatchImportDialog.this); + File file = jfc.getSelectedFile(); + if (file != null) { + System.out.println("->" + file.getAbsolutePath()); + filePath.setText(file.getAbsolutePath()); + Registry.setString(registryParam, file.getParent()); + } + } + }).start(); + + } + }); + this.importBtn.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + new Thread(new Runnable() { + @Override + public void run() { + onBoImport(); + } + }).start(); + } + }); + this.cancelBtn.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + disposeDialog(); + } + }); + } + + private void onBoImport() { + try { + StringBuilder message = new StringBuilder(); + path = filePath.getText(); + if (StrUtil.isNotBlank(path)) { + report.setRequestCanceling(false); + fileBtn.setEnabled(false); + importBtn.setEnabled(false); + cancelBtn.setEnabled(false); + List beanList = readExcelWithXlsx(path, report, message); + if (message.length() == 0) { + Map> beanListMap = getGylxGsBatchBeanListMap(beanList); + KUtil.setByPass(true); + hanGylxGsBatchImport(beanListMap, message); + KUtil.setByPass(false); + if (message.length() == 0) { + MessageBox.post("ɹ", "", MessageBox.INFORMATION); + disposeDialog(); + } else { + MessageBox.post("ʧܣ\r\n" + message.toString(), "", MessageBox.INFORMATION); + } + } else { + MessageBox.post("ʧܣ\r\n" + message.toString(), "", MessageBox.INFORMATION); + } + } else { + MessageBox.post("ѡļ", "", MessageBox.INFORMATION); + } + + } catch (Exception e) { + MessageBox.post("쳣\r\n" + e.getMessage(), "", MessageBox.INFORMATION); + e.printStackTrace(); + } finally { + report.requestCanceling(); + fileBtn.setEnabled(true); + importBtn.setEnabled(true); + cancelBtn.setEnabled(true); + } + } + + private List readExcelWithXlsx(String path, ProgressReporter reporter, StringBuilder message) throws Exception { + List beanList = new ArrayList<>(); + InputStream fis = null; + try { + fis = new FileInputStream(path); + new Thread(reporter).start(); + // book + XSSFWorkbook workbook = new XSSFWorkbook(fis); + FormulaEvaluator formulaEvaluator = new XSSFFormulaEvaluator(workbook); + // sheet + XSSFSheet sheet = workbook.getSheetAt(0); + // maxRow + int max = sheet.getLastRowNum(); + LoggerUtils.debug("" +max); + report.setTaskRange(0, max); + reporter.reportProgressMessage("ʼȡ..."); + for (int i = 1; i <= max; i++) { + XSSFRow row = sheet.getRow(i); + if (sheet.getRow(i) == null) { + continue; + } + // Thread.sleep(100); + LoggerUtils.debug("ܶȡ" + max + " Уڶȡ " + (i+1) + " "); + reporter.reportProgressMessage("ܶȡ" + max + " Уڶȡ " + (i+1) + " "); + reporter.setProgressPercent(i); + // ͼ + Cell cellTydh = row.getCell(1); + Cell cellGyh = row.getCell(4); + Cell cellGxh = row.getCell(5); + Cell cellRgTime = row.getCell(9); + Cell cellJqTime = row.getCell(10); + Cell cellZbTime = row.getCell(11); + // ȡֵ + String tydh = getStringCellValue(cellTydh); + String gyh = getStringCellValue(cellGyh); + String gxh = getStringCellValue(cellGxh); + Double rgTime = getDoubleCellValue(cellRgTime, formulaEvaluator); + Double jqTime = getDoubleCellValue(cellJqTime, formulaEvaluator); + Double zbTime = getDoubleCellValue(cellZbTime, formulaEvaluator); + if (!StrUtil.isAllNotBlank(tydh, gyh, gxh)) { + message.append("" + i + "УͼšպŻŲΪգ\r\n"); + } + if (rgTime== null || jqTime == null || zbTime == null) { + message.append("" + i + "У˹ʱ䡢ʱ׼ʱ䲻Ϊգ\r\n"); + } + // ֵ + GylxGsBatchImportBean bean = new GylxGsBatchImportBean(); + bean.setTydh(tydh); + bean.setGyh(gyh); + bean.setGxh(gxh); + bean.setRgTime(rgTime); + bean.setJqTime(jqTime); + bean.setZbTime(zbTime); + beanList.add(bean); + } + } catch (Exception e) { + e.printStackTrace(); + throw new Exception("Excel쳣" + e.getMessage(), e); + } finally { + if (fis!=null) { + fis.close(); + } + } + return beanList; + } + + private String getStringCellValue(Cell cell) { + String cellValue = ""; + if (cell == null) { + return cellValue; + } + if (Cell.CELL_TYPE_NUMERIC == cell.getCellType()) { + /** *//** excel,Ҳ,ڴҪж */ + if (HSSFDateUtil.isCellDateFormatted(cell)) { + cellValue = String.valueOf(DateUtil.getExcelDate(cell.getDateCellValue())); + } else { + cellValue = getRightStr(cell.getNumericCellValue() + ""); + } + } else if (Cell.CELL_TYPE_STRING == cell.getCellType()) { + /** *//** ַ */ + cellValue = cell.getStringCellValue(); + } + return cellValue; + } + + private String getRightStr(String sNum) { + DecimalFormat decimalFormat = new DecimalFormat("#.000000"); + String resultStr = decimalFormat.format(new Double(sNum)); + if (resultStr.matches("^[-+]?\\d+\\.[0]+$")) { + resultStr = resultStr.substring(0, resultStr.indexOf(".")); + } + return resultStr; + } + + private Double getDoubleCellValue(Cell cell, FormulaEvaluator formulaEvaluator) { + if (cell == null) { + return null; + } + String value = ""; + if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) { + return cell.getNumericCellValue(); + } else if (cell.getCellType() == Cell.CELL_TYPE_STRING) { + value = getStringCellValue(cell); + } else if (cell.getCellType() == Cell.CELL_TYPE_FORMULA) { + // String cellFormula = cell.getCellFormula(); + // LoggerUtils.debug("ִйʽ" + cellFormula); + CellValue evaluate = formulaEvaluator.evaluate(cell); + value = evaluate.formatAsString(); + } + try { + return Double.valueOf(value); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("ָʽ쳣<" + value + ">"); + } + } + + private Map> getGylxGsBatchBeanListMap(List beanList) { + Map> beanListMap = new LinkedHashMap>(); + for (GylxGsBatchImportBean bean : beanList) { + String key = bean.getTydh(); + List value = beanListMap.get(key); + if (value == null) { + value = new ArrayList(); + } + value.add(bean); + beanListMap.put(bean.getTydh(), value); + } + return beanListMap; + } + + private void hanGylxGsBatchImport(Map> beanListMap, StringBuilder error) { + if (MapUtil.isNotEmpty(beanListMap)) { + new Thread(report).start(); + LoggerUtils.debug("" + beanListMap.size()); + report.setTaskRange(0, beanListMap.size()); + report.reportProgressMessage("ʼ..."); + int c = 1; + for (Map.Entry> entry : beanListMap.entrySet()) { + String key = entry.getKey(); + String gyh = entry.getValue().get(0).getGyh(); + List value = entry.getValue(); + LoggerUtils.debug("ͼ: " + key + " : " + value.size()); + LoggerUtils.debug("ܴ" + beanListMap.size() + " Уڴ " + c + " " + " ͼ: " + key); + report.reportProgressMessage("ܴ" + beanListMap.size() + " Уڴ " + c + " " + " ͼ: " + key); + report.setProgressPercent(c); + c++; + Map queryCondition = new HashMap<>(); + queryCondition.put("ID", key); + try { + // ѯͼֽģ + TCComponentContextList contextList = KUtil.query(session, "chint_query_item", queryCondition); + if (contextList != null && contextList.getListCount() > 0) { + int count = contextList.getListCount(); + if (count == 1) { + TCComponent comp = (TCComponent) contextList.get(0).getComponent(); + // ͼֽģͰ汾 + TCComponentItemRevision itemRevision = null; + if (comp instanceof TCComponentItem) { + TCComponentItem item = (TCComponentItem) comp; + itemRevision = item.getLatestItemRevision(); + } else if (comp instanceof TCComponentItemRevision) { + itemRevision = (TCComponentItemRevision) comp; + } + if (itemRevision != null) { + // ȡĹ + AIFComponentContext[] processRevisionContext = TCMEProcessUtils.get(itemRevision); + if (processRevisionContext.length > 0) { + // һ + if (processRevisionContext.length == 1) { + TCComponentBOMWindowType bomWinType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow"); + TCComponentBOMWindow win = bomWinType.create(null); + // Ƿͬ + boolean isSame = true; + List meopBomLineList = new ArrayList<>(); + TCComponentItemRevision processComp = (TCComponentItemRevision) processRevisionContext[0].getComponent(); + if (processComp instanceof TCComponentMEProcessRevision) { + // հ汾 + TCComponentMEProcessRevision processRevision = (TCComponentMEProcessRevision) processComp; + win.lock(); + win.setWindowTopLine(processRevision.getItem(), processRevision, null, null); + TCComponentBOMLine line = win.getTopBOMLine(); + AIFComponentContext[] lineChild = line.getChildren(); + if (lineChild!=null && lineChild.length > 0) { + if (lineChild.length == value.size()) { + for (int i = 0; i < lineChild.length; i++) { + GylxGsBatchImportBean bean = value.get(i); + AIFComponentContext childrenContext = lineChild[i]; + TCComponentBOMLine bomLineChild = (TCComponentBOMLine) childrenContext.getComponent(); + // + String zt2_ClassificationCode = bomLineChild.getProperty("zt2_ClassificationCode"); + // LoggerUtils.debug("source: " + bean.getGxh()); + // LoggerUtils.debug("target: " + zt2_ClassificationCode); + if (bean.getGxh().equals(zt2_ClassificationCode)) { + meopBomLineList.add(bomLineChild); + } else { + // 벻һ + isSame = false; + } + } + } else { + // һ + isSame = false; + } + } + } + if (isSame) { + LoggerUtils.debug("ҵĹգͬ ֻ¹汾Ĺʱ"); + // ͬ ֻ¹汾Ĺʱ + for (int i = 0; i < meopBomLineList.size(); i++) { + GylxGsBatchImportBean bean = value.get(i); + TCComponentBOMLine line = meopBomLineList.get(i); + line.lock(); + line.setProperty("zt2_ArtificialTime", String.format("%.2f", bean.getRgTime())); + line.setProperty("zt2_MachineTime", String.format("%.2f", bean.getJqTime())); + line.setProperty("zt2_ReadinessTime", String.format("%.2f", bean.getZbTime())); + line.save(); + line.unlock(); + line.refresh(); + } + win.save(); + win.refresh(); + win.close(); + } else { + LoggerUtils.debug("ҵĹգͬ"); + // ͬ + // һùϵ + TCMEProcessUtils.del((TCComponentItemRevision) processComp, itemRevision); + // ڶ¹ + TCComponentItemRevision newItemRevision = createGyItemRevision(gyh, value); + LoggerUtils.debug("¹: " + newItemRevision); + // 󶨹ϵ + TCMEProcessUtils.add(newItemRevision, itemRevision); + } + } else { + // ж + throw new Exception("ͨ ID = " + key + " ѯ"); + } + } else { + LoggerUtils.debug("ûҵĹ"); + // һûҵĹգý + // ڶ¹ + TCComponentItemRevision newItemRevision = createGyItemRevision(gyh, value); + LoggerUtils.debug("¹: " + newItemRevision); + // 󶨹ϵ + TCMEProcessUtils.add(newItemRevision, itemRevision); + } + } + } else if (count > 1) { + throw new Exception("ͨ ID = " + key + " ѯ"); + } + } else { + error.append("Ҳͼţ" + key); + } + } catch (Exception e) { + e.printStackTrace(); + error.append(e.getMessage()); + } + } + } + } + + private TCComponentItemRevision createGyItemRevision(String gyh, List value) throws Exception { + TCComponentItemRevision gyhCompRevision = null; + TCComponentBOMWindowType bomWinType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow"); + TCComponentBOMWindow win = bomWinType.create(null); + LoggerUtils.debug("ѯպ: " + gyh); + Map gyhQueryCondition = new HashMap<>(); + gyhQueryCondition.put("ID", gyh); + TCComponentContextList contextList = KUtil.query(session, "chint_query_item", gyhQueryCondition); + if (contextList != null && contextList.getListCount() > 0) { + int gyhCount = contextList.getListCount(); + if (gyhCount == 1) { + TCComponentMEProcessRevision templateCompRevision = (TCComponentMEProcessRevision) contextList.get(0).getComponent(); + LoggerUtils.debug("ҵպ: " + templateCompRevision); + boolean isMatch = true; + win.lock(); + win.setWindowTopLine(templateCompRevision.getItem(), templateCompRevision, null, null); + TCComponentBOMLine line = win.getTopBOMLine(); + AIFComponentContext[] lineChild = line.getChildren(); + if (lineChild!=null && lineChild.length > 0) { + if (lineChild.length == value.size()) { + for (int i = 0; i < lineChild.length; i++) { + GylxGsBatchImportBean bean = value.get(i); + AIFComponentContext childrenContext = lineChild[i]; + TCComponentBOMLine bomLineChild = (TCComponentBOMLine) childrenContext.getComponent(); + // + String zt2_ClassificationCode = bomLineChild.getProperty("zt2_ClassificationCode"); + // LoggerUtils.debug("source: " + bean.getGxh()); + // LoggerUtils.debug("target: " + zt2_ClassificationCode); + if (!bean.getGxh().equals(zt2_ClassificationCode)) { + // 벻һ + isMatch = false; + } + } + } else { + // һ + isMatch = false; + } + } + if (isMatch) { + // ͨģ崴µĹպ + gyhCompRevision = KUtil.createNewProcessFromTemplate(session, templateCompRevision); + win.lock(); + win.setWindowTopLine(gyhCompRevision.getItem(), gyhCompRevision, null, null); + line = win.getTopBOMLine(); + lineChild = line.getChildren(); + if (lineChild!=null && lineChild.length > 0) { + if (lineChild.length == value.size()) { + if (lineChild.length == value.size()) { + for (int i = 0; i < lineChild.length; i++) { + GylxGsBatchImportBean bean = value.get(i); + AIFComponentContext childrenContext = lineChild[i]; + line = (TCComponentBOMLine) childrenContext.getComponent(); + line.lock(); + line.setProperty("zt2_ArtificialTime", String.format("%.2f", bean.getRgTime())); + line.setProperty("zt2_MachineTime", String.format("%.2f", bean.getJqTime())); + line.setProperty("zt2_ReadinessTime", String.format("%.2f", bean.getZbTime())); + line.save(); + line.unlock(); + line.refresh(); + } + } + } + } + win.save(); + win.refresh(); + win.close(); + } else { + throw new Exception("빤ģ幤յĹƥ䣺" + gyh); + } + } + } + return gyhCompRevision; + } + +} diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/material_m/WLQGSAPOperation.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/material_m/WLQGSAPOperation.java index 3d388aa..e0a317c 100644 --- a/com.connor.chint.sap2/src/com/connor/chint/sap2/material_m/WLQGSAPOperation.java +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/material_m/WLQGSAPOperation.java @@ -148,31 +148,67 @@ public class WLQGSAPOperation extends AbstractAIFOperation { } } }else { - TCComponent[] products = ((TCComponent) target).getRelatedComponents("ZT2_Product"); - TXTUtil.writeTXT(txtPath, "[" + products.length+ "]"); - if(products.length==0) { - MessageBox.post("ǰǰ빺BOM/BOMδƷ", "", MessageBox.WARNING); + //TODO lidy20240617 + TCComponentItem item = ((TCComponentItemRevision)target).getItem(); +// AIFComponentContext[] parents = item.whereReferencedByTypeRelation(null, null);//new String[] { "contents" } +// System.out.println("item:" + item + " >> " + Arrays.toString(parents)); + TCComponent folder12 = SAPUtil.getParent(item, null, "1-"); + if(folder12 == null) { + folder12 = SAPUtil.getParent(item, null, "2-ͼ"); } - List cParts = new ArrayList(); -// Map> items2 = new HashMap>(); - for(TCComponent product:products) { - if(product instanceof TCComponentItem) { - TCComponentItem productRev = (TCComponentItem) product; - cParts.add(productRev.getLatestItemRevision()); - } + System.out.println("folder12:" + folder12); + if(folder12 != null) { + TCComponent folder0 = SAPUtil.getParent(folder12, null, "Ŀִ"); + if(folder0 != null) { + for(AIFComponentContext f : folder0.getChildren()) { + TCComponent folder = (TCComponent) f.getComponent(); + System.out.println("folder:" + folder); + if(folder.getProperty("object_name").equals("13-װͼֽ")) { + AIFComponentContext[] zzs = folder.getChildren(); + if(zzs != null && zzs.length > 0) { + TCComponentItem zzRev = (TCComponentItem)zzs[0].getComponent(); + String sap_state = zzRev.getProperty("zt2_kjbomstate");//zt2_SapState + TXTUtil.writeTXT(txtPath, "װͼ[" + zzRev + "]SAP״̬:[" + sap_state + "]"); + if (sap_state.equals("Ѵ")) { + errMess.append("ǰĿBOMѴ\n");//BOMѴݣִǰɹ + }else + System.out.println("zt2_kjbomstate:" + sap_state); + }else + System.out.println("zzs == null"); + break; + } + } + }else + System.out.println("folder0 == null"); } -// System.out.println("items2===>"+items2.toString()); -// addLastRevisions(items2, cParts); - for(TCComponentItemRevision cPart:cParts) { - TXTUtil.writeTXT(txtPath, "[" + cPart + "]"); - TCComponentItemRevision partRev = cPart; - recurBomline(bomline, null, partRev); - if (KUtil.isEmpty(zt2_WBSNo)) { - zt2_WBSNo = partRev.getProperty("zt2_WBSNo"); + if(errMess.length() == 0) { + TCComponent[] products = ((TCComponent) target).getRelatedComponents("ZT2_Product"); + TXTUtil.writeTXT(txtPath, "[" + products.length+ "]"); + if(products.length==0) { + MessageBox.post("ǰǰ빺BOM/BOMδƷ", "", MessageBox.WARNING); } - if (!parts.contains(partRev)) { - parts.add(partRev); + List cParts = new ArrayList(); +// Map> items2 = new HashMap>(); + for(TCComponent product:products) { + if(product instanceof TCComponentItem) { + TCComponentItem productRev = (TCComponentItem) product; + cParts.add(productRev.getLatestItemRevision()); + } + } +// System.out.println("items2===>"+items2.toString()); + +// addLastRevisions(items2, cParts); + for(TCComponentItemRevision cPart:cParts) { + TXTUtil.writeTXT(txtPath, "[" + cPart + "]"); + TCComponentItemRevision partRev = cPart; + recurBomline(bomline, null, partRev); + if (KUtil.isEmpty(zt2_WBSNo)) { + zt2_WBSNo = partRev.getProperty("zt2_WBSNo"); + } + if (!parts.contains(partRev)) { + parts.add(partRev); + } } } } diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/material_query/SearchMaterialDialog.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/material_query/SearchMaterialDialog.java index 74a563a..fd5fa9e 100644 --- a/com.connor.chint.sap2/src/com/connor/chint/sap2/material_query/SearchMaterialDialog.java +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/material_query/SearchMaterialDialog.java @@ -122,15 +122,15 @@ public class SearchMaterialDialog extends AbstractAIFDialog { this.b_search.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { + ProgressBar pb = new ProgressBar(SearchMaterialDialog.this, new Dimension(250, 50)); + pb.startProgress(); + pb.setText("ϲѯ..."); SwingUtilities.invokeLater(new Runnable() { @Override public void run() { setCompEnabled(false); - ProgressBar pb = new ProgressBar(SearchMaterialDialog.this, new Dimension(250, 50)); try { getGroupID(session); - pb.startProgress(); - pb.setText("ϲѯ..."); stopEd(); controller.doSearch(); pb.disposeDialog(); diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/materialno/MaterialNoDialog.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/materialno/MaterialNoDialog.java index e4219f1..36a172e 100644 --- a/com.connor.chint.sap2/src/com/connor/chint/sap2/materialno/MaterialNoDialog.java +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/materialno/MaterialNoDialog.java @@ -14,10 +14,12 @@ import java.io.IOException; import java.io.InputStream; import java.rmi.RemoteException; import java.sql.Connection; -import java.sql.SQLException; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.Date; @@ -27,7 +29,6 @@ import java.util.Map; import java.util.Vector; import javax.swing.BorderFactory; -import javax.swing.Box; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JCheckBox; @@ -61,8 +62,6 @@ import com.teamcenter.rac.aif.AIFPortal; import com.teamcenter.rac.aif.AIFTransferable; import com.teamcenter.rac.aif.AbstractAIFApplication; import com.teamcenter.rac.aif.AbstractAIFDialog; -import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; -import com.teamcenter.rac.aifrcp.AIFUtility; import com.teamcenter.rac.kernel.ListOfValuesInfo; import com.teamcenter.rac.kernel.TCComponent; import com.teamcenter.rac.kernel.TCComponentBOMLine; @@ -81,27 +80,22 @@ import com.teamcenter.rac.kernel.TCSession; import com.teamcenter.rac.util.MessageBox; import com.teamcenter.rac.util.PropertyLayout; import com.teamcenter.schemas.soa._2006_03.exceptions.ServiceException; -import com.teamcenter.services.rac.core.DataManagementService; -import com.teamcenter.services.rac.core._2008_06.DataManagement.CreateIn; -import com.teamcenter.services.rac.core._2008_06.DataManagement.CreateInput; -import com.teamcenter.services.rac.core._2008_06.DataManagement.CreateOut; import nc.itf.chintwebservices.msg.ISendMsgServices.ISendMsgServices; import nc.itf.chintwebservices.msg.ISendMsgServices.ISendMsgServicesLocator; import nc.itf.chintwebservices.msg.ISendMsgServices.ISendMsgServicesPortType; import net.sf.json.JSONArray; import net.sf.json.JSONObject; -import oracle.net.aso.j; @SuppressWarnings("serial") public class MaterialNoDialog extends AbstractAIFDialog { private MaterialNoDialogController controller; - private JTextField tf_JLDW; - private JTextField tf_XMBH; - private JTextField tf_CCPBM; +// private JTextField tf_JLDW; +// private JTextField tf_XMBH; +// private JTextField tf_CCPBM; private JButton b_send; // - private JButton b_JLDW; +// private JButton b_JLDW; private JButton b_clean; // @@ -125,7 +119,7 @@ public class MaterialNoDialog extends AbstractAIFDialog { private static String not_folders[] = { "User_Inbox", "TaskInbox", "TasksToPerform", "TasksToTrack" }; protected List l_prds = new ArrayList(); String now; - private static String MATERIAL_TYPE = "Part"; +// private static String MATERIAL_TYPE = "Part"; private AbstractAIFApplication app; private JComboBox jcom; private TCComponent target = null; @@ -138,7 +132,7 @@ public class MaterialNoDialog extends AbstractAIFDialog { protected JTable f_code; private JButton f_add; private JButton f_remove; - private JComboBox f_jcom; +// private JComboBox f_jcom; protected JComboBox j_Source; // ⹺ protected JComboBox j_Group; private JComboBox j_auxUnit; // λ @@ -211,7 +205,7 @@ public class MaterialNoDialog extends AbstractAIFDialog { datas.add(data); obj.element("Data", datas); System.out.println("obj:" + obj.toString()); - String url = "http://10.128.10.50:9002/Post/PLM_Goods"; +// String url = "http://10.128.10.50:9002/Post/PLM_Goods"; // String req = HttpUtil.sendJsonHttpPost(url, obj.toString()); // System.out.println("req:"+req); // MessageBox.post("ѷʾ:"+req, "", MessageBox.INFORMATION); @@ -413,7 +407,7 @@ public class MaterialNoDialog extends AbstractAIFDialog { } String j_q = j_UnitQty.getText(); String j_f = j_AssistUnitQty.getText(); - String u_q = (String) jcom.getSelectedItem(); +// String u_q = (String) jcom.getSelectedItem(); String u_f = (String) j_auxUnit.getSelectedItem(); double d_unitQty = 0; double d_assistUnitQty = 0; @@ -511,7 +505,7 @@ public class MaterialNoDialog extends AbstractAIFDialog { @Override public void actionPerformed(ActionEvent e) { - // TODO Auto-generated method stub + // Auto-generated method stub KUtil.stopTableEditing(t_code); KUtil.stopTableEditing(f_code); int count = t_code.getRowCount(); @@ -539,7 +533,7 @@ public class MaterialNoDialog extends AbstractAIFDialog { @Override public void actionPerformed(ActionEvent e) { - // TODO Auto-generated method stub + // Auto-generated method stub KUtil.stopTableEditing(t_code); KUtil.stopTableEditing(f_code); int count = f_code.getRowCount(); @@ -565,7 +559,7 @@ public class MaterialNoDialog extends AbstractAIFDialog { @Override public void actionPerformed(ActionEvent e) { - // TODO Auto-generated method stub + // Auto-generated method stub try { KUtil.stopTableEditing(t_code); KUtil.stopTableEditing(f_code); @@ -644,7 +638,7 @@ public class MaterialNoDialog extends AbstractAIFDialog { } System.out.println("룺" + len); JSONObject feature = new JSONObject(); - JSONObject teRes = new JSONObject(); +// JSONObject teRes = new JSONObject(); String goodsName = ""; String bpNo = ""; // DZ String spec = ""; // DZ @@ -789,16 +783,16 @@ public class MaterialNoDialog extends AbstractAIFDialog { System.out.println("ݽӿڷ"); String req = HttpUtil.sendJsonHttpPost(url, obj.toString()); System.out.println(""); - String sql2 = "delete from chint_material where \"Code\"=?"; +// String sql2 = "delete from chint_material where \"Code\"=?"; String state1 = "\"State\":\"1\""; - String state2 = "\"State\":\"-1\""; +// String state2 = "\"State\":\"-1\""; TXTUtil.writeTXT(txtPath, "Json:" + obj.toString()); TXTUtil.writeTXT(txtPath, "ؽ:" + req); // if(true) if (req.indexOf(state1) != -1) { System.out.println("¼¼"); - TCComponentItemRevision partRev = null; +// TCComponentItemRevision partRev = null; System.out.println("ʼ"); TCComponentItemRevision rev = createMaterial(goodsName, unitCode, companyCode, spec, teRe, uom, t_pmcp.getCode()); @@ -821,8 +815,11 @@ public class MaterialNoDialog extends AbstractAIFDialog { params[12] = time; params[13] = condition; params[14] = ""; - System.out.println("ִеsql:" + sql); + //TODO + checkData(params[0], params[1]); + System.out.println("ִеsql:" + sql + "\n" + Arrays.toString(params)); SqlUtil.write(sql, params); + checkData(params[0], params[1]); newStuff.add("contents", rev.getItem()); if (!KUtil.isEmpty(design_ID)) { Map field = new HashMap<>(); @@ -840,13 +837,13 @@ public class MaterialNoDialog extends AbstractAIFDialog { @Override public int compare(TCComponent o1, TCComponent o2) { - // TODO Auto-generated method stub + // Auto-generated method stub try { String object_string1 = o1.getProperty("object_string"); String object_string2 = o2.getProperty("object_string"); return object_string1.compareTo(object_string2); } catch (TCException e) { - // TODO Auto-generated catch block + // Auto-generated catch block e.printStackTrace(); } return 0; @@ -874,7 +871,7 @@ public class MaterialNoDialog extends AbstractAIFDialog { } } catch (TCException e) { - // TODO Auto-generated catch block + // Auto-generated catch block e.printStackTrace(); } @@ -968,9 +965,9 @@ public class MaterialNoDialog extends AbstractAIFDialog { } System.out.println("룺" + len); JSONObject feature = new JSONObject(); - JSONObject teRes = new JSONObject(); +// JSONObject teRes = new JSONObject(); JSONObject feature2 = new JSONObject(); - JSONObject teRes2 = new JSONObject(); +// JSONObject teRes2 = new JSONObject(); String goodsName = ""; String bpNo = ""; // DZ @@ -1115,8 +1112,8 @@ public class MaterialNoDialog extends AbstractAIFDialog { // companyCode= groupName=="ѹҵ"?"M005":companyCode; // companyCode= groupName=="ѹ豸ҵ"?"M008":companyCode; String state = ""; // ʱΪ - String wbs = ""; - String product = ""; +// String wbs = ""; +// String product = ""; String user = userID; String time = now; String condition = "";// Ĭ @@ -1169,16 +1166,16 @@ public class MaterialNoDialog extends AbstractAIFDialog { System.out.println("ݽӿڷ"); String req = HttpUtil.sendJsonHttpPost(url, obj.toString()); System.out.println(""); - String sql2 = "delete from chint_material where \"Code\"=?"; +// String sql2 = "delete from chint_material where \"Code\"=?"; String state1 = "\"State\":\"1\""; - String state2 = "\"State\":\"-1\""; +// String state2 = "\"State\":\"-1\""; TCComponentItemRevision parent = null; TCComponentItemRevision child = null; TXTUtil.writeTXT(txtPath, "Json:" + obj.toString()); TXTUtil.writeTXT(txtPath, "ؽ:" + req); if (req.indexOf(state1) != -1) { System.out.println("¼¼"); - TCComponentItemRevision partRev = null; +// TCComponentItemRevision partRev = null; System.out.println("ʼ"); parent = createMaterial(goodsName, unitCode, companyCode, spec, teRe, uom, t_pmcp.getCode()); newStuff.add("contents", parent.getItem()); @@ -1247,7 +1244,7 @@ public class MaterialNoDialog extends AbstractAIFDialog { System.out.println(""); if (req.indexOf(state1) != -1) { System.out.println("¼¼"); - TCComponentItemRevision partRev = null; +// TCComponentItemRevision partRev = null; System.out.println("ʼ"); child = createMaterial(goodsName, unitCode, companyCode, spec, teRe2, uom, t_pmcp.getCode()); newStuff.add("contents", child.getItem()); @@ -1296,13 +1293,13 @@ public class MaterialNoDialog extends AbstractAIFDialog { @Override public int compare(TCComponent o1, TCComponent o2) { - // TODO Auto-generated method stub + // Auto-generated method stub try { String object_string1 = o1.getProperty("object_string"); String object_string2 = o2.getProperty("object_string"); return object_string1.compareTo(object_string2); } catch (TCException e) { - // TODO Auto-generated catch block + // Auto-generated catch block e.printStackTrace(); } return 0; @@ -1330,7 +1327,7 @@ public class MaterialNoDialog extends AbstractAIFDialog { } } catch (TCException e) { - // TODO Auto-generated catch block + // Auto-generated catch block e.printStackTrace(); } @@ -1405,6 +1402,7 @@ public class MaterialNoDialog extends AbstractAIFDialog { } // TXTUtil.writeTXT(logPath, "AMϢͽ"); } + @SuppressWarnings("deprecation") private void createBOM(TCComponentItemRevision parent, TCComponentItemRevision child) throws Exception { if (parent == null || child == null) { return; @@ -1601,7 +1599,7 @@ public class MaterialNoDialog extends AbstractAIFDialog { try { listOfValues = unitLov.getListOfValues(); } catch (TCException e) { - // TODO Auto-generated catch block + // Auto-generated catch block e.printStackTrace(); } String[] realval = listOfValues.getStringListOfValues(); @@ -1760,7 +1758,7 @@ public class MaterialNoDialog extends AbstractAIFDialog { // jsp.setPreferredSize(new Dimension(1300, 120)); return panel; } - + /* private JPanel getBtnSouth() { JPanel panel = new JPanel(new GridLayout(1, 5, 5, 5)); try { @@ -1834,7 +1832,7 @@ public class MaterialNoDialog extends AbstractAIFDialog { // panel.add(jcb_blank); } catch (TCException e) { - // TODO Auto-generated catch block + // Auto-generated catch block e.printStackTrace(); } @@ -1895,13 +1893,13 @@ public class MaterialNoDialog extends AbstractAIFDialog { * panel.add(j_Group); panel.add(new JLabel(" ")); panel.add(new * JLabel(":")); panel.add(jcom_material); panel.add(new JLabel(" ")); * panel.add(b_send); panel.add(jcb_isCopy); panel.add(b_clean); - */ + * return panel; } private String createMaterialBySOA(String object_name, String uom_tag, String zt2_Factory, String zt2_Specifications, String current_desc) throws TCException, ServiceException { - String uid = ""; +// String uid = ""; TCComponentItemType itemType = (TCComponentItemType) session.getTypeComponent(MATERIAL_TYPE); String item_id = itemType.getNewID(); System.out.println("item_id:" + item_id); @@ -1948,6 +1946,15 @@ public class MaterialNoDialog extends AbstractAIFDialog { return comp == null ? "" : comp.getUid(); } + private String getGroupID() throws Exception { + TCComponentGroup group = session.getCurrentGroup(); + String groupName = group.getGroupName(); + String name = group.getTCProperty("name").getStringValue(); + System.out.println("ǰID" + groupName); + System.out.println("nameID" + name); + return name; + }*/ + private TCComponentItemRevision createMaterial(String object_name, String uom_tag, String zt2_Factory, String zt2_Specifications, String tere, String uom, String code) throws TCException, ServiceException { @@ -1970,7 +1977,7 @@ public class MaterialNoDialog extends AbstractAIFDialog { rev.setProperty("object_desc", zt2_Specifications); rev.setProperty("zt2_TechRequirements", tere); rev.setProperty("zt2_ClassificationCode", code); - InterfaceAIFComponent comp = AIFUtility.getCurrentApplication().getTargetComponent(); +// InterfaceAIFComponent comp = AIFUtility.getCurrentApplication().getTargetComponent(); // System.out.println("ѡеĶ:"+comp); SAPUtil.changeOwner(rev.getItem(), dcproxy); SAPUtil.changeOwner(rev, dcproxy); @@ -1997,13 +2004,13 @@ public class MaterialNoDialog extends AbstractAIFDialog { } - public void getTargetFolder() throws TCException { + private void getTargetFolder() throws Exception { target = (app.getTargetComponent() == null ? null : (TCComponent) app.getTargetComponent()); if (target == null) { target = session.getUser().getNewStuffFolder(); } else if (target == homeFolder || target == newStuff) { - target = target; +// target = target; } else if (target instanceof TCComponentFolder) { String type = target.getType(); System.out.println("Ŀļtype=[" + type + "]"); @@ -2018,14 +2025,22 @@ public class MaterialNoDialog extends AbstractAIFDialog { */ } - - public String getGroupID() throws TCException { - TCComponentGroup group = session.getCurrentGroup(); - String groupName = group.getGroupName(); - String name = group.getTCProperty("name").getStringValue(); - System.out.println("ǰID" + groupName); - System.out.println("nameID" + name); - return name; + + private void checkData(Object code, Object uid) throws Exception { + String sql = "select * from chint_material where \"Code\"=" + code + " or \"PUID\"='" + uid + "'"; + System.out.println(sql); + ResultSet rs = SqlUtil.read(sql); + ResultSetMetaData metaData = rs.getMetaData(); + int columnCount = metaData.getColumnCount(); + while(rs.next()) { + StringBuilder data = new StringBuilder("checkData:"); + for(int i = 1; i <= columnCount; i++) { + String columnName = metaData.getColumnName(i); // ȡiе + data.append(columnName).append(" = ").append(rs.getObject(i)).append(";"); + } + System.out.println(data); + } + } } diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/proc_byq/CreateProcBYQController.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/proc_byq/CreateProcBYQController.java index 3390eaa..58e2fb8 100644 --- a/com.connor.chint.sap2/src/com/connor/chint/sap2/proc_byq/CreateProcBYQController.java +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/proc_byq/CreateProcBYQController.java @@ -154,7 +154,7 @@ public class CreateProcBYQController { @Override public void run() { - // TODO Auto-generated method stub + // Auto-generated method stub dialog.tree.repaint(); dialog.tree.updateUI(); TreeNode t_node = dialog.topNode.getChildAt(0); @@ -316,7 +316,7 @@ public class CreateProcBYQController { TCComponentBOMLine childLine; BYQBomBean childBomBean; TCComponentItemRevision childRev; - DefaultMutableTreeNode childNode, node; + DefaultMutableTreeNode childNode; ExpandPSData[] expandPSDatas = bomLineTreeNodeSOA.get(topLine.getUid()); @@ -342,7 +342,7 @@ public class CreateProcBYQController { public void expandNode(DefaultMutableTreeNode topNode, TreePath path) throws Exception { BYQBomBean bomBean = (BYQBomBean) topNode.getUserObject(); BYQProcBean procBean = maps_tree_table.get(bomBean); - TCComponentBOMLine topLine = maps_table_line_maps.get(procBean); +// TCComponentBOMLine topLine = maps_table_line_maps.get(procBean); // procBeanList ǰindexСĹ int index = procBeanList.indexOf(procBean); System.out.println("index:" + index); @@ -519,8 +519,8 @@ public class CreateProcBYQController { return proBean; } - private HashMap classCodeMap = new HashMap(); - private HashMap beanMap = new HashMap(); + private HashMap classCodeMap = new HashMap<>(); + private HashMap beanMap = new HashMap<>(); // ȡϢ private BYQProcBean readTemplateYH(TCComponentBOMLine line, BYQBomBean bean, TCComponentItemRevision rev) throws Exception { @@ -535,8 +535,10 @@ public class CreateProcBYQController { TCComponentContextList res; String drawingNo = ""; String zt2_Source = ""; - if(beanMap.containsKey(rev.getUid())) { - BYQProcBean byqProcBean = beanMap.get(rev.getUid()); + TCComponentBOMLine parent = line.parent(); + String uid = (parent == null ? "" : parent.getItemRevision().getUid()) + "@" + rev.getUid(); + if(beanMap.containsKey(uid)) { + BYQProcBean byqProcBean = beanMap.get(uid); BYQProcBean cloneBean = (BYQProcBean) BeanUtils.cloneBean(byqProcBean); maps_table_line_maps.put(cloneBean, line); maps_tree_table.put(bean, cloneBean); @@ -650,8 +652,9 @@ public class CreateProcBYQController { throw new Exception("BOMдڷͼֽ/϶"); } - // ʼԼ + //TODO ʼԼ zt2_ClassificationCode = line.getProperty("ZT2_ClassificationNo"); + System.out.println("zt2_ClassificationCode:" + line + "==>" + zt2_ClassificationCode); if (!KUtil.isEmpty(zt2_ClassificationCode)) { @@ -671,6 +674,7 @@ public class CreateProcBYQController { } } + System.out.println("cp_gx_rev:" + cp_gx_rev); TCComponent meproces = getMeproces(rev.getUid(), session); SqlUtil2.free(); // AIFComponentContext[] refs = rev.whereReferencedByTypeRelation(new String[] { "MEProcessRevision" }, @@ -690,7 +694,7 @@ public class CreateProcBYQController { proBean.setRev_standard(rev_standard); maps_table_line_maps.put(proBean, line); maps_tree_table.put(bean, proBean); - beanMap.put(rev.getUid(), proBean); + beanMap.put(uid, proBean); return proBean; } private Map mepMap = new HashMap(); @@ -720,6 +724,7 @@ public class CreateProcBYQController { return null; } // ֶͶ Ͷǰ˵ֻѡBOMе + @SuppressWarnings("deprecation") public void manualFeeding(int[] rows, TCComponent gx_comp) throws Exception { String item_id = gx_comp.getProperty("item_id"); String object_name = gx_comp.getProperty("object_name"); @@ -790,6 +795,7 @@ public class CreateProcBYQController { } // ޸Ĺ + @SuppressWarnings("unlikely-arg-type") public void updateProcess(ProgressBar pb) throws Exception { int[] sels = dialog.t_part.getSelectedRows(); if (sels != null && sels.length == 1) { @@ -907,6 +913,7 @@ public class CreateProcBYQController { } + @SuppressWarnings("deprecation") private void match(String gyid, TCComponentItemRevision proc, Map> gygxMap, double ndxs) { try { TCComponentBOMWindowType bomWinType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow"); @@ -926,6 +933,7 @@ public class CreateProcBYQController { } } + @SuppressWarnings("deprecation") private void match(String gyid, TCComponentBOMLine line, Map> gygxMap, double ndxs) throws TCException { // String type = line.getItemRevision().getType(); TCComponentType type = line.getItemRevision().getTypeComponent(); diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/proc_byq/CreateProcBYQDialog.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/proc_byq/CreateProcBYQDialog.java index f218f77..516a899 100644 --- a/com.connor.chint.sap2/src/com/connor/chint/sap2/proc_byq/CreateProcBYQDialog.java +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/proc_byq/CreateProcBYQDialog.java @@ -6,17 +6,11 @@ import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; import java.awt.event.WindowEvent; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -30,12 +24,8 @@ import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTable; import javax.swing.JTree; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; import javax.swing.event.TreeExpansionEvent; import javax.swing.event.TreeExpansionListener; -import javax.swing.event.TreeModelEvent; -import javax.swing.event.TreeModelListener; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.table.DefaultTableCellRenderer; @@ -49,7 +39,6 @@ import javax.swing.tree.TreePath; import com.chint.plm.common.pojo.EasyResponse; import com.chint.plm.common.service.WorkhourService; import com.chint.plm.common.util.CollectionUtils; -import com.connor.chint.sap2.StandardBOM.Mytable; import com.connor.chint.sap2.bean.MEProcessBean; import com.connor.chint.sap2.create_proc.CreateProcBean; import com.connor.chint.sap2.create_proc.CreateProcController; @@ -58,7 +47,6 @@ import com.connor.chint.sap2.proc.CreateProcessController; import com.connor.chint.sap2.proc_by.BYProcBean; import com.connor.chint.sap2.proc_by.BYProduceDialog; import com.connor.chint.sap2.proc_by.BomBean; -import com.connor.chint.sap2.proc_by.CreateProcBYDialog; import com.connor.chint.sap2.util.KUtil; import com.connor.chint.sap2.util.ProgressBar; import com.connor.chint.sap2.util.SAPUtil; @@ -72,8 +60,6 @@ import com.teamcenter.rac.kernel.TCComponentItemRevision; import com.teamcenter.rac.kernel.TCException; import com.teamcenter.rac.kernel.TCSession; import com.teamcenter.rac.util.MessageBox; -import com.teamcenter.rac.util.Utilities; - import sun.swing.table.DefaultTableCellHeaderRenderer; /** @@ -118,7 +104,7 @@ public class CreateProcBYQDialog extends AbstractAIFDialog { private CreateProcController cpController; - private String click_type = ""; +// private String click_type = ""; private String groupID; @@ -133,8 +119,8 @@ public class CreateProcBYQDialog extends AbstractAIFDialog { if (groupID.equalsIgnoreCase("dba")) { groupID = actionInfo; } - } catch (TCException e) { - // TODO Auto-generated catch block + } catch (Exception e) { + // Auto-generated catch block e.printStackTrace(); } } @@ -155,7 +141,7 @@ public class CreateProcBYQDialog extends AbstractAIFDialog { codeRemark_Technology = bean.getCodeRemark_Technology(); } - long time = new Date().getTime(); +// long time = new Date().getTime(); this.bomRev = (TCComponentItemRevision) app.getTargetComponent(); try { initUI(); @@ -187,7 +173,7 @@ public class CreateProcBYQDialog extends AbstractAIFDialog { @Override public void run() { - // TODO Auto-generated method stub + // Auto-generated method stub try { byq_gx_lists = KUtil.getClassObjects(codeRemark_Process, session); meprocs = cpController.getMEProcs(session, codeRemark_Technology); @@ -199,7 +185,7 @@ public class CreateProcBYQDialog extends AbstractAIFDialog { }).start(); showDialog(); } catch (Exception e) { - // TODO: handle exception + // : handle exception e.printStackTrace(); MessageBox.post("ʼ쳣:" + e.getMessage(), "", 2); } @@ -218,14 +204,14 @@ public class CreateProcBYQDialog extends AbstractAIFDialog { // رյʱصBOMWindow @Override protected void processWindowEvent(WindowEvent e) { - // TODO Auto-generated method stub + // Auto-generated method stub if (e.getID() == WindowEvent.WINDOW_CLOSING) { if (controller.win != null) { try { controller.win.save(); controller.win.close(); } catch (TCException e1) { - // TODO Auto-generated catch block + // Auto-generated catch block e1.printStackTrace(); } } @@ -267,8 +253,8 @@ public class CreateProcBYQDialog extends AbstractAIFDialog { } } System.out.println("汾:" + revs.size()); - File[] tcFiles; - File fmsFile; +// File[] tcFiles; +// File fmsFile; List paths = new ArrayList<>(); try { TCComponent[] comps; @@ -290,7 +276,7 @@ public class CreateProcBYQDialog extends AbstractAIFDialog { for (int j = 0; j < comps.length; j++) { if (comps[j] instanceof TCComponentDataset && comps[j].getType().equals("PDF")) { dataset = ((TCComponentDataset) comps[j]); - String d_type = dataset.getType(); +// String d_type = dataset.getType(); String type = dataset.getProperty("ref_names"); String[] types = type.split(","); for (int l = 0; l < types.length; l++) { @@ -313,7 +299,7 @@ public class CreateProcBYQDialog extends AbstractAIFDialog { } } catch (Exception e1) { - // TODO Auto-generated catch block + // Auto-generated catch block e1.printStackTrace(); MessageBox.post("PDF쳣:" + e1.getMessage(), "", 2); } @@ -359,7 +345,7 @@ public class CreateProcBYQDialog extends AbstractAIFDialog { @Override public void run() { - // TODO Auto-generated method stub + // Auto-generated method stub ProgressBar pb = new ProgressBar(CreateProcBYQDialog.this, new Dimension(350, 50)); try { KUtil.stopTableEditing(t_part); @@ -570,7 +556,7 @@ public class CreateProcBYQDialog extends AbstractAIFDialog { controller.manualFeeding(sels, comp); KUtil.setByPass(false); } catch (Exception e1) { - // TODO: handle exception + // : handle exception KUtil.setByPass(false); e1.printStackTrace(); MessageBox.post(CreateProcBYQDialog.this, "Ͷ쳣,ERROR:" + e1.getMessage(), "", MessageBox.ERROR); @@ -621,10 +607,11 @@ public class CreateProcBYQDialog extends AbstractAIFDialog { @Override public void treeExpanded(TreeExpansionEvent event) { - // TODO Auto-generated method stub + // Auto-generated method stub final TreePath path = event.getPath(); if (path != null && path.getLastPathComponent() != null) { final DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent(); + @SuppressWarnings("unlikely-arg-type") int index = controller.expandPaths.indexOf(node); if (index == -1) { controller.expandPaths.add(path); @@ -635,7 +622,7 @@ public class CreateProcBYQDialog extends AbstractAIFDialog { @Override public void run() { - // TODO Auto-generated method stub + // Auto-generated method stub try { KUtil.stopTableEditing(t_part); if (controller.node_need_expands.contains(node)) { @@ -657,10 +644,10 @@ public class CreateProcBYQDialog extends AbstractAIFDialog { @Override public void treeCollapsed(TreeExpansionEvent event) { - // TODO Auto-generated method stub + // Auto-generated method stub final TreePath path = event.getPath(); if (path != null && path.getLastPathComponent() != null) { - DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent(); +// DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent(); int index = controller.expandPaths.indexOf(path); KUtil.stopTableEditing(t_part); if (controller.isCanExpand) { @@ -749,7 +736,7 @@ public class CreateProcBYQDialog extends AbstractAIFDialog { colModel.getColumn(i).setPreferredWidth(HEADERWIDTH[i]); } BYQProcCellEditor cellEditor = new BYQProcCellEditor(); - BYQProcCellRenderer render = new BYQProcCellRenderer(); +// BYQProcCellRenderer render = new BYQProcCellRenderer(); // t_part.setce t_part.getColumnModel().getColumn(4).setCellEditor(cellEditor); DefaultTableCellRenderer tcr = new DefaultTableCellRenderer();// ԪȾ diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/proc_dyccFolder/CreateProcDYCCFolderDialog.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/proc_dyccFolder/CreateProcDYCCFolderDialog.java index e4023b8..a6c1efe 100644 --- a/com.connor.chint.sap2/src/com/connor/chint/sap2/proc_dyccFolder/CreateProcDYCCFolderDialog.java +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/proc_dyccFolder/CreateProcDYCCFolderDialog.java @@ -4,15 +4,12 @@ import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; import java.awt.FlowLayout; -import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.File; -import java.io.IOException; import java.io.InputStream; -import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -21,7 +18,6 @@ import java.util.List; import java.util.Map; import javax.swing.DefaultCellEditor; -import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComboBox; @@ -31,7 +27,6 @@ import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTable; import javax.swing.JTextField; -import javax.swing.UIManager; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.event.TreeExpansionEvent; @@ -59,9 +54,6 @@ import com.connor.chint.sap2.proc.CreateProcessController; import com.connor.chint.sap2.proc_by.BYProduceDialog; import com.connor.chint.sap2.proc_by.BomBean; import com.connor.chint.sap2.proc_by.BYProcBean; -import com.connor.chint.sap2.proc_dycc.CreateProcDYCCDialog; -import com.connor.chint.sap2.proc_zy.CreateProcZYDialog; -import com.connor.chint.sap2.proc_zy.ZYUpdateProcDialog; import com.connor.chint.sap2.util.ChintConfirmDialogUtil; import com.connor.chint.sap2.util.KUtil; import com.connor.chint.sap2.util.MyProgressBarCompent; @@ -72,21 +64,14 @@ import com.teamcenter.rac.aif.AbstractAIFDialog; import com.teamcenter.rac.aif.kernel.AIFComponentContext; import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; import com.teamcenter.rac.aifrcp.AIFUtility; -import com.teamcenter.rac.common.tcviewer.JTFileCache; 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.TCComponentContextList; import com.teamcenter.rac.kernel.TCComponentDataset; import com.teamcenter.rac.kernel.TCComponentFolder; 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; -import com.teamcenter.rac.util.Utilities; - import sun.swing.table.DefaultTableCellHeaderRenderer; /** @@ -97,14 +82,18 @@ import sun.swing.table.DefaultTableCellHeaderRenderer; */ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { + /** + * + */ + private static final long serialVersionUID = 1L; private JButton b_PDF; // 鿴PDF private JButton b_autoAssign; // Զ private JButton b_atf; // ֶ - private JButton b_autoFeeding; // ԶͶ +// private JButton b_autoFeeding; // ԶͶ private JButton b_manualFeeding; // ֶͶ private JButton b_update; // ޸й private JButton b_gddy; // ̶ԪͶ - private JButton b_ctdy; // 뵥ԪͶ +// private JButton b_ctdy; // 뵥ԪͶ private JButton b_jgkt; // ṹ private JButton b_batch_update; // ޸Ĺ @@ -130,7 +119,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { private TCComponent comp_gx; protected Map bomLink_maps = new HashMap(); protected Map> rev_Beans = new HashMap<>(); - private List meprocs = new ArrayList(64); // + private List meprocs = new ArrayList<>(64); // private CreateProcDYCCFolderController controller; @@ -168,8 +157,8 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { if (groupID.equalsIgnoreCase("dba")) { groupID = actionInfo; } - } catch (TCException e) { - // TODO Auto-generated catch block + } catch (Exception e) { + // Auto-generated catch block e.printStackTrace(); } } @@ -179,10 +168,10 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { try { final InterfaceAIFComponent comp = app.getTargetComponent(); - revs = new ArrayList(16); + revs = new ArrayList<>(16); TCComponentItem item; TCComponentItemRevision rev; - String zt2_MaterialNo; +// String zt2_MaterialNo; CreateProcBean bean = CreateProcController.getProcPres(session, "CHINT_ORG_TechnologyClassification", groupID); if (bean == null) { @@ -259,7 +248,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { } } else { rev = (TCComponentItemRevision) comp; - zt2_MaterialNo = rev.getProperty("zt2_MaterialNo"); +// zt2_MaterialNo = rev.getProperty("zt2_MaterialNo"); object_name = rev.getProperty("object_name"); if (object_name.contains("̶Ԫ")) { gddy_revs.add(rev); @@ -325,7 +314,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { isAllowExpand = true; } catch (Exception e) { MessageBox.post(CreateProcDYCCFolderDialog.this, "ʼ쳣:" + e.getMessage(), "", 2); - // TODO Auto-generated catch block + // Auto-generated catch block e.printStackTrace(); } finally { pb.disposeDialog(); @@ -338,7 +327,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { showDialog(); } catch (Exception e) { - // TODO Auto-generated catch block + // Auto-generated catch block e.printStackTrace(); pb2.disposeDialog(); MessageBox.post(CreateProcDYCCFolderDialog.this, "ʼ쳣:" + e.getMessage(), "", 2); @@ -354,7 +343,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { // Ͷ MEProcessMngHelper.onAutoFeeding(session, groupID, pb, revs); // ˢ - if (clickNode!=null) { + if (clickNode != null) { controller.readData(pb, clickNode); pb.disposeDialog(); } @@ -400,8 +389,8 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { } } System.out.println("汾:" + revs.size()); - File[] tcFiles; - File fmsFile; +// File[] tcFiles; +// File fmsFile; List paths = new ArrayList<>(); // List datasets = new ArrayList<>(); try { @@ -424,7 +413,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { for (int j = 0; j < comps.length; j++) { if (comps[j] instanceof TCComponentDataset && comps[j].getType().equals("PDF")) { dataset = ((TCComponentDataset) comps[j]); - String d_type = dataset.getType(); +// String d_type = dataset.getType(); String type = dataset.getProperty("ref_names"); String[] types = type.split(","); for (int l = 0; l < types.length; l++) { @@ -447,7 +436,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { } } catch (Exception e1) { - // TODO Auto-generated catch block + // Auto-generated catch block e1.printStackTrace(); MessageBox.post("PDF쳣:" + e1.getMessage(), "", 2); } @@ -551,7 +540,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { @Override public void treeExpanded(TreeExpansionEvent event) { - // TODO Auto-generated method stub + // Auto-generated method stub final TreePath path = event.getPath(); if (path != null) { final DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent(); @@ -561,7 +550,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { @Override public void run() { - // TODO Auto-generated method stub + // Auto-generated method stub ProgressBar pb = new ProgressBar(CreateProcDYCCFolderDialog.this, new Dimension(250, 50)); setCompEnabled(false); @@ -592,7 +581,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { @Override public void treeCollapsed(TreeExpansionEvent event) { - // TODO Auto-generated method stub + // Auto-generated method stub } @@ -603,7 +592,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { @Override public void tableChanged(TableModelEvent e) { - // TODO Auto-generated method stub + // Auto-generated method stub int col = e.getColumn(); int row = e.getFirstRow(); if (row < 0 || col < 0) { @@ -649,7 +638,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { MessageBox.post(CreateProcDYCCFolderDialog.this, "޿ѡ", "", MessageBox.ERROR); return; } - } catch (TCException e1) { + } catch (Exception e1) { e1.printStackTrace(); } @@ -670,7 +659,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { @Override public void run() { - // TODO Auto-generated method stub + // Auto-generated method stub ProgressBar pb = new ProgressBar(CreateProcDYCCFolderDialog.this, new Dimension(320, 50)); try { KUtil.setByPass(true); @@ -713,7 +702,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { @Override public void actionPerformed(ActionEvent e) { - // TODO Auto-generated method stub + // Auto-generated method stub new Thread(new Runnable() { @Override @@ -739,7 +728,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { // // @Override // public void actionPerformed(ActionEvent e) { -// // TODO Auto-generated method stub +// // Auto-generated method stub // // try { // if(!checkProduce()) { @@ -756,7 +745,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { // new Thread(new Runnable() { // @Override // public void run() { -// // TODO Auto-generated method stub +// // Auto-generated method stub // ProgressBar pb = new ProgressBar(CreateProcDYCCFolderDialog.this, new Dimension(250, 50)); // try { // setCompEnabled(false); @@ -786,13 +775,13 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { @Override public void actionPerformed(ActionEvent e) { - // TODO Auto-generated method stub + // Auto-generated method stub System.out.println("ѡеĹ:" + structural); new Thread(new Runnable() { @Override public void run() { - // TODO Auto-generated method stub + // Auto-generated method stub ProgressBar pb = new ProgressBar(CreateProcDYCCFolderDialog.this, new Dimension(250, 50)); try { setCompEnabled(false); @@ -828,12 +817,12 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { @Override public void actionPerformed(ActionEvent e) { - // TODO Auto-generated method stub + // Auto-generated method stub new Thread(new Runnable() { @Override public void run() { - // TODO Auto-generated method stub + // Auto-generated method stub MyProgressBarCompent my = null; try { KUtil.setByPass(true); @@ -841,7 +830,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { } catch (Exception e) { KUtil.closeMyProgressBar(my); - // TODO: handle exception + // : handle exception e.printStackTrace(); MessageBox.post("쳣:" + e.getMessage(), "", 2); } finally { @@ -894,7 +883,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { if (nodes.size() > 0) { List revs = new ArrayList<>(); - BomBean bomBean; +// BomBean bomBean; TCComponentItemRevision rev; for (int i = 0; i < nodes.size(); i++) { rev = ((BomBean) nodes.get(i).getUserObject()).getRev(); @@ -908,7 +897,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { new DYUpdateProcDialog(CreateProcDYCCFolderDialog.this, revs, rev_Beans, value_strings, session); } catch (Exception e) { - // TODO Auto-generated catch block + // Auto-generated catch block e.printStackTrace(); MessageBox.post("޸쳣:" + e.getMessage(), "", 2); } finally { @@ -933,7 +922,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { new DYUpdateProcDialog(CreateProcDYCCFolderDialog.this, revs, rev_Beans, value_strings, session); } catch (Exception e) { - // TODO Auto-generated catch block + // Auto-generated catch block e.printStackTrace(); MessageBox.post("޸쳣:" + e.getMessage(), "", 2); } finally { @@ -944,7 +933,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { } }); } catch (Exception e1) { - // TODO Auto-generated catch block + // Auto-generated catch block e1.printStackTrace(); } @@ -977,7 +966,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { // if (sels != null && sels.length == 1) { StringBuffer errBuff = new StringBuffer(); - List p_list = new ArrayList(); + List p_list = new ArrayList<>(); System.out.println("ѡе:" + Arrays.toString(sels)); TCComponentItemRevision rev = null; for (int i = 0; i < sels.length; i++) { @@ -1015,9 +1004,10 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { if (pb == null) { pb = new MyProgressBarCompent("޸", "·޸......"); - } else { - pb.setShowLabel("·޸......"); - } + } +// else { +// pb.setShowLabel("·޸......"); +// } pb.setVisible(true); if (procs == null || procs.size() == 0) { @@ -1062,13 +1052,13 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { @Override public void actionPerformed(ActionEvent e) { - // TODO Auto-generated method stub + // Auto-generated method stub // new new Thread(new Runnable() { @Override public void run() { - // TODO Auto-generated method stub + // Auto-generated method stub // List revs = getSelectNodes(); List nodes = controller.getSelectNodes(); int[] sels = t_part.getSelectedRows(); @@ -1087,10 +1077,10 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { pb.startProgress(); pb.setText("ʼУϢ......"); - List procBeans = new ArrayList<>(); +// List procBeans = new ArrayList<>(); List bomBeans = new ArrayList<>(); BomBean bomBean; - DYCCProcBean procBean; +// DYCCProcBean procBean; for (int i = 0, len = nodes.size(); i < len; i++) { bomBean = (BomBean) nodes.get(i).getUserObject(); allBeans.add(bomBean); @@ -1128,7 +1118,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { return; } KUtil.setByPass(true); - TCComponentItemRevision meop; +// TCComponentItemRevision meop; // pb = new ProgressBar(CreateProcDYCCFolderDialog.this, new Dimension(450, // 50)); pb.startProgress(); @@ -1215,7 +1205,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { TCComponent comp_process = null; try { comp_process = KUtil.getClassObject(codeRemark_Process, session, processID); - } catch (TCException e1) { + } catch (Exception e1) { e1.printStackTrace(); } @@ -1256,10 +1246,10 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { } public void test(List revs, TCComponent comp) throws Exception { - BomBean bean; +// BomBean bean; List procs; String object_name = comp.getProperty("object_name"); - String item_id = comp.getProperty("item_id"); +// String item_id = comp.getProperty("item_id"); DefaultMutableTreeNode node; for (int i = 0, len = revs.size(); i < len; i++) { if (rev_nodes.containsKey(revs.get(i))) { @@ -1272,7 +1262,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { } } if (node == clickNode) { - bean = (BomBean) clickNode.getUserObject(); +// bean = (BomBean) clickNode.getUserObject(); procs = map_nodes.get(node); int rowCount = t_part.getRowCount(); for (int j = 1, len2 = procs.size(); j < len2; j++) { @@ -1289,7 +1279,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { private List zy_lists = null; // ȡѡ - private boolean checkProduce() throws TCException { + private boolean checkProduce() throws Exception { if (zy_lists == null) { zy_lists = KUtil.getClassObjects(codeRemark_Process, session); @@ -1322,7 +1312,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { public void setCompEnabled(boolean b) { // this.b_autoAssign.setEnabled(b); this.b_atf.setEnabled(b); - this.b_autoFeeding.setEnabled(b); +// this.b_autoFeeding.setEnabled(b); this.b_manualFeeding.setEnabled(b); this.b_update.setEnabled(b); // if(ctdy_revs.size()>0) @@ -1359,6 +1349,11 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { JPanel panel = new JPanel(new BorderLayout()); tm_part = new DefaultTableModel(); t_part = new JTable(tm_part) { + /** + * + */ + private static final long serialVersionUID = 1L; + @Override public boolean isCellEditable(int row, int column) { if (column == 3) { @@ -1411,6 +1406,11 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { this.treeCellRenderer = new DefaultTreeCellRenderer() { + /** + * + */ + private static final long serialVersionUID = 1L; + @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) { @@ -1420,7 +1420,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { byte[] b = new byte[1024]; try { fileURL.read(b); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } this.setIcon(new ImageIcon(b)); @@ -1447,7 +1447,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { center.add(b_PDF); center.add(b_autoAssign); center.add(this.b_atf); - b_autoFeeding = new JButton("ԶͶ"); +// b_autoFeeding = new JButton("ԶͶ"); b_manualFeeding = new JButton("ֶͶ"); // center.add(b_autoFeeding); center.add(b_manualFeeding); @@ -1532,7 +1532,7 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog { controller.refushTable(map_nodes.get(node)); clickNode = node; } catch (Exception e1) { - // TODO Auto-generated catch block + // Auto-generated catch block MessageBox.post(CreateProcDYCCFolderDialog.this, "ȡϢʱ쳣" + e1.getMessage(), "", MessageBox.ERROR); e1.printStackTrace(); diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/sap_gy/GYPartBean.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/sap_gy/GYPartBean.java index 8f534c7..6db4ac9 100644 --- a/com.connor.chint.sap2/src/com/connor/chint/sap2/sap_gy/GYPartBean.java +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/sap_gy/GYPartBean.java @@ -1,9 +1,12 @@ package com.connor.chint.sap2.sap_gy; +import java.util.List; + import com.connor.chint.sap2.sap.SAPPushBOMBean; import com.teamcenter.rac.kernel.TCComponent; import com.teamcenter.rac.kernel.TCComponentItem; import com.teamcenter.rac.kernel.TCComponentItemRevision; +import com.teamcenter.rac.kernel.TCSession; public class GYPartBean extends SAPPushBOMBean { private TCComponentItemRevision partRev; @@ -15,6 +18,55 @@ public class GYPartBean extends SAPPushBOMBean { private String zt2_MaterialNo; private String object_name; private String factoryNo_id; + + private String zt2_DrawConfirmTime; // ͼֽȷʱ + private String zt2_DrawConfirmUser; // ύ + private String zt2_DrawConfirmUserName; // ύ + private String zt2_DrawConfirmDate; // ύʱ + + + public static void readUser(GYPartBean bean, TCComponentItemRevision rev, String groupID, TCSession session) throws Exception { + List drawConfirmUsers = rev.getPropertyDisplayableValues("zt2_DrawConfirmUser"); + String drawConfirmUserId = drawConfirmUsers.size() > 0 ? drawConfirmUsers.get(0) : ""; + String[] properties = rev.getProperties(new String[] {"zt2_DrawConfirmTime", "zt2_DrawConfirmDate"}); + bean.setZt2_DrawConfirmTime(properties[0]); + bean.setZt2_DrawConfirmUser(drawConfirmUserId); + bean.setZt2_DrawConfirmUserName(getUserName(drawConfirmUserId, session)); + bean.setZt2_DrawConfirmDate(properties[1]); + + } + + public String getZt2_DrawConfirmTime() { + return zt2_DrawConfirmTime; + } + + public void setZt2_DrawConfirmTime(String zt2_DrawConfirmTime) { + this.zt2_DrawConfirmTime = zt2_DrawConfirmTime; + } + + public String getZt2_DrawConfirmUser() { + return zt2_DrawConfirmUser; + } + + public void setZt2_DrawConfirmUser(String zt2_DrawConfirmUser) { + this.zt2_DrawConfirmUser = zt2_DrawConfirmUser; + } + + public String getZt2_DrawConfirmUserName() { + return zt2_DrawConfirmUserName; + } + + public void setZt2_DrawConfirmUserName(String zt2_DrawConfirmUserName) { + this.zt2_DrawConfirmUserName = zt2_DrawConfirmUserName; + } + + public String getZt2_DrawConfirmDate() { + return zt2_DrawConfirmDate; + } + + public void setZt2_DrawConfirmDate(String zt2_DrawConfirmDate) { + this.zt2_DrawConfirmDate = zt2_DrawConfirmDate; + } public TCComponentItemRevision getPartRev() { return partRev; @@ -106,7 +158,9 @@ public class GYPartBean extends SAPPushBOMBean { // {true,this,zt2_site,zt2_tanko,object_name,zt2_MaterialNo,factoryNo_id}; return new Object[] { true, this, zt2_site, zt2_tanko, object_name, zt2_MaterialNo, factoryNo_id, - getZt2_SapBomState(), getUserName(), getZDATE() }; + getZt2_SapBomState(), getUserName(), getZDATE(), + getZt2_DrawConfirmTime(), getZt2_DrawConfirmUserName(), getZt2_DrawConfirmDate() + }; } } diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/sap_gy/SAPGYController.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/sap_gy/SAPGYController.java index c036cbc..7bf12d6 100644 --- a/com.connor.chint.sap2/src/com/connor/chint/sap2/sap_gy/SAPGYController.java +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/sap_gy/SAPGYController.java @@ -1,5 +1,6 @@ package com.connor.chint.sap2.sap_gy; +import java.sql.ResultSet; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; @@ -18,11 +19,14 @@ import java.util.Map.Entry; import com.connor.chint.sap2.sap.SAPPushBOMBean; import com.connor.chint.sap2.sap.YCLMaterialBean; import com.connor.chint.sap2.sap_zy.SAPZYDialogController; +import com.connor.chint.sap2.util.BomToSapUtil; +import com.connor.chint.sap2.util.ChintPreferenceUtil; import com.connor.chint.sap2.util.KUtil; import com.connor.chint.sap2.util.MyProgressBarCompent; import com.connor.chint.sap2.util.POIUtil; import com.connor.chint.sap2.util.SAPMessageUtil; import com.connor.chint.sap2.util.SAPUtil; +import com.connor.chint.sap2.util.SqlUtil; import com.connor.chint.sap2.util.TXTUtil; import com.teamcenter.rac.aif.AbstractAIFApplication; import com.teamcenter.rac.aif.kernel.AIFComponentContext; @@ -43,6 +47,7 @@ import com.teamcenter.rac.kernel.TCException; import com.teamcenter.rac.kernel.TCPreferenceService; import com.teamcenter.rac.kernel.TCSession; import com.teamcenter.rac.util.MessageBox; +import com.teamcenter.services.rac.cad._2007_01.StructureManagement.ExpandPSData; import plm.xi.com.chintelectric.DT_BOM_PLM_REQ; import plm.xi.com.chintelectric.DT_BOM_PLM_REQBASEINFO; @@ -132,15 +137,17 @@ public class SAPGYController { private StringBuilder errorMessage = new StringBuilder(); private TCComponentFolder projectMonitorFolder; + private int batchNum; public SAPGYController(SAPGYDialog dialog, AbstractAIFApplication app) { - // TODO Auto-generated constructor stub + // Auto-generated constructor stub this.app = app; this.session = (TCSession) app.getSession(); this.dialog = dialog; SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); now = format.format(new Date()); AM_users = getMessageUsers(); + batchNum = 1; } /** @@ -263,6 +270,7 @@ public class SAPGYController { cName, factoryNo_id); bean.setPSPID(project.getProperty("zt2_ProjectNo")); SAPPushBOMBean.readUser(bean, rev, groupID, session); + GYPartBean.readUser(bean, rev, groupID, session); partList.add(bean); } else if (cType.equals("Part")) { rev = ((TCComponentItem) c).getLatestItemRevision(); @@ -279,6 +287,7 @@ public class SAPGYController { bean = new GYPartBean(rev, factoryNo, zt2_site, zt2_tanko, zt2_MaterialNo, cName, factoryNo_id); bean.setPSPID(project.getProperty("zt2_ProjectNo")); SAPPushBOMBean.readUser(bean, rev, groupID, session); + GYPartBean.readUser(bean, rev, groupID, session); partList.add(bean); } } @@ -289,7 +298,7 @@ public class SAPGYController { @Override public int compare(GYPartBean o1, GYPartBean o2) { - // TODO Auto-generated method stub + // Auto-generated method stub return o1.getZt2_MaterialNo().compareTo(o2.getZt2_MaterialNo()); } }); @@ -343,14 +352,15 @@ public class SAPGYController { return selectedParts; } - public void sendToSap2(MyProgressBarCompent my) throws Exception { + @SuppressWarnings("deprecation") + public void sendToSap2(MyProgressBarCompent my, boolean yb) throws Exception { List selectedParts = getSelectedParts(); int len = selectedParts == null ? 0 : selectedParts.size(); if (len == 0) { MessageBox.post(dialog, "ѡҪݵĶϢ", "", MessageBox.INFORMATION); - return; } + String zt2_WBSNo = project.getStringProperty("zt2_WBSNo"); if (!checkProecss(selectedParts)) { MessageBox.post(dialog, errorMessage.toString(), "", MessageBox.INFORMATION); @@ -358,6 +368,32 @@ public class SAPGYController { return; } + //TODO BOMдݿ + int code = 0; + if(yb) { + String strs[] = session.getPreferenceService().getStringValues("database_tc"); + if (SqlUtil.getTCDataConnection(strs) == null) { + MessageBox.post("ݿʧ,ѡ", "", 2); + return; + } + code = getCode(); + String dataTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); + String object_name = project.getStringProperty("object_name"); + String userId = session.getUser().getUserId(); + StringBuilder uids = new StringBuilder(""); + for (int i = 0; i < selectedParts.size(); i++) { + String uid = selectedParts.get(i).getPartRev().getUid(); + uids.append(uid).append(":"); + } + String substring = uids.substring(0, uids.length() - 1); + // ֶ ĿUIDִˣijɶʱִУýӿ + String serverHostname = session.getServerHostname(); + String sql = "insert into CHINT_BOM_TO_SAP_SUM (code,factory,\"USER\",starttime,wbsno,projectno,taskstauts" + + ",plmresult,transfer,keymsg,sapresult,PROJECTUID,SERVERHOST,USERID) values " + + "(?,?,?,to_date(?,'yyyy-mm-dd hh24:mi:ss')" + ",?,?,'ȴ֯','δ',?,?,'δ',?,?,?)"; // to_date(?,'yyyy-mm-ddhh24:mi:ss') + SqlUtil.write(sql, new String[] { code + "", groupName, userName, dataTime, zt2_WBSNo, object_name, + "ѹ", substring, project.getUid(), serverHostname, userId }); + } process_boms.clear(); process_jg.clear(); scheme_boms.clear(); @@ -382,7 +418,7 @@ public class SAPGYController { Map user_message = new HashMap<>(); Map user_design = new HashMap<>(); String design_user = ""; - + for (int i = 0; i < selectedParts.size(); i++) { rev = selectedParts.get(i).getPartRev(); // factoryNo = selectedParts.get(i).getFactoryNo(); @@ -478,16 +514,40 @@ public class SAPGYController { StringBuffer errMess = new StringBuffer(); + String plmalterstatus = "N"; // getUserID() - StringBuffer userIDs = new StringBuffer(); +// StringBuffer userIDs = new StringBuffer(); StringBuffer errMessage = new StringBuffer(); // my.setShowLabel("SAPBOMϢ"); + HashMap materialMap = new HashMap<>(); + HashMap ccpMap = new HashMap<>(); + if(yb) { + String[] prefs = ChintPreferenceUtil.getPreferences("CHINT_BOMTOSAP_STATUS_RULE", session); + for(String pref : prefs) { + String[] split = pref.split(":"); + if(split[0].equals(groupName)) { + plmalterstatus = split[1]; + break; + } + } + TCComponentBOMWindowType bomWinType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow"); + TCComponentBOMWindow win = bomWinType.create(null); + for (int i = 0; i < bom_revs.size(); i++) { + // win.lock(); + TCComponentItemRevision ccp = bom_revs.get(i).getPartRev(); + win.setWindowTopLine(ccp.getItem(), ccp, null, null); + TCComponentBOMLine topLine = win.getTopBOMLine(); + Map bomLineTree = BomToSapUtil.getBomLineTreeNodeSOA(topLine); + recycleBOM(ccp.getProperty("zt2_MaterialNo"), topLine, bomLineTree, materialMap, ccpMap); + // win.unlock(); + } + win.close(); + } for (int i = 0; i < bom_revs.size(); i++) { TCComponentItemRevision s = bom_revs.get(i).getPartRev(); List childs_lists = new ArrayList<>(); try { - String zt2_WBSNo = project.getStringProperty("zt2_WBSNo"); - sendRev(bom_revs.get(i), true, succsessBuff, childs_lists,zt2_WBSNo); + sendRev(bom_revs.get(i), true, succsessBuff, childs_lists, zt2_WBSNo, code, plmalterstatus, materialMap, ccpMap, yb); s.lock(); s.setProperty("zt2_SapState", sapState); s.save(); @@ -515,7 +575,7 @@ public class SAPGYController { String txtName = format2.format(new Date()) + userName; String txtPath = TXTUtil.createTxt(txtName); logPathList.add(txtPath); - String name = ccp.getProperty("object_name"); +// String name = ccp.getProperty("object_name"); if (schemes != null) { TXTUtil.writeTXT(txtPath, "-----------------"); @@ -525,6 +585,7 @@ public class SAPGYController { System.out.println("-------------BOMݴݿʼ----------"); List matnrs = null; if (list.size() > 0) { + // BOMдݿ try { SI_BOM_PLM_OUT_SYNService service = new SI_BOM_PLM_OUT_SYNServiceLocator(); SI_BOM_PLM_OUT_SYN stub = service.getHTTP_Port(); @@ -615,7 +676,7 @@ public class SAPGYController { } for (TCComponentItemRevision s : schemes) { - String object_name = s.getProperty("object_name"); +// String object_name = s.getProperty("object_name"); if (!successParts.contains(s) && !errorParts.contains(s)) { TXTUtil.writeTXT(txtPath, "->" + s); s.lock(); @@ -641,6 +702,8 @@ public class SAPGYController { } } + if(yb) + SqlUtil.free(); my.setVisible(false); if (errMessage.toString().length() > 0) { @@ -690,7 +753,7 @@ public class SAPGYController { // win.close(); System.out.println(); } catch (Exception e) { - // TODO Auto-generated catch block + // Auto-generated catch block e.printStackTrace(); } @@ -770,7 +833,7 @@ public class SAPGYController { // } } catch (Exception e) { - // TODO Auto-generated catch block + // Auto-generated catch block e.printStackTrace(); } @@ -785,12 +848,12 @@ public class SAPGYController { return; Set set_meops = new HashSet<>(); - String bmeng = "1"; +// String bmeng = "1"; if (KUtil.isEmpty(groupName)) { groupName = SAPUtil.getGroupID(session); } for (TCComponentItemRevision rev : revs) { - String cName = rev.getStringProperty("object_name"); +// String cName = rev.getStringProperty("object_name"); if (scheme_boms.containsKey(rev)) continue; @@ -817,8 +880,8 @@ public class SAPGYController { List list = new ArrayList(); List proclist = new ArrayList(); - boolean isStruct = false; - isStruct = true; +// boolean isStruct = false; +// isStruct = true; StringBuffer errMess = new StringBuffer(); String txtName = format2.format(new Date()) + "-" + userName; String txtPath = TXTUtil.createTxt(txtName); @@ -866,8 +929,8 @@ public class SAPGYController { rev_meops.put(ccp, set_meops); } - public void sendRev(GYPartBean bean, boolean flag, StringBuffer succsessBuff, - List childs_lists,String zt2_WBSNo) throws Exception { + private void sendRev(GYPartBean bean, boolean flag, StringBuffer succsessBuff, List childs_lists, + String zt2_WBSNo, int code, String plmalterstatus, HashMap materialMap, HashMap ccpMap, boolean yb) throws Exception { System.out.println("sendRev:" + bean.getPartRev()); TCComponentItemRevision rev = bean.getPartRev(); @@ -979,23 +1042,35 @@ public class SAPGYController { // ѹBOMSAP if (list.size() > 0) { try { - SI_BOM_PLM_OUT_SYNService service = new SI_BOM_PLM_OUT_SYNServiceLocator(); - SI_BOM_PLM_OUT_SYN stub = service.getHTTP_Port(); - String REQ_TRACE_ID = "123456"; - DT_BOM_PLM_REQBASEINFO baseInfo = new DT_BOM_PLM_REQBASEINFO(REQ_TRACE_ID); - DT_BOM_PLM_REQLIST[] request = list.toArray(new DT_BOM_PLM_REQLIST[list.size()]); - System.out.println("request:"); - TXTUtil.writeTXT(txtPath, "BOMݴݿʼ"); - for (int i = 0; i < request.length; i++) { - TXTUtil.writeTXT(txtPath, request[i]); - } - - DT_BOM_PLM_REQ req = new DT_BOM_PLM_REQ(baseInfo, request); - DT_BOM_PLM_RSP resp = stub.SI_BOM_PLM_OUT_SYN(req); - System.out.println("ִн4"); - TXTUtil.writeTXT(txtPath, "BOMݴݽ"); - matnrs = SAPUtil.printResp(resp, txtPath); + if(yb) { + //TODO BOMдݿ + for(DT_BOM_PLM_REQLIST bomMsg : list) { +// String topUid = bomMsg.getHEAD().getSTKTX(); + String matnr = bomMsg.getHEAD().getMATNR(); + TCComponent top = materialMap.get(matnr); + String detials = "insert into CHINT_BOM_TO_SAP_DETIALS (code,batchnumber,plmsendstatus,plmsendstarttime,factory,productmaterialno,pitemid,puid,materialno,wbsno,plmstatus,plmalterstatus) " + + "VALUES (?,?,'PLMʼ',SYSDATE,?,?,?,?,?,?,'δ',?)"; + SqlUtil.write(detials, new String[] { code + "", code + "-" + String.format("%05d", batchNum++), groupName, ccpMap.get(matnr), top.getProperty("item_id"), top.getUid(), matnr, zt2_WBSNo, plmalterstatus }); + //materialNoTmp.c_str(), itemId, topUid, bomMsg.HEAD.MATNR, wbsNo, alterstatus + } + }else { + SI_BOM_PLM_OUT_SYNService service = new SI_BOM_PLM_OUT_SYNServiceLocator(); + SI_BOM_PLM_OUT_SYN stub = service.getHTTP_Port(); + String REQ_TRACE_ID = "123456"; + DT_BOM_PLM_REQBASEINFO baseInfo = new DT_BOM_PLM_REQBASEINFO(REQ_TRACE_ID); + DT_BOM_PLM_REQLIST[] request = list.toArray(new DT_BOM_PLM_REQLIST[list.size()]); + System.out.println("request:"); + TXTUtil.writeTXT(txtPath, "BOMݴݿʼ"); + for (int i = 0; i < request.length; i++) { + TXTUtil.writeTXT(txtPath, request[i]); + } + DT_BOM_PLM_REQ req = new DT_BOM_PLM_REQ(baseInfo, request); + DT_BOM_PLM_RSP resp = stub.SI_BOM_PLM_OUT_SYN(req); + System.out.println("ִн4"); + TXTUtil.writeTXT(txtPath, "BOMݴݽ"); + matnrs = SAPUtil.printResp(resp, txtPath); + } } catch (Exception e) { errMess.append("\n[" + rev + "]ƷBOMʱ쳣" + e.getMessage()); TXTUtil.writeTXT(txtPath, "[" + rev + "]ƷBOMʱ쳣" + e.getMessage()); @@ -1254,6 +1329,7 @@ public class SAPGYController { } } + @SuppressWarnings("deprecation") public void sendToSAP(TCComponentItemRevision rev, TCSession session) throws Exception { long start = System.currentTimeMillis(); TCComponentBOMWindow win; @@ -1483,6 +1559,7 @@ public class SAPGYController { /* * ѹش */ + @SuppressWarnings("deprecation") public void recurSAP2(TCComponentBOMLine line, TCComponentItemRevision rev, TCComponentItemRevision partRev, TCSession session, String groupName, String now, String txtPath, List list, List proclist, StringBuffer errMess, Map gy_meops, @@ -1720,6 +1797,7 @@ public class SAPGYController { /* * ѹش */ + @SuppressWarnings("deprecation") public void recurSAP3(TCComponentBOMLine line, TCComponentItemRevision rev, TCComponentItemRevision partRev, TCSession session, String groupName, String now, String txtPath, List list, List proclist, StringBuffer errMess, Map gy_meops, @@ -1959,5 +2037,51 @@ public class SAPGYController { list.add(new DT_BOM_PLM_REQLIST(head, items)); } } - + /** + * ȡBOM + * @throws Exception + */ + private int getCode() throws Exception { + String sql = "select Tab_SendBom_Sequence.nextval as sid from dual"; + ResultSet rs = SqlUtil.read(sql); +// Object objs[] = new Object[1]; + int code = 0; + if (rs.next()) { + code = rs.getInt(1); + System.out.println("code:" + code); + } + SqlUtil.free(); + return code; + } + /** + * BOMȡϱӦͲƷӦ + * @param ccp Ʒϱ + * @param parent BOM + * @param bomLineTree BOM + * @param materialMap ϱӦ + * @param ccpMap ƷӦ + * @throws Exception + */ + private void recycleBOM(String ccp, TCComponentBOMLine parent, Map bomLineTree, HashMap materialMap, HashMap ccpMap) throws Exception { + for(ExpandPSData data : bomLineTree.get(parent.getUid())) { + TCComponentBOMLine line = data.bomLine; +// TCComponentItemRevision rev = data.itemRevOfBOMLine; + StringBuffer sb = new StringBuffer(); + TCComponentItemRevision part = SAPUtil.getSAPPart(line, session, groupName, sb); + if(sb.length() > 0) { + System.out.println(sb.toString()); + if(part == null) + part = data.itemRevOfBOMLine; + } + String material = part.getProperty("zt2_MaterialNo"); + if(materialMap.containsKey(material)) + continue; + materialMap.put(material, part); + if(!ccpMap.containsKey(material)) + ccpMap.put(material, ccp); + else if(!ccpMap.get(material).contains(ccp)) + ccpMap.put(material, ccpMap.get(material) + ";" + ccp); + recycleBOM(ccp, line, bomLineTree, materialMap, ccpMap); + } + } } diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/sap_gy/SAPGYDialog.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/sap_gy/SAPGYDialog.java index 21d9a34..ad34b6f 100644 --- a/com.connor.chint.sap2/src/com/connor/chint/sap2/sap_gy/SAPGYDialog.java +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/sap_gy/SAPGYDialog.java @@ -18,9 +18,13 @@ import javax.swing.JTable; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumnModel; +import com.chint.plm.common.context.ApiContext; +import com.chint.plm.common.util.HttpUtils; +import com.chint.plm.common.util.StringUtils; import com.connor.chint.sap2.create_proc.CreateProcBean; import com.connor.chint.sap2.create_proc.CreateProcController; import com.connor.chint.sap2.util.CheckBoxTableHeaderRenderer; +import com.connor.chint.sap2.util.ConfirmDialogDateUtil; import com.connor.chint.sap2.util.ConfirmDialogUtil; import com.connor.chint.sap2.util.KUtil; import com.connor.chint.sap2.util.MyProgressBarCompent; @@ -49,6 +53,7 @@ public class SAPGYDialog extends AbstractAIFDialog { private static final long serialVersionUID = 1L; private SAPGYController controller; private JButton b_ok; + private JButton b_yb; protected DefaultTableModel tm_part; protected JTable t_part; // public static final String[] HEADER = new String[] { "", "", "վ","", @@ -56,13 +61,18 @@ public class SAPGYDialog extends AbstractAIFDialog { // public static final int[] HEADERWIDTH = new int[] { 50, 60, 60,60,120, 180, // 180 }; - public static final String[] HEADER = new String[] { "", "", "վ", "", "", "ϱ", "", "BOMȷ״̬", "ȷ", - "ȷʱ" }; - public static final int[] HEADERWIDTH = new int[] { 50, 60, 60, 60, 120, 180, 180, 100, 100, 100 }; + public static final String[] HEADER = new String[] { "", "", "վ", "", "", "ϱ", "" + , "BOMȷ״̬", "ȷ", "ȷʱ" + , "ͼֽȷʱ", "ύ", "ύʱ" + }; + public static final int[] HEADERWIDTH = new int[] { 50, 60, 60, 60, 120, 180, 180, 100, 100, 100, 150, 100, 150 }; // private CheckBoxTableHeaderRenderer tableHeaderRenderer; private TCSession session; // private AbstractAIFApplication app; protected JButton pushBOM_btn; // BOMȷ + protected JButton pushOTD_btn; // OTDȷʱ + + private String dateText; public SAPGYDialog(AbstractAIFApplication app) { super(false); @@ -128,7 +138,9 @@ public class SAPGYDialog extends AbstractAIFDialog { private void setCompEnabled(boolean b) { b_ok.setEnabled(b); + b_yb.setEnabled(b); pushBOM_btn.setEnabled(b); + pushOTD_btn.setEnabled(b); } private void addListeners() { @@ -250,7 +262,7 @@ public class SAPGYDialog extends AbstractAIFDialog { try { KUtil.setByPass(true); my = new MyProgressBarCompent("", "ѹBOMSAP......"); - controller.sendToSap2(my); + controller.sendToSap2(my, false); } catch (Exception e1) { MessageBox.post(SAPGYDialog.this, "" + e1.getMessage(), "", MessageBox.ERROR); e1.printStackTrace(); @@ -265,7 +277,141 @@ public class SAPGYDialog extends AbstractAIFDialog { }).start(); } }); + b_yb.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + new Thread(new Runnable() { + @Override + public void run() { + setCompEnabled(false); + MyProgressBarCompent my = null; + try { + KUtil.setByPass(true); + my = new MyProgressBarCompent("", "ѹBOMSAP......"); + controller.sendToSap2(my, true); + } catch (Exception e1) { + MessageBox.post(SAPGYDialog.this, "" + e1.getMessage(), "", MessageBox.ERROR); + e1.printStackTrace(); + } finally { + if (my != null) + my.setVisible(false); + KUtil.setByPass(false); + // pb.disposeDialog(); + } + setCompEnabled(true); + } + }).start(); + } + }); + pushOTD_btn.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + new Thread(new Runnable() { + + @Override + public void run() { + MyProgressBarCompent my = null; + try { + int start_index = 10; + List beans = controller.getSelectedParts(); + int len = beans.size(); + if (len == 0) { + MessageBox.post("ѡҪύIJƷ", "", 2); + return; + } + GYPartBean bean; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:MM:ss"); + SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd"); + Date time = new Date(); + String now = sdf.format(time); + String nowDate = sdfDate.format(time); + if (StringUtils.isBlank(dateText)) { + dateText = nowDate; + } + String user = session.getUser().getUserId(); + String userName = session.getUserName(); + for (int i = 0; i < len; i++) { + bean = beans.get(i); + if (StringUtils.isNotBlank(bean.getZt2_DrawConfirmTime())) { + // Էȷύ + // MessageBox.post(SAPGYDialog.this, "ύ,ظύ", "", 2); + // return; + } + } + ConfirmDialogDateUtil dateDialog = new ConfirmDialogDateUtil(SAPGYDialog.this, "ȷ", "Ƿȷύ", new Dimension(500, 250), dateText); + dateText = dateDialog.getDateText(); + if (dateDialog.getResult()) { + StringBuilder build = new StringBuilder(); + StringBuilder success_build = new StringBuilder(); + int index; + TCComponentItemRevision rev; + my = new MyProgressBarCompent("", "ύ......"); + KUtil.setByPass(true); + for (int i = 0; i < len; i++) { + bean = beans.get(i); + rev = bean.getPartRev(); + try { + // OTDȷʱ + String otdUrl = ApiContext.getApiUrl(session, "CHINT_EX_OTD_URL"); + String urlString = otdUrl + "/api/third/plm/push/sync"; + JSONObject bodyObject = new JSONObject(); + bodyObject.put("projectNumber", bean.getPSPID()); + bodyObject.put("factoryCode", bean.getWERKS()); + // String[] ms = bean.getMATNR().split("-"); + bodyObject.put("materialCode", bean.getMATNR()); + bodyObject.put("drawConfirDate", dateText); + String resp = HttpUtils.post(urlString, bodyObject.toString()); + com.alibaba.fastjson2.JSONObject respObject = com.alibaba.fastjson2.JSONObject.parse(resp); + if ((respObject!=null && respObject.containsKey("success") && respObject.getBooleanValue("success")) || "ɹ".equals(respObject.getString("message"))) { + // ɹ + // PLMвƷ + bean.setZt2_DrawConfirmTime(dateText); + bean.setZt2_DrawConfirmUser(user); + bean.setZt2_DrawConfirmUserName(userName); + bean.setZt2_DrawConfirmDate(now); + index = bean.getIndex() - 1; + // ± + t_part.setValueAt(dateText, index, start_index); + t_part.setValueAt(userName, index, start_index + 1); + t_part.setValueAt(now, index, start_index + 2); + // + rev.setDateProperty("zt2_DrawConfirmTime", sdfDate.parse(dateText)); + rev.setProperty("zt2_DrawConfirmUser", user); + rev.setDateProperty("zt2_DrawConfirmDate", time); + success_build.append("\n").append(rev); + } else { + // ʧ + String msg = respObject.getString("msg"); + if (StringUtils.isBlank(msg)) { + msg = respObject.getString("message"); + } + build.append("\n").append(rev).append(": ").append(msg); + } + } catch (Exception e2) { + e2.printStackTrace(); + build.append("\n").append(rev).append(": ").append(e2.getMessage()); + } + } + KUtil.setByPass(false); + KUtil.closeMyProgressBar(my); + if (build.toString().length() > 0) { + MessageBox.post("²Ʒύʧ:" + build.toString(), "", 2); + } else { + MessageBox.post("²Ʒύɹ:" + success_build.toString(), "", 2); + } + } + } catch (Exception e) { + KUtil.setByPass(false); + KUtil.closeMyProgressBar(my); + e.printStackTrace(); + MessageBox.post(SAPGYDialog.this, "ύ쳣:" + e.getMessage(), "", 2); + } + + } + }).start(); + } + }); } private JPanel getBtnPanel() { @@ -273,11 +419,15 @@ public class SAPGYDialog extends AbstractAIFDialog { panel.add(new JLabel("")); b_ok = new JButton("BOMSAP"); panel.add(b_ok); + b_yb = new JButton("BOM첽SAP"); + panel.add(b_yb); JLabel label = new JLabel(""); label.setPreferredSize(new Dimension(140, 25)); panel.add(label); pushBOM_btn = new JButton("BOMȷ"); panel.add(pushBOM_btn); + pushOTD_btn = new JButton("ͼֽȷʱύ"); + panel.add(pushOTD_btn); // ѹBOMȷλõ // JPanel panelt = new JPanel(new BorderLayout()); // panelt.add(BorderLayout.WEST, panel); diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/stylesheet/BOMDifStyle.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/stylesheet/BOMDifStyle.java index cf20fac..06ff136 100644 --- a/com.connor.chint.sap2/src/com/connor/chint/sap2/stylesheet/BOMDifStyle.java +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/stylesheet/BOMDifStyle.java @@ -1,6 +1,13 @@ package com.connor.chint.sap2.stylesheet; import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -11,23 +18,33 @@ import java.util.Map; import java.util.Map.Entry; import javax.swing.DefaultCellEditor; +import javax.swing.JButton; import javax.swing.JComboBox; +import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; +import javax.swing.JTextField; +import javax.swing.event.CellEditorListener; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.table.DefaultTableModel; +import javax.swing.table.TableCellEditor; import javax.swing.table.TableColumnModel; import com.connor.chint.sap2.dy.createBOMDifference.BOMDifCellEditor; import com.connor.chint.sap2.util.KUtil; -import com.teamcenter.rac.aif.AbstractAIFApplication; +import com.teamcenter.rac.aif.kernel.AIFComponentContext; import com.teamcenter.rac.aifrcp.AIFUtility; import com.teamcenter.rac.kernel.ListOfValuesInfo; import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentItemRevision; import com.teamcenter.rac.kernel.TCComponentListOfValues; import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.util.MessageBox; /** * BOMȾ @@ -37,22 +54,38 @@ import com.teamcenter.rac.kernel.TCSession; */ public class BOMDifStyle extends KFormStyle { + /** + * + */ + private static final long serialVersionUID = 1L; private TCComponent form; private JTable t_part; private DefaultTableModel tm_part; public static final String[] HEADER = { "", "", "ϱ", "", "ϱ", "", "", "ϱ", - "", "", "ԭ", "ԭС", "" }; - public static final int[] HEADERWIDTH = new int[] { 50, 80, 120, 180, 120, 180, 80, 120, 180, 80, 100, 100, 100 }; - private AbstractAIFApplication app; + "", "", "ԭ", "ԭС", "", "Դ" }; + public static final int[] HEADERWIDTH = new int[] { 50, 80, 120, 180, 120, 180, 80, 120, 180, 80, 100, 100, 100, 80 }; +// private AbstractAIFApplication app; private TCSession session; - private JComboBox jcom_Subclass = null; // С + private JButton btn_add; + private JButton btn_del; +// private JComboBox jcom_Subclass = null; // С private Map processType = null; private Map map_indexs = null; // private Map map_class = null; // private Map map_subclass = null; // С - private Map> class_subclass = null; + private Map> class_subclass; + private BOMDifCellEditor cellEditor; + + private JPanel selectPanel; + private JComboBox box_class; + private JComboBox box_subClass; + private JComboBox box_processType; + private JTextField field_subClass; + private String selectClassItemString; + private String selectSubClassItemString; + private String selectProcessTypeItemString; public BOMDifStyle(TCComponent arg0) throws Exception { super(arg0); @@ -67,8 +100,34 @@ public class BOMDifStyle extends KFormStyle { public void loadUI() throws Exception { this.setLayout(new BorderLayout()); System.out.println(""); + getSelectPanel(); +// this.add(BorderLayout.NORTH, getSelectPanel()); this.add(BorderLayout.CENTER, getTablePanel()); + this.add(BorderLayout.SOUTH, new JLabel("ֻǵǰ**ٵ**
ǰ****
ɾϴBOMȫƳ")); + addListener(); + } + private Component getSelectPanel() { + box_class = new JComboBox(); + box_subClass = new JComboBox(); + box_processType = new JComboBox(); + field_subClass = new JTextField(); + selectClassItemString = ""; + selectSubClassItemString = ""; + selectProcessTypeItemString = ""; + + selectPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); + box_class.setPreferredSize(new Dimension(85, 25)); + box_subClass.setPreferredSize(new Dimension(85, 25)); + box_processType.setPreferredSize(new Dimension(85, 25)); + field_subClass.setPreferredSize(new Dimension(85, 25)); + selectPanel.add(box_class); + selectPanel.add(box_subClass); + selectPanel.add(field_subClass); + selectPanel.add(box_processType); + box_subClass.setVisible(false); + selectPanel.setVisible(false); + return selectPanel; } @Override @@ -131,11 +190,12 @@ public class BOMDifStyle extends KFormStyle { } - private JPanel getTablePanel() { - map_indexs = new HashMap<>(8); // - map_class = new HashMap<>(8); // - map_subclass = new HashMap<>(64); // С - class_subclass = new HashMap<>(8); + private JPanel getTablePanel() throws Exception { + map_indexs = new HashMap<>(); // + map_class = new HashMap<>(); // + map_subclass = new HashMap<>(); // С + class_subclass = new HashMap<>(); +// editRows = new LinkedList<>(); try { initMap(map_indexs, map_class, map_subclass); System.out.println("getTablePanel()---"); @@ -143,17 +203,27 @@ public class BOMDifStyle extends KFormStyle { System.out.println("map_class:" + map_class); System.out.println("map_subclass:" + map_subclass); System.out.println("processType:" + processType); + System.out.println("class_subclass:" + class_subclass); } catch (Exception e1) { - // TODO Auto-generated catch block + // Auto-generated catch block e1.printStackTrace(); } JPanel panel = new JPanel(new BorderLayout()); tm_part = new DefaultTableModel(); t_part = new JTable(tm_part) { + /** + * + */ + private static final long serialVersionUID = 1L; + @Override public boolean isCellEditable(int row, int column) { - // TODO Auto-generated method stub - if (column > 9) { + // Auto-generated method stub + if (column == 13) { + return false; + } else if (column > 9) { + return true; + } else if(column != 0 && getValueAt(row, 13).equals("ֹ")) { return true; } return false; @@ -172,23 +242,22 @@ public class BOMDifStyle extends KFormStyle { JComboBox jcm_reason = new JComboBox(); jcm_reason.addItem(""); - + box_class.addItem(""); Collections.sort(list, new Comparator>() { @Override public int compare(Entry o1, Entry o2) { - // TODO Auto-generated method stub + // Auto-generated method stub return o1.getValue().compareTo(o2.getValue()); } - }); for (int i = 0, len = list.size(); i < len; i++) { jcm_reason.addItem(list.get(i).getKey()); + box_class.addItem(list.get(i).getKey()); } - t_part.getColumnModel().getColumn(10).setCellEditor(new DefaultCellEditor(jcm_reason)); + colModel.getColumn(10).setCellEditor(new DefaultCellEditor(jcm_reason)); t_part.getModel().addTableModelListener(new TableModelListener() { - @Override public void tableChanged(TableModelEvent e) { int col = e.getColumn(); @@ -202,6 +271,14 @@ public class BOMDifStyle extends KFormStyle { } } }); + //TODO + Object[] values = map_indexs.keySet().toArray(); + JComboBox changeType = new JComboBox(); + changeType.addItem(""); + for(Object s : values) + changeType.addItem(s.toString()); + colModel.getColumn(1).setCellEditor(new DefaultCellEditor(changeType)); +// t_part.getColumnModel().getColumn(1).setCellRenderer(new ComboBoxColumnRender(values)); if (processType.size() > 0) { int size = processType.size() + 1; @@ -214,7 +291,70 @@ public class BOMDifStyle extends KFormStyle { } Collections.sort(list2); JComboBox jcom_Type = new JComboBox(list2.toArray(new String[size])); - t_part.getColumnModel().getColumn(12).setCellEditor(new DefaultCellEditor(jcom_Type)); + colModel.getColumn(12).setCellEditor(new DefaultCellEditor(jcom_Type)); + + for (String processType : list2) { + box_processType.addItem(processType); + } + } + for(int i = 0; i < t_part.getColumnCount(); i++) { + if(i == 2 || i == 4 || i == 7) { + //븸ϱ롢ϱ롢ϱͨѯԶд + TableCellEditor descEditor = new DefaultCellEditor(new JTextField()); + descEditor.addCellEditorListener(new CellEditorListener() { + public void editingStopped(ChangeEvent e) { + // ༭ɺIJ + try { + int row = t_part.getSelectedRow(), col = t_part.getSelectedColumn(); + String val = "" + ((TableCellEditor)e.getSource()).getCellEditorValue(); + System.out.println("༭: " + row + "," + col + "==" + val); + HashMap fields = new HashMap<>(); + fields.put("materialno", val); + AIFComponentContext[] parts = KUtil.query(session, "chint_query_material", fields).toArray(); + if(parts.length == 0) + return; + TCComponentItemRevision part = (TCComponentItemRevision) parts[0].getComponent(); + t_part.setValueAt(part.getProperty("object_desc"), row, col + 1); + }catch(Exception e1) { + e1.printStackTrace(); + MessageBox.post("" + e1, "", MessageBox.ERROR); + } + } + public void editingCanceled(ChangeEvent e) { + // ༭ȡIJ + System.out.println("༭ȡ: " + t_part.getSelectedRow() + "," + t_part.getSelectedColumn() + "==" + ((TableCellEditor)e.getSource()).getCellEditorValue()); + } + }); + colModel.getColumn(i).setCellEditor(descEditor); + }else if(i == 6 || i == 9) { + TableCellEditor descEditor = new DefaultCellEditor(new JTextField()); + descEditor.addCellEditorListener(new CellEditorListener() { + public void editingStopped(ChangeEvent e) { + // ༭ɺIJ + int row = t_part.getSelectedRow(), col = t_part.getSelectedColumn(); + TableCellEditor editor = ((TableCellEditor)e.getSource()); + try { + String val = "" + editor.getCellEditorValue(); + System.out.println("༭: " + row + "," + col + "==" + val); + Double.parseDouble("" + val); + if(val.contains("d") || val.contains("D")) { + MessageBox.post("дҪ", "", MessageBox.ERROR); +// t_part.setValueAt(e.toString(), row, col); + } + } catch (NumberFormatException e1) { + MessageBox.post("дҪ", "", MessageBox.ERROR); +// t_part.setValueAt(e.toString(), row, col); + } + } + public void editingCanceled(ChangeEvent e) { + // ༭ȡIJ + System.out.println("༭ȡ: " + t_part.getSelectedRow() + "," + t_part.getSelectedColumn() + "==" + ((TableCellEditor)e.getSource()).getCellEditorValue()); + } + }); + colModel.getColumn(i).setCellEditor(descEditor); + }else if(i != 1 && i != 10 && i != 11 && i != 12) { + colModel.getColumn(i).setCellEditor(new DefaultCellEditor(new JTextField())); + } } System.out.println("component:" + component); @@ -224,20 +364,178 @@ public class BOMDifStyle extends KFormStyle { readDiffence(component); } } catch (Exception e1) { - // TODO Auto-generated catch block + // Auto-generated catch block e1.printStackTrace(); } + JPanel btns = new JPanel(new FlowLayout()); + btn_add = new JButton(""); + btns.add(btn_add); + btn_del = new JButton("ɾ"); + btns.add(btn_del); + btns.add(selectPanel); + panel.add(BorderLayout.NORTH, btns); JScrollPane scroll = new JScrollPane(t_part); panel.add(BorderLayout.CENTER, scroll); return panel; } + private void addListener() { + //TODO + btn_add.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + int[] rows = t_part.getSelectedRows(); + if(rows.length == 0) { + tm_part.addRow(new Object[] { 0, "", "", "", "", "", "", "", "", "", "", "", "", "ֹ" }); + cellEditor.changeRow(t_part.getRowCount() - 1, true); + }else { + int row = rows[rows.length - 1] + 1; + tm_part.insertRow(row, new Object[] { 0, "", "", "", "", "", "", "", "", "", "", "", "", "ֹ" }); + cellEditor.changeRow(row, true); + } + for(int i = 0; i < t_part.getRowCount(); i++) { + t_part.setValueAt(i + 1, i, 0); + } + } + }); + + btn_del.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + int[] rows = t_part.getSelectedRows(); + if(rows.length == 0) { + MessageBox.post("ѡҪɾ", "", MessageBox.WARNING); + return; + } + for(int i = rows.length - 1; i >= 0; i--) { + if(!t_part.getValueAt(rows[i], 13).equals("ֹ")) + continue; + tm_part.removeRow(rows[i]); + cellEditor.changeRow(rows[i], false); + } + for(int i = 0; i < t_part.getRowCount(); i++) { + t_part.setValueAt(i + 1, i, 0); + } + } + }); + + t_part.getSelectionModel().addListSelectionListener(new ListSelectionListener() { + @Override + public void valueChanged(ListSelectionEvent e) { + if (t_part.getSelectedRowCount() >= 2) { + selectPanel.setVisible(true); + } else { + selectPanel.setVisible(false); + } + } + }); + + box_class.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + // ʹTable༭ʧȥ + TableCellEditor tableCellEditor = t_part.getCellEditor(); + if (tableCellEditor != null) { + tableCellEditor.stopCellEditing(); + } + + if (selectClassItemString == null) { + selectClassItemString = (String) e.getItem(); + } else if (!selectClassItemString.equals((String) e.getItem())) { + selectClassItemString = (String) e.getItem(); + setSubClassBoxValue(); + } + } + + private void setSubClassBoxValue() { + + if (selectClassItemString != null && selectClassItemString != "") { + field_subClass.setVisible(false); + box_subClass.setVisible(true); + box_subClass.removeAllItems(); + System.out.println("class_subclass:" + class_subclass); + Map subClassMap = class_subclass.get(selectClassItemString); + box_subClass.addItem(""); + for (String item : subClassMap.keySet()) { + box_subClass.addItem(item); + } + } else { + field_subClass.setVisible(true); + box_subClass.setVisible(false); + box_subClass.removeAllItems(); + } + setTableClassCellValue(); + selectClassItemString = null; + } + + private void setTableClassCellValue() { + int[] selectRowsIndex = t_part.getSelectedRows(); + for (int index : selectRowsIndex) { + t_part.setValueAt(selectClassItemString, index, 10); + } + } + }); + + box_subClass.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + // ʹTable༭ʧȥ + TableCellEditor tableCellEditor = t_part.getCellEditor(); + if (tableCellEditor != null) { + tableCellEditor.stopCellEditing(); + } + + if (selectSubClassItemString == null) { + selectSubClassItemString = (String) e.getItem(); + } else if (!selectSubClassItemString.equals((String) e.getItem())) { + selectSubClassItemString = (String) e.getItem(); + setTableSubClassCellValue(); + selectSubClassItemString = null; + } + } + + private void setTableSubClassCellValue() { + int[] selectRowsIndex = t_part.getSelectedRows(); + for (int index : selectRowsIndex) { + t_part.setValueAt(selectSubClassItemString, index, 11); + } + + } + }); + + box_processType.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + // ʹTable༭ʧȥ + TableCellEditor tableCellEditor = t_part.getCellEditor(); + if (tableCellEditor != null) { + tableCellEditor.stopCellEditing(); + } + + if (selectProcessTypeItemString == null) { + selectProcessTypeItemString = (String) e.getItem(); + } else if (!selectProcessTypeItemString.equals((String) e.getItem())) { + selectProcessTypeItemString = (String) e.getItem(); + setTableSubClassCellValue(); + selectProcessTypeItemString = null; + } + } + + private void setTableSubClassCellValue() { + int[] selectRowsIndex = t_part.getSelectedRows(); + for (int index : selectRowsIndex) { + t_part.setValueAt(selectProcessTypeItemString, index, 12); + } + } + }); + } + public void readDiffence(TCComponent target) throws Exception { String value = ""; String[] values = null; int index = -1; - for (int i = 1; i < 14; i++) { + for (int i = 1; i < 15; i++) { value = target.getProperty("zt2_property" + i); if (value != null && value.trim().length() > 0) { values = value.split(","); @@ -252,9 +550,14 @@ public class BOMDifStyle extends KFormStyle { } } + for (int i = 0; i < t_part.getRowCount(); i++) { + Object val = t_part.getValueAt(i, 13); + if(val == null || val.toString().isEmpty()) + t_part.setValueAt("Զ", i, 13); + } index = index == -1 ? 0 : index; - BOMDifCellEditor cellEditor = new BOMDifCellEditor(class_subclass, map_class, index + 1); + cellEditor = new BOMDifCellEditor(class_subclass, map_class, index + 1); t_part.getColumnModel().getColumn(11).setCellEditor(cellEditor); @@ -265,6 +568,33 @@ public class BOMDifStyle extends KFormStyle { KUtil.stopTableEditing(t_part); if (rowCout < 1) return; + //ɾ + int last = HEADER.length - 1; + for(int i = rowCout - 1; i >= 0; i--) { + if(t_part.getValueAt(i, last).equals("Զ")) + continue; +// try { +// if(!KUtil.isEmpty(t_part.getValueAt(i, 4))) +// Double.parseDouble("" + t_part.getValueAt(i, 6)); +// if(!KUtil.isEmpty(t_part.getValueAt(i, 7))) +// Double.parseDouble("" + t_part.getValueAt(i, 9)); +// } catch (NumberFormatException e) { +// throw new Exception("дҪ"); +// } + boolean del = true; + for(int j = 1; j < last; j++) { + if(!KUtil.isEmpty(t_part.getValueAt(i, j))) { + del = false; + break; + } + } + if(del) { + tm_part.removeRow(i); + } + } + KUtil.refrashNo(t_part); + rowCout = t_part.getRowCount(); + List list = new ArrayList<>(rowCout); if (processType == null) { processType = KUtil.getLOVDisplay_value(session, "ZT2_ProcessType"); @@ -279,7 +609,7 @@ public class BOMDifStyle extends KFormStyle { System.out.println("map_indexs:" + map_indexs); System.out.println("map_class:" + map_class); System.out.println("map_subclass:" + map_subclass); - for (int i = 0; i < 13; i++) { + for (int i = 0; i < HEADER.length; i++) { String[] values = KUtil.getColumnValues(rowCout, i, list, t_part).toArray(new String[rowCout]); System.out.println("ֵ:" + "zt2_property" + (i + 1) + ";" + Arrays.toString(values)); switch (i) { @@ -314,9 +644,75 @@ public class BOMDifStyle extends KFormStyle { } System.out.println("ֵ:" + "zt2_property" + (i + 1) + ";" + Arrays.toString(values)); KUtil.setProperty(form, "zt2_property" + (i + 1), values); - form.unlock(); +// form.unlock(); } - form.unlock(); +// form.unlock(); + } + + @Override + public boolean isObjectSavable() { + System.out.println("isObjectSavable0"); + KUtil.stopTableEditing(t_part); + //ɾ + int last = HEADER.length - 1; + for(int i = t_part.getRowCount() - 1; i >= 0; i--) { + if(t_part.getValueAt(i, last).equals("Զ")) + continue; + try { + boolean error = false; + if(KUtil.isEmpty(t_part.getValueAt(i, 4))) { + String val = "" + t_part.getValueAt(i, 6); + if(!val.isEmpty()) { + error = true; + } + }else { + String val = "" + t_part.getValueAt(i, 6); + Double.parseDouble(val); + if(val.contains("d") || val.contains("D")) { + error = true; + } + } + if(KUtil.isEmpty(t_part.getValueAt(i, 7))) { + String val = "" + t_part.getValueAt(i, 9); + if(!val.isEmpty()) { + error = true; + } + }else { + String val = "" + t_part.getValueAt(i, 9); + Double.parseDouble(val); + if(val.contains("d") || val.contains("D")) { + error = true; + } + } + if(error) { + System.out.println("дҪ"); + MessageBox.post("дҪ", "", MessageBox.ERROR); + return false; + } + } catch (NumberFormatException e) { +// throw new Exception("дҪ"); + System.out.println("дҪ"); + MessageBox.post("дҪ", "", MessageBox.ERROR); + return false; + } + } + return super.isObjectSavable(); + } + + @Override + public boolean isObjectSavable(boolean var1) { + System.out.println("isObjectSavable1"); + if(!isObjectSavable()) + return false; + return super.isObjectSavable(var1); + } + + @Override + public boolean isObjectSavable(boolean var1, boolean var2) { + System.out.println("isObjectSavable2"); + if(!isObjectSavable()) + return false; + return super.isObjectSavable(var1, var2); } } diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/stylesheet/ComboBoxColumnRender.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/stylesheet/ComboBoxColumnRender.java new file mode 100644 index 0000000..e0a3099 --- /dev/null +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/stylesheet/ComboBoxColumnRender.java @@ -0,0 +1,35 @@ +package com.connor.chint.sap2.stylesheet; + +import java.awt.Component; + +import javax.swing.JComboBox; +import javax.swing.JTable; +import javax.swing.UIManager; +import javax.swing.table.DefaultTableCellRenderer; + +public class ComboBoxColumnRender extends DefaultTableCellRenderer { + + /** + * + */ + private static final long serialVersionUID = 1L; + + private JComboBox comboBox; + + public ComboBoxColumnRender(Object[] values) { + super(); + + comboBox = new JComboBox<>(); + comboBox.addItem(""); + for(Object s : values) + comboBox.addItem("" + s); + } + + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { + + comboBox.setSelectedItem(value == null ? "" : value.toString()); + setBorder(UIManager.getBorder("TableHeader.cellBorder")); + + return comboBox; + } +} \ No newline at end of file diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/util/BomToSapUtil.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/util/BomToSapUtil.java index 485bb6e..a0fbac8 100644 --- a/com.connor.chint.sap2/src/com/connor/chint/sap2/util/BomToSapUtil.java +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/util/BomToSapUtil.java @@ -10,7 +10,6 @@ import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; -import com.teamcenter.rac.kernel.TCComponent; import com.teamcenter.rac.kernel.TCComponentBOMLine; import com.teamcenter.rac.kernel.TCComponentDataset; import com.teamcenter.rac.kernel.TCComponentItemRevision; @@ -19,6 +18,7 @@ import com.teamcenter.rac.kernel.TCException; import com.teamcenter.rac.kernel.TCPreferenceService; import com.teamcenter.rac.kernel.TCSession; import com.teamcenter.rac.ui.common.RACUIUtil; +import com.teamcenter.services.rac.cad._2007_01.StructureManagement; import com.teamcenter.services.rac.cad._2007_01.StructureManagement.ExpandPSAllLevelsOutput; import com.teamcenter.services.rac.cad._2007_01.StructureManagement.ExpandPSData; @@ -31,7 +31,7 @@ public class BomToSapUtil { * @function õԪ */ public static void setCellValue(XSSFCell cell2, int index, XSSFRow row0, String cellValue) { - // TODO Auto-generated method stub + // Auto-generated method stub if (cell2 == null) { cell2 = row0.createCell(index); @@ -48,7 +48,7 @@ public class BomToSapUtil { * @function */ public static XSSFRow getRow(XSSFSheet sheetAt, int rowNum) { - // TODO Auto-generated method stub + // Auto-generated method stub XSSFRow row = sheetAt.getRow(rowNum); if (row == null) { @@ -81,7 +81,7 @@ public class BomToSapUtil { return tcFile[0].getFmsFile(); } } catch (TCException e) { - // TODO Auto-generated catch block + // Auto-generated catch block e.printStackTrace(); } return null; @@ -90,10 +90,10 @@ public class BomToSapUtil { // List bomLineNodes = list; //ԤBOMӶmapItemRev map - Map bomLineMap = new HashMap(); + Map bomLineMap = new HashMap<>(); // Map bomLineItemRevMap = new HashMap(); try { - TCComponentItemRevision object = bomLine.getItemRevision(); +// TCComponentItemRevision object = bomLine.getItemRevision(); // String object_type = object.getType(); // if (!sparePartRevision.equals(object_type)) { // SOAչBOM @@ -150,7 +150,7 @@ public class BomToSapUtil { List bomLineMap = new ArrayList(); // Map bomLineItemRevMap = new HashMap(); try { - TCComponentItemRevision object = bomLine.getItemRevision(); +// TCComponentItemRevision object = bomLine.getItemRevision(); // String object_type = object.getType(); // if (!sparePartRevision.equals(object_type)) { // SOAչBOM @@ -206,4 +206,24 @@ public class BomToSapUtil { return bomLineMap; } + public static Map getBomLineTreeNodeSOA(StructureManagement structureService, TCComponentBOMLine bomLine) { + Map bomLineMap = new HashMap<>(); + StructureManagement.ExpandPSAllLevelsInfo levelInfo = new StructureManagement.ExpandPSAllLevelsInfo(); + StructureManagement.ExpandPSAllLevelsPref levelPref = new StructureManagement.ExpandPSAllLevelsPref(); + levelInfo.parentBomLines = new TCComponentBOMLine[] { bomLine }; //붥BOMLine + levelInfo.excludeFilter = "None"; + levelPref.expItemRev = false; + levelPref.info = new StructureManagement.RelationAndTypesFilter[0]; + //ʹ·չBOM + StructureManagement.ExpandPSAllLevelsResponse levelResp = structureService.expandPSAllLevels(levelInfo, levelPref); + if (levelResp.output.length > 0){ + //BOMuidӶԹϵ + for (ExpandPSAllLevelsOutput data : levelResp.output) { + ExpandPSData[] children = data.children; + TCComponentBOMLine parentBomLine = (TCComponentBOMLine) data.parent.bomLine; + bomLineMap.put(parentBomLine.getUid(), children); + } + } + return bomLineMap; + } } diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/util/ConfirmDialogDateUtil.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/util/ConfirmDialogDateUtil.java new file mode 100644 index 0000000..6499f50 --- /dev/null +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/util/ConfirmDialogDateUtil.java @@ -0,0 +1,157 @@ +package com.connor.chint.sap2.util; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.text.SimpleDateFormat; +import java.util.Date; + +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTextField; + +import com.chint.plm.common.util.StringUtils; +import com.teamcenter.rac.aif.AbstractAIFDialog; + +public class ConfirmDialogDateUtil extends AbstractAIFDialog { + + JTextField date; + String dateText; + + boolean flag = false; + private JButton b_ok; + private JButton b_ch; + private String text; + private String title; + private String retult = "-1"; + + public ConfirmDialogDateUtil(AbstractAIFDialog parent, String title, String text, int initUI2) { + super(parent, true); + this.text = text; + this.title = title; + initUI2(null); + addListener(); + showDialog(); + } + + public ConfirmDialogDateUtil(AbstractAIFDialog parent, String title, String text) { + super(parent, true); + this.text = text; + this.title = title; + initUI(null); + addListener(); + showDialog(); + } + + public ConfirmDialogDateUtil(String title, String text, Dimension dim) { + super(true); + this.text = text; + this.title = title; + initUI(dim); + addListener(); + showDialog(); + } + + public ConfirmDialogDateUtil(AbstractAIFDialog parent, String title, String text, Dimension dim, String dateText) { + super(true); + this.text = text; + this.title = title; + this.dateText = dateText; + initUI(dim); + addListener(); + showDialog(); + } + + private void initUI(Dimension dim) { + this.setTitle(title); + if (dim == null) { + this.setPreferredSize(new Dimension(250, 200)); + } else { + this.setPreferredSize(dim); + } + + JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 10, 20)); + JLabel label = new JLabel(text); + panel.add(label); + JPanel panel1 = new JPanel(new FlowLayout(FlowLayout.CENTER, 15, 20)); + date = new JTextField(); + SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd"); + Date time = new Date(); + String nowDate = sdfDate.format(time); + if (StringUtils.isBlank(dateText)) { + date.setText(nowDate); + } else { + date.setText(dateText); + } + date.setEditable(false); + DateChooser dateChooser = DateChooser.getInstance("yyyy-MM-dd"); + dateChooser.register(date); + panel1.add(date); + JPanel panel2 = new JPanel(new FlowLayout(FlowLayout.CENTER, 20, 20)); + b_ok = new JButton(""); + b_ch = new JButton(""); + panel2.add(b_ok); + panel2.add(b_ch); + this.setLayout(new BorderLayout()); + this.add(BorderLayout.NORTH, panel); + this.add(BorderLayout.CENTER, panel1); + this.add(BorderLayout.SOUTH, panel2); + } + + private void initUI2(Dimension dim) { + this.setTitle(title); + if (dim == null) { + this.setPreferredSize(new Dimension(400, 150)); + } else { + this.setPreferredSize(dim); + } + + JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 15, 20)); + JLabel label = new JLabel(text); + panel.add(label); + this.setLayout(new BorderLayout()); + JPanel panel2 = new JPanel(new FlowLayout(FlowLayout.CENTER, 15, 20)); + b_ok = new JButton("ȷ"); + b_ch = new JButton(""); + panel2.add(b_ok); + this.add(BorderLayout.CENTER, panel); + this.add(BorderLayout.SOUTH, panel2); + } + + private void addListener() { + b_ok.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + flag = true; + retult = "1"; + disposeDialog(); + } + }); + b_ch.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + flag = false; + retult = "0"; + disposeDialog(); + } + }); + } + + public String getDateText() { + return date.getText(); + } + + public boolean getResult() { + return flag; + } + + public String getRetult2() { + return retult; + } + +} diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/util/DateChooser.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/util/DateChooser.java new file mode 100644 index 0000000..0c39076 --- /dev/null +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/util/DateChooser.java @@ -0,0 +1,698 @@ +package com.connor.chint.sap2.util; + +import java.awt.BasicStroke; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Cursor; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.GridLayout; +import java.awt.Point; +import java.awt.Polygon; +import java.awt.Stroke; +import java.awt.Toolkit; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.MouseMotionListener; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Comparator; +import java.util.Date; +import java.util.Iterator; +import java.util.List; + +import javax.swing.BorderFactory; +import javax.swing.JComponent; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTextField; +import javax.swing.Popup; +import javax.swing.PopupFactory; +import javax.swing.SwingUtilities; +import javax.swing.event.AncestorEvent; +import javax.swing.event.AncestorListener; + +public class DateChooser extends JPanel { + private static final long serialVersionUID = 4529266044762990227L; + private Date initDate; + private Calendar now; + private Calendar select; + private JPanel monthPanel; + private DateChooser.JP1 jp1; + private DateChooser.JP2 jp2; + private DateChooser.JP3 jp3; + private DateChooser.JP4 jp4; + private Font font; + private final DateChooser.LabelManager lm; + private SimpleDateFormat sdf; + private boolean isShow; + private Popup pop; + private JComponent showDate; + + public static DateChooser getInstance() { + return new DateChooser(); + } + + public static DateChooser getInstance(Date date) { + return new DateChooser(date); + } + + public static DateChooser getInstance(String format) { + return new DateChooser(format); + } + + public static DateChooser getInstance(Date date, String format) { + return new DateChooser(date, format); + } + + private DateChooser() { + this(new Date()); + } + + private DateChooser(Date date) { + this(date, "yyyyMMdd"); + } + + private DateChooser(String format) { + this(new Date(), format); + } + + private DateChooser(Date date, String format) { + this.now = Calendar.getInstance(); + this.font = new Font("", 0, 12); + this.lm = new DateChooser.LabelManager(); + this.isShow = false; + this.initDate = date; + this.sdf = new SimpleDateFormat(format); + this.select = Calendar.getInstance(); + this.select.setTime(this.initDate); + this.initPanel(); + } + + public void setEnabled(boolean b) { + super.setEnabled(b); + this.showDate.setEnabled(b); + } + + public Date getDate() { + return this.select.getTime(); + } + + public String getStrDate() { + return this.sdf.format(this.select.getTime()); + } + + public String getStrDate(String format) { + this.sdf = new SimpleDateFormat(format); + return this.sdf.format(this.select.getTime()); + } + + private void initPanel() { + this.monthPanel = new JPanel(new BorderLayout()); + this.monthPanel.setBorder(BorderFactory.createLineBorder(Color.BLUE)); + JPanel up = new JPanel(new BorderLayout()); + up.add(this.jp1 = new DateChooser.JP1(), "North"); + up.add(this.jp2 = new DateChooser.JP2(), "Center"); + this.monthPanel.add(this.jp3 = new DateChooser.JP3(), "Center"); + this.monthPanel.add(up, "North"); + this.monthPanel.add(this.jp4 = new DateChooser.JP4(), "South"); + this.addAncestorListener(new AncestorListener() { + public void ancestorAdded(AncestorEvent event) { + } + + public void ancestorRemoved(AncestorEvent event) { + } + + public void ancestorMoved(AncestorEvent event) { + DateChooser.this.hidePanel(); + } + }); + } + + public void register(final JComponent showDate) { + this.showDate = showDate; + showDate.setRequestFocusEnabled(true); + showDate.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent me) { + showDate.requestFocusInWindow(); + } + }); + this.setBackground(Color.WHITE); + this.add(showDate, "Center"); + this.setPreferredSize(new Dimension(90, 25)); + this.setBorder(BorderFactory.createLineBorder(Color.GRAY)); + showDate.addMouseListener(new MouseAdapter() { + public void mouseEntered(MouseEvent me) { + if (showDate.isEnabled()) { + showDate.setCursor(new Cursor(12)); + showDate.setForeground(Color.RED); + } + + } + + public void mouseExited(MouseEvent me) { + if (showDate.isEnabled()) { + showDate.setCursor(new Cursor(0)); + showDate.setForeground(Color.BLACK); + } + + } + + public void mousePressed(MouseEvent me) { + if (showDate.isEnabled()) { + showDate.setForeground(Color.CYAN); + if (DateChooser.this.isShow) { + DateChooser.this.hidePanel(); + } else { + DateChooser.this.showPanel(showDate); + } + } + + } + + public void mouseReleased(MouseEvent me) { + if (showDate.isEnabled()) { + showDate.setForeground(Color.BLACK); + } + + } + }); + showDate.addFocusListener(new FocusListener() { + public void focusLost(FocusEvent e) { + DateChooser.this.hidePanel(); + } + + public void focusGained(FocusEvent e) { + } + }); + } + + private void refresh() { + this.jp1.updateDate(); + this.jp2.updateDate(); + this.jp3.updateDate(); + this.jp4.updateDate(); + SwingUtilities.updateComponentTreeUI(this); + } + + private void commit() { + if (this.showDate instanceof JTextField) { + ((JTextField) this.showDate).setText(this.sdf.format(this.select.getTime())); + } else if (this.showDate instanceof JLabel) { + ((JLabel) this.showDate).setText(this.sdf.format(this.select.getTime())); + } + + this.hidePanel(); + } + + private void hidePanel() { + if (this.pop != null) { + this.isShow = false; + this.pop.hide(); + this.pop = null; + } + + } + + private void showPanel(Component owner) { + if (this.pop != null) { + this.pop.hide(); + } + + Point show = new Point(0, this.showDate.getHeight()); + SwingUtilities.convertPointToScreen(show, this.showDate); + Dimension size = Toolkit.getDefaultToolkit().getScreenSize(); + int x = show.x; + int y = show.y; + if (x < 0) { + x = 0; + } + + if (x > size.width - 295) { + x = size.width - 295; + } + + if (y >= size.height - 170) { + y -= 188; + } + + this.pop = PopupFactory.getSharedInstance().getPopup(owner, this.monthPanel, x, y); + this.pop.show(); + this.isShow = true; + } + + public static void main(String[] args) { + DateChooser dateChooser1 = getInstance("yyyy-MM-dd HH:mm"); + DateChooser dateChooser2 = getInstance("yyyy-MM-dd"); + JTextField showDate1 = new JTextField("ѡ"); + JLabel showDate2 = new JLabel("ѡ"); + dateChooser1.register(showDate1); + dateChooser2.register(showDate2); + JFrame jf = new JFrame("ѡ"); + jf.add(showDate1, "North"); + jf.add(showDate2, "South"); + jf.pack(); + jf.setLocationRelativeTo((Component) null); + jf.setVisible(true); + jf.setDefaultCloseOperation(3); + } + + private class JP1 extends JPanel { + private static final long serialVersionUID = -5638853772805561174L; + JLabel yearleft; + JLabel yearright; + JLabel monthleft; + JLabel monthright; + JLabel center; + JLabel centercontainer; + + public JP1() { + super(new BorderLayout()); + this.setBackground(new Color(160, 185, 215)); + this.initJP1(); + } + + private void initJP1() { + this.yearleft = new JLabel(" <<", 0); + this.yearleft.setToolTipText("һ"); + this.yearright = new JLabel(">> ", 0); + this.yearright.setToolTipText("һ"); + this.yearleft.setBorder(BorderFactory.createEmptyBorder(2, 0, 0, 0)); + this.yearright.setBorder(BorderFactory.createEmptyBorder(2, 0, 0, 0)); + this.monthleft = new JLabel(" <", 4); + this.monthleft.setToolTipText("һ"); + this.monthright = new JLabel("> ", 2); + this.monthright.setToolTipText("һ"); + this.monthleft.setBorder(BorderFactory.createEmptyBorder(2, 30, 0, 0)); + this.monthright.setBorder(BorderFactory.createEmptyBorder(2, 0, 0, 30)); + this.centercontainer = new JLabel("", 0); + this.centercontainer.setLayout(new BorderLayout()); + this.center = new JLabel("", 0); + this.centercontainer.add(this.monthleft, "West"); + this.centercontainer.add(this.center, "Center"); + this.centercontainer.add(this.monthright, "East"); + this.add(this.yearleft, "West"); + this.add(this.centercontainer, "Center"); + this.add(this.yearright, "East"); + this.setPreferredSize(new Dimension(295, 25)); + this.updateDate(); + this.yearleft.addMouseListener(new MouseAdapter() { + public void mouseEntered(MouseEvent me) { + JP1.this.yearleft.setCursor(new Cursor(12)); + JP1.this.yearleft.setForeground(Color.RED); + } + + public void mouseExited(MouseEvent me) { + JP1.this.yearleft.setCursor(new Cursor(0)); + JP1.this.yearleft.setForeground(Color.BLACK); + } + + public void mousePressed(MouseEvent me) { + DateChooser.this.select.add(1, -1); + JP1.this.yearleft.setForeground(Color.WHITE); + DateChooser.this.refresh(); + } + + public void mouseReleased(MouseEvent me) { + JP1.this.yearleft.setForeground(Color.BLACK); + } + }); + this.yearright.addMouseListener(new MouseAdapter() { + public void mouseEntered(MouseEvent me) { + JP1.this.yearright.setCursor(new Cursor(12)); + JP1.this.yearright.setForeground(Color.RED); + } + + public void mouseExited(MouseEvent me) { + JP1.this.yearright.setCursor(new Cursor(0)); + JP1.this.yearright.setForeground(Color.BLACK); + } + + public void mousePressed(MouseEvent me) { + DateChooser.this.select.add(1, 1); + JP1.this.yearright.setForeground(Color.WHITE); + DateChooser.this.refresh(); + } + + public void mouseReleased(MouseEvent me) { + JP1.this.yearright.setForeground(Color.BLACK); + } + }); + this.monthleft.addMouseListener(new MouseAdapter() { + public void mouseEntered(MouseEvent me) { + JP1.this.monthleft.setCursor(new Cursor(12)); + JP1.this.monthleft.setForeground(Color.RED); + } + + public void mouseExited(MouseEvent me) { + JP1.this.monthleft.setCursor(new Cursor(0)); + JP1.this.monthleft.setForeground(Color.BLACK); + } + + public void mousePressed(MouseEvent me) { + DateChooser.this.select.add(2, -1); + JP1.this.monthleft.setForeground(Color.WHITE); + DateChooser.this.refresh(); + } + + public void mouseReleased(MouseEvent me) { + JP1.this.monthleft.setForeground(Color.BLACK); + } + }); + this.monthright.addMouseListener(new MouseAdapter() { + public void mouseEntered(MouseEvent me) { + JP1.this.monthright.setCursor(new Cursor(12)); + JP1.this.monthright.setForeground(Color.RED); + } + + public void mouseExited(MouseEvent me) { + JP1.this.monthright.setCursor(new Cursor(0)); + JP1.this.monthright.setForeground(Color.BLACK); + } + + public void mousePressed(MouseEvent me) { + DateChooser.this.select.add(2, 1); + JP1.this.monthright.setForeground(Color.WHITE); + DateChooser.this.refresh(); + } + + public void mouseReleased(MouseEvent me) { + JP1.this.monthright.setForeground(Color.BLACK); + } + }); + } + + private void updateDate() { + this.center.setText(DateChooser.this.select.get(1) + "" + (DateChooser.this.select.get(2) + 1) + ""); + } + } + + private class JP2 extends JPanel { + private static final long serialVersionUID = -8176264838786175724L; + + public JP2() { + this.setPreferredSize(new Dimension(295, 20)); + } + + protected void paintComponent(Graphics g) { + g.setFont(DateChooser.this.font); + g.drawString(" һ ڶ ", 5, 10); + g.drawLine(0, 15, this.getWidth(), 15); + } + + private void updateDate() { + } + } + + private class JP3 extends JPanel { + private static final long serialVersionUID = 43157272447522985L; + + public JP3() { + super(new GridLayout(6, 7)); + this.setPreferredSize(new Dimension(295, 100)); + this.initJP3(); + } + + private void initJP3() { + this.updateDate(); + } + + public void updateDate() { + this.removeAll(); + DateChooser.this.lm.clear(); + Date temp = DateChooser.this.select.getTime(); + Calendar select = Calendar.getInstance(); + select.setTime(temp); + select.set(5, 1); + int index = select.get(7); + int sum = index == 1 ? 8 : index; + select.add(5, 0 - sum); + + for (int i = 0; i < 42; ++i) { + select.add(5, 1); + DateChooser.this.lm.addLabel(DateChooser.this.new MyLabel(select.get(1), select.get(2), select.get(5))); + } + + Iterator var6 = DateChooser.this.lm.getLabels().iterator(); + + while (var6.hasNext()) { + DateChooser.MyLabel my = (DateChooser.MyLabel) var6.next(); + this.add(my); + } + + select.setTime(temp); + } + } + + private class JP4 extends JPanel { + private static final long serialVersionUID = -6391305687575714469L; + + public JP4() { + super(new BorderLayout()); + this.setPreferredSize(new Dimension(295, 20)); + this.setBackground(new Color(160, 185, 215)); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + final JLabel jl = new JLabel(": " + sdf.format(new Date())); + jl.setToolTipText("ѡ"); + this.add(jl, "Center"); + jl.addMouseListener(new MouseAdapter() { + public void mouseEntered(MouseEvent me) { + jl.setCursor(new Cursor(12)); + jl.setForeground(Color.RED); + } + + public void mouseExited(MouseEvent me) { + jl.setCursor(new Cursor(0)); + jl.setForeground(Color.BLACK); + } + + public void mousePressed(MouseEvent me) { + jl.setForeground(Color.WHITE); + DateChooser.this.select.setTime(new Date()); + DateChooser.this.refresh(); + DateChooser.this.commit(); + } + + public void mouseReleased(MouseEvent me) { + jl.setForeground(Color.BLACK); + } + }); + } + + private void updateDate() { + } + } + + private class LabelManager { + private List list = new ArrayList(); + + public LabelManager() { + } + + public List getLabels() { + return this.list; + } + + public void addLabel(DateChooser.MyLabel my) { + this.list.add(my); + } + + public void clear() { + this.list.clear(); + } + + public void setSelect(DateChooser.MyLabel my, boolean b) { + Iterator var4 = this.list.iterator(); + + while (var4.hasNext()) { + DateChooser.MyLabel m = (DateChooser.MyLabel) var4.next(); + if (m.equals(my)) { + m.setSelected(true, b); + } else { + m.setSelected(false, b); + } + } + + } + + public void setSelect(Point p, boolean b) { + if (b) { + boolean findPrevious = false; + boolean findNext = false; + Iterator var6 = this.list.iterator(); + + while (var6.hasNext()) { + DateChooser.MyLabel mx = (DateChooser.MyLabel) var6.next(); + if (mx.contains(p)) { + findNext = true; + if (mx.getIsSelected()) { + findPrevious = true; + } else { + mx.setSelected(true, b); + } + } else if (mx.getIsSelected()) { + findPrevious = true; + mx.setSelected(false, b); + } + + if (findPrevious && findNext) { + return; + } + } + } else { + DateChooser.MyLabel temp = null; + Iterator var9 = this.list.iterator(); + + while (var9.hasNext()) { + DateChooser.MyLabel m = (DateChooser.MyLabel) var9.next(); + if (m.contains(p)) { + temp = m; + } else if (m.getIsSelected()) { + m.setSelected(false, b); + } + } + + if (temp != null) { + temp.setSelected(true, b); + } + } + + } + } + + private class MyLabel extends JLabel + implements Comparator, MouseListener, MouseMotionListener { + private static final long serialVersionUID = 3668734399227577214L; + private int year; + private int month; + private int day; + private boolean isSelected; + + public MyLabel(int year, int month, int day) { + super("" + day, 0); + this.year = year; + this.day = day; + this.month = month; + this.addMouseListener(this); + this.addMouseMotionListener(this); + this.setFont(DateChooser.this.font); + if (month == DateChooser.this.select.get(2)) { + this.setForeground(Color.BLACK); + } else { + this.setForeground(Color.LIGHT_GRAY); + } + + if (day == DateChooser.this.select.get(5)) { + this.setBackground(new Color(160, 185, 215)); + } else { + this.setBackground(Color.WHITE); + } + + } + + public boolean getIsSelected() { + return this.isSelected; + } + + public void setSelected(boolean b, boolean isDrag) { + this.isSelected = b; + if (b && !isDrag) { + int temp = DateChooser.this.select.get(2); + DateChooser.this.select.set(this.year, this.month, this.day); + if (temp == this.month) { + SwingUtilities.updateComponentTreeUI(DateChooser.this.jp3); + } else { + DateChooser.this.refresh(); + } + } + + this.repaint(); + } + + protected void paintComponent(Graphics g) { + if (this.day == DateChooser.this.select.get(5) && this.month == DateChooser.this.select.get(2)) { + g.setColor(new Color(160, 185, 215)); + g.fillRect(0, 0, this.getWidth(), this.getHeight()); + } + + if (this.year == DateChooser.this.now.get(1) && this.month == DateChooser.this.now.get(2) + && this.day == DateChooser.this.now.get(5)) { + Graphics2D gdx = (Graphics2D) g; + gdx.setColor(Color.RED); + Polygon p = new Polygon(); + p.addPoint(0, 0); + p.addPoint(this.getWidth() - 1, 0); + p.addPoint(this.getWidth() - 1, this.getHeight() - 1); + p.addPoint(0, this.getHeight() - 1); + gdx.drawPolygon(p); + } + + if (this.isSelected) { + Stroke s = new BasicStroke(1.0F, 2, 2, 1.0F, new float[] { 2.0F, 2.0F }, 1.0F); + Graphics2D gd = (Graphics2D) g; + gd.setStroke(s); + gd.setColor(Color.BLACK); + Polygon px = new Polygon(); + px.addPoint(0, 0); + px.addPoint(this.getWidth() - 1, 0); + px.addPoint(this.getWidth() - 1, this.getHeight() - 1); + px.addPoint(0, this.getHeight() - 1); + gd.drawPolygon(px); + } + + super.paintComponent(g); + } + + public boolean contains(Point p) { + return this.getBounds().contains(p); + } + + private void update() { + this.repaint(); + } + + public void mouseClicked(MouseEvent e) { + } + + public void mousePressed(MouseEvent e) { + this.isSelected = true; + this.update(); + } + + public void mouseReleased(MouseEvent e) { + Point p = SwingUtilities.convertPoint(this, e.getPoint(), DateChooser.this.jp3); + DateChooser.this.lm.setSelect(p, false); + DateChooser.this.commit(); + } + + public void mouseEntered(MouseEvent e) { + } + + public void mouseExited(MouseEvent e) { + } + + public void mouseDragged(MouseEvent e) { + Point p = SwingUtilities.convertPoint(this, e.getPoint(), DateChooser.this.jp3); + DateChooser.this.lm.setSelect(p, true); + } + + public void mouseMoved(MouseEvent e) { + } + + public int compare(DateChooser.MyLabel o1, DateChooser.MyLabel o2) { + Calendar c1 = Calendar.getInstance(); + c1.set(o1.year, o2.month, o1.day); + Calendar c2 = Calendar.getInstance(); + c2.set(o2.year, o2.month, o2.day); + return c1.compareTo(c2); + } + } +} diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/util/KUtil.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/util/KUtil.java index 240f1ff..9ebf8db 100644 --- a/com.connor.chint.sap2/src/com/connor/chint/sap2/util/KUtil.java +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/util/KUtil.java @@ -152,7 +152,7 @@ import plm.xi.com.chintelectric.DT_PROCESSROUTE_S4_RSPRSP_BASEINFO; import plm.xi.com.chintelectric.DT_PROCESSROUTE_S4_RSPZTABLE_RETURN; import plm.xi.com.chintelectric.SI_PROCESSROUTE_PLM_OUT_SYNProxy; -@SuppressWarnings("unused") +@SuppressWarnings({ "unused", "deprecation" }) public class KUtil { public static final String REL_RPOJ_FOLDERS = "IMAN_reference"; @@ -254,8 +254,8 @@ public class KUtil { } } - } catch (TCException e) { - // TODO Auto-generated catch block + } catch (Exception e) { + // Auto-generated catch block e.printStackTrace(); } return maps; @@ -941,8 +941,8 @@ public class KUtil { return component; } } - } catch (TCException e) { - // TODO Auto-generated catch block + } catch (Exception e) { + // Auto-generated catch block e.printStackTrace(); } // return str == null || "".equals(str.trim()); @@ -1268,8 +1268,8 @@ public class KUtil { return uoms[i]; } } - } catch (TCException e) { - // TODO Auto-generated catch block + } catch (Exception e) { + // Auto-generated catch block e.printStackTrace(); } return null; @@ -1318,8 +1318,8 @@ public class KUtil { createInput.add("object_name", folderName); input.add(createInput); // SOAGenericCreateHelper helper = new SOAGenericCreateHelper(); - List list1 = SOAGenericCreateHelper.create(session, itemDef, input); - Iterator it = list1.iterator(); + List list1 = SOAGenericCreateHelper.create(session, itemDef, input); + Iterator it = list1.iterator(); TCComponent component = null; do { if (!it.hasNext()) @@ -2185,4 +2185,22 @@ public class KUtil { String filePath = "C:\\Users\\xiaol\\Desktop\\logs"; removeFiles(filePath); } + /** + * жϱǷΪ + * + * @param val + * @return ǷΪ + */ + public static boolean isEmpty(Object val) { + return val == null || ("" + val).isEmpty(); + } + /** + * + * + */ + public static void refrashNo(JTable t_part) { + for(int i = 0; i < t_part.getRowCount(); i++) { + t_part.setValueAt(i + 1, i, 0); + } + } } diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/util/SAPUtil.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/util/SAPUtil.java index effd153..9830b58 100644 --- a/com.connor.chint.sap2/src/com/connor/chint/sap2/util/SAPUtil.java +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/util/SAPUtil.java @@ -4,6 +4,7 @@ import java.io.IOException; import java.rmi.RemoteException; import java.sql.ResultSet; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; @@ -5448,7 +5449,7 @@ public class SAPUtil { } /* - * ѹش + * TODO ѹش */ public static void recurSAP2(TCComponentBOMLine line, TCComponentItemRevision rev, TCComponentItemRevision partRev, boolean isStruct, TCSession session, String groupName, String now, String txtPath, @@ -6479,5 +6480,30 @@ public class SAPUtil { stub.SI_PUSH_UPDATE_PLM_OUT_SYN(req); } + /** + * ȡָϵƵĸ + * + * @param target Դ + * @param relation ϵ + * @param name + * @return ĸ + * @throws Exception + */ + public static TCComponent getParent(TCComponent target, String relation, String name) throws Exception { + AIFComponentContext[] parents; + if(relation == null || relation.isEmpty()) + parents = target.whereReferencedByTypeRelation(null, null); + else + parents = target.whereReferencedByTypeRelation(null, new String[] { relation }); + System.out.println("parents:" + Arrays.toString(parents)); + for(AIFComponentContext p : parents) { + TCComponent comp = (TCComponent) p.getComponent(); + System.out.println("comp:" + comp); + if(comp.getProperty("object_name").equals(name)) { + return comp; + } + } + return null; + } } diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/util/SqlUtil.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/util/SqlUtil.java index cefcc13..4f43046 100644 --- a/com.connor.chint.sap2/src/com/connor/chint/sap2/util/SqlUtil.java +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/util/SqlUtil.java @@ -704,7 +704,11 @@ public class SqlUtil { * @throws SQLException */ public final static ResultSet read(String sql, Object[] argments) throws SQLException { - return SqlUtil.rs = SqlUtil.getPs(argments, sql).executeQuery(); + PreparedStatement ps = SqlUtil.getPs(argments, sql); + System.out.println("read1"); + SqlUtil.rs = ps.executeQuery(); + System.out.println("read2"); + return SqlUtil.rs; } /** diff --git a/com.connor.chint.sap2/src/com/connor/chint/sap2/util/TableBuilder.java b/com.connor.chint.sap2/src/com/connor/chint/sap2/util/TableBuilder.java index 2a1f6ac..fc99234 100644 --- a/com.connor.chint.sap2/src/com/connor/chint/sap2/util/TableBuilder.java +++ b/com.connor.chint.sap2/src/com/connor/chint/sap2/util/TableBuilder.java @@ -266,6 +266,7 @@ public class TableBuilder { ResultSet rs = SqlUtil.read(sql.toString() + " order by \"GoodsUsed\"", params.toArray(new Object[] {})); while (rs.next()) { + System.out.println("rs:" + rs.getRow()); TableBean bean = new TableBean(rs.getString(1), ind_index); for (int i = 1; i < cnt + 1; i++) { if (ind_Date.containsKey(i)) { @@ -291,8 +292,8 @@ public class TableBuilder { } res.add(bean); } - SqlUtil.free(); } + SqlUtil.free(); return res; } addFilter(sql); @@ -306,6 +307,7 @@ public class TableBuilder { ResultSet rs = SqlUtil.read(sql.toString() + " order by \"GoodsUsed\"", params.toArray(new Object[] {})); System.out.println("index:" + index + " <---> cnt:" + cnt); while (rs.next()) { + System.out.println("rs:" + rs.getRow()); TableBean bean = new TableBean(rs.getString(1), ind_index); for (int i = 1; i < cnt + 1; i++) {