From 3d9b4e6aa2030c3979c3bda49fcc3ace840e0304 Mon Sep 17 00:00:00 2001 From: "xiangwei.zhang" <752558143@qq.com> Date: Fri, 27 Sep 2024 14:32:52 +0800 Subject: [PATCH 01/24] =?UTF-8?q?=E5=88=A4=E6=96=AD=E5=8F=AF=E7=96=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java index f8f340e..75f9f16 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java @@ -238,7 +238,7 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService partInspection = createPartInspection(model, MesExtEnumUtil.PART_INSPECTION_STATUS.QUALIFIED.getValue(), org); if (model.getOptType() != null && model.getOptType() == 2) { - partInspection .setRefundFlag(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + partInspection.setRefundFlag(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); } partInspectionRepository.save(partInspection); From f9415668a3ede873fde8975c459ecde473f00841 Mon Sep 17 00:00:00 2001 From: "xiangwei.zhang" <752558143@qq.com> Date: Fri, 27 Sep 2024 18:26:37 +0800 Subject: [PATCH 02/24] =?UTF-8?q?=E5=88=A4=E6=96=AD=E5=8F=AF=E7=96=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java | 5 +++++ .../serviceimpl/step/MesProdCraftRouteCheckStepService.java | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java index 75f9f16..1ebd00d 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java @@ -323,6 +323,11 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService if (StringUtils.isEmpty(model.getPartInspection())) { partInspection = createPartInspection(model, MesExtEnumUtil.PART_INSPECTION_STATUS.FAIL.getValue(), org); + + if (model.getOptType() != null && model.getOptType() == 2) { + partInspection.setRefundFlag(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + } + model.setPartInspection(partInspectionRepository.save(partInspection)); List defectTypeNoExitList = new ArrayList<>(); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProdCraftRouteCheckStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProdCraftRouteCheckStepService.java index 2ea32c0..4fff481 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProdCraftRouteCheckStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProdCraftRouteCheckStepService.java @@ -124,7 +124,7 @@ public class MesProdCraftRouteCheckStepService extends BaseStepService { //查询工艺路线数据 private void handleProdCraftData(StationRequestBean reqBean, MesWorkCenter workCenter, String partNo, Map> craftRouteDataMap) { - List craftRouteDetailList = fsmRouteDataService.handleProdCraftData(reqBean, workCenter.getCenterType(), partNo); + List craftRouteDetailList = fsmRouteDataService.handleProdCraftData(reqBean, workCenter.getCenterType(), partNo, true); if (!CollectionUtils.isEmpty(craftRouteDetailList)) craftRouteDataMap.put(partNo, craftRouteDetailList); } From ccc52308e30dcdf7df707139c34ef1f84997a723 Mon Sep 17 00:00:00 2001 From: "xiangwei.zhang" <752558143@qq.com> Date: Fri, 27 Sep 2024 19:41:34 +0800 Subject: [PATCH 03/24] =?UTF-8?q?=E5=88=A4=E6=96=AD=E5=8F=AF=E7=96=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 0dc8741..1f9ba25 100644 --- a/pom.xml +++ b/pom.xml @@ -29,11 +29,11 @@ INFO true UTF-8 + - 1.0.0-yfai 1.0.0.1-patch 1.0.0-yfai From a05cd762bc334f0eebbc8dd15b445fe98425c365 Mon Sep 17 00:00:00 2001 From: "xiangwei.zhang" <752558143@qq.com> Date: Sun, 29 Sep 2024 09:32:11 +0800 Subject: [PATCH 04/24] =?UTF-8?q?=E6=9D=A1=E7=A0=81=E6=89=93=E5=8D=B0?= =?UTF-8?q?=E6=AC=A1=E6=95=B0=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apiservice/serviceimpl/busi/MesProduceSnPrintService.java | 2 ++ .../serviceimpl/step/MesProductSnPrintStepService.java | 10 +++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnPrintService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnPrintService.java index bbf41be..08e9463 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnPrintService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnPrintService.java @@ -171,6 +171,8 @@ public class MesProduceSnPrintService implements IMesProduceSnPrintService { resultModel.getMesProduceSnList().forEach(mesProduceSn -> { mesProduceSn.setWorkCenterCode(workCenterCode); + mesProduceSn.setPrintCount(MesPcnExtConstWords.ONE); + mesProduceSn.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.PRINTED.getValue()); mesProduceSn.setFid(UUID.randomUUID().toString()); //保存条码 mesProduceSnRDao.insert(mesProduceSn); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintStepService.java index a50c873..87ec2ab 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintStepService.java @@ -143,9 +143,13 @@ public class MesProductSnPrintStepService extends BaseStepService { for (MesProductionPsOutContext outSn : productionPsOutContextList) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(outSn.getOrganizeCode()); DdlPreparedPack.getNumEqualPack(outSn.getId(), MesPcnExtConstWords.ID, packBean); - mesProduceSnRao.updateByProperties( - new String[]{MesPcnExtConstWords.PRINT_STATUS, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME}, - new Object[]{MesExtEnumUtil.PRINT_STATUS.PRINTED.getValue(), reqBean.getUserInfo(), TimeTool.getNowTime(true)}, packBean); + + MesProduceSn produceSn = mesProduceSnRao.getByProperty(packBean); + if (produceSn!= null) { + mesProduceSnRao.updateByProperties( + new String[]{MesPcnExtConstWords.PRINT_STATUS, "printCount", MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME}, + new Object[]{MesExtEnumUtil.PRINT_STATUS.PRINTED.getValue(),MesPcnExtConstWords.ONE, reqBean.getUserInfo(), TimeTool.getNowTime(true)}, packBean); + } } //保存打印条码记录 snLogRao.saveAll(snLogList); From 78fb82c88a69fc3ce0db6fcd9db126ce41ce3f47 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Mon, 30 Sep 2024 14:43:45 +0800 Subject: [PATCH 05/24] =?UTF-8?q?=E8=A7=84=E5=88=99=E5=B9=B6=E6=88=AA?= =?UTF-8?q?=E5=8F=96=E5=8F=B3=E4=BE=A7=E6=B5=81=E6=B0=B4=E8=A3=85=E9=85=8D?= =?UTF-8?q?=E4=BB=B6=E8=A7=84=E5=88=99,=20=E7=94=9F=E6=88=90=E9=9B=B6?= =?UTF-8?q?=E4=BB=B6=E6=9D=A1=E7=A0=81=E5=B7=A5=E6=AD=A5=E9=9C=80=E8=A6=81?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=AD=A4=E6=B5=81=E6=B0=B4=E7=94=9F=E6=88=90?= =?UTF-8?q?=E6=96=B0=E7=9A=84=E9=9B=B6=E4=BB=B6=E6=9D=A1=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...esNumberRuleStrategySubstringSerialService.java | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/numberrule/MesNumberRuleStrategySubstringSerialService.java diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/numberrule/MesNumberRuleStrategySubstringSerialService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/numberrule/MesNumberRuleStrategySubstringSerialService.java new file mode 100644 index 0000000..8cf159b --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/numberrule/MesNumberRuleStrategySubstringSerialService.java @@ -0,0 +1,42 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.numberrule; + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProdTempDataContext; +import cn.estsh.i3plus.mes.pcn.api.iservice.busi.INumberRulePackAttributeStrategyService; +import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +import java.util.List; +import java.util.Optional; + +/** + * @Description : 使用规则并截取右侧流水装配件规则截取的流水号作为条码的流水号 + * @Reference : + * @Author : wangjie + * @CreateDate 2024/9/26 19:24 + * @Modify: + **/ +@Component +public class MesNumberRuleStrategySubstringSerialService implements INumberRulePackAttributeStrategyService { + + @Autowired + private IMesProductionDispatchContextStepService productionDispatchContextStepService; + + @Override + public GenSerialNoModel execute(GenSerialNoModel genSerialNoModel) { + + //规则并截取右侧流水装配件规则, 生成零件条码工步需要使用此流水生成新的零件条码 + List prodTempDataContextList = productionDispatchContextStepService.getProdTempDataContext(genSerialNoModel.getOrganizeCode(), genSerialNoModel.getWorkCenterCode(), genSerialNoModel.getWorkCellCode()); + + Optional optional = CollectionUtils.isEmpty(prodTempDataContextList) ? null : + prodTempDataContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getForeignKey()) && o.getForeignKey().compareTo(genSerialNoModel.getForeignKey()) == 0)).findFirst(); + + if (null != optional && optional.isPresent() && !StringUtils.isEmpty(optional.get().getSerialNo())) genSerialNoModel.appendSerialno(optional.get().getSerialNo()); + + return genSerialNoModel; + + } +} From 1cf4524daf07ad23c3ad477e7e0998c194d0f951 Mon Sep 17 00:00:00 2001 From: yxw Date: Mon, 30 Sep 2024 15:30:38 +0800 Subject: [PATCH 06/24] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E6=9D=A1=E7=A0=81?= =?UTF-8?q?=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../print/strategy/CustSnPrintStrategy.java | 9 +++--- .../step/MesProductSnPrintSortStepService.java | 36 +++++++++++++--------- .../ext/mes/pcn/pojo/util/MesPcnExtConstWords.java | 3 +- 3 files changed, 28 insertions(+), 20 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/CustSnPrintStrategy.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/CustSnPrintStrategy.java index 42fc015..af80064 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/CustSnPrintStrategy.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/CustSnPrintStrategy.java @@ -33,10 +33,10 @@ public class CustSnPrintStrategy implements IPrintTemplateStrategyService { MesNumberRule numberRule , StepResult stepResult, StationRequestBean reqBean, Boolean isStep) { - Map modelMap = (Map) model.getSourceData(); + MesWorkOrder workOrder = (MesWorkOrder) model.getSourceData(); // 工单信息 - MesWorkOrder workOrder = (MesWorkOrder) modelMap.get("mesWorkOrder"); + //MesWorkOrder workOrder = (MesWorkOrder) modelMap.get("mesWorkOrder"); if (workOrder == null) { log.info("CustSnPrintStrategy --- execute --- 工单信息为空"); @@ -57,7 +57,7 @@ public class CustSnPrintStrategy implements IPrintTemplateStrategyService { // 客户条码 resultMap.put(MesPcnExtConstWords.CUST_SN, workOrder.getCustSn()); // 客户零件号 前缀 排除后四位 - resultMap.put(MesPcnExtConstWords.CUST_PART_NO_PERFIX, custPartNoPrefix); + resultMap.put(MesPcnExtConstWords.CUST_PART_NO_PREFIX, custPartNoPrefix); // 客户零件号 后四位 resultMap.put(MesPcnExtConstWords.CUST_PART_NO_AFTER_FOUR, custPartNoAfterFour); @@ -146,7 +146,8 @@ public class CustSnPrintStrategy implements IPrintTemplateStrategyService { log.error("CustSnPrintStrategy --- execute --- 报错:{}", e.getMessage()); return model; } - resultMap.put(MesPcnExtConstWords.CUST_SN_DATA_MATRIX, dataMatrixCode); + resultMap.put(MesPcnExtConstWords.CUST_SN_DATA_MATRIX, Base64.getEncoder().encodeToString(dataMatrixCode.toByteArray())); + //resultMap.put(MesPcnExtConstWords.CUST_SN_DATA_MATRIX_BASE64, ); printDataMapList.add(resultMap); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintSortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintSortStepService.java index f1d8f7e..e9e5023 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintSortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintSortStepService.java @@ -83,7 +83,7 @@ public class MesProductSnPrintSortStepService extends BaseStepService { /** * 重构,返回给前端打印数据 */ - List printModelList = new ArrayList<>(); + //List printModelList = new ArrayList<>(); //2. 获取条码需要模板、模板代码、打印机 --- 循环遍历条码 封装数据 if (CollectionUtils.isEmpty(productionPartContextList)) return stepResult; @@ -96,14 +96,7 @@ public class MesProductSnPrintSortStepService extends BaseStepService { List needModifyWorkOrderList = new ArrayList<>(); - DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); - DdlPreparedPack.getStringEqualPack("WH_CUST_SN_RULE", MesPcnExtConstWords.RULE_CODE, packBean); - MesNumberRule numberRule = numberRuleRepository.getByProperty(packBean); - - if (numberRule == null) { - log.error("MesCustSnPrintStepService --- exec --- 客户条码编码规则[WH_CUST_SN_RULE]无效"); - return stepResult; - } + List> resultMap = new ArrayList<>(); for (MesProductionPartContext sn : productionPartContextList) { @@ -112,16 +105,28 @@ public class MesProductSnPrintSortStepService extends BaseStepService { if (workOrder == null) { log.error("MesCustSnPrintStepService --- exec --- 工单号:{}无效", sn.getWorkOrderNo()); + stepExpSendMsgAndThrowEx(reqBean, resultBean, String.format("工单号:{}无效!", sn.getWorkOrderNo())); continue; } if ((partDataContext == null) || (!partDataContext.containsKey(workOrder.getPartNo()))) { log.error("MesCustSnPrintStepService --- exec --- 工单号:{}零件{}丢失缓存", sn.getWorkOrderNo(), sn.getPartNo()); - continue; + stepExpSendMsgAndThrowEx(reqBean, resultBean, String.format("工单号[%s]零件号[%s]丢失零件信息缓存!", sn.getWorkOrderNo(), sn.getPartNo())); + } + MesPart mesPart = partDataContext.get(sn.getPartNo()); + + String custMatchRule = StringUtils.isEmpty(mesPart.getCustMatchRule()) ? "WH_CUST_SN_RULE" : mesPart.getCustMatchRule(); + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(custMatchRule, MesPcnExtConstWords.RULE_CODE, packBean); + MesNumberRule numberRule = numberRuleRepository.getByProperty(packBean); + + if (numberRule == null) { + log.error("MesCustSnPrintStepService --- exec --- 客户条码编码规则[WH_CUST_SN_RULE]无效"); + stepExpSendMsgAndThrowEx(reqBean, resultBean, String.format("工单号[%s]零件号[%s]客户条码编码规则[%s]无效!", sn.getWorkOrderNo(), sn.getPartNo(), custMatchRule)); } // 从物料信息中获取标签模板 - String labelTemplateCode = partDataContext.get(sn.getPartNo()).getProductLabelTemplate(); + String labelTemplateCode = partDataContext.get(sn.getPartNo()).getCustLabelTemplate(); // 从物料信息中获取打印机 String productPrinterCode = partDataContext.get(sn.getPartNo()).getProductPrinterCode(); @@ -156,8 +161,8 @@ public class MesProductSnPrintSortStepService extends BaseStepService { } IPrintTemplateStrategyService strategyService = (IPrintTemplateStrategyService) SpringContextsUtil.getBean(methodCode); // GenSerialNoModel model , MesProduceSnPrintModel mesProduceSnPrintModel, MesNumberRule numberRule, StepResult stepResult, StationRequestBean reqBean, Boolean isStep - MesProduceSnPrintModel printModel = strategyService.execute(null, mesProduceSnPrintModel, null, stepResult, reqBean, true); - printModelList.add(printModel); + MesProduceSnPrintModel printModel = strategyService.execute(null, mesProduceSnPrintModel, numberRule, stepResult, reqBean, true); + resultMap.addAll(printModel.getPrintContextList()); needModifyWorkOrderList.add(workOrder); } @@ -165,10 +170,11 @@ public class MesProductSnPrintSortStepService extends BaseStepService { //前端接收到busiTyep是customComponent,并且 dataType是file类型的消息,就需要打印后续消息里的数据,一个模板对应多个打印数据 resultBean.setBusiType(MesPcnEnumUtil.STATION_BUSI_TYPE.CUSTOM_COMPONENT.getValue()); resultBean.setDataType(MesPcnEnumUtil.STATION_DATA_TYPE.FILE.getValue()); - resultBean.setResultObj(printModelList); + resultBean.setCustomPageName("SORT_WORK_CENTER_PRINT"); + resultBean.setResultObj(resultMap); //3. 发送数据给到前端 this.sendMessage(reqBean, resultBean); - List snLogList = printModelList.stream().map(MesProduceSnPrintModel::getMesPrintedSnLogList).flatMap(List::stream).collect(Collectors.toList()); + List snLogList = new ArrayList<>(); //更新打印状态 for (MesWorkOrder workOrder : needModifyWorkOrderList) { MesPrintedSnLog snLog = new MesPrintedSnLog(); diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java index 0115a0e..9919565 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java @@ -515,7 +515,7 @@ public class MesPcnExtConstWords { //客户零件号 public static final String CUST_PART_NO = "custPartNo"; //客户零件号 前缀 排除后四位 - public static final String CUST_PART_NO_PERFIX = "custPartNoPerfix"; + public static final String CUST_PART_NO_PREFIX = "custPartNoPrefix"; //客户零件号 后四位 public static final String CUST_PART_NO_AFTER_FOUR = "custPartNoAfterFour"; //客户条码VPPS @@ -615,4 +615,5 @@ public class MesPcnExtConstWords { public static final int DATA_MATRIX_CODE_HEIGHT = 80; // dataMatrix 形式的客户条码 public static final String CUST_SN_DATA_MATRIX = "custSnDataMatrix"; + public static final String CUST_SN_DATA_MATRIX_BASE64 = "custSnDataMatrixBase64"; } From aa719fb463dd3db82eaf4a2178a619274a6cc142 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Tue, 8 Oct 2024 09:54:33 +0800 Subject: [PATCH 07/24] =?UTF-8?q?=E9=80=9A=E7=94=A8=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E6=9D=A1=E7=A0=81=E8=BD=AC=E6=8D=A2=E9=80=BB=E8=BE=91=E5=8F=98?= =?UTF-8?q?=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/busi/MesCustomerSnTransformService.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesCustomerSnTransformService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesCustomerSnTransformService.java index 51e69df..22d60d1 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesCustomerSnTransformService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesCustomerSnTransformService.java @@ -16,11 +16,12 @@ public class MesCustomerSnTransformService implements IMesCustomerSnTransformSer if (StringUtils.isEmpty(barCode)) return barCode; if (barCode.length() != MesPcnExtConstWords.CUSTOMER_SN_LENGTH_GM) return barCode; String a = barCode.substring(0, 3); - String b = barCode.substring(5, 20); - String c = barCode.substring(20, 29); - String d = barCode.substring(29, 41); - String e = barCode.substring(41, 58); - return a + (char)30 + "06" + (char)29 + b + (char)29 + c + (char)29 + d + (char)29 + e + (char)30 + (char)04; + String b = barCode.substring(3, 5); + String c = barCode.substring(5, 20); + String d = barCode.substring(20, 29); + String e = barCode.substring(29, 41); + String f = barCode.substring(41, 58); + return a + (char)30 + b + (char)29 + c + (char)29 + d + (char)29 + e + (char)29 + f + (char)30 + (char)04; /*public static void main(String[] args) { String barCode = "[)>06Y4110000000000XP2638975612V545238347T1A24240A2B4C0242"; String a = barCode.substring(0, 3); From 80c6aaf1f5e040fb34aa646c109b64f6c02d22c2 Mon Sep 17 00:00:00 2001 From: jun Date: Tue, 8 Oct 2024 10:05:26 +0800 Subject: [PATCH 08/24] =?UTF-8?q?=E5=8F=91=E8=BF=90=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E8=A1=A8=E4=B8=AD=E6=9D=A1=E7=A0=81=E5=AD=97=E6=AE=B5=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../strategy/MesShippingScanSnAndOrderStrategyServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnAndOrderStrategyServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnAndOrderStrategyServiceImpl.java index e5de1c4..6bccefa 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnAndOrderStrategyServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnAndOrderStrategyServiceImpl.java @@ -114,8 +114,8 @@ public class MesShippingScanSnAndOrderStrategyServiceImpl implements IMesShippin throw new ImppBusiException(String.format("目视单【%s】状态为【%s】质量状态为【%s】,不允许发运!", model.getSn(), MesExtEnumUtil.ORDER_STATUS.valueOfDescription(workOrder.getWorkOrderStatus()), MesExtEnumUtil.PRODUCE_QC_STATUS.valueOfDescription(workOrder.getQcStatus()))); } //校验条码是否匹配 - if (!Objects.equals(detail.getBarcode(), workOrder.getSn())) { - throw new ImppBusiException(String.format("目视单【%s】条码【%s】与扫描条码【%s】,不匹配!", model.getSn(), workOrder.getSn(), detail.getBarcode())); + if (!Objects.equals(detail.getBarcode(), workOrder.getCustSn())) { + throw new ImppBusiException(String.format("目视单【%s】条码【%s】与扫描条码【%s】,不匹配!", model.getSn(), workOrder.getCustSn(), detail.getBarcode())); } //校验零件是否匹配 if (!Objects.equals(detail.getPartNo(), workOrder.getPartNo())) { From 3b3edc9b46f1efe2ad82f18f6e9224bcdb553e75 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Tue, 8 Oct 2024 12:16:40 +0800 Subject: [PATCH 09/24] =?UTF-8?q?=E6=9D=A1=E7=A0=81=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=B7=A5=E6=AD=A5=20update=20=E6=94=B9=E6=88=90updateByPropert?= =?UTF-8?q?ies?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../step/MesProductSnSaveStepService.java | 58 +++++++++++++--------- 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java index 3f3da92..131d29b 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java @@ -89,7 +89,7 @@ public class MesProductSnSaveStepService extends BaseStepService { String productResult = productionDispatchContextStepService.getProductResultContext(reqBean); Map partMap = (Map) stepResult.getObj(); - productionPsOutContextList.stream().filter(o -> null != o).forEach(o -> o.copy(saveProduceSnData(reqBean, resultBean, stepResult, productionProcessContext, o, partMap, prodShiftContext, productResult))); + productionPsOutContextList.stream().filter(o -> null != o).forEach(o -> saveProduceSnData(reqBean, resultBean, stepResult, productionProcessContext, o, partMap, prodShiftContext, productResult)); //保存上下文产出条码数据信息集合 productionDispatchContextStepService.dispatchProductionPsOutContext(reqBean, productionPsOutContextList); @@ -98,47 +98,57 @@ public class MesProductSnSaveStepService extends BaseStepService { } - private MesProduceSn saveProduceSnData(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, MesProductionPsOutContext productionPsOutContext, Map partMap, MesProdShiftContext prodShiftContext, String productResult) { + private MesProductionPsOutContext saveProduceSnData(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, MesProductionPsOutContext productionPsOutContext, Map partMap, MesProdShiftContext prodShiftContext, String productResult) { //根据零件条码ID查询零件条码信息 MesProduceSn produceSn = produceSnExtService.getProduceSn(reqBean.getOrganizeCode(), productionPsOutContext.getId()); if (null == produceSn) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("请检查零件条码信息,产出零件条码[%s]ID[%s]信息不存在!", productionPsOutContext.getProductSn(), productionPsOutContext.getId())); + log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- PS:{} {} --- ID:{} --- QURERY:{}", + reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), + StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), produceSn.getProductSn(), produceSn.getPartNo(), produceSn.getId(), JSONObject.toJSONString(produceSn)); + //零件信息 MesPart part = partMap.get(produceSn.getPartNo()); - produceSn.setAreaCode(reqBean.getAreaCode()); - produceSn.setWorkCenterCode(reqBean.getWorkCenterCode()); - produceSn.setWorkCellCode(reqBean.getWorkCellCode()); + productionPsOutContext.setAreaCode(reqBean.getAreaCode()); + productionPsOutContext.setWorkCenterCode(reqBean.getWorkCenterCode()); + productionPsOutContext.setWorkCellCode(reqBean.getWorkCellCode()); - produceSn.setRouteCode(reqBean.getRouteCode()); - produceSn.setProcessCode(reqBean.getProcessCode()); - produceSn.setCraftCode(productionProcessContext.getCraftCode()); - //TODO 获取下个工艺代码 - //produceSn.setNextCraftCode(); + productionPsOutContext.setRouteCode(reqBean.getRouteCode()); + productionPsOutContext.setProcessCode(reqBean.getProcessCode()); + productionPsOutContext.setCraftCode(productionProcessContext.getCraftCode()); - produceSn.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue()); - produceSn.setQcStatus(!StringUtils.isEmpty(productResult) ? Integer.valueOf(productResult) : MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()); + productionPsOutContext.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue()); + productionPsOutContext.setQcStatus(!StringUtils.isEmpty(productResult) ? Integer.valueOf(productResult) : MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()); - produceSn.setShiftCode(prodShiftContext.getShiftCode()); - produceSn.setShiftGroup(prodShiftContext.getShiftGroup()); + productionPsOutContext.setShiftCode(prodShiftContext.getShiftCode()); + productionPsOutContext.setShiftGroup(prodShiftContext.getShiftGroup()); - produceSn.setProcessLabelTemplate(part.getProcessLabelTemplate()); - produceSn.setProdLabelTemplate(part.getProductLabelTemplate()); - produceSn.setCustLabelTemplate(part.getCustLabelTemplate()); + productionPsOutContext.setProcessLabelTemplate(part.getProcessLabelTemplate()); + productionPsOutContext.setProdLabelTemplate(part.getProductLabelTemplate()); + productionPsOutContext.setCustLabelTemplate(part.getCustLabelTemplate()); - ConvertBean.serviceModelUpdate(produceSn, reqBean.getUserInfo()); - produceSn.setOutWorkCenterTime(produceSn.getModifyDatetime()); - produceSn.setLotNo(produceSn.getModifyDatetime().substring(0, 10)); + ConvertBean.serviceModelUpdate(productionPsOutContext, reqBean.getUserInfo()); + productionPsOutContext.setOutWorkCenterTime(productionPsOutContext.getModifyDatetime()); + productionPsOutContext.setLotNo(productionPsOutContext.getModifyDatetime().substring(0, 10)); - produceSnExtService.update(produceSn); + produceSnRepository.updateByProperties( + new String[]{"id", "organizeCode"}, + new Object[]{produceSn.getId(), reqBean.getOrganizeCode()}, + new String[]{"areaCode", "workCenterCode", "workCellCode", "routeCode", "processCode", "craftCode", + "snStatus", "qcStatus", "shiftCode", "shiftGroup", "processLabelTemplate", "prodLabelTemplate", + "custLabelTemplate", "modifyDatetime", "modifyUser", "outWorkCenterTime", "lotNo"}, + new Object[]{productionPsOutContext.getAreaCode(), productionPsOutContext.getWorkCenterCode(), productionPsOutContext.getWorkCellCode(), productionPsOutContext.getRouteCode(), productionPsOutContext.getProcessCode(), productionPsOutContext.getCraftCode(), + productionPsOutContext.getSnStatus(), productionPsOutContext.getQcStatus(), productionPsOutContext.getShiftCode(), productionPsOutContext.getShiftGroup(), productionPsOutContext.getProcessLabelTemplate(), productionPsOutContext.getProdLabelTemplate(), + productionPsOutContext.getCustLabelTemplate(), productionPsOutContext.getModifyDatetime(), productionPsOutContext.getModifyUser(), productionPsOutContext.getModifyDatetime(), productionPsOutContext.getModifyDatetime().substring(0, 10)}); - log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- MesProductionPsOutContext:{} --- MesProduceSn:{}", + log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- PS:{} {} --- ID:{} --- UPDATE:{}", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), - StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), JSONObject.toJSONString(productionPsOutContext), JSONObject.toJSONString(produceSn)); + StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), productionPsOutContext.getProductSn(), productionPsOutContext.getPartNo(), productionPsOutContext.getId(), JSONObject.toJSONString(productionPsOutContext)); - return produceSn; + return productionPsOutContext; } From e20e16003401989fa51e6b5719891471afdc28c0 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Tue, 8 Oct 2024 12:30:41 +0800 Subject: [PATCH 10/24] =?UTF-8?q?=E5=90=88=E5=B9=B6dev?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java index bf2384e..b2b0f9b 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java @@ -150,7 +150,7 @@ public class MesProductSnSaveStepService extends BaseStepService { productionPsOutContext.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.PROCESSING.getValue()); } - produceSnRepository.updateByProperties( + produceSnRepository.updateByProperties( new String[]{"id", "organizeCode"}, new Object[]{produceSn.getId(), reqBean.getOrganizeCode()}, new String[]{"areaCode", "workCenterCode", "workCellCode", "routeCode", "processCode", "craftCode", From 315009b22cb93dc6c18f48117208fe1096e0ed79 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Tue, 8 Oct 2024 12:39:27 +0800 Subject: [PATCH 11/24] =?UTF-8?q?=E5=90=88=E5=B9=B6dev?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../step/MesProductSnPrintNosortStepService.java | 2 +- .../serviceimpl/step/MesProductSnSaveStepService.java | 9 +++++---- .../ext/mes/pcn/pojo/util/MesPcnExtConstWords.java | 16 ++++++++++++++++ 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintNosortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintNosortStepService.java index 38866a5..90a64fe 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintNosortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintNosortStepService.java @@ -146,7 +146,7 @@ public class MesProductSnPrintNosortStepService extends BaseStepService { DdlPackBean packBean = DdlPackBean.getDdlPackBean(outSn.getOrganizeCode()); DdlPreparedPack.getNumEqualPack(outSn.getId(), MesPcnExtConstWords.ID, packBean); mesProduceSnRao.updateByProperties( - new String[]{MesPcnExtConstWords.PRINT_STATUS, "printCount", MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME}, + new String[]{MesPcnExtConstWords.PRINT_STATUS, MesPcnExtConstWords.PRINT_COUNT, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME}, new Object[]{MesExtEnumUtil.PRINT_STATUS.PRINTED.getValue(), MesPcnExtConstWords.ONE, reqBean.getUserInfo(), TimeTool.getNowTime(true)}, packBean); } //保存打印条码记录 diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java index b2b0f9b..339451c 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java @@ -7,6 +7,7 @@ import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepServ import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProdShiftContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; import cn.estsh.i3plus.mes.pcn.util.StringUtil; import cn.estsh.i3plus.platform.common.convert.ConvertBean; @@ -151,11 +152,11 @@ public class MesProductSnSaveStepService extends BaseStepService { } produceSnRepository.updateByProperties( - new String[]{"id", "organizeCode"}, + new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE}, new Object[]{produceSn.getId(), reqBean.getOrganizeCode()}, - new String[]{"areaCode", "workCenterCode", "workCellCode", "routeCode", "processCode", "craftCode", - "snStatus", "qcStatus", "shiftCode", "shiftGroup", "processLabelTemplate", "prodLabelTemplate", - "custLabelTemplate", "modifyDatetime", "modifyUser", "inWorkCenterTime", "outWorkCenterTime", "lotNo"}, + new String[]{MesPcnExtConstWords.AREA_CODE, MesPcnExtConstWords.WORK_CENTER_CODE, MesPcnExtConstWords.WORK_CELL_CODE, MesPcnExtConstWords.ROUTE_CODE, MesPcnExtConstWords.PROCESS_CODE, MesPcnExtConstWords.CRAFT_CODE, + MesPcnExtConstWords.SN_STATUS, MesPcnExtConstWords.QC_STATUS, MesPcnExtConstWords.SHIFT_CODE, MesPcnExtConstWords.SHIFT_GROUP, MesPcnExtConstWords.PROCESS_LABEL_TEMPLATE, MesPcnExtConstWords.PROD_LABEL_TEMPLATE, + MesPcnExtConstWords.CUST_LABEL_TEMPLATE, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.IN_WC_TIME, MesPcnExtConstWords.OUT_WC_TIME, MesPcnExtConstWords.LOT_NO}, new Object[]{productionPsOutContext.getAreaCode(), productionPsOutContext.getWorkCenterCode(), productionPsOutContext.getWorkCellCode(), productionPsOutContext.getRouteCode(), productionPsOutContext.getProcessCode(), productionPsOutContext.getCraftCode(), productionPsOutContext.getSnStatus(), productionPsOutContext.getQcStatus(), productionPsOutContext.getShiftCode(), productionPsOutContext.getShiftGroup(), productionPsOutContext.getProcessLabelTemplate(), productionPsOutContext.getProdLabelTemplate(), productionPsOutContext.getCustLabelTemplate(), productionPsOutContext.getModifyDatetime(), productionPsOutContext.getModifyUser(), productionPsOutContext.getInWorkCenterTime(), productionPsOutContext.getOutWorkCenterTime(), productionPsOutContext.getLotNo()}); diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java index 9919565..655fe72 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java @@ -109,6 +109,8 @@ public class MesPcnExtConstWords { public static final String SHIFT_GROUP = "shiftGroup"; // 班组名称 public static final String SHIFT_GROUP_NAME = "shiftGroupName"; + // 流程代码 + public static final String ROUTE_CODE = "routeCode"; // 工序代码 public static final String PROCESS_CODE = "processCode"; // 工艺代码 @@ -157,6 +159,18 @@ public class MesPcnExtConstWords { public static final String CUST_SN = "custSn"; // 条码状态 public static final String SN_STATUS = "snStatus"; + // 质量状态 + public static final String QC_STATUS = "qcStatus"; + // 过程标签模板 + public static final String PROCESS_LABEL_TEMPLATE = "processLabelTemplate"; + // 产品标签模板 + public static final String PROD_LABEL_TEMPLATE = "prodLabelTemplate"; + // 客户标签模板 + public static final String CUST_LABEL_TEMPLATE = "custLabelTemplate"; + // 进产线时间 + public static final String IN_WC_TIME = "inWorkCenterTime"; + // 出产线时间 + public static final String OUT_WC_TIME = "outWorkCenterTime"; // 腔数 public static final String CAVITY = "cavity"; // 数量 @@ -185,6 +199,8 @@ public class MesPcnExtConstWords { public static final String RULE_CODE = "ruleCode"; // 打印状态 public static final String PRINT_STATUS = "printStatus"; + // 打印次数 + public static final String PRINT_COUNT = "printCount"; // 颜色 public static final String COLOR = "color"; // 设备计数点位固定二级变量 From 3b955236e609d7e53ae602f9b1a7c18934d44817 Mon Sep 17 00:00:00 2001 From: gsz Date: Tue, 8 Oct 2024 15:10:03 +0800 Subject: [PATCH 12/24] =?UTF-8?q?43302=20=E5=8A=A0=E6=96=99=E9=98=B2?= =?UTF-8?q?=E9=94=99=E6=89=AB=E7=A0=81=E6=B5=81=E7=A8=8B=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/busi/MesRawPartChargingServiceImpl.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesRawPartChargingServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesRawPartChargingServiceImpl.java index e23434c..53f0bd9 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesRawPartChargingServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesRawPartChargingServiceImpl.java @@ -128,10 +128,14 @@ public class MesRawPartChargingServiceImpl implements IMesRawPartChargingService if (!CollectionUtils.isEmpty(mesRawPartCharging)) { MesPcnException.throwMesBusiException("料筒条码【%s】与原料条码【%s】已绑定", mesRawPartChargingModel.getPackageSn(), mesRawPartCharging.iterator().next().getSn()); } - //保存生产控制加料 - MesRawPartCharging charging = insertRawPartCharging(mesRawPartChargingModel); - //保存日志 - saveLog(mesRawPartChargingModel, charging, MesExtEnumUtil.CHARGING_LOG_STATUS.FEEDING); + //保存生产控制加料 43302 加料防错扫码流程优化 + String[] split = mesRawPartChargingModel.getSn().split(","); + for (String sn : split) { + mesRawPartChargingModel.setSn(sn); + MesRawPartCharging charging = insertRawPartCharging(mesRawPartChargingModel); + //保存日志 + saveLog(mesRawPartChargingModel, charging, MesExtEnumUtil.CHARGING_LOG_STATUS.FEEDING); + } } From 3a81d887a5a777fb9a38c76f91cbf08d2a9d0f87 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Tue, 8 Oct 2024 15:13:40 +0800 Subject: [PATCH 13/24] =?UTF-8?q?=E5=89=8D=E9=81=93=E9=98=B2=E9=94=99?= =?UTF-8?q?=E5=B7=A5=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/step/MesProdCraftRouteCheckSortStepService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProdCraftRouteCheckSortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProdCraftRouteCheckSortStepService.java index 848ad0e..b2ef2f7 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProdCraftRouteCheckSortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProdCraftRouteCheckSortStepService.java @@ -97,7 +97,7 @@ public class MesProdCraftRouteCheckSortStepService extends MesProdCraftRouteChec //验证是否存在零件为空的产品条码 private Boolean isExistProductSnNoPart(List productionPsInContextList) { Optional optional = productionPsInContextList.stream().filter(o -> (null != o && o.getIsFinishCode().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0 && StringUtils.isEmpty(o.getPartNo()))).findFirst(); - return (null == optional || !optional.isPresent()) ? true : false; + return (null != optional && optional.isPresent()) ? true : false; } //前道工艺防错验证处理 From 7343c0e462c7d2cd730e856ee9e4184904bd2209 Mon Sep 17 00:00:00 2001 From: "xiangwei.zhang" <752558143@qq.com> Date: Tue, 8 Oct 2024 18:25:26 +0800 Subject: [PATCH 14/24] =?UTF-8?q?=E5=88=A4=E6=96=AD=E5=8F=AF=E7=96=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../busi/MesInputDefectRecordService.java | 20 +++++++++++++++++++- .../serviceimpl/busi/MesNcProcessingService.java | 11 ++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java index 1ebd00d..d364dba 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java @@ -369,6 +369,14 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService } if (Objects.isNull(srcLocateNo)) { srcLocateNo = configService.getCfgValue(org, "LGORT"); + + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(); + DdlPreparedPack.getStringEqualPack(model.getPartNo(), "partNo", ddlPackBean); + + MesProductVersion version = productVersionRepository.getByProperty(ddlPackBean); + if (version != null) { + srcLocateNo = version.getShipInventoryPoint(); + } } if (model.getOptType() != 2) { //移库 @@ -425,7 +433,17 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService //移库 if (model.getOptType() != 2) { - MesMove move = createMove(model, configService.getCfgValue(org, "LGORT"), configService.getCfgValue(org, "UMLGO"), org, null == produceSn ? model.getWorkCenterCode() : produceSn.getWorkCenterCode()); + String srcLocateNo = configService.getCfgValue(org, "LGORT"); + + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(); + DdlPreparedPack.getStringEqualPack(model.getPartNo(), "partNo", ddlPackBean); + + MesProductVersion version = productVersionRepository.getByProperty(ddlPackBean); + if (version != null) { + srcLocateNo = version.getShipInventoryPoint(); + } + + MesMove move = createMove(model, srcLocateNo, configService.getCfgValue(org, "UMLGO"), org, null == produceSn ? model.getWorkCenterCode() : produceSn.getWorkCenterCode()); moveRepository.save(move); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java index 1ea2a41..a4b4fe8 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java @@ -370,8 +370,17 @@ public class MesNcProcessingService implements IMesNcProcessingService { partInspectionRepository.save(model.getPartInspection()); + String target = configService.getCfgValue(org, "LGORT"); + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(); + DdlPreparedPack.getStringEqualPack(model.getPart().getPartNo(), "partNo", ddlPackBean); + + MesProductVersion version = productVersionRepository.getByProperty(ddlPackBean); + if (version != null) { + target = version.getShipInventoryPoint(); + } + //移库 转正常、放行:8000移至2000 - MesMove move = createMove(model, sourceValue, configService.getCfgValue(org, "LGORT"), org, null == sn ? workCenterCode : sn.getWorkCenterCode(), MesExtEnumUtil.MOVE_TYPE.NORMAL_MOVE); + MesMove move = createMove(model, sourceValue, target, org, null == sn ? workCenterCode : sn.getWorkCenterCode(), MesExtEnumUtil.MOVE_TYPE.NORMAL_MOVE); ConvertBean.serviceModelInitialize(move,model.getUserName()); moveRepository.save(move); From d708e96d4668200d7c10c0b7f03bad4002e19b6f Mon Sep 17 00:00:00 2001 From: jun Date: Tue, 8 Oct 2024 18:36:36 +0800 Subject: [PATCH 15/24] =?UTF-8?q?=E9=9D=9E=E6=8E=92=E5=BA=8F=E6=8A=A5?= =?UTF-8?q?=E5=B7=A5=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apiservice/schedulejob/MesReportNoSortJob.java | 43 +++--- .../apiservice/schedulejob/MesReportSortJob.java | 2 + .../serviceimpl/busi/MesWorkOrderService.java | 151 +++++++++++++++++---- 3 files changed, 143 insertions(+), 53 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportNoSortJob.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportNoSortJob.java index 30ed6f6..463d866 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportNoSortJob.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportNoSortJob.java @@ -3,19 +3,16 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.schedulejob; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionRecordService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderService; +import cn.estsh.i3plus.platform.common.tool.JsonUtilTool; import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; -import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; -import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; import cn.estsh.i3plus.pojo.mes.repository.MesProductionRecordRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; -import cn.estsh.impp.framework.base.schedule.BaseImppScheduleJob; +import cn.estsh.i3plus.pojo.model.wms.WmsJobParamModel; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.init.ApplicationProperties; -import cn.hutool.json.JSONObject; -import cn.hutool.json.JSONUtil; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; @@ -25,7 +22,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; -import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -55,25 +51,24 @@ public class MesReportNoSortJob extends BaseMesScheduleJob { @Override @Transactional public void executeMesJob(JobExecutionContext context, ApplicationProperties applicationProperties) { - JSONObject jsonObject= new JSONObject(); - - jsonObject.putIfAbsent("organizeCode", "CK01"); - jsonObject.putIfAbsent("userName", "job"); - - String organizeCode = jsonObject.getStr("organizeCode"); - String userName = jsonObject.getStr("userName"); - if (null == organizeCode){ - log.error("请添加需要报工的工厂代码!"); - return; - } - if (null == userName){ - userName = "JOB"; + List wmsJobParamModelList = JsonUtilTool.toList(this.getJobParam(), WmsJobParamModel.class); + if (!CollectionUtils.isEmpty(wmsJobParamModelList)) { + for (WmsJobParamModel wmsJobParamModel : wmsJobParamModelList) { + try { + long startTime = System.currentTimeMillis(); + // 处理无工单 + handlerNoOrder(wmsJobParamModel.getOrganizeCode(), "JOB"); + // 处理有工单 + handlerHasOrder(wmsJobParamModel.getOrganizeCode(), "JOB"); + long endTime = System.currentTimeMillis(); + log.info("工厂{}非排序报工JOB --- END --- 耗时: {} ms", wmsJobParamModel.getOrganizeCode(), endTime - startTime); + } catch (Exception e) { + log.info("工厂{}非排序报工JOB 执行失败{}", wmsJobParamModel.getOrganizeCode(), e); + } + } + }else{ + log.info("非排序报工JOB 参数不能为空"); } - // 处理无工单 - handlerNoOrder(organizeCode, userName); - // 处理有工单 - handlerHasOrder(organizeCode, userName); - // } } private void handlerNoOrder(String organizeCode, String userName) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportSortJob.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportSortJob.java index bfff550..3ea7347 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportSortJob.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportSortJob.java @@ -48,6 +48,8 @@ public class MesReportSortJob extends BaseMesScheduleJob { log.info("工厂{}排序报工job 执行失败{}", wmsJobParamModel.getOrganizeCode(), e); } } + }else{ + log.info("排序报工job 参数不能为空"); } } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java index ecb9751..68d4903 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java @@ -674,7 +674,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { //保存数据 List mesProductOffLineList = new ArrayList<>(); - MesProductOffLine newMesProductOffLine; + List mesMoveList = new ArrayList<>(); // 排除重复的数据 Map> map = mesBoms.stream().collect(Collectors.groupingBy(mesBom -> { MesBom bom = new MesBom(); @@ -682,35 +682,24 @@ public class MesWorkOrderService implements IMesWorkOrderService { bom.setItemPartNo(mesBom.getItemPartNo()); return bom; })); - for (Map.Entry> entry : map.entrySet()) { - MesBom mesBom = entry.getValue().get(0); - newMesProductOffLine = new MesProductOffLine(); - newMesProductOffLine.setReportPartNo(oldMesWorkOrder.getPartNo()); - newMesProductOffLine.setReportPartNameRdd(oldMesWorkOrder.getPartName()); - newMesProductOffLine.setItemPartNo(mesBom.getItemPartNo()); - newMesProductOffLine.setItemPartName(mesBom.getItemPartName()); - newMesProductOffLine.setItemQty(mesBom.getItemQty()); - newMesProductOffLine.setAlort(mesProductVersion.getReceiveInventoryPoint()); - newMesProductOffLine.setStgeLoc(mesProductVersion.getShipInventoryPoint()); - newMesProductOffLine.setQty(1d); - newMesProductOffLine.setReportSn(productionRecord.getProductSn()); - newMesProductOffLine.setBomVersion(oldMesWorkOrder.getProductVersion()); - newMesProductOffLine.setSerialNumber(productionRecord.getSerialNumber()); - newMesProductOffLine.setUnit(mesBom.getUnit()); - newMesProductOffLine.setBomCode(mesBom.getBomCode()); - newMesProductOffLine.setItemUnit(mesBom.getItemUnit()); - newMesProductOffLine.setWorkOrderNo(oldMesWorkOrder.getWorkOrderNo()); - newMesProductOffLine.setWorkOrderType(oldMesWorkOrder.getWorkOrderType()); - newMesProductOffLine.setWorkCenterCode(oldMesWorkOrder.getWorkCenterCode()); - newMesProductOffLine.setWorkCellCode(oldMesWorkOrder.getWorkCellCode()); - newMesProductOffLine.setReportType(oldMesWorkOrder.getReportType()); - newMesProductOffLine.setSapWorkCenter(mesProductVersion.getWorkCenterCode()); - newMesProductOffLine.setOrganizeCode(oldMesWorkOrder.getOrganizeCode()); - newMesProductOffLine.setDescription(productionRecord.getCompleteDateTime()); - ConvertBean.serviceModelInitialize(newMesProductOffLine, userName); - mesProductOffLineList.add(newMesProductOffLine); + if(MesExtEnumUtil.NOSORT_REPORT_TYPE.REPORT.getValue() == productionRecord.getReportType()){ + for (Map.Entry> entry : map.entrySet()) { + mesProductOffLineList.add(getMesProductOffLine(productionRecord, userName, oldMesWorkOrder, mesProductVersion, entry.getValue().get(0))); + } + } else if (MesExtEnumUtil.NOSORT_REPORT_TYPE.CUSTOMER_SUPPLY_MOVE.getValue() == productionRecord.getReportType()) { + customerSupplyMove(productionRecord,oldMesWorkOrder, mesProductVersion, mesBoms, productionRecord.getProductSn(), mesProductOffLineList, mesMoveList,userName); + } else { + LOGGER.info("汇报类型不存在"); + return; + } + + if(!CollectionUtils.isEmpty(mesProductOffLineList)){ + mesProductOffLineRDao.saveAll(mesProductOffLineList); + } + + if(!CollectionUtils.isEmpty(mesMoveList)){ + mesMoveRepository.saveAll(mesMoveList); } - mesProductOffLineRDao.saveAll(mesProductOffLineList); // 同步工单信息给加工记录、条码信息 DdlPackBean snDdlPackBean = DdlPackBean.getDdlPackBean(); @@ -729,6 +718,35 @@ public class MesWorkOrderService implements IMesWorkOrderService { } + private MesProductOffLine getMesProductOffLine(MesProductionRecord productionRecord, String userName, MesWorkOrder oldMesWorkOrder, MesProductVersion mesProductVersion, MesBom mesBom) { + MesProductOffLine newMesProductOffLine; + newMesProductOffLine = new MesProductOffLine(); + newMesProductOffLine.setReportPartNo(oldMesWorkOrder.getPartNo()); + newMesProductOffLine.setReportPartNameRdd(oldMesWorkOrder.getPartName()); + newMesProductOffLine.setItemPartNo(mesBom.getItemPartNo()); + newMesProductOffLine.setItemPartName(mesBom.getItemPartName()); + newMesProductOffLine.setItemQty(mesBom.getItemQty()); + newMesProductOffLine.setAlort(mesProductVersion.getReceiveInventoryPoint()); + newMesProductOffLine.setStgeLoc(mesProductVersion.getShipInventoryPoint()); + newMesProductOffLine.setQty(1d); + newMesProductOffLine.setReportSn(productionRecord.getProductSn()); + newMesProductOffLine.setBomVersion(oldMesWorkOrder.getProductVersion()); + newMesProductOffLine.setSerialNumber(productionRecord.getSerialNumber()); + newMesProductOffLine.setUnit(mesBom.getUnit()); + newMesProductOffLine.setBomCode(mesBom.getBomCode()); + newMesProductOffLine.setItemUnit(mesBom.getItemUnit()); + newMesProductOffLine.setWorkOrderNo(oldMesWorkOrder.getWorkOrderNo()); + newMesProductOffLine.setWorkOrderType(oldMesWorkOrder.getWorkOrderType()); + newMesProductOffLine.setWorkCenterCode(oldMesWorkOrder.getWorkCenterCode()); + newMesProductOffLine.setWorkCellCode(oldMesWorkOrder.getWorkCellCode()); + newMesProductOffLine.setReportType(oldMesWorkOrder.getReportType()); + newMesProductOffLine.setSapWorkCenter(mesProductVersion.getWorkCenterCode()); + newMesProductOffLine.setOrganizeCode(oldMesWorkOrder.getOrganizeCode()); + newMesProductOffLine.setDescription(productionRecord.getCompleteDateTime()); + ConvertBean.serviceModelInitialize(newMesProductOffLine, userName); + return newMesProductOffLine; + } + /** * 获取对应的工单 * @@ -1503,6 +1521,64 @@ public class MesWorkOrderService implements IMesWorkOrderService { } } + private void customerSupplyMove(MesProductionRecord productionRecord,MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion, List mesBoms, String sn, List mesProductOffLineList, List mesMoveList,String userName) { + boolean isItemMove; + boolean isItemReport; + MesMoveRule moveRule; + //查询零件生产组的移库规则 + List moveRules = mesMoveRuleService.findMesMoveRuleByPartProdGroupCode(mesWorkOrder.getPartProdGroupCode(), mesWorkOrder.getOrganizeCode()); + Map> mesMoveRuleMap = moveRules.stream().filter(t -> Objects.nonNull(t.getSrcType())).collect(Collectors.groupingBy(MesMoveRule::getSrcType)); + List itemPartNoList = mesBoms.stream().map(MesBom::getItemPartNo).collect(Collectors.toList()); + //子物料SAP下发信息 + Map> mesPartSapMap = getPartSapMap(mesWorkOrder, itemPartNoList); + //获取物料信息 + Map> itemPartMap = getItemPartMap(mesWorkOrder, itemPartNoList); + for (MesBom mesBom : mesBoms) { + isItemReport = false; + isItemMove = false; + moveRule = null; + if (itemPartMap.containsKey(mesBom.getItemPartNo())) { + MesPart itemPart = itemPartMap.get(mesBom.getItemPartNo()).iterator().next(); + if (!StringUtil.isEmpty(itemPart.getEsd()) && mesMoveRuleMap.containsKey(itemPart.getEsd())) { + moveRule = mesMoveRuleMap.get(itemPart.getEsd()).iterator().next(); + if (MesExtEnumUtil.MOVE_TYPE_REPORT_TYPE.REPORT_MOVE.getValue() == moveRule.getReportType()) { + isItemMove = true; + isItemReport = true; + } else if (MesExtEnumUtil.MOVE_TYPE_REPORT_TYPE.REPORT.getValue() == moveRule.getReportType()) { + isItemReport = true; + } else if (MesExtEnumUtil.MOVE_TYPE_REPORT_TYPE.MOVE.getValue() == moveRule.getReportType()) { + isItemMove = true; + } + } + } + //汇报 + if (isItemReport) { + mesProductOffLineList.add(getMesProductOffLine(productionRecord, userName, mesWorkOrder, mesProductVersion, mesBom)); + } + //移库 + if (isItemMove) { + MesPartSap mesPartSap = null; + if (mesPartSapMap.containsKey(mesBom.getItemPartNo())) { + mesPartSap = mesPartSapMap.get(mesBom.getItemPartNo()).iterator().next(); + } + MesMove move = createMove(mesPartSap, moveRule.getErpSrcLocateNo(), moveRule.getErpDestLocateNo(), mesBom.getOrganizeCode(), mesWorkOrder.getErpWorkCenter(), mesBom.getItemQty(), MesExtEnumUtil.MOVE_TYPE.RAW_MATERIAL_MOVE.getValue()); + move.setMatnr(mesBom.getItemPartNo()); + ConvertBean.serviceModelInitialize(move, userName); + mesMoveList.add(move); + } + } + } + + private Map> getPartSapMap(MesWorkOrder mesWorkOrder, List itemPartNoList) { + List mesPartSapList = iMesPartService.findMesPartSapByPartNo(itemPartNoList, mesWorkOrder.getOrganizeCode()); + return mesPartSapList.stream().filter(t -> Objects.nonNull(t.getPartNo())).collect(Collectors.groupingBy(MesPartSap::getPartNo)); + } + + private Map> getItemPartMap(MesWorkOrder mesWorkOrder, List itemPartNoList) { + List itemPartList = iMesPartService.findMesPartByPartNo(itemPartNoList, mesWorkOrder.getOrganizeCode()); + return itemPartList.stream().filter(t -> Objects.nonNull(t.getPartNo())).collect(Collectors.groupingBy(MesPart::getPartNo)); + } + private MesWorkOrder getMesWorkOrder(Map> workOrderMap, String workOrderNo) { MesWorkOrder workOrder = Objects.isNull(workOrderMap) || StringUtils.isEmpty(workOrderNo) || !workOrderMap.containsKey(workOrderNo) ? null : workOrderMap.get(workOrderNo).iterator().next(); if (Objects.isNull(workOrder)) { @@ -1608,4 +1684,21 @@ public class MesWorkOrderService implements IMesWorkOrderService { ConvertBean.serviceModelInitialize(move, userName); return move; } + + private MesMove createMove(MesPartSap mesPart, String source, String target, String org, String workCenterCode, double qty, Integer moveType) { + MesMove move = new MesMove(); + if (!Objects.isNull(mesPart)) { + move.setMeins(mesPart.getUnit()); + } + move.setOrganizeCode(org); + move.setFactoryCode(org); + move.setLgort(source); + move.setUmlgo(target); + move.setMenge(qty); + move.setPostDate(TimeTool.getToday()); + move.setMoveType(moveType); + move.setPostTime(TimeTool.getTimeShortWithColon()); + move.setWorkCenter(workCenterCode); + return move; + } } From 24d2cd89e66549c7cd960c6d0f3f296beeaead30 Mon Sep 17 00:00:00 2001 From: jun Date: Tue, 8 Oct 2024 18:38:19 +0800 Subject: [PATCH 16/24] =?UTF-8?q?=E9=9D=9E=E6=8E=92=E5=BA=8F=E6=8A=A5?= =?UTF-8?q?=E5=B7=A5=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91=EF=BC=88=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E8=B0=83=E6=95=B4=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java index 68d4903..c2741b1 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java @@ -719,8 +719,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { } private MesProductOffLine getMesProductOffLine(MesProductionRecord productionRecord, String userName, MesWorkOrder oldMesWorkOrder, MesProductVersion mesProductVersion, MesBom mesBom) { - MesProductOffLine newMesProductOffLine; - newMesProductOffLine = new MesProductOffLine(); + MesProductOffLine newMesProductOffLine = new MesProductOffLine(); newMesProductOffLine.setReportPartNo(oldMesWorkOrder.getPartNo()); newMesProductOffLine.setReportPartNameRdd(oldMesWorkOrder.getPartName()); newMesProductOffLine.setItemPartNo(mesBom.getItemPartNo()); From 893f30728400786785ced39dbf5c86ad37b4e550 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Tue, 8 Oct 2024 22:43:46 +0800 Subject: [PATCH 17/24] =?UTF-8?q?=E5=B7=A5=E5=8D=95=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=B7=A5=E6=AD=A5=EF=BC=8C=20=E4=BF=AE=E6=94=B9=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../step/MesWorkOrderSaveStepService.java | 59 +++++++++++----------- 1 file changed, 29 insertions(+), 30 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderSaveStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderSaveStepService.java index 49c4584..b638607 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderSaveStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderSaveStepService.java @@ -138,8 +138,6 @@ public class MesWorkOrderSaveStepService extends BaseStepService { reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), workOrder.getWorkOrderNo(), JSONObject.toJSONString(workOrder), calcCompleteQty, prodResult); - entityManager.detach(workOrder); - //工单状态分 排序工单 和非排序工单; 现在必须是非排序工单 if (!MesExtEnumUtil.ORDER_STATUS.checkAllowStatus(workCenter.getCenterType(), workOrder.getWorkOrderStatus())) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("请检查工单信息,加工单[%s]信息工单状态[%s]!", entry.getKey(), MesExtEnumUtil.ORDER_STATUS.valueOfDescription(workOrder.getWorkOrderStatus()))); @@ -147,17 +145,16 @@ public class MesWorkOrderSaveStepService extends BaseStepService { if (!workOrder.getWorkCenterCode().equals(reqBean.getWorkCenterCode())) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("请检查工单信息,加工单[%s]信息所属生产线[%s]与当前生产线[%s]不一致!", entry.getKey(), workOrder.getWorkCenterCode(), reqBean.getWorkCenterCode())); - List propertyNameList = new ArrayList<>(); + Map propertyMap = new HashMap<>(); + //修改完成数量 if (calcCompleteQty.compareTo(MesPcnExtConstWords.ZERO) > 0) { - workOrder.setCompleteQty(MathOperation.add(workOrder.getCompleteQty(), calcCompleteQty)); - propertyNameList.add("completeQty"); + propertyMap.put(MesPcnExtConstWords.COMPLATED_QTY, MathOperation.add(workOrder.getCompleteQty(), calcCompleteQty)); } //修改未完成数量 if (calcCompleteQty.compareTo(MesPcnExtConstWords.ZERO) > 0 && workOrder.getUnCompleteQty().compareTo(new Double(0)) > 0 && MathOperation.compareTo(MathOperation.sub(workOrder.getUnCompleteQty(), new Double(calcCompleteQty)), new Double(0)) >= 0) { - workOrder.setUnCompleteQty(MathOperation.sub(workOrder.getUnCompleteQty(), new Double(calcCompleteQty))); - propertyNameList.add("unCompleteQty"); + propertyMap.put("unCompleteQty", MathOperation.sub(workOrder.getUnCompleteQty(), new Double(calcCompleteQty))); } /** @@ -167,42 +164,44 @@ public class MesWorkOrderSaveStepService extends BaseStepService { * 上下文中 已经按照工单分组了,因为有一模多腔问题 */ - if (!StringUtils.isEmpty(prodResult)) { //可疑品 - boolean isSuspicious = MesExtEnumUtil.PRODUCE_QC_STATUS.SUSPICIOUS.getValue() == Integer.parseInt(prodResult); - if (isSuspicious && !productionPsOutContextList.isEmpty()){ - int suspiciousQty = productionPsOutContextList.size(); - workOrder.setSuspiciousPartQty(MathOperation.add(workOrder.getSuspiciousPartQty(), new Double(suspiciousQty))); - propertyNameList.add("suspiciousPartQty"); + if (Integer.valueOf(prodResult).compareTo(MesExtEnumUtil.PRODUCE_QC_STATUS.SUSPICIOUS.getValue()) == 0 && !CollectionUtils.isEmpty(productionPsOutContextList)){ + propertyMap.put("suspiciousPartQty", MathOperation.add(workOrder.getSuspiciousPartQty(), new Double(productionPsOutContextList.size()))); } //报废数量 - boolean isScrap = MesExtEnumUtil.PRODUCE_QC_STATUS.SCRAP.getValue() == Integer.parseInt(prodResult); - if (isScrap && !productionPsOutContextList.isEmpty()){ - int scrapQty = productionPsOutContextList.size(); - workOrder.setScrapPartQty(MathOperation.add(workOrder.getScrapPartQty(), new Double(scrapQty))); - propertyNameList.add("scrapPartQty"); + if (Integer.valueOf(prodResult).compareTo(MesExtEnumUtil.PRODUCE_QC_STATUS.SCRAP.getValue()) == 0 && !CollectionUtils.isEmpty(productionPsOutContextList)){ + propertyMap.put("scrapPartQty", MathOperation.add(workOrder.getScrapPartQty(), new Double(productionPsOutContextList.size()))); } } if (MathOperation.compareTo(workOrder.getCompleteQty(), workOrder.getQty()) >= 0 && workOrder.getWorkOrderStatus().compareTo(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()) != 0) { - workOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()); - propertyNameList.add("workOrderStatus"); + propertyMap.put("workOrderStatus", MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()); } else if (workOrder.getCompleteQty() > 0 && workOrder.getWorkOrderStatus() == MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()) { - workOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()); - propertyNameList.add("workOrderStatus"); + propertyMap.put("workOrderStatus", MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()); } - //如果数量都没有修改,不操作数据库 - if (!propertyNameList.isEmpty()) { - ConvertBean.serviceModelUpdate(workOrder, reqBean.getUserInfo()); - workOrder.setModifyDatetime((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")).format(new Date())); - workOrderExtService.update(workOrder); - log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- ORDER:{} --- UPDATE:{}", - reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), - StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), workOrder.getWorkOrderNo(), JSONObject.toJSONString(workOrder)); + if (CollectionUtils.isEmpty(propertyMap)) continue; + + propertyMap.put(MesPcnExtConstWords.MODIFY_DATE_TIME, (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")).format(new Date())); + propertyMap.put(MesPcnExtConstWords.MODIFY_USER, reqBean.getUserInfo()); + String[] propertyName = new String[propertyMap.size()]; + Object[] propertyValue = new Object[propertyMap.size()]; + + Integer index = 0; + for (Map.Entry innerEntry : propertyMap.entrySet()) { + if (null == innerEntry) continue; + propertyName[index] = innerEntry.getKey(); + propertyValue[index] = innerEntry.getValue(); + index ++; } + + workOrderRepository.updateByProperties(new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE}, new Object[]{workOrder.getId(), reqBean.getOrganizeCode()}, propertyName, propertyValue); + + log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- ORDER:{} --- UPDATE:{}", + reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), + StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), workOrder.getWorkOrderNo(), JSONObject.toJSONString(propertyMap)); } } From 23b774af3aca2a70bca5f30e020684b2edfdea4a Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Wed, 9 Oct 2024 10:55:50 +0800 Subject: [PATCH 18/24] =?UTF-8?q?=E5=B7=A5=E5=8D=95=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=B7=A5=E6=AD=A5=20=E4=BF=AE=E6=94=B9=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pcn/apiservice/serviceimpl/step/MesWorkOrderSaveStepService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderSaveStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderSaveStepService.java index b638607..52e7066 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderSaveStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderSaveStepService.java @@ -149,7 +149,7 @@ public class MesWorkOrderSaveStepService extends BaseStepService { //修改完成数量 if (calcCompleteQty.compareTo(MesPcnExtConstWords.ZERO) > 0) { - propertyMap.put(MesPcnExtConstWords.COMPLATED_QTY, MathOperation.add(workOrder.getCompleteQty(), calcCompleteQty)); + propertyMap.put("completeQty", MathOperation.add(workOrder.getCompleteQty(), calcCompleteQty)); } //修改未完成数量 if (calcCompleteQty.compareTo(MesPcnExtConstWords.ZERO) > 0 && workOrder.getUnCompleteQty().compareTo(new Double(0)) > 0 && From 8930187f6f83499eb30ec0144e02d01718589634 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Wed, 9 Oct 2024 12:52:50 +0800 Subject: [PATCH 19/24] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/busi/MesInputDefectRecordService.java | 17 ++++++++--------- .../serviceimpl/busi/MesProduceSnExtService.java | 6 ++++-- .../step/MesProductResultErrorHandleStepService.java | 2 ++ 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java index d364dba..fd07b33 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java @@ -683,10 +683,10 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService * @return */ private MesMove createMove(MesPartInspectionInputModel model, String source, String target, String org, String workCenterCode) { + if (StringUtils.isEmpty(model.getUserInfo())) model.setUserInfo("系统"); GenSerialNoModel serialNoModel = new GenSerialNoModel("INPUT_DEFECT_ZRSUM"); serialNoModel.setPartNo(model.getPart().getPartNo()); -// ResultBean rb = syncFuncService.syncSerialNo(serialNoModel, AuthUtil.getSessionUser().getUserName(), org, 1); - ResultBean rb = syncFuncService.syncSerialNo(serialNoModel, "系统", org, 1); + ResultBean rb = syncFuncService.syncSerialNo(serialNoModel, model.getUserInfo(), org, 1); String zrsum = ""; if (null != rb && !CollectionUtils.isEmpty(rb.getResultList())) { zrsum = (rb.getResultList().get(0)).toString(); @@ -707,8 +707,7 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService move.setMoveType(MesExtEnumUtil.MOVE_TYPE.SUSPICIOUS_MOVE.getValue()); move.setProductSn(model.getSn()); move.setWorkCenter(prodOrgExtService.getErpWorkCenterCode(org, workCenterCode)); -// ConvertBean.serviceModelInitialize(move, AuthUtil.getSessionUser().getUserName()); - ConvertBean.serviceModelInitialize(move, "系统"); + ConvertBean.serviceModelInitialize(move, model.getUserInfo()); return move; } @@ -894,7 +893,7 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService public void saveSusPartInspection(MesPartInspectionInputModel model, String org) { MesPartInspection partInspection = new MesPartInspection(); - BeanUtils.copyProperties(model, partInspection); + BeanUtils.copyProperties(model, partInspection, "id"); partInspection.setInspectionStatus(MesExtEnumUtil.PART_INSPECTION_STATUS.FAIL.getValue()); partInspection.setNcStatus(MesExtEnumUtil.PART_INSPECTION_NC_STATUS.CREATE.getValue()); partInspection.setOrganizeCode(org); @@ -908,8 +907,8 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService partInspection.setDefectTypeCode(defectType.getDefectTypeCode()); partInspection.setDefectTypeId(defectType.getId()); - - partInspectionRepository.save(partInspection); + ConvertBean.serviceModelInitialize(partInspection, model.getUserInfo()); + partInspection = partInspectionRepository.insert(partInspection); log.info("生成的缺陷记录id ={}", partInspection); MesPartInspectionDetail detail = new MesPartInspectionDetail(); @@ -923,7 +922,7 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService detail.setDefectTypeName(defectType.getDefectTypeName()); detail.setId(null); detail.setOrganizeCode(org); - ConvertBean.serviceModelInitialize(detail, "系统"); + ConvertBean.serviceModelInitialize(detail, model.getUserInfo()); partInspectionDetailRepository.insert(detail); // String source = configService.getCfgValue(org, "LGORT"); @@ -945,7 +944,7 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService } } MesMove move = createMove(model, source, configService.getCfgValue(org, "UMLGO"), org, model.getWorkCenterCode()); - moveRepository.save(move); + moveRepository.insert(move); } @ApiOperation(value = "客退品查询") diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnExtService.java index 3b8585a..54b0c70 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnExtService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnExtService.java @@ -123,10 +123,12 @@ public class MesProduceSnExtService implements IMesProduceSnExtService { @Override public void saveProduceSnList(StationRequestBean reqBean, Integer snStatus, List idList) { - + idList = CollectionUtils.isEmpty(idList) ? idList : idList.stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList()); + if (CollectionUtils.isEmpty(idList)) return; DdlPackBean packBean = new DdlPackBean(); DdlPreparedPack.getStringEqualPack(reqBean.getOrganizeCode(), MesPcnExtConstWords.ORGANIZE_CODE, packBean); - DdlPreparedPack.getInPackList(idList, MesPcnExtConstWords.ID, packBean); + if (idList.size() == 1) DdlPreparedPack.getNumEqualPack(idList.get(0), MesPcnExtConstWords.ID, packBean); + else DdlPreparedPack.getInPackList(idList, MesPcnExtConstWords.ID, packBean); produceSnRepository.updateByProperties( new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.WORK_CENTER_CODE, MesPcnExtConstWords.WORK_CELL_CODE, MesPcnExtConstWords.SN_STATUS}, new Object[]{reqBean.getUserInfo(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), snStatus}, diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductResultErrorHandleStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductResultErrorHandleStepService.java index af34618..d49cf0c 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductResultErrorHandleStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductResultErrorHandleStepService.java @@ -157,6 +157,7 @@ public class MesProductResultErrorHandleStepService extends BaseStepService { model.setPart(mesPartSap); model.setPartInspectionDetailList(Arrays.asList(mesPartInspectionDetail)); if (Objects.equal(MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.PRODUCT_SCRAP.getValue(), result)) { + //TODO 有问题 需要修改条码质量状态 ncProcessingService.saveNc(model, reqBean.getOrganizeCode(), true); } else { MesPartInspectionInputModel inspectModel = new MesPartInspectionInputModel(); @@ -169,6 +170,7 @@ public class MesProductResultErrorHandleStepService extends BaseStepService { inspectModel.setPartInspection(partInspection); inspectModel.setShiftCode(mesProduceSn.getShiftCode()); inspectModel.setProductVersion(productVersion); + inspectModel.setUserInfo(reqBean.getUserInfo()); inputDefectRecordService.saveSusPartInspection(inspectModel, reqBean.getOrganizeCode()); } From 082e83a94a345caa8b19a6ab6419016001f2e61f Mon Sep 17 00:00:00 2001 From: jun Date: Wed, 9 Oct 2024 18:41:28 +0800 Subject: [PATCH 20/24] =?UTF-8?q?=E6=8E=92=E5=BA=8F=E5=8F=91=E8=BF=90?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../busi/MesSortShippingCheckService.java | 46 +++++++------- ...sShippingScanSnAndOrderStrategyServiceImpl.java | 74 +++++++++++++--------- .../MesShippingScanSnStrategyServiceImpl.java | 2 +- 3 files changed, 67 insertions(+), 55 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java index 5ee9b3a..7a73a68 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java @@ -395,14 +395,19 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService DdlPackBean packBean = DdlPackBean.getDdlPackBean(orderManagement.getOrganizeCode()); DdlPreparedPack.getStringEqualPack(orderManagement.getShippingCode(),"shippingCode",packBean); MesLoadingListDetail listDetail = listDetailRepository.getByProperty(packBean); + MesLoadingList loadingList = null; if(!Objects.isNull(listDetail)){ packBean = DdlPackBean.getDdlPackBean(orderManagement.getOrganizeCode()); DdlPreparedPack.getNumEqualPack(listDetail.getPid(), "id", packBean); - MesLoadingList loadingList = listRepository.getByProperty(packBean); + loadingList = listRepository.getByProperty(packBean); if(!Objects.isNull(loadingList)){ orderManagement.setOrderCode(loadingList.getOrderCode()); orderManagement.setLoadingListId(loadingList.getId()); } + //更新装车单明细对应的发运单状态=发运 + listDetail.setStatus(MesExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue()); + ConvertBean.serviceModelUpdate(listDetail, userInfo); + listDetailRepository.update(listDetail); } //发运单状态修改为校验完成 orderManagement.setSystemSyncStatus(CommonEnumUtil.FALSE); @@ -431,9 +436,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService detail.setBarcode(managementDetail.getBarcode()); DdlPreparedPack.getStringEqualPack(detail.getBarcode(), "productSn", packBean); } - detail.setSystemSyncStatus(CommonEnumUtil.FALSE); - detail.setActualQty(1); - ConvertBean.serviceModelUpdate(detail, userInfo); + //更新条码信息,更新目视单信息 if(!StringUtils.isEmpty(detail.getBarcode()) && !Objects.equals(orderManagement.getIsEnableMemory(), MesCommonConstant.TRUE_INTEGER)){ DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean); MesProduceSn produceSn = produceSnRepository.getByProperty(packBean); @@ -454,7 +457,13 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService } } } - + //条码格式(扫描目视单,扫描条码) + if(!StringUtil.isEmpty(detail.getVisualOrderNo())){ + detail.setBarcode(new StringJoiner(MesPcnExtConstWords.COMMA).add(detail.getVisualOrderNo()).add(detail.getBarcode()).toString()); + } + detail.setSystemSyncStatus(CommonEnumUtil.FALSE); + detail.setActualQty(MesPcnExtConstWords.ONE); + ConvertBean.serviceModelUpdate(detail, userInfo); } //更新条码 if(!CollectionUtils.isEmpty(produceSnList)){ @@ -467,15 +476,9 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService //更新发运单 ConvertBean.serviceModelUpdate(orderManagement,userInfo); update(orderManagement); - shippingOrderManagementDetailRepository.saveAll(orderManagementDetailList); - //1.更新装车单明细对应的发运单状态=发运 - DdlPackBean vehiclesOrderDetailPackBean = DdlPackBean.getDdlPackBean(organizeCode); - DdlPreparedPack.getStringEqualPack(orderManagement.getShippingCode(), "shippingCode", vehiclesOrderDetailPackBean); - MesLoadingListDetail vehiclesOrderDetail = vehiclesOrderDetailRepository.getByProperty(vehiclesOrderDetailPackBean); - if(!StringUtil.isEmpty(vehiclesOrderDetail)){ - vehiclesOrderDetail.setStatus(MesExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue()); - ConvertBean.serviceModelUpdate(vehiclesOrderDetail, userInfo); - vehiclesOrderDetailRepository.save(vehiclesOrderDetail); + //不记忆时更新明细 + if (!StringUtils.isEmpty(orderManagement.getIsEnableMemory()) && !Objects.equals(orderManagement.getIsEnableMemory(), MesCommonConstant.TRUE_INTEGER)){ + shippingOrderManagementDetailRepository.saveAll(orderManagementDetailList); } if(StringUtils.isEmpty(orderManagement.getOrderCode()) || StringUtils.isEmpty(orderManagement.getLoadingListId())){ //发送数据给辊道线 @@ -502,15 +505,12 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService //保存当前发运单明细报工 jisShippingRepository.saveAll(getMesJisShippings(mesShippingOrderManagement,userInfo)); } - - if(!StringUtil.isEmpty(vehiclesOrderDetail)){ - MesLoadingList loadingList = vehiclesOrderRepository.getById(vehiclesOrderDetail.getPid()); - if (!StringUtils.isEmpty(loadingList)) { - loadingList.setSystemSyncStatus(CommonEnumUtil.FALSE); - loadingList.setStatus(MesExtEnumUtil.MES_LOADING_STATUS.ASN.getValue()); - ConvertBean.serviceModelUpdate(loadingList, userInfo); - shippingLoadingCheckService.update(loadingList); - } + //更新装车单 + if (!StringUtils.isEmpty(loadingList)) { + loadingList.setSystemSyncStatus(CommonEnumUtil.FALSE); + loadingList.setStatus(MesExtEnumUtil.MES_LOADING_STATUS.ASN.getValue()); + ConvertBean.serviceModelUpdate(loadingList, userInfo); + shippingLoadingCheckService.update(loadingList); } } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnAndOrderStrategyServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnAndOrderStrategyServiceImpl.java index 6bccefa..5ad1559 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnAndOrderStrategyServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnAndOrderStrategyServiceImpl.java @@ -30,10 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; -import java.util.Comparator; -import java.util.List; -import java.util.Objects; -import java.util.Optional; +import java.util.*; import java.util.stream.Collectors; /** @@ -70,25 +67,23 @@ public class MesShippingScanSnAndOrderStrategyServiceImpl implements IMesShippin @Override public MesSortShippingCheckModel doScan(MesSortShippingCheckModel model, MesShippingOrderManagement orderManagement, MesPartShippingGroup shippingGroup) { if (!Objects.isNull(model.getLastShippingDetailId())) { - //校验目视单是否已经扫描 - if (model.getDetailList().stream().anyMatch(t -> !StringUtils.isEmpty(t.getVisualOrderNo()) && t.getVisualOrderNo().equals(model.getSn()))) { - throw new ImppBusiException(String.format("【%s】此目视单已经扫描过,请检查数据!", model.getSn())); - } + //校验条码 + MesProduceSn produceSn = checkSn(model); //更新单据信息 model.getDetailList().stream().filter(t -> t.getId().equals(model.getLastShippingDetailId())).forEach(detail -> { - detail.setVisualOrderNo(model.getSn()); - updateOrderManagementDetails(orderManagement, detail, getWorkOrder(model, detail), model.getUserInfo()); + detail.setBarcode(model.getSn()); + updateOrderManagementDetails(orderManagement, detail, getMesWorkOrder(model, produceSn, detail), produceSn, model.getUserInfo()); }); model.setLastShippingDetailId(null); } else { - //校验条码 - MesProduceSn produceSn = checkSn(model); + //校验目视单 + MesWorkOrder workOrder = getWorkOrder(model); boolean scanFlg = false; for (MesShippingOrderManagementDetail detail : model.getDetailList()) { - if (detail.getPartNo().equals(produceSn.getPartNo()) && StringUtils.isEmpty(detail.getBarcode()) && !Objects.equals(detail.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER)) { + if (detail.getPartNo().equals(workOrder.getPartNo()) && StringUtils.isEmpty(detail.getBarcode()) && !Objects.equals(detail.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER)) { //校验发运明细 - checkShippingDetails(model, orderManagement, shippingGroup, produceSn, detail); - detail.setBarcode(model.getSn()); + checkShippingDetails(model, orderManagement, shippingGroup, workOrder.getPartNo(), detail); + detail.setVisualOrderNo(model.getSn()); //校验通过的明细ID model.setLastShippingDetailId(detail.getId()); scanFlg = true; @@ -96,16 +91,15 @@ public class MesShippingScanSnAndOrderStrategyServiceImpl implements IMesShippin } } if (!scanFlg) { - throw new ImppBusiException(String.format("【%s】此条码对应的【%s】物料号与发运单中物料号不匹配,请检查数据!", model.getSn(), produceSn.getPartNo())); + throw new ImppBusiException(String.format("【%s】此目视单对应的【%s】物料号与发运单中物料号不匹配,请检查数据!", model.getSn(), workOrder.getPartNo())); } } return model; } - - private MesWorkOrder getWorkOrder(MesSortShippingCheckModel model, MesShippingOrderManagementDetail detail) { - MesWorkOrder workOrder = mesWorkOrderExtService.getWorkOrder(model.getOrganizeCode(), model.getSn()); + private MesWorkOrder getMesWorkOrder(MesSortShippingCheckModel model, MesProduceSn produceSn, MesShippingOrderManagementDetail detail) { + MesWorkOrder workOrder = mesWorkOrderExtService.getWorkOrder(model.getOrganizeCode(), detail.getVisualOrderNo()); if (Objects.isNull(workOrder)) { throw new ImppBusiException(String.format("目视单【%s】不存在,请检查数据!", model.getSn())); } @@ -114,17 +108,35 @@ public class MesShippingScanSnAndOrderStrategyServiceImpl implements IMesShippin throw new ImppBusiException(String.format("目视单【%s】状态为【%s】质量状态为【%s】,不允许发运!", model.getSn(), MesExtEnumUtil.ORDER_STATUS.valueOfDescription(workOrder.getWorkOrderStatus()), MesExtEnumUtil.PRODUCE_QC_STATUS.valueOfDescription(workOrder.getQcStatus()))); } //校验条码是否匹配 - if (!Objects.equals(detail.getBarcode(), workOrder.getCustSn())) { - throw new ImppBusiException(String.format("目视单【%s】条码【%s】与扫描条码【%s】,不匹配!", model.getSn(), workOrder.getCustSn(), detail.getBarcode())); + if (!Objects.equals(produceSn.getCustSn(), workOrder.getCustSn())) { + throw new ImppBusiException(String.format("目视单【%s】条码【%s】与扫描条码【%s】,不匹配!", detail.getVisualOrderNo(), workOrder.getCustSn(), model.getSn())); } //校验零件是否匹配 - if (!Objects.equals(detail.getPartNo(), workOrder.getPartNo())) { - throw new ImppBusiException(String.format("目视单【%s】零件【%s】与发运单零件【%s】,不匹配!", model.getSn(), workOrder.getPartNo(), detail.getPartNo())); + if (!Objects.equals(produceSn.getPartNo(), workOrder.getPartNo())) { + throw new ImppBusiException(String.format("目视单【%s】零件【%s】与发运单零件【%s】,不匹配!", detail.getVisualOrderNo(), workOrder.getPartNo(), detail.getPartNo())); } return workOrder; } - private void checkShippingDetails(MesSortShippingCheckModel model, MesShippingOrderManagement orderManagement, MesPartShippingGroup shippingGroup, MesProduceSn produceSn, MesShippingOrderManagementDetail detail) { + + private MesWorkOrder getWorkOrder(MesSortShippingCheckModel model) { + //校验目视单是否已经扫描 + if (model.getDetailList().stream().anyMatch(t -> !StringUtils.isEmpty(t.getVisualOrderNo()) && t.getVisualOrderNo().equals(model.getSn()))) { + throw new ImppBusiException(String.format("【%s】此目视单已经扫描过,请检查数据!", model.getSn())); + } + //查询工单 + MesWorkOrder workOrder = mesWorkOrderExtService.getWorkOrder(model.getOrganizeCode(), model.getSn()); + if (Objects.isNull(workOrder)) { + throw new ImppBusiException(String.format("目视单【%s】不存在,请检查数据!", model.getSn())); + } + //校验目视单状态 + if (MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue() != workOrder.getWorkOrderStatus() || MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue() != workOrder.getQcStatus()) { + throw new ImppBusiException(String.format("目视单【%s】状态为【%s】质量状态为【%s】,不允许发运!", model.getSn(), MesExtEnumUtil.ORDER_STATUS.valueOfDescription(workOrder.getWorkOrderStatus()), MesExtEnumUtil.PRODUCE_QC_STATUS.valueOfDescription(workOrder.getQcStatus()))); + } + return workOrder; + } + + private void checkShippingDetails(MesSortShippingCheckModel model, MesShippingOrderManagement orderManagement, MesPartShippingGroup shippingGroup, String partNo, MesShippingOrderManagementDetail detail) { //校验发运单明细顺序 if (!Objects.isNull(shippingGroup) && !StringUtils.isEmpty(shippingGroup.getIsEnableShippingFailSafe()) && CommonEnumUtil.VALID == shippingGroup.getIsEnableShippingFailSafe()) { Optional first = model.getDetailList().stream().filter(k -> k.getCustInfoSeq().compareTo(detail.getCustInfoSeq()) < 0 && !Objects.equals(k.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER)).findFirst(); @@ -135,10 +147,10 @@ public class MesShippingScanSnAndOrderStrategyServiceImpl implements IMesShippin //判断是否需要排序校验 默认排序则需要校验 if (!StringUtils.isEmpty(orderManagement.getScanSeqWay()) && orderManagement.getScanSeqWay() == MesExtEnumUtil.SHIPPING_GROUP_SCAN_CONFIRM_SEQ_MODE.DEFAULT_SORT.getValue()) { //获取明细中最小的 - Optional minPartNo = model.getDetailList().stream().filter(k -> StringUtils.isEmpty(k.getBarcode())) + Optional minPartNo = model.getDetailList().stream().filter(k -> StringUtils.isEmpty(k.getBarcode()) && !Objects.equals(k.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER)) .min(Comparator.comparingLong(MesShippingOrderManagementDetail::getCustInfoSeq)).map(MesShippingOrderManagementDetail::getPartNo); //若扫描的不是最小顺序 则报错 - if (minPartNo.isPresent() && !minPartNo.get().equals(produceSn.getPartNo())) { + if (minPartNo.isPresent() && !minPartNo.get().equals(partNo)) { throw new ImppBusiException(String.format("【%s】此条码扫描顺序错误,请检查数据!", model.getSn())); } } @@ -215,7 +227,7 @@ public class MesShippingScanSnAndOrderStrategyServiceImpl implements IMesShippin return mesShippingOrderManagementDetail; } - private void updateOrderManagementDetails(MesShippingOrderManagement orderManagement, MesShippingOrderManagementDetail detail, MesWorkOrder workOrder, String userInfo) { + private void updateOrderManagementDetails(MesShippingOrderManagement orderManagement, MesShippingOrderManagementDetail detail, MesWorkOrder workOrder,MesProduceSn produceSn, String userInfo) { if (StringUtils.isEmpty(orderManagement.getCheckSeqCode())) { detail.setIsScanFlg(MesCommonConstant.TRUE_INTEGER); detail.setStatus(MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue()); @@ -232,14 +244,14 @@ public class MesShippingScanSnAndOrderStrategyServiceImpl implements IMesShippin orderManagement.setSystemSyncStatus(CommonEnumUtil.FALSE); ConvertBean.serviceModelUpdate(orderManagement, userInfo); update(orderManagement); - - detail.setActualQty(1); + //条码格式(扫描目视单,扫描条码) + detail.setBarcode(new StringJoiner(MesPcnExtConstWords.COMMA).add(detail.getVisualOrderNo()).add(detail.getBarcode()).toString()); + detail.setActualQty(MesPcnExtConstWords.ONE); detail.setSystemSyncStatus(CommonEnumUtil.FALSE); ConvertBean.serviceModelUpdate(detail, userInfo); updateDetail(detail); - MesProduceSn produceSn = getMesProduceSn(orderManagement.getOrganizeCode(), detail.getBarcode()); //内部条码更新条码状态 - if (!Objects.isNull(produceSn)) { + if (!Objects.isNull(produceSn.getId())) { produceSn.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.SHIPPED.getValue()); produceSn.setSystemSyncStatus(CommonEnumUtil.FALSE); ConvertBean.serviceModelUpdate(produceSn, userInfo); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnStrategyServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnStrategyServiceImpl.java index febefba..f28dcf2 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnStrategyServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnStrategyServiceImpl.java @@ -93,7 +93,7 @@ public class MesShippingScanSnStrategyServiceImpl implements IMesShippingScanStr //判断是否需要排序校验 默认排序则需要校验 if (!StringUtils.isEmpty(orderManagement.getScanSeqWay()) && orderManagement.getScanSeqWay() == MesExtEnumUtil.SHIPPING_GROUP_SCAN_CONFIRM_SEQ_MODE.DEFAULT_SORT.getValue()) { //获取明细中最小的 - Optional minPartNo = model.getDetailList().stream().filter(k -> StringUtils.isEmpty(k.getBarcode())) + Optional minPartNo = model.getDetailList().stream().filter(k -> StringUtils.isEmpty(k.getBarcode()) && !Objects.equals(k.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER)) .min(Comparator.comparingLong(MesShippingOrderManagementDetail::getCustInfoSeq)).map(MesShippingOrderManagementDetail::getPartNo); //若扫描的不是最小顺序 则报错 if (minPartNo.isPresent() && !minPartNo.get().equals(produceSn.getPartNo())) { From 8252c90f03621c927001044adc8b2cc9914ce4ab Mon Sep 17 00:00:00 2001 From: yxw Date: Thu, 10 Oct 2024 10:32:04 +0800 Subject: [PATCH 21/24] =?UTF-8?q?=E8=A3=81=E7=89=87=E5=8E=9F=E6=9D=90?= =?UTF-8?q?=E6=96=99=E9=98=B2=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/busi/MesCutRawErrorProofingController.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesCutRawErrorProofingController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesCutRawErrorProofingController.java index 3a221fa..fe28eb6 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesCutRawErrorProofingController.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesCutRawErrorProofingController.java @@ -12,10 +12,7 @@ import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; /** * @Description: 裁片原材料防错 @@ -32,7 +29,8 @@ public class MesCutRawErrorProofingController { @PostMapping("/scan-sn") @ApiOperation(value = "扫描裁片工单/原材料条码") - public ResultBean doScanSn(MesCutRawErrorProofingModel model) { + public ResultBean doScanSn(@RequestBody MesCutRawErrorProofingModel model) { + try { MesCutRawErrorProofingModel result = cutRawErrorProofingService.doScanSn(model); return ResultBean.success(StringUtils.isEmpty(result.getShowInfo()) ? "扫描成功" : result.getShowInfo()).setResultObject(result); @@ -74,7 +72,7 @@ public class MesCutRawErrorProofingController { @PostMapping("/update-raw-length") @ApiOperation(value = "修改原材料条码长度") - public ResultBean doUpdateLengthByScanSn(MesCutUpdateRawLengthModel model) { + public ResultBean doUpdateLengthByScanSn(@RequestBody MesCutUpdateRawLengthModel model) { try { cutRawErrorProofingService.doUpdateLengthByScanSn(model); From 31072fac39d39b82536a8bcf0aa2f292ec685021 Mon Sep 17 00:00:00 2001 From: yxw Date: Thu, 10 Oct 2024 10:55:53 +0800 Subject: [PATCH 22/24] =?UTF-8?q?=E6=8E=92=E5=BA=8F=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apiservice/serviceimpl/station/MesProductionSortModuleService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionSortModuleService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionSortModuleService.java index d2b9d71..e1786eb 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionSortModuleService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionSortModuleService.java @@ -159,7 +159,7 @@ public class MesProductionSortModuleService extends BaseModuleService { } MesQueueOrder queueOrder = getNewQueueOrder(reqBean); - return Stream.of(queueOrder.getPartProdGroupCode()).collect(Collectors.toList()); + return queueOrder == null ? null : Stream.of(queueOrder.getPartProdGroupCode()).collect(Collectors.toList()); } private MesQueueOrder getNewQueueOrder(StationRequestBean reqBean) { From 94c320d2cb50114647771186a53c6b422cd9eb9f Mon Sep 17 00:00:00 2001 From: jun Date: Thu, 10 Oct 2024 11:05:38 +0800 Subject: [PATCH 23/24] =?UTF-8?q?=E6=8E=92=E5=BA=8F=E5=8F=91=E8=BF=90?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java index 7a73a68..5becb84 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java @@ -434,6 +434,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService detail.setRemark(managementDetail.getRemark()); detail.setStatus(managementDetail.getStatus()); detail.setBarcode(managementDetail.getBarcode()); + detail.setVisualOrderNo(managementDetail.getVisualOrderNo()); DdlPreparedPack.getStringEqualPack(detail.getBarcode(), "productSn", packBean); } //更新条码信息,更新目视单信息 From 630ac61e319c3ac56d1d47819dec19e7a57378e0 Mon Sep 17 00:00:00 2001 From: gsz Date: Thu, 10 Oct 2024 15:00:18 +0800 Subject: [PATCH 24/24] =?UTF-8?q?SPS=E6=89=93=E5=8D=B0=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/pcn/apiservice/serviceimpl/busi/MesPullingOrderInfoService.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPullingOrderInfoService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPullingOrderInfoService.java index 839cd12..0494fcc 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPullingOrderInfoService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPullingOrderInfoService.java @@ -7,6 +7,7 @@ import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesPullingOrderInfoService; import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; @@ -185,6 +186,7 @@ public class MesPullingOrderInfoService implements IMesPullingOrderInfoService { pullingOrderInfo.setPullingOrderPartInfos(pullingOrderPartInfos); } + pullingOrderInfo.setPrintTime(TimeTool.getNowTime(true)); pullingOrderInfo.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.PRINTED.getValue()); ConvertBean.serviceModelUpdate(pullingOrderInfo, userName); }