diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderExtService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderExtService.java index 05c4a05..2b4dd9e 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderExtService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderExtService.java @@ -2,6 +2,7 @@ package cn.estsh.i3plus.ext.mes.pcn.api.busi; import cn.estsh.i3plus.pojo.base.bean.BaseBean; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; import io.swagger.annotations.ApiOperation; @@ -44,12 +45,18 @@ public interface IMesWorkOrderExtService { @ApiOperation(value = "根据生产工单ID查询生产工单信息") List getWorkOrderListByShiftCode(String organizeCode, String workCenterCode, String shiftCode); + @ApiOperation(value = "根据条码集合 查询生产工单/产品条码(排序)") + Map> getWorkOrderMapSort(String organizeCode, List snList); + @ApiOperation(value = "根据条码集合 查询生产工单/产品条码/队列数据(排序)") - Map> getWorkOrderMapSort(String organizeCode, String workCenterCode, String workCellCode, List snList); + Map> getWorkOrderMapSort(String organizeCode, List snList, MesWorkCell workCell); @ApiOperation(value = "根据工单或者客户条码 查询生产工单/产品条码(排序)") Map getWorkOrderMapSort(String organizeCode, String sn); + @ApiOperation(value = "根据工单或者客户条码 查询生产工单/产品条码/队列数据(排序)") + Map getWorkOrderMapSort(String organizeCode, String sn, MesWorkCell workCell); + @ApiOperation(value = "根据工单或者客户条码 查询生产工单信息(排序)") BaseBean getWorkOrderSort(String organizeCode, String sn, Boolean isBackOrder); 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 0e1dee5..76bd313 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 @@ -201,11 +201,10 @@ public class MesProduceSnExtService implements IMesProduceSnExtService { //根据零件条码,生产线,工位查询工位队列信息 @Override public Map> getQueueOrderMap(String organizeCode, String workCenterCode, String workCellCode, List productSnList) { - + //根据零件条码,生产线,工位查询工位队列信息 List queueOrderList = getQueueOrderList(organizeCode, workCenterCode, workCellCode, productSnList); //先排序再分组 return CollectionUtils.isEmpty(queueOrderList) ? null : queueOrderList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesQueueOrder::getProductSn)); - } private List distinctProduceSnList(List produceSnDataList) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderExtService.java index 94ebe0e..15d0e4e 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderExtService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderExtService.java @@ -12,6 +12,7 @@ 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.MesQueueOrder; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; @@ -161,57 +162,20 @@ public class MesWorkOrderExtService implements IMesWorkOrderExtService { } @Override - public Map> getWorkOrderMapSort(String organizeCode, String workCenterCode, String workCellCode, List snList) { + public Map> getWorkOrderMapSort(String organizeCode, List snList) { + return getWorkOrderMapSort(organizeCode, snList, null); + } - if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(workCenterCode) || StringUtils.isEmpty(workCellCode) || CollectionUtils.isEmpty(snList)) return null; + @Override + public Map> getWorkOrderMapSort(String organizeCode, List snList, MesWorkCell workCell) { + if (StringUtils.isEmpty(organizeCode) || CollectionUtils.isEmpty(snList)) return null; snList = snList.size() == 1 ? snList : snList.stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList()); Map> workOrderMap = new HashMap<>(); - for (String sn : snList) { - if (StringUtils.isEmpty(sn)) continue; - - Map itemMap = new HashMap<>(); - - if (sn.length() == MesPcnExtConstWords.CUSTOMER_SN_LENGTH_GM) { - MesProduceSn produceSn = produceSnExtService.getProduceSnByCustSn(organizeCode, customerSnTransformService.transformBarCodeGm(sn)); - if (null == produceSn || StringUtils.isEmpty(produceSn.getWorkOrderNo())) { - itemMap.put(MesPcnExtConstWords.MESSAGE, String.format("请检查工单及客户条码信息,客户条码[%s]信息无效!", sn)); - continue; - } else itemMap.put(MesProduceSn.class.getSimpleName(), produceSn); - - MesWorkOrder workOrder = getWorkOrder(organizeCode, produceSn.getWorkOrderNo()); - if (null == workOrder) { - itemMap.put(MesPcnExtConstWords.MESSAGE, String.format("请检查工单信息,客户条码[%s]对应的加工单[%s]信息不存在!", sn, produceSn.getWorkOrderNo())); - continue; - } else itemMap.put(MesWorkOrder.class.getSimpleName(), workOrder); - - MesQueueOrder queueOrder = produceSnExtService.getQueueOrder(organizeCode, workCenterCode, workCellCode, produceSn.getProductSn()); - if (null == queueOrder) itemMap.put(MesPcnExtConstWords.MESSAGE, String.format("请检查工位队列信息,客户条码[%s]工位队列信息不存在!", sn)); - else itemMap.put(MesQueueOrder.class.getSimpleName(), queueOrder); - } else { - MesProduceSn produceSn = produceSnExtService.getProduceSn(organizeCode, sn, sn); - if (null == produceSn) produceSn = produceSnExtService.getProduceSnByCustSn(organizeCode, sn); - if (null == produceSn || StringUtils.isEmpty(produceSn.getWorkOrderNo())) { - itemMap.put(MesPcnExtConstWords.MESSAGE, String.format("请检查工单及产品条码信息,加工单[%s]不存在产品条码信息!", sn)); - continue; - } else itemMap.put(MesProduceSn.class.getSimpleName(), produceSn); - - MesWorkOrder workOrder = getWorkOrder(organizeCode, produceSn.getWorkOrderNo()); - if (null == workOrder) { - itemMap.put(MesPcnExtConstWords.MESSAGE, String.format("请检查工单信息,加工单[%s]信息无效!", produceSn.getWorkOrderNo())); - continue; - } else itemMap.put(MesWorkOrder.class.getSimpleName(), workOrder); - - MesQueueOrder queueOrder = produceSnExtService.getQueueOrder(organizeCode, workCenterCode, workCellCode, produceSn.getProductSn()); - if (null == queueOrder) itemMap.put(MesPcnExtConstWords.MESSAGE, String.format("请检查工位队列信息,加工单[%s]工位队列信息不存在!", produceSn.getWorkOrderNo())); - else itemMap.put(MesQueueOrder.class.getSimpleName(), queueOrder); - } - - workOrderMap.put(sn, itemMap); - + workOrderMap.put(sn, getWorkOrderMapSort(organizeCode, sn, workCell)); } return workOrderMap; @@ -219,30 +183,40 @@ public class MesWorkOrderExtService implements IMesWorkOrderExtService { @Override public Map getWorkOrderMapSort(String organizeCode, String sn) { + return getWorkOrderMapSort(organizeCode, sn, null); + } + + @Override + public Map getWorkOrderMapSort(String organizeCode, String sn, MesWorkCell workCell) { if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(sn)) return null; Map resultMap = new HashMap<>(); + MesProduceSn produceSn; if (sn.length() == MesPcnExtConstWords.CUSTOMER_SN_LENGTH_GM) { - MesProduceSn produceSn = produceSnExtService.getProduceSnByCustSn(organizeCode, customerSnTransformService.transformBarCodeGm(sn)); + produceSn = produceSnExtService.getProduceSnByCustSn(organizeCode, customerSnTransformService.transformBarCodeGm(sn)); if (null == produceSn || StringUtils.isEmpty(produceSn.getWorkOrderNo())) resultMap.put(MesPcnExtConstWords.MESSAGE, String.format("请检查工单及客户条码信息,客户条码[%s]信息无效!", sn)); else resultMap.put(MesProduceSn.class.getSimpleName(), produceSn); - - MesWorkOrder workOrder = getWorkOrder(organizeCode, produceSn.getWorkOrderNo()); - if (null == workOrder) resultMap.put(MesPcnExtConstWords.MESSAGE, String.format("请检查工单信息,客户条码[%s]对应的加工单[%s]信息不存在!", sn, produceSn.getWorkOrderNo())); - else resultMap.put(MesWorkOrder.class.getSimpleName(), workOrder); } else { - MesProduceSn produceSn = produceSnExtService.getProduceSn(organizeCode, sn, sn); + produceSn = produceSnExtService.getProduceSn(organizeCode, sn, sn); if (null == produceSn) produceSn = produceSnExtService.getProduceSnByCustSn(organizeCode, sn); if (null == produceSn || StringUtils.isEmpty(produceSn.getWorkOrderNo())) resultMap.put(MesPcnExtConstWords.MESSAGE, String.format("请检查工单及产品条码信息,加工单[%s]不存在产品条码信息!", sn)); else resultMap.put(MesProduceSn.class.getSimpleName(), produceSn); + } + if (null != produceSn) { MesWorkOrder workOrder = getWorkOrder(organizeCode, produceSn.getWorkOrderNo()); - if (null == workOrder) resultMap.put(MesPcnExtConstWords.MESSAGE, String.format("请检查工单信息,加工单[%s]信息无效!", produceSn.getWorkOrderNo())); + if (null == workOrder) resultMap.put(MesPcnExtConstWords.MESSAGE, String.format("请检查工单信息,客户条码[%s]对应的加工单[%s]信息不存在!", produceSn.getCustSn(), produceSn.getWorkOrderNo())); else resultMap.put(MesWorkOrder.class.getSimpleName(), workOrder); } + if (null != produceSn && null != workCell) { + MesQueueOrder queueOrder = produceSnExtService.getQueueOrder(organizeCode, workCell.getWorkCenterCode(), workCell.getWorkCellCode(), produceSn.getProductSn()); + if (null == queueOrder) resultMap.put(MesPcnExtConstWords.MESSAGE, String.format("请检查工位队列信息,客户条码[%s]加工单[%s]工位队列信息不存在!", produceSn.getCustSn(), produceSn.getWorkOrderNo())); + else resultMap.put(MesQueueOrder.class.getSimpleName(), queueOrder); + } + return resultMap; } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSeqCheckSortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSeqCheckSortStepService.java index 53cddfe..0314bf7 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSeqCheckSortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSeqCheckSortStepService.java @@ -116,6 +116,8 @@ public class MesProductSeqCheckSortStepService extends MesProductSeqCheckStepSer if (workOrder.getWorkOrderStatus().compareTo(MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue()) >= 0) return true; + //以下是加工中状态下的验证 + //根据生产工单,生产线,工位查询工位队列信息 List queueOrderList = produceSnExtService.getQueueOrderList(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), workOrder.getWorkOrderNo()); Optional optional = CollectionUtils.isEmpty(queueOrderList) ? null : queueOrderList.stream().filter(o -> (null != o && o.getStatus().compareTo(MesExtEnumUtil.QUEUE_ORDER_STATUS.CREATE.getValue()) == 0)).findFirst(); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCheckNosortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCheckNosortStepService.java index 3f8afd4..c270c9b 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCheckNosortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCheckNosortStepService.java @@ -60,9 +60,6 @@ public class MesWorkOrderCheckNosortStepService extends MesWorkOrderCheckStepSer //清除本次已获取得到的加工单信息 productionDispatchContextStepService.removeScanWorkOrderNoContext(reqBean); - //从上下文中取出生产线对象 - MesWorkCenter workCenter = productionProcessContext.getWorkCenter(); - //获取上下文产出零件信息 List cachedProductionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean); @@ -99,7 +96,7 @@ public class MesWorkOrderCheckNosortStepService extends MesWorkOrderCheckStepSer try { //验证工单的有效性 - if (!checkWorkOrderValid(reqBean, resultBean, stepResult, productionProcessContext, workCenter, equipVariableCollectContextList, productionPartContextList).isCompleted()) return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg()); + if (!checkWorkOrderValid(reqBean, resultBean, stepResult, productionProcessContext, equipVariableCollectContextList, productionPartContextList).isCompleted()) return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg()); //扫描场景下合并历史产出零件信息 if (MesExtEnumUtil.CELL_MESSAGE_SOURCE.SCAN.getValue() == equipVariableCollectContextList.get(0).getMessageSource() && !CollectionUtils.isEmpty(cachedProductionPartContextList)) productionPartContextList.addAll(cachedProductionPartContextList); @@ -173,9 +170,12 @@ public class MesWorkOrderCheckNosortStepService extends MesWorkOrderCheckStepSer } //验证工单的有效性 - private StepResult checkWorkOrderValid(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, MesWorkCenter workCenter, + private StepResult checkWorkOrderValid(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, List equipVariableCollectContextList, List productionPartContextList) { + //从上下文中取出生产线对象 + MesWorkCenter workCenter = productionProcessContext.getWorkCenter(); + //搜集生产工单号 List filterList = equipVariableCollectContextList.stream().filter(o -> (null != o)).map(MesEquipVariableCollectContext::getEquipVariableValue).collect(Collectors.toList()); List workOrderNoList = filterList.stream().filter(o -> (!StringUtils.isEmpty(o) && !o.equals(productionProcessContext.getFinishCode()))).distinct().collect(Collectors.toList()); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCheckSortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCheckSortStepService.java index 0fe3684..24f21c2 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCheckSortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCheckSortStepService.java @@ -6,10 +6,7 @@ import cn.estsh.i3plus.mes.pcn.util.StationKvBeanUtil; import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; -import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; -import cn.estsh.i3plus.pojo.mes.bean.MesQueueOrder; -import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; -import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; +import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.model.StationKvBean; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.model.StationResultBean; @@ -55,9 +52,6 @@ public class MesWorkOrderCheckSortStepService extends MesWorkOrderCheckStepServi //清除本次已获取得到的加工单信息 productionDispatchContextStepService.removeScanWorkOrderNoContext(reqBean); - //从上下文中取出生产线对象 - MesWorkCenter workCenter = productionProcessContext.getWorkCenter(); - //获取上下文产出零件信息 List cachedProductionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean); List cachedProductionPsInContextList = null; @@ -103,8 +97,10 @@ public class MesWorkOrderCheckSortStepService extends MesWorkOrderCheckStepServi List productionPartContextList = new ArrayList<>(); List productionPsInContextList = new ArrayList<>(); List productionPsOutContextList = new ArrayList<>(); - if (!checkWorkOrderValid(reqBean, resultBean, stepResult, productionProcessContext, workCenter, - equipVariableCollectContextList, productionPartContextList, productionPsInContextList, productionPsOutContextList).isCompleted()) return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg()); + if (!checkWorkOrderValid(reqBean, resultBean, stepResult, productionProcessContext, + equipVariableCollectContextList, productionPartContextList, productionPsInContextList, productionPsOutContextList).isCompleted()) { + return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg()); + } //扫描场景下合并历史产出零件信息/产品条码信息 if (MesExtEnumUtil.CELL_MESSAGE_SOURCE.SCAN.getValue() == equipVariableCollectContextList.get(0).getMessageSource() && !CollectionUtils.isEmpty(cachedProductionPartContextList)) { @@ -173,16 +169,22 @@ public class MesWorkOrderCheckSortStepService extends MesWorkOrderCheckStepServi } //验证工单的有效性 - private StepResult checkWorkOrderValid(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, - MesProductionProcessContext productionProcessContext, MesWorkCenter workCenter, + private StepResult checkWorkOrderValid(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, List equipVariableCollectContextList, List productionPartContextList, List productionPsInContextList, List productionPsOutContextList) { + //从上下文中取出生产线与工位对象 + MesWorkCenter workCenter = productionProcessContext.getWorkCenter(); + MesWorkCell workCell = productionProcessContext.getWorkCell(); + //搜集生产工单号 List filterList = equipVariableCollectContextList.stream().filter(o -> (null != o)).map(MesEquipVariableCollectContext::getEquipVariableValue).collect(Collectors.toList()); List workOrderNoList = filterList.stream().filter(o -> (!StringUtils.isEmpty(o) && !o.equals(productionProcessContext.getFinishCode()))).distinct().collect(Collectors.toList()); - Map> workOrderMap = workOrderExtService.getWorkOrderMapSort(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), workOrderNoList); + Map> workOrderMap; + if (StringUtils.isEmpty(workCenter.getIsPushQueue()) || workCenter.getIsPushQueue().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) != 0) + workOrderMap = workOrderExtService.getWorkOrderMapSort(reqBean.getOrganizeCode(), workOrderNoList, workCell); + else workOrderMap = workOrderExtService.getWorkOrderMapSort(reqBean.getOrganizeCode(), workOrderNoList); for (String workOrderNo : workOrderNoList) { @@ -209,7 +211,7 @@ public class MesWorkOrderCheckSortStepService extends MesWorkOrderCheckStepServi return stepResult.isCompleted(false).msg(String.format("请检查工单产品条码信息,产品条码[%s]条码状态[%s]", produceSn.getProductSn(), MesExtEnumUtil.PRODUCE_SN_STATUS.valueOfDescription(produceSn.getSnStatus()))); MesQueueOrder queueOrder = (MesQueueOrder) itemMap.get(MesQueueOrder.class.getSimpleName()); - if (MesExtEnumUtil.QUEUE_ORDER_STATUS.FINISH.getValue() == queueOrder.getStatus()) + if (null != queueOrder && MesExtEnumUtil.QUEUE_ORDER_STATUS.FINISH.getValue() == queueOrder.getStatus()) return stepResult.isCompleted(false).msg(String.format("请检查工单工位队列信息,加工单[%s]工位队列状态[%s]", workOrderNo, MesExtEnumUtil.QUEUE_ORDER_STATUS.valueOfDescription(queueOrder.getStatus()))); //封装产成零件 @@ -218,7 +220,10 @@ public class MesWorkOrderCheckSortStepService extends MesWorkOrderCheckStepServi productionPartContextList.add(productionPartContext); //封装产品条码 - productionPsInContextList.add(new MesProductionPsInContext(produceSn).isCheck(productionProcessContext.getWorkCell()).messageSource(equipVariableCollectContextList.get(0).getMessageSource()).relateId(queueOrder.getId())); + productionPsInContextList.add(new MesProductionPsInContext(produceSn) + .isCheck(productionProcessContext.getWorkCell()).messageSource(equipVariableCollectContextList.get(0).getMessageSource()) + .relateId(null != queueOrder ? queueOrder.getId() : null) + ); //封装产出条码 MesProductionPsOutContext productionPsOutContext = new MesProductionPsOutContext().copy(produceSn); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCheckSortStepServiceBak.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCheckSortStepServiceBak.java index df835e8..a3874cc 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCheckSortStepServiceBak.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCheckSortStepServiceBak.java @@ -6,10 +6,7 @@ import cn.estsh.i3plus.mes.pcn.util.StationKvBeanUtil; import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; -import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; -import cn.estsh.i3plus.pojo.mes.bean.MesQueueOrder; -import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; -import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; +import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.model.StationKvBean; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.model.StationResultBean; @@ -55,9 +52,6 @@ public class MesWorkOrderCheckSortStepServiceBak extends MesWorkOrderCheckStepSe //清除本次已获取得到的加工单信息 productionDispatchContextStepService.removeScanWorkOrderNoContext(reqBean); - //从上下文中取出生产线对象 - MesWorkCenter workCenter = productionProcessContext.getWorkCenter(); - //获取上下文产出零件信息 List cachedProductionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean); List cachedProductionPsInContextList = null; @@ -103,8 +97,10 @@ public class MesWorkOrderCheckSortStepServiceBak extends MesWorkOrderCheckStepSe List productionPartContextList = new ArrayList<>(); List productionPsInContextList = new ArrayList<>(); List productionPsOutContextList = new ArrayList<>(); - if (!checkWorkOrderValid(reqBean, resultBean, stepResult, productionProcessContext, workCenter, - equipVariableCollectContextList, productionPartContextList, productionPsInContextList, productionPsOutContextList).isCompleted()) return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg()); + if (!checkWorkOrderValid(reqBean, resultBean, stepResult, productionProcessContext, + equipVariableCollectContextList, productionPartContextList, productionPsInContextList, productionPsOutContextList).isCompleted()) { + return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg()); + } //扫描场景下合并历史产出零件信息/产品条码信息 if (MesExtEnumUtil.CELL_MESSAGE_SOURCE.SCAN.getValue() == equipVariableCollectContextList.get(0).getMessageSource() && !CollectionUtils.isEmpty(cachedProductionPartContextList)) { @@ -173,16 +169,19 @@ public class MesWorkOrderCheckSortStepServiceBak extends MesWorkOrderCheckStepSe } //验证工单的有效性 - private StepResult checkWorkOrderValid(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, - MesProductionProcessContext productionProcessContext, MesWorkCenter workCenter, + private StepResult checkWorkOrderValid(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, List equipVariableCollectContextList, List productionPartContextList, List productionPsInContextList, List productionPsOutContextList) { + //从上下文中取出生产线与工位对象 + MesWorkCenter workCenter = productionProcessContext.getWorkCenter(); + MesWorkCell workCell = productionProcessContext.getWorkCell(); + //搜集生产工单号 List filterList = equipVariableCollectContextList.stream().filter(o -> (null != o)).map(MesEquipVariableCollectContext::getEquipVariableValue).collect(Collectors.toList()); List workOrderNoList = filterList.stream().filter(o -> (!StringUtils.isEmpty(o) && !o.equals(productionProcessContext.getFinishCode()))).distinct().collect(Collectors.toList()); - Map> workOrderMap = workOrderExtService.getWorkOrderMapSort(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), workOrderNoList); + Map> workOrderMap = workOrderExtService.getWorkOrderMapSort(reqBean.getOrganizeCode(), workOrderNoList, workCell); for (String workOrderNo : workOrderNoList) { diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionPsInContext.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionPsInContext.java index 6060f9f..fde017f 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionPsInContext.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionPsInContext.java @@ -127,7 +127,7 @@ public class MesProductionPsInContext implements Serializable { } public MesProductionPsInContext relateId(Long relateId) { - this.relateId = relateId; + if (!StringUtils.isEmpty(relateId)) this.relateId = relateId; return this; }