From 1e146c859628487d5e10a51a2f8444d8e5c7dfd8 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Mon, 4 Nov 2024 15:18:57 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A3=81=E7=89=87=E5=B7=A5=E5=8D=95=E5=B7=A5?= =?UTF-8?q?=E6=AD=A5=20=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IMesProductionProcessContextStepService.java | 3 + .../step/MesWorkOrderCutCheckStepService.java | 4 +- .../MesProductionProcessContextStepService.java | 8 +++ .../step/method/MesPartDataMapSaveStepService.java | 65 ++++++++++++++++------ 4 files changed, 62 insertions(+), 18 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionProcessContextStepService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionProcessContextStepService.java index 5cbb885..51ca58e 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionProcessContextStepService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionProcessContextStepService.java @@ -107,6 +107,9 @@ public interface IMesProductionProcessContextStepService { @ApiOperation(value = "获取上下文零件数据信息") Map getPartDataExtContext(StationRequestBean reqBean); + @ApiOperation(value = "获取上下文零件数据信息") + Map getPartDataContext(StationRequestBean reqBean, Boolean isExt); + @ApiOperation(value = "保存上下文零件数据信息", notes = "[JSON]Map") Boolean dispatchPartDataContext(StationRequestBean reqBean, Map partDataMap); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutCheckStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutCheckStepService.java index 0597fb3..de21f73 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutCheckStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutCheckStepService.java @@ -215,7 +215,7 @@ public class MesWorkOrderCutCheckStepService extends BaseStepService { packProductionPartContextList(productionProcessContext, equipVariableCollectContextList, productionPartContextList, cutScheme, mesWorkOrderCutDetailList, workOrderList); //保存 上下文 零件数据信息 - if (!partDataMapSaveStepService.savePartDataMap2PPC(reqBean, resultBean, stepResult, productionPartContextList, true, true, false).isCompleted()) return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg()); + if (!partDataMapSaveStepService.savePartDataMap2PPC(reqBean, resultBean, stepResult, productionPartContextList, true, true, false, true).isCompleted()) return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg()); // 裁片方案成品配置 List mesCutSchemeFgList = workOrderCutService.queryCutSchemeFgList(cutScheme.getCutCode(), reqBean.getOrganizeCode()); @@ -228,7 +228,7 @@ public class MesWorkOrderCutCheckStepService extends BaseStepService { List workOrderCutDetailModelList = new ArrayList<>(); - Map partDataExtContext = productionProcessContextStepService.getPartDataExtContext(reqBean); + Map partDataExtContext = (Map) stepResult.getObj(); for (MesCutSchemeFg mesCutSchemeFg : mesCutSchemeFgList) { if (StringUtils.isEmpty(mesCutSchemeFg.getPackageSnRuleCode())) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionProcessContextStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionProcessContextStepService.java index 361ee5e..4ac6992 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionProcessContextStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionProcessContextStepService.java @@ -403,6 +403,14 @@ public class MesProductionProcessContextStepService extends BaseStepService impl return !StringUtils.isEmpty(partDataJson) ? JSONObject.parseObject(partDataJson, new TypeReference>() {}) : null; } + //获取上下文零件数据信息 + @Override + public Map getPartDataContext(StationRequestBean reqBean, Boolean isExt) { + String partDataJson = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.PART_DATA_CONTEXT); + return !StringUtils.isEmpty(partDataJson) ? + (!isExt ? JSONObject.parseObject(partDataJson, new TypeReference>() {}) : JSONObject.parseObject(partDataJson, new TypeReference>() {})) : null; + } + //保存上下文零件数据信息 [JSON]Map @Override public Boolean dispatchPartDataContext(StationRequestBean reqBean, Map partDataMap) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/method/MesPartDataMapSaveStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/method/MesPartDataMapSaveStepService.java index 34b221a..27e5eca 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/method/MesPartDataMapSaveStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/method/MesPartDataMapSaveStepService.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.method; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesPartContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; @@ -38,12 +39,22 @@ public class MesPartDataMapSaveStepService extends BaseStepService { private IPartService partService; //保存零件数据信息 + public StepResult savePartDataMap2PPC(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List productionPartContextList, Boolean isBackError, Boolean isFilter, Boolean isSave, Boolean isExt) { + + //从一模多腔信息中搜集零件编码并去重 + List partNoList = (productionPartContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getPartNo()))).map(MesProductionPartContext::getPartNo).collect(Collectors.toList())).stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList()); + + return savePartDataMap(reqBean, resultBean, stepResult, partNoList, isBackError, isFilter, isSave, isExt); + + } + + //保存零件数据信息 public StepResult savePartDataMap2PPC(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List productionPartContextList, Boolean isBackError, Boolean isFilter, Boolean isSave) { //从一模多腔信息中搜集零件编码并去重 List partNoList = (productionPartContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getPartNo()))).map(MesProductionPartContext::getPartNo).collect(Collectors.toList())).stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList()); - return savePartDataMap(reqBean, resultBean, stepResult, partNoList, isBackError, isFilter, isSave); + return savePartDataMap(reqBean, resultBean, stepResult, partNoList, isBackError, isFilter, isSave, false); } @@ -53,19 +64,19 @@ public class MesPartDataMapSaveStepService extends BaseStepService { //从一模多腔信息中搜集零件编码并去重 List partNoList = (productionPartContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getPartNo()))).map(MesProductionPartContext::getPartNo).collect(Collectors.toList())).stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList()); - return savePartDataMap(reqBean, resultBean, stepResult, partNoList, isBackError, isFilter, true); + return savePartDataMap(reqBean, resultBean, stepResult, partNoList, isBackError, isFilter, true, false); } - //保存零件数据信息 【isBackError=false: 抛出异常】【isFilter=false: 重新查询所有零件;true: 过滤之后查询未缓存的零件之后再进行合并前面已缓存过的零件】 + //保存零件数据信息 public StepResult savePartDataMap(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List partNoList, Boolean isBackError, Boolean isFilter) { - return savePartDataMap(reqBean, resultBean, stepResult, partNoList, isBackError, isFilter, true); + return savePartDataMap(reqBean, resultBean, stepResult, partNoList, isBackError, isFilter, true, false); } - //保存零件数据信息 【isBackError=false: 抛出异常】【isFilter=false: 重新查询所有零件;true: 过滤之后查询未缓存的零件之后再进行合并前面已缓存过的零件】 - public StepResult savePartDataMap(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List partNoList, Boolean isBackError, Boolean isFilter, Boolean isSave) { + //保存零件数据信息 【isBackError=false: 抛出异常】【isFilter=false: 重新查询所有零件;true: 过滤之后查询未缓存的零件之后再进行合并前面已缓存过的零件; isExt=false返回MesPart,true返回MesPartContext】 + public StepResult savePartDataMap(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List partNoList, Boolean isBackError, Boolean isFilter, Boolean isSave, Boolean isExt) { if (CollectionUtils.isEmpty(partNoList)) { stepResult.isCompleted(false).msg("获取零件信息失败,零件编码不存在!"); @@ -73,38 +84,54 @@ public class MesPartDataMapSaveStepService extends BaseStepService { } //从上下文中取出零件信息集合 - Map partDataMap = productionProcessContextStepService.getPartDataContext(reqBean); + Map partDataMap = productionProcessContextStepService.getPartDataContext(reqBean, isExt); //验证上下文中取出零件信息集合是否匹配当前搜集的零件编码 if (!CollectionUtils.isEmpty(partDataMap) && partDataMap.keySet().containsAll(partNoList)) return stepResult.obj(partDataMap); //新零件MAP - Map finalPartDataMap; + Map finalPartDataMap = null; + Map finalPartDataExtMap = null; if (!isFilter) { //根据物料编码集合查询物料信息 - finalPartDataMap = partService.getPartMap(reqBean.getOrganizeCode(), partNoList); + if (!isExt) finalPartDataMap = partService.getPartMap(reqBean.getOrganizeCode(), partNoList); + else { + List partList = partService.getPartList(reqBean.getOrganizeCode(), partNoList); + finalPartDataExtMap = getPartMap(partList); + } } else { //已缓存的零件号 List containPartNoList = CollectionUtils.isEmpty(partDataMap) ? null : partNoList.stream().filter(o -> (!StringUtils.isEmpty(o) && partDataMap.containsKey(o))).collect(Collectors.toList()); //未缓存的零件号 List unContainPartNoList = CollectionUtils.isEmpty(partDataMap) ? partNoList : partNoList.stream().filter(o -> (!StringUtils.isEmpty(o) && !partDataMap.containsKey(o))).collect(Collectors.toList()); //根据未缓存的零件号集合查询物料信息 - finalPartDataMap = partService.getPartMap(reqBean.getOrganizeCode(), unContainPartNoList); + if (!isExt) finalPartDataMap = partService.getPartMap(reqBean.getOrganizeCode(), unContainPartNoList); + else { + List partList = partService.getPartList(reqBean.getOrganizeCode(), partNoList); + finalPartDataExtMap = getPartMap(partList); + } //合并零件号 - if (!CollectionUtils.isEmpty(finalPartDataMap) && !CollectionUtils.isEmpty(containPartNoList)) containPartNoList.stream().filter(o -> !StringUtils.isEmpty(o)).forEach(o -> finalPartDataMap.put(o, partDataMap.get(o))); + if ((!CollectionUtils.isEmpty(finalPartDataMap) || !CollectionUtils.isEmpty(finalPartDataExtMap)) && !CollectionUtils.isEmpty(containPartNoList)) { + for (String partNo : containPartNoList) { + if (StringUtils.isEmpty(partNo)) continue; + if (!isExt) finalPartDataMap.put(partNo, partDataMap.get(partNo)); + else finalPartDataExtMap.put(partNo, (MesPartContext) partDataMap.get(partNo)); + } + } } //零件信息缺失 抛出异常 - List filterList = CollectionUtils.isEmpty(finalPartDataMap) ? null : partNoList.stream().filter(o -> (!StringUtils.isEmpty(o) && !finalPartDataMap.containsKey(o))).collect(Collectors.toList()); + List finalPartList = !isExt ? (CollectionUtils.isEmpty(finalPartDataMap) ? null : new ArrayList<>(finalPartDataMap.keySet())) : (CollectionUtils.isEmpty(finalPartDataExtMap) ? null : new ArrayList<>(finalPartDataExtMap.keySet())); + List filterList = CollectionUtils.isEmpty(finalPartList) ? null : partNoList.stream().filter(o -> (!StringUtils.isEmpty(o) && !finalPartList.contains(o))).collect(Collectors.toList()); //保存上下文零件数据信息 - if (!CollectionUtils.isEmpty(finalPartDataMap) && CollectionUtils.isEmpty(filterList)) { - if (isSave) productionProcessContextStepService.dispatchPartDataContext(reqBean, finalPartDataMap); - return stepResult.obj(finalPartDataMap); + if (!CollectionUtils.isEmpty(finalPartList) && CollectionUtils.isEmpty(filterList)) { + if (isSave) productionProcessContextStepService.dispatchPartDataContext(reqBean, !isExt ? finalPartDataMap : finalPartDataExtMap); + return stepResult.obj(!isExt ? finalPartDataMap : finalPartDataExtMap); } //验证错误 根据isBackError判断是否抛出异常 - stepResult.isCompleted(false).msg(String.format("请检查零件信息,零件编码%s信息不存在!", CollectionUtils.isEmpty(finalPartDataMap) ? partNoList.toString() : filterList.toString())); + stepResult.isCompleted(false).msg(String.format("请检查零件信息,零件编码%s信息不存在!", CollectionUtils.isEmpty(finalPartList) ? partNoList.toString() : filterList.toString())); if (!isBackError) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), stepResult.getMsg()); @@ -160,4 +187,10 @@ public class MesPartDataMapSaveStepService extends BaseStepService { return dataList; } + private Map getPartMap(List partList) { + partList = CollectionUtils.isEmpty(partList) ? null : + partList.stream().distinct().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(MesPart::getPartNo))), ArrayList::new)); + return CollectionUtils.isEmpty(partList) ? null : partList.stream().filter(o -> null != o).collect(Collectors.toMap(MesPart::getPartNo, o -> new MesPartContext(o))); + } + }