20240712代码上传

master
李冬阳 11 months ago
parent 10e99ce87b
commit 96eac805ed

@ -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

@ -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: .,

@ -137,6 +137,7 @@
<command name="图纸物料关系导入" id="com.connor.chint.sap2.relationImport.RelationImportCommand"/>
<command name="编码清单查询" id="com.connor.chint.sap2.commands.DesignQueryCommand"/>
<command name="整体BOM传递SAP" id="com.connor.chint.sap2.commands.SAPZYZTCommand"/>
<command name="批量导入工艺路线与工时" id="com.connor.chint.sap2.gylxgs.GylxGsBatchImportCommand"/>
<!--报表导出-->
<command name="项目方案清单导出" id="com.connor.chint.sap2.commands.ExportCommand#Proposal"/>
@ -186,6 +187,7 @@
<command name="分配出厂编号" id=" com.connor.chint.sap2.commands.FactoryNoCommand#M030"/>
<command name="诚创系统" id="com.connor.chint.sap2.commands.ElectricalTasksCommand#M030_001"/>
<command name="深化系统" id="com.connor.chint.sap2.commands.ElectricalTasksCommand#M030_002"/>
<command name="深化系统V2" id="com.connor.chint.sap2.commands.ElectricalTasksCommand#M030_002V2"/>
<!--低压柜方案申请-->
<command name="固定单元" id="com.connor.chint.sap2.commands.ApplyCodeCommand#M030_001"/>
<command name="抽屉单元" id="com.connor.chint.sap2.commands.ApplyCodeCommand#M030_002"/>
@ -211,6 +213,7 @@
<command name="拆分方案分配" id="com.connor.chint.sap2.commands.ProgrammeCommand#M030_008"/>
<command name="诚创系统" id="com.connor.chint.sap2.commands.CreateElectricalBOMCommand#M030_001"/>
<command name="深化系统" id="com.connor.chint.sap2.commands.CreateElectricalBOMCommand#M030_002"/>
<command name="深化系统V2" id="com.connor.chint.sap2.commands.CreateElectricalBOMCommand#M030_002V2"/>
<!--图纸批量上传-->
<command name="零件展开图上传" id="com.connor.chint.sap2.zdd023.MyImportCommand#023"/>
<command name="二次图纸上传" id="com.connor.chint.sap2.zdd023.MyImportCommand#024"/>
@ -260,6 +263,8 @@
<command name="生成更改差异文件" id="com.connor.chint.sap2.commands.CreateBOMDifferenceCommand#M011"/>
<command name="生成更改差异文件" id="com.connor.chint.sap2.commands.CreateBOMDifferenceCommand#M030"/>
<command name="生成更改差异文件" id="com.connor.chint.sap2.commands.CreateBOMDifferenceCommandAll"/>
<command name="关联变更内容" id=" com.connor.chint.sap2.commands.ChangeAttachCommand#M030dz"/>
<command name="关联变更内容" id="com.connor.chint.sap2.commands.ChangeAttachCommand#M030"/>
<command name="抓取变更方案" id="com.connor.chint.sap2.dy.DYCaptureChangeCommand#M030dz"/>
@ -307,6 +312,7 @@
<handler commandId="com.chint.plm.costbomreport.BomCostReportCmd" class="com.connor.chint.sap2.KHandler"/>
<handler commandId="com.connor.chint.sap2.commands.AutoCreateBomComd" class="com.connor.chint.sap2.KHandler"/>
<handler commandId="com.connor.chint.sap2.commands.ImpSAPBomCommand" class="com.connor.chint.sap2.KHandler"/>
<handler commandId="com.connor.chint.sap2.gylxgs.GylxGsBatchImportCommand" class="com.connor.chint.sap2.KHandler"/>
<handler commandId="com.connor.chint.sap2.zykg.command.CreateProductionChangeCommand#ztdz" class="com.connor.chint.sap2.KHandler"/>
<handler commandId="com.connor.chint.sap2.commands.ArefreshThCommand" class="com.connor.chint.sap2.KHandler"/>
<handler commandId="com.connor.chint.sap2.commands.ZYProjectAppendixCommand#ztdz" class="com.connor.chint.sap2.KHandler"/>
@ -527,9 +533,11 @@
<handler commandId="com.connor.chint.sap2.commands.ElectricalTasksCommand#M030_001" class="com.connor.chint.sap2.KHandler"/>
<handler commandId="com.connor.chint.sap2.commands.ElectricalTasksCommand#M030_002" class="com.connor.chint.sap2.KHandler"/>
<handler commandId="com.connor.chint.sap2.commands.ElectricalTasksCommand#M030_002V2" class="com.connor.chint.sap2.KHandler"/>
<handler commandId="com.connor.chint.sap2.commands.CreateElectricalBOMCommand#M030_001" class="com.connor.chint.sap2.KHandler"/>
<handler commandId="com.connor.chint.sap2.commands.CreateElectricalBOMCommand#M030_002" class="com.connor.chint.sap2.KHandler"/>
<handler commandId="com.connor.chint.sap2.commands.CreateElectricalBOMCommand#M030_002V2" class="com.connor.chint.sap2.KHandler"/>
<!--图纸上传-->
<handler commandId="com.connor.chint.sap2.zdd023.MyImportCommand#023" class="com.connor.chint.sap2.KHandler"/>
<handler commandId="com.connor.chint.sap2.zdd023.MyImportCommand#024" class="com.connor.chint.sap2.KHandler"/>
@ -594,6 +602,8 @@
<handler commandId="com.connor.chint.sap2.commands.CreateBOMDifferenceCommand#M010" class="com.connor.chint.sap2.KHandler"/>
<handler commandId="com.connor.chint.sap2.commands.CreateBOMDifferenceCommand#M011" class="com.connor.chint.sap2.KHandler"/>
<handler commandId="com.connor.chint.sap2.commands.CreateBOMDifferenceCommand#M030" class="com.connor.chint.sap2.KHandler"/>
<handler commandId="com.connor.chint.sap2.commands.CreateBOMDifferenceCommandAll" class="com.connor.chint.sap2.KHandler"/>
<!--关联变更内容-->
<handler commandId="com.connor.chint.sap2.commands.ChangeAttachCommand#M030dz" class="com.connor.chint.sap2.KHandler"/>
@ -834,6 +844,28 @@
</visibleWhen>
</command>
<command commandId = "com.connor.chint.sap2.commands.ElectricalTasksCommand#M030_002V2" id = "com.connor.chint.sap2.menu.dyct.ElectricalTasksCommand_002V2">
<visibleWhen>
<and>
<or>
<reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/>
<reference definitionId="com.teamcenter.rac.pse.inMainView"/>
</or>
<with
variable="rac_command_suppression">
<not>
<iterate
operator="or">
<equals
value="com.connor.chint.sap2.commands.ElectricalTasksCommand#M030_002V2">
</equals>
</iterate>
</not>
</with>
</and>
</visibleWhen>
</command>
</menu>
<!--提取电气BOM-->
<menu label="提取电气BOM" id="tqdqBOM">
@ -881,6 +913,28 @@
</visibleWhen>
</command>
<command commandId = "com.connor.chint.sap2.commands.CreateElectricalBOMCommand#M030_002V2" id = "com.connor.chint.sap2.menu.dyct.CreateElectricalBOMCommand#M030_002V2">
<visibleWhen>
<and>
<or>
<reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/>
<reference definitionId="com.teamcenter.rac.pse.inMainView"/>
</or>
<with
variable="rac_command_suppression">
<not>
<iterate
operator="or">
<equals
value="com.connor.chint.sap2.commands.CreateElectricalBOMCommand#M030_002V2">
</equals>
</iterate>
</not>
</with>
</and>
</visibleWhen>
</command>
</menu>
<!--方案编码申请-->
@ -4369,6 +4423,27 @@
</and>
</visibleWhen>
</command>
<command commandId = "com.connor.chint.sap2.gylxgs.GylxGsBatchImportCommand" id = "com.connor.chint.sap2.gylxgs.GylxGsBatchImportCommand">
<visibleWhen>
<and>
<or>
<reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/>
<reference definitionId="com.teamcenter.rac.pse.inMainView"/>
</or>
<with
variable="rac_command_suppression">
<not>
<iterate
operator="or">
<equals
value="com.connor.chint.sap2.gylxgs.GylxGsBatchImportCommand">
</equals>
</iterate>
</not>
</with>
</and>
</visibleWhen>
</command>
<command commandId = "com.connor.chint.sap2.commands.DeleteTCMCommand" id = "com.connor.chint.sap2.test.DeleteTCMCommand">
<visibleWhen>
<and>
@ -4568,6 +4643,50 @@
</visibleWhen>
</command>
<!--><!-->
<command commandId = "com.chint.plm.createEcn.CreateEcnCommond" id = "com.chint.plm.createEcn.CreateEcnCommond">
<visibleWhen>
<and>
<or>
<reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/>
<reference definitionId="com.teamcenter.rac.pse.inMainView"/>
</or>
<with
variable="rac_command_suppression">
<not>
<iterate
operator="or">
<equals
value="com.chint.plm.createEcn.CreateEcnCommond">
</equals>
</iterate>
</not>
</with>
</and>
</visibleWhen>
</command>
<command commandId = "com.connor.chint.sap2.commands.CreateBOMDifferenceCommandAll" id = "com.connor.chint.sap2.commands.CreateBOMDifferenceCommandAll">
<visibleWhen>
<and>
<or>
<reference definitionId="com.teamcenter.rac.ui.inMainPerspective"/>
<reference definitionId="com.teamcenter.rac.pse.inMainView"/>
</or>
<with
variable="rac_command_suppression">
<not>
<iterate
operator="or">
<equals
value="com.connor.chint.sap2.commands.CreateBOMDifferenceCommandAll">
</equals>
</iterate>
</not>
</with>
</and>
</visibleWhen>
</command>
<command commandId = "com.connor.chint.sap2.projectTest.VersionCommand" id = "com.connor.chint.sap2.menu.distributionversion">
<visibleWhen>
<and>

@ -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;
} catch (Exception e) {
throw new RuntimeException("请通知管理员检查首选项CHINT_API_URL是否配置");
throw new RuntimeException("请通知管理员检查首选项<" + paramKey + ">是否配置");
}
}

@ -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<TCComponentItemRevision> itemRevisionList) throws Exception {
LoggerUtils.debug("自动投料开始...");
long start = System.nanoTime();
if (CollectionUtils.isNotEmpty(itemRevisionList)) {
pb.setText("自动投料开始...");
pb.showDialog();
Map<String, Map<String, String>> 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<String, Map<String, String>> wlflmMap) throws Exception {
// @SuppressWarnings("deprecation")
private static void onAutoFeeding(TCSession session, String groupId, ProgressBar pb, TCComponentItemRevision itemRevision, Map<String, Map<String, String>> 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<String, ExpandPSData[]> 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<String, String> 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<String, String> wlflmMap, Map<String, ExpandPSData[]> 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);
}
}

@ -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=?";

@ -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;
/**
*
*
* @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;
}
}
}

@ -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;

@ -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();

@ -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<TCComponentItemRevision> selects = new ArrayList<>();
/* 选中的数据集对象 */
private List<TCComponentDataset> datasets = new ArrayList();
private List<TCComponentFolder> folders = new ArrayList();
private List<TCComponentDataset> datasets = new ArrayList<>();
private List<TCComponentFolder> folders = new ArrayList<>();
/* 生产信息传递通知单/更改通知单 */
private List<TCComponent> 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<TCComponentItemRevision> 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<String> list_paths = new ArrayList();
List<String> 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<String, ExpandPSData[]> 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<TCComponentItemRevision> isDownloads,
private void downFiles(TCComponentBOMLine line, Map<String, ExpandPSData[]> bomLineTree, List<TCComponentItemRevision> isDownloads,
boolean flag_downloadDiagram, boolean flag_CAD, boolean flag_CATIA, boolean flag_PDF,
List<String> 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<TCComponentItemRevision> 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<TCComponentItemRevision> isDownloads,
boolean flag_downloadDiagram, boolean flag_CAD, boolean flag_CATIA, boolean flag_PDF,
List<String> 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<String, ExpandPSData[]> 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) {
}

@ -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();
}
}

@ -133,5 +133,20 @@ public class BOMDifCellEditor extends AbstractCellEditor implements TableCellEdi
return null;
}
/**
*
* @param index
* @param add truefalse
*/
public void changeRow(int index, boolean add) {
if(add) {
JComboBox<String> jcom = new JComboBox<String>();
JTextField jtf = new JTextField();
jcom_subclass.add(index, jcom);
jtf_subclass.add(index, jtf);
}else {
jcom_subclass.remove(index);
jtf_subclass.remove(index);
}
}
}

@ -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);
}
}

@ -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<String, String> map_class = new HashMap<>(8); // 大类
private Map<String, String> 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<String> box_class = new JComboBox<String>();
private JComboBox<String> box_subClass = new JComboBox<String>();
private JComboBox<String> box_processType = new JComboBox<String>();
@ -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<String> changeType = new JComboBox<String>();
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) {
// 编辑完成后的操作
try {
int row = t_part.getSelectedRow(), col = t_part.getSelectedColumn();
String val = "" + ((TableCellEditor)e.getSource()).getCellEditorValue();
System.out.println("编辑完成: " + row + "," + col + "==" + val);
HashMap<String, String> 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) {
// 编辑取消后的操作
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) {
// 编辑完成后的操作
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) {
// 编辑取消后的操作
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("<html>物料数量变更:只能是当前物料数量由**减少到**<br>物料新增:当前物料数量由**增加了**个 <br>物料删除物料从BOM中全部移除</html>"));
south.add(BorderLayout.CENTER, panel);
return south;
}
private void addListener() {
btn_cel.addActionListener(new ActionListener() {
//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() {
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<String> 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;
}
}

@ -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<String> jcom_Subclass = null; //小类
private BOMDifCellEditor cellEditor;
private TCComponent tar = null;
// 差异集合
private List<BOMCompareBean> compares = new ArrayList<>();
private ProgressBar pb = null;
// private Map<String, String> map_material = new HashMap<>(6); // 原材料库
private Map<String, TCComponentItemRevision> map_Materials = new HashMap<>();; // 原材料
// private Map<String, TCComponentItemRevision> map_Materials = new HashMap<>();; // 原材料
private Map<String, String> processType = new HashMap<>(32); // 更改类别
private Map<String, String> map_indexs = new HashMap<>(8); // 序号
@ -93,7 +95,7 @@ public class CreateBOMDifferenceDialogzt extends AbstractAIFDialog {
private Map<String, String> map_subclass = new HashMap<>(64); // 小类
// 多选编辑
JPanel selectPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
private JPanel selectPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
private JComboBox<String> box_class = new JComboBox<String>();
private JComboBox<String> box_subClass = new JComboBox<String>();
private JComboBox<String> box_processType = new JComboBox<String>();
@ -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<Entry<String, String>>() {
@Override
public int compare(Entry<String, String> o1, Entry<String, String> 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<String> changeType = new JComboBox<String>();
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<String> jcom_Type = new JComboBox<String>(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) {
// 编辑完成后的操作
try {
int row = t_part.getSelectedRow(), col = t_part.getSelectedColumn();
String val = "" + ((TableCellEditor)e.getSource()).getCellEditorValue();
System.out.println("编辑完成: " + row + "," + col + "==" + val);
HashMap<String, String> 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) {
// 编辑取消后的操作
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) {
// 编辑完成后的操作
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) {
// 编辑取消后的操作
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("<html>物料数量变更:只能是当前物料数量由**减少到**<br>物料新增:当前物料数量由**增加了**个 <br>物料删除物料从BOM中全部移除</html>"));
south.add(BorderLayout.CENTER, panel);
return south;
}
private void addListener() {
btn_cel.addActionListener(new ActionListener() {
//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<String> 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) {

@ -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<String, Object> paramMap = new HashMap<String, Object>();
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<TCComponent> factoryNoComps = new ArrayList<>();
List<String> factoryNos = getFactoryNos(factoryId);
for (String factoryNo : factoryNos) {
Map<String, String> 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<CcemEb> bomChilds = new ArrayList<CcemEb>();
Map<String, TCComponentItemRevision> partItemRevMaps = new LinkedHashMap<String, TCComponentItemRevision>();
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<String, String> 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<TCComponent> 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<String, TCComponentItemRevision> partItemRevMaps, int p_size) {
List<CcemEb> childs = parent.getChilds();
if (childs.size() == 0)
return;
// 排序
Collections.sort(childs, new Comparator<CcemEb>() {
@Override
public int compare(CcemEb o1, CcemEb o2) {
return POIUtil.getIntValue(o1.getBl_sequence_no()) - POIUtil.getIntValue(o2.getBl_sequence_no());
}
});
// 创建结构子集
List<RelativeStructureChildInfo> 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<RelativeStructureChildInfo> 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<String, String> fields = new HashMap<>();
fields.put("WBS号", zt2_WBSNo);
fields.put("物料编码", type + "-*");
TCComponentContextList querys = KUtil.query(session, "查询物料", fields);
List<InterfaceAIFComponent> list = querys.toComponentVector();
int size = list.size();
Collections.sort(list, new Comparator<InterfaceAIFComponent>() {
@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<String> getFactoryNos(String factoryId) {
List<String> 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<String> 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());
}
}

@ -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<String, String> ccp_types = new HashMap<>(16);
// 产成品和出厂编号关系
Map<String, List<String>> ccp_factoryNos = new HashMap<>(16);
// 产成品名称
Map<String, String> ccp_names = new HashMap<>(16);
// 出厂编号:物料编码
Map<String, String> 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<String> 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<String> 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<String> 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<String, String> entry : ccp_types.entrySet()) {
String materialCode = entry.getKey();
String materialCodePart = entry.getValue();
List<String> 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);
}
}
}

@ -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<TCComponent> targets;
// private List<TCComponent> targets;
private List<BatchReviewBean> 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<BatchReviewBean> beans) {
private void refreshTable(List<BatchReviewBean> 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<BatchReviewBean>() {
@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("数据库连接失败,请检查首选项<database_tc>", "", 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<BatchReviewBean> 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 {
}
}
});
}
});
}

@ -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;
}
}

@ -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));
}
}

@ -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<GylxGsBatchImportBean> beanList = readExcelWithXlsx(path, report, message);
if (message.length() == 0) {
Map<String, List<GylxGsBatchImportBean>> 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<GylxGsBatchImportBean> readExcelWithXlsx(String path, ProgressReporter reporter, StringBuilder message) throws Exception {
List<GylxGsBatchImportBean> 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<String, List<GylxGsBatchImportBean>> getGylxGsBatchBeanListMap(List<GylxGsBatchImportBean> beanList) {
Map<String, List<GylxGsBatchImportBean>> beanListMap = new LinkedHashMap<String, List<GylxGsBatchImportBean>>();
for (GylxGsBatchImportBean bean : beanList) {
String key = bean.getTydh();
List<GylxGsBatchImportBean> value = beanListMap.get(key);
if (value == null) {
value = new ArrayList<GylxGsBatchImportBean>();
}
value.add(bean);
beanListMap.put(bean.getTydh(), value);
}
return beanListMap;
}
private void hanGylxGsBatchImport(Map<String, List<GylxGsBatchImportBean>> 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<String, List<GylxGsBatchImportBean>> entry : beanListMap.entrySet()) {
String key = entry.getKey();
String gyh = entry.getValue().get(0).getGyh();
List<GylxGsBatchImportBean> 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<String, String> 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<TCComponentBOMLine> 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<GylxGsBatchImportBean> value) throws Exception {
TCComponentItemRevision gyhCompRevision = null;
TCComponentBOMWindowType bomWinType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow");
TCComponentBOMWindow win = bomWinType.create(null);
LoggerUtils.debug("查询工艺号: " + gyh);
Map<String, String> 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;
}
}

@ -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<TCComponentItemRevision> cParts = new ArrayList<TCComponentItemRevision>();
// Map<TCComponentItem, List<TCComponentItemRevision>> items2 = new HashMap<TCComponentItem, List<TCComponentItemRevision>>();
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<TCComponentItemRevision> cParts = new ArrayList<TCComponentItemRevision>();
// Map<TCComponentItem, List<TCComponentItemRevision>> items2 = new HashMap<TCComponentItem, List<TCComponentItemRevision>>();
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);
}
}
}
}

@ -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();

@ -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<PRD> l_prds = new ArrayList<PRD>();
String now;
private static String MATERIAL_TYPE = "Part";
// private static String MATERIAL_TYPE = "Part";
private AbstractAIFApplication app;
private JComboBox<String> 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<String> f_jcom;
// private JComboBox<String> f_jcom;
protected JComboBox<String> j_Source; // 自制外购
protected JComboBox<String> j_Group;
private JComboBox<String> 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 = ""; // 非必填
String spec = ""; // 非必填
@ -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<String, String> 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 = ""; // 非必填
@ -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 + "]");
@ -2019,13 +2026,21 @@ 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);
}
}
}

@ -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<String,TCComponentItemRevision> classCodeMap = new HashMap<String,TCComponentItemRevision>();
private HashMap<String,BYQProcBean> beanMap = new HashMap<String,BYQProcBean>();
private HashMap<String, TCComponentItemRevision> classCodeMap = new HashMap<>();
private HashMap<String, BYQProcBean> 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<String,TCComponent> mepMap = new HashMap<String,TCComponent>();
@ -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<String, Map<String, Object>> 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<String, Map<String, Object>> gygxMap, double ndxs) throws TCException {
// String type = line.getItemRevision().getType();
TCComponentType type = line.getItemRevision().getTypeComponent();

@ -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<String> 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();// 单元格渲染器

@ -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<BomBean, DYCCProcBean> bomLink_maps = new HashMap<BomBean, DYCCProcBean>();
protected Map<TCComponentItemRevision, List<DYCCProcBean>> rev_Beans = new HashMap<>();
private List<MEProcessBean> meprocs = new ArrayList(64); // 工艺
private List<MEProcessBean> 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<String> paths = new ArrayList<>();
// List<TCComponentDataset> 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<TCComponentItemRevision> 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<DYCCProcBean> p_list = new ArrayList();
List<DYCCProcBean> 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<TCComponentItemRevision> revs = getSelectNodes();
List<DefaultMutableTreeNode> nodes = controller.getSelectNodes();
int[] sels = t_part.getSelectedRows();
@ -1087,10 +1077,10 @@ public class CreateProcDYCCFolderDialog extends AbstractAIFDialog {
pb.startProgress();
pb.setText("开始校验对象工艺信息......");
List<DYCCProcBean> procBeans = new ArrayList<>();
// List<DYCCProcBean> procBeans = new ArrayList<>();
List<BomBean> 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<TCComponentItemRevision> revs, TCComponent comp) throws Exception {
BomBean bean;
// BomBean bean;
List<DYCCProcBean> 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<TCComponent> 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();

@ -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;
@ -16,6 +19,55 @@ public class GYPartBean extends SAPPushBOMBean {
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<String> 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()
};
}
}

@ -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<GYPartBean> 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("数据库连接失败,请检查首选项<database_tc>", "", 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执行人改成定时执行不调用接口
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();
@ -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("正在向SAP传递BOM、工艺信息。。。。。。");
HashMap<String, TCComponentItemRevision> materialMap = new HashMap<>();
HashMap<String, String> 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<String, ExpandPSData[]> 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<TCComponentItemRevision> 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<String> 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<TCComponent> 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<DT_BOM_PLM_REQLIST> list = new ArrayList<DT_BOM_PLM_REQLIST>();
List<DT_PROCESSROUTE_S4_REQLIST> proclist = new ArrayList<DT_PROCESSROUTE_S4_REQLIST>();
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<TCComponentItemRevision> childs_lists,String zt2_WBSNo) throws Exception {
private void sendRev(GYPartBean bean, boolean flag, StringBuffer succsessBuff, List<TCComponentItemRevision> childs_lists,
String zt2_WBSNo, int code, String plmalterstatus, HashMap<String, TCComponentItemRevision> materialMap, HashMap<String, String> ccpMap, boolean yb) throws Exception {
System.out.println("sendRev:" + bean.getPartRev());
TCComponentItemRevision rev = bean.getPartRev();
@ -979,23 +1042,35 @@ public class SAPGYController {
// 变压器BOM传递SAP
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<DT_BOM_PLM_REQLIST> list,
List<DT_PROCESSROUTE_S4_REQLIST> proclist, StringBuffer errMess, Map<String, TCComponent> 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<DT_BOM_PLM_REQLIST> list,
List<DT_PROCESSROUTE_S4_REQLIST> proclist, StringBuffer errMess, Map<String, TCComponent> 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<String, ExpandPSData[]> bomLineTree, HashMap<String, TCComponentItemRevision> materialMap, HashMap<String, String> 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);
}
}
}

@ -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,33 @@ public class SAPGYDialog extends AbstractAIFDialog {
try {
KUtil.setByPass(true);
my = new MyProgressBarCompent("", "高压开关BOM传递SAP......");
controller.sendToSap2(my);
controller.sendToSap2(my, false);
} 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();
}
});
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("", "高压开关BOM传递SAP......");
controller.sendToSap2(my, true);
} catch (Exception e1) {
MessageBox.post(SAPGYDialog.this, "发生错误:" + e1.getMessage(), "", MessageBox.ERROR);
e1.printStackTrace();
@ -265,7 +303,115 @@ public class SAPGYDialog extends AbstractAIFDialog {
}).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<GYPartBean> beans = controller.getSelectedParts();
int len = beans.size();
if (len == 0) {
MessageBox.post("请选择需要提交的产成品", "", 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("BOM传递SAP");
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);

@ -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<String> jcom_Subclass = null; // 小类
private JButton btn_add;
private JButton btn_del;
// private JComboBox<String> jcom_Subclass = null; // 小类
private Map<String, String> processType = null;
private Map<String, String> map_indexs = null; // 序号
private Map<String, String> map_class = null; // 大类
private Map<String, String> map_subclass = null; // 小类
private Map<String, Map<String, String>> class_subclass = null;
private Map<String, Map<String, String>> class_subclass;
private BOMDifCellEditor cellEditor;
private JPanel selectPanel;
private JComboBox<String> box_class;
private JComboBox<String> box_subClass;
private JComboBox<String> 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("<html>物料数量变更:只能是当前物料数量由**减少到**<br>物料新增:当前物料数量由**增加了**个 <br>物料删除物料从BOM中全部移除</html>"));
addListener();
}
private Component getSelectPanel() {
box_class = new JComboBox<String>();
box_subClass = new JComboBox<String>();
box_processType = new JComboBox<String>();
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<String> jcm_reason = new JComboBox<String>();
jcm_reason.addItem("");
box_class.addItem("");
Collections.sort(list, new Comparator<Entry<String, String>>() {
@Override
public int compare(Entry<String, String> o1, Entry<String, String> 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<String> changeType = new JComboBox<String>();
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<String> jcom_Type = new JComboBox<String>(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) {
// 编辑完成后的操作
try {
int row = t_part.getSelectedRow(), col = t_part.getSelectedColumn();
String val = "" + ((TableCellEditor)e.getSource()).getCellEditorValue();
System.out.println("编辑完成: " + row + "," + col + "==" + val);
HashMap<String, String> 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) {
// 编辑取消后的操作
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) {
// 编辑完成后的操作
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) {
// 编辑取消后的操作
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<String, String> 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<String> 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();
}
@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;
}
}
form.unlock();
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);
}
}

@ -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<String> 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;
}
}

@ -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<String> bomLineNodes = list;
//预定义BOM父子对map及ItemRev map
Map<String, ExpandPSData[]> bomLineMap = new HashMap();
Map<String, ExpandPSData[]> bomLineMap = new HashMap<>();
// Map<String, TCComponentItemRevision> 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<TCComponentItemRevision> bomLineMap = new ArrayList<TCComponentItemRevision>();
// Map<String, TCComponentItemRevision> 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<String, ExpandPSData[]> getBomLineTreeNodeSOA(StructureManagement structureService, TCComponentBOMLine bomLine) {
Map<String, ExpandPSData[]> 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){
//将BOM构建成uid父子对关系
for (ExpandPSAllLevelsOutput data : levelResp.output) {
ExpandPSData[] children = data.children;
TCComponentBOMLine parentBomLine = (TCComponentBOMLine) data.parent.bomLine;
bomLineMap.put(parentBomLine.getUid(), children);
}
}
return bomLineMap;
}
}

@ -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;
}
}

@ -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, "yyyy年MM月dd日");
}
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("yyyy年MM月dd日");
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<DateChooser.MyLabel> list = new ArrayList();
public LabelManager() {
}
public List<DateChooser.MyLabel> 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<DateChooser.MyLabel>, 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);
}
}
}

@ -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<TCComponent> list1 = SOAGenericCreateHelper.create(session, itemDef, input);
Iterator<TCComponent> 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);
}
}
}

@ -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;
}
}

@ -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;
}
/**

@ -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++) {

Loading…
Cancel
Save