From 1041100674015426ac84c2161530a17738466ca3 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Mon, 11 Nov 2024 13:12:30 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E8=BF=9B=E8=87=AA=E5=87=BA=20?= =?UTF-8?q?=E7=94=9F=E6=88=90=E9=87=8D=E5=A4=8D=E6=9D=A1=E7=A0=81=20?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../step/MesAssemblyShowNosortStepService.java | 16 +++++-- .../step/MesProductSnGenerateStepService.java | 53 +++++++++++----------- 2 files changed, 38 insertions(+), 31 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowNosortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowNosortStepService.java index 8c155d7..575b040 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowNosortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowNosortStepService.java @@ -287,9 +287,13 @@ public class MesAssemblyShowNosortStepService extends BaseStepService { } //【非排序线】获取产品加工规则对应的装配件信息 - MesProdRuleContext prodRuleContext = prodRuleCfgExtService.getProdRuleNosortContext( - new MesProdRuleContext(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), reqBean.getProcessCode(), productionProcessContext.getCraftCode()) - .copy(filterList.get(0)).productSn(productionPsInContext.getProductSn()).foreignKey(productionPsInContext.foreignKey(foreignKey += 1).getForeignKey())); + MesProdRuleContext prodRuleContext = new MesProdRuleContext( + reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), reqBean.getProcessCode(), productionProcessContext.getCraftCode()) + .copy(filterList.get(0)).productSn(productionPsInContext.getProductSn()).foreignKey(productionPsInContext.foreignKey(foreignKey += 1).getForeignKey()); + + if (!StringUtils.isEmpty(productionPsInContext.getWorkOrderNo())) prodRuleContext.workOrderNo(productionPsInContext.getWorkOrderNo()); + + prodRuleContext = prodRuleCfgExtService.getProdRuleNosortContext(prodRuleContext); prodRuleContextList.add(prodRuleContext); log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- 设备:{} 进料零件条码:{} 产品加工规则:{} ---", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), @@ -391,7 +395,11 @@ public class MesAssemblyShowNosortStepService extends BaseStepService { MesProdRuleContext prodRuleContext = prodRuleCfgExtService.getProdRuleNosortContext(new MesProdRuleContext( reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), reqBean.getProcessCode(), productionProcessContext.getCraftCode()). - copy(innerfilterList.get(0)).workOrderNo(productionPartContext.getWorkOrderNo()).productSn(productSn.getProductSn())).foreignKey(productionPartContext.getForeignKey()); + copy(innerfilterList.get(0)).productSn(productSn.getProductSn())).foreignKey(productionPartContext.getForeignKey()); + + if (!StringUtils.isEmpty(productionPartContext.getWorkOrderNo())) prodRuleContext.workOrderNo(productionPartContext.getWorkOrderNo()); + else if (!StringUtils.isEmpty(productSn.getWorkOrderNo())) prodRuleContext.workOrderNo(productSn.getWorkOrderNo()); + prodRuleContextList.add(prodRuleContext); log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- 设备:{} 产出零件信息:{} 进料零件条码:{} 产品加工规则:{} ---", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnGenerateStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnGenerateStepService.java index 20aff5b..37632ef 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnGenerateStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnGenerateStepService.java @@ -153,8 +153,8 @@ public class MesProductSnGenerateStepService extends BaseStepService { //零件信息 MesPart part = partDataMap.get(prodRuleContext.getOutPartNo()); - //加工规则中进料零件与产出零件是否一致 - Boolean isSamePart = isSamePart(productionPsInContext, productionPartContext); + //验证进料零件与产出零件是否一致 + Boolean isSamePart = isSamePart(productionPsInContext, productionPartContext, prodRuleContext); //工位是否不累计工单完成数 Boolean isCellNoCalcQty = isCellNoCalcQty(workCell.getNoCalcOrderQty()); @@ -173,15 +173,18 @@ public class MesProductSnGenerateStepService extends BaseStepService { produceSn.setCustSn(produceSn.getProductSn()); } - if (StringUtils.isEmpty(produceSn.getSerialNumber())) - produceSn.setSerialNumber(doGererateSerialNo(reqBean, resultBean, - generateGenSerialNoModel(reqBean, resultBean, MesPcnExtConstWords.DEFAULT_SERIAL_NUMBER_RULE, part))); + if (StringUtils.isEmpty(produceSn.getSerialNumber())) { + produceSn.setSerialNumber(doGererateSerialNo(reqBean, resultBean, generateGenSerialNoModel(reqBean, resultBean, MesPcnExtConstWords.DEFAULT_SERIAL_NUMBER_RULE, part))); + } produceSn.setQty(new Double(1)); - produceSn.setWorkOrderNo((null != productionPartContext && !StringUtils.isEmpty(productionPartContext.getWorkOrderNo())) ? productionPartContext.getWorkOrderNo() : null); - produceSn.setCustCode((null != productionPartContext && !StringUtils.isEmpty(productionPartContext.getWorkOrderNo())) ? productionPartContext.getCustCode() : null); - produceSn.setCustPartNo((null != productionPartContext && !StringUtils.isEmpty(productionPartContext.getWorkOrderNo())) ? productionPartContext.getCustPartNo() : null); + if (!StringUtils.isEmpty(prodRuleContext.getWorkOrderNo())) produceSn.setWorkOrderNo(prodRuleContext.getWorkOrderNo()); + + if (null != productionPartContext && !StringUtils.isEmpty(productionPartContext.getWorkOrderNo())) { + produceSn.setCustCode(productionPartContext.getCustCode()); + produceSn.setCustPartNo(productionPartContext.getCustPartNo()); + } produceSn.setAreaCode(reqBean.getAreaCode()); produceSn.setWorkCenterCode(reqBean.getWorkCenterCode()); @@ -219,7 +222,7 @@ public class MesProductSnGenerateStepService extends BaseStepService { produceSn = produceSnExtService.insert(produceSn); } else produceSnExtService.updateNoSync(produceSn); - MesProductionPsOutContext productionPsOutContext = new MesProductionPsOutContext().copy(produceSn, prodRuleContext.getForeignKey()).isCalcCompleteQty(isCalcCompleteQty(isCellNoCalcQty, produceSn.getWorkOrderNo(), isSamePart, productionPartContext, productionPsInContext)); + MesProductionPsOutContext productionPsOutContext = new MesProductionPsOutContext().copy(produceSn, prodRuleContext.getForeignKey()).isCalcCompleteQty(isCalcCompleteQty(isCellNoCalcQty, isSamePart, productionPartContext)); log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- MesProduceSn:{} --- MesProductionPsOutContext:{}", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), @@ -253,13 +256,17 @@ public class MesProductSnGenerateStepService extends BaseStepService { return part.getProductMatchRule(); } - //加工规则中进料零件与产出零件是否一致 - private Boolean isSamePart(MesProductionPsInContext productionPsInContext, MesProductionPartContext productionPartContext) { + //验证进料零件与产出零件是否一致 + private Boolean isSamePart(MesProductionPsInContext productionPsInContext, MesProductionPartContext productionPartContext, MesProdRuleContext prodRuleContext) { if (null == productionPsInContext) return false; if (StringUtils.isEmpty(productionPsInContext.getPartNo())) return false; - if (null == productionPartContext) return false; - if (!productionPsInContext.getPartNo().equals(productionPartContext.getPartNo())) return false; - return true; + if (null != productionPartContext) { + if (!productionPsInContext.getPartNo().equals(productionPartContext.getPartNo())) return false; + else return true; + } else { + if (!productionPsInContext.getPartNo().equals(prodRuleContext.getOutPartNo())) return false; + else return true; + } } //工位是否不累计工单完成数 @@ -268,20 +275,12 @@ public class MesProductSnGenerateStepService extends BaseStepService { } //判断是否累计工单完成数 - private Boolean isCalcCompleteQty(Boolean isCellNoCalcQty, String workOrderNo, Boolean isSamePart, MesProductionPartContext productionPartContext, MesProductionPsInContext productionPsInContext) { + private Boolean isCalcCompleteQty(Boolean isCellNoCalcQty, Boolean isSamePart, MesProductionPartContext productionPartContext) { + //工位不消耗工单完成数 if (isCellNoCalcQty) return false; - if (StringUtils.isEmpty(workOrderNo)) return false; - if (checkIsSameWorkOrder(isSamePart, productionPartContext, productionPsInContext)) return false; - return true; - } - - //进出一致的情况下判断进出是否都存在工单 - private Boolean checkIsSameWorkOrder(Boolean isSamePart, MesProductionPartContext productionPartContext, MesProductionPsInContext productionPsInContext) { - if (!isSamePart) return false; - //进出零件一致则无需验证进出的对象为空 - if (StringUtils.isEmpty(productionPartContext.getWorkOrderNo()) || StringUtils.isEmpty(productionPsInContext.getWorkOrderNo())) return false; - //无需验证进出的工单是否一致,在匹配加工规则的时候已经验证了必须一致 - return true; + //未选工单场景 + if (null == productionPartContext || StringUtils.isEmpty(productionPartContext.getWorkOrderNo())) return false; + return isSamePart ? false : true; } }