From 08c5ccdd3c9d95b9afbcb1bad8f2ebb1b20ab0d8 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Sat, 15 Jun 2024 17:47:29 +0800 Subject: [PATCH] step --- .../mes/pcn/api/busi/IMesAssemblyExtService.java | 4 +- .../pcn/api/busi/IMesProdRuleCfgExtService.java | 6 +-- .../serviceimpl/busi/MesAssemblyExtService.java | 17 +++--- .../serviceimpl/busi/MesProdRuleCfgExtService.java | 46 +++-------------- .../step/MesAssemblyShowNosortStepService.java | 19 ++++--- .../step/MesAssemblyShowSortStepService.java | 60 ++++++++++++++++------ .../mes/pcn/pojo/context/MesProdRuleContext.java | 9 ++-- .../pcn/pojo/context/MesProductionPsInContext.java | 5 +- 8 files changed, 86 insertions(+), 80 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesAssemblyExtService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesAssemblyExtService.java index c68b59a..a266615 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesAssemblyExtService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesAssemblyExtService.java @@ -13,10 +13,10 @@ import java.util.List; public interface IMesAssemblyExtService { @ApiOperation(value = "【排序线】获取生产工单装配件绑定记录") - List getProductionAssemblySortContextList(MesProdRuleContext prodRuleContext, List workOrderNoList); + List getProductionAssemblySortContextList(MesProdRuleContext prodRuleContext); @ApiOperation(value = "【排序线】获取生产工单装配件清单") - List getWorkOrderAssemblyList(MesProdRuleContext prodRuleContext, List workOrderNoList); + List getWorkOrderAssemblyList(MesProdRuleContext prodRuleContext); @ApiOperation(value = "获取装配件绑定记录") List getProductionAssemblyList(String organizeCode, Integer dataSource, List sourceIdList); diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProdRuleCfgExtService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProdRuleCfgExtService.java index 2a394d7..7a76013 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProdRuleCfgExtService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProdRuleCfgExtService.java @@ -1,7 +1,6 @@ package cn.estsh.i3plus.ext.mes.pcn.api.busi; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProdRuleContext; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext; import cn.estsh.i3plus.pojo.mes.bean.MesProdRuleNosortCfg; import io.swagger.annotations.ApiOperation; @@ -9,9 +8,6 @@ import java.util.List; public interface IMesProdRuleCfgExtService { - @ApiOperation(value = "【排序线】获取产品加工规则(生产工单对应的装配件绑定记录)") - List getProdRuleSortContextList(MesProdRuleContext prodRuleContext, List productionPartContextList); - @ApiOperation(value = "【非排序线】获取产品加工规则") List getProdRuleNosortCfgList(MesProdRuleContext prodRuleContext); @@ -21,4 +17,6 @@ public interface IMesProdRuleCfgExtService { @ApiOperation(value = "【非排序线】获取产品加工规则对应的装配件信息") MesProdRuleContext getProdRuleContext(MesProdRuleNosortCfg prodRuleNosortCfg, Integer foreignKey); + @ApiOperation(value = "【排序线】获取产品加工规则(条码对应的装配件绑定记录,目前条码等同工单)") + MesProdRuleContext getProdRuleSortContext(MesProdRuleContext prodRuleContext); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesAssemblyExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesAssemblyExtService.java index 84069fd..1ca2700 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesAssemblyExtService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesAssemblyExtService.java @@ -40,15 +40,15 @@ public class MesAssemblyExtService implements IMesAssemblyExtService { //【排序线】获取生产工单装配件绑定记录 @Override - public List getProductionAssemblySortContextList(MesProdRuleContext prodRuleContext, List workOrderNoList) { + public List getProductionAssemblySortContextList(MesProdRuleContext prodRuleContext) { - if (null == prodRuleContext || CollectionUtils.isEmpty(workOrderNoList)) return null; + if (null == prodRuleContext) return null; if (StringUtils.isEmpty(prodRuleContext.getOrganizeCode()) || StringUtils.isEmpty(prodRuleContext.getWorkCenterCode()) || - StringUtils.isEmpty(prodRuleContext.getWorkCellCode()) || StringUtils.isEmpty(prodRuleContext.getProcessCode())) return null; + StringUtils.isEmpty(prodRuleContext.getWorkCellCode()) || StringUtils.isEmpty(prodRuleContext.getProcessCode()) || StringUtils.isEmpty(prodRuleContext.getProductSn())) return null; //【排序线】获取生产工单装配件清单 - List workOrderAssemblyList = getWorkOrderAssemblyList(prodRuleContext, workOrderNoList); + List workOrderAssemblyList = getWorkOrderAssemblyList(prodRuleContext); if (CollectionUtils.isEmpty(workOrderAssemblyList)) return null; @@ -65,19 +65,18 @@ public class MesAssemblyExtService implements IMesAssemblyExtService { //【排序线】获取生产工单装配件清单 @Override - public List getWorkOrderAssemblyList(MesProdRuleContext prodRuleContext, List workOrderNoList) { + public List getWorkOrderAssemblyList(MesProdRuleContext prodRuleContext) { - if (null == prodRuleContext || CollectionUtils.isEmpty(workOrderNoList)) return null; + if (null == prodRuleContext) return null; if (StringUtils.isEmpty(prodRuleContext.getOrganizeCode()) || StringUtils.isEmpty(prodRuleContext.getWorkCenterCode()) || - StringUtils.isEmpty(prodRuleContext.getWorkCellCode()) || StringUtils.isEmpty(prodRuleContext.getProcessCode())) return null; + StringUtils.isEmpty(prodRuleContext.getWorkCellCode()) || StringUtils.isEmpty(prodRuleContext.getProcessCode()) || StringUtils.isEmpty(prodRuleContext.getProductSn())) return null; DdlPackBean packBean = DdlPackBean.getDdlPackBean(prodRuleContext.getOrganizeCode()); DdlPreparedPack.getStringEqualPack(prodRuleContext.getWorkCenterCode(), MesPcnExtConstWords.WORK_CENTER_CODE, packBean); DdlPreparedPack.getStringEqualPack(prodRuleContext.getWorkCellCode(), MesPcnExtConstWords.WORK_CELL_CODE, packBean); DdlPreparedPack.getStringEqualPack(prodRuleContext.getProcessCode(), MesPcnExtConstWords.PROCESS_CODE, packBean); - if (workOrderNoList.size() == 1) DdlPreparedPack.getStringEqualPack(workOrderNoList.get(0), MesPcnExtConstWords.WORK_ORDER_NO, packBean); - else DdlPreparedPack.getInPackList(workOrderNoList, MesPcnExtConstWords.WORK_ORDER_NO, packBean); + DdlPreparedPack.getStringEqualPack(prodRuleContext.getProductSn(), MesPcnExtConstWords.PRODUCT_SN, packBean); return workOrderAssemblyRepository.findByHqlWhere(packBean); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProdRuleCfgExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProdRuleCfgExtService.java index 291bc7e..7213d69 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProdRuleCfgExtService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProdRuleCfgExtService.java @@ -3,8 +3,6 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesAssemblyExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProdRuleCfgExtService; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProdRuleContext; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblySortContext; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; @@ -20,8 +18,6 @@ import org.springframework.util.StringUtils; import java.util.ArrayList; import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; @Slf4j @Service @@ -33,41 +29,6 @@ public class MesProdRuleCfgExtService implements IMesProdRuleCfgExtService { @Autowired private MesProdRuleNoSortCfgRepository prodRuleNoSortCfgRepository; - //【排序线】获取加工规则(生产工单对应的装配件绑定记录) - @Override - public List getProdRuleSortContextList(MesProdRuleContext prodRuleContext, List productionPartContextList) { - - //【排序线】获取生产工单装配件绑定记录 - List productionAssemblySortContextList = assemblyExtService.getProductionAssemblySortContextList(prodRuleContext, productionPartContextList.stream().filter(o -> null != o).map(MesProductionPartContext::getWorkOrderNo).collect(Collectors.toList())); - - //装配件绑定记录根据生产工单分组 - Map> assemblyDataMap = groupProductionAssemblySortContextList(productionAssemblySortContextList); - - //实例化排序线加工规则与装配件数据记录 - List prodRuleContextList = new ArrayList<>(); - - //实例化排序线加工规则与装配件数据记录 - for (int i = 0; i < productionPartContextList.size(); i ++) { - prodRuleContextList.add(createSortProdRuleContext(productionPartContextList.get(i).foreignKey(i + 1), assemblyDataMap)); - } - - return prodRuleContextList; - - } - - //装配件绑定记录根据生产工单分组 - private Map> groupProductionAssemblySortContextList(List productionAssemblySortContextList) { - return CollectionUtils.isEmpty(productionAssemblySortContextList) ? null : - productionAssemblySortContextList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesProductionAssemblySortContext::getWorkOrderNo)); - } - - //实例化排序线加工规则与装配件数据记录 - private MesProdRuleContext createSortProdRuleContext(MesProductionPartContext productionPartContext, Map> assemblyDataMap) { - MesProdRuleContext prodRuleContext = new MesProdRuleContext(productionPartContext.getOrganizeCode()).foreignKey(productionPartContext.getForeignKey()); - if (!CollectionUtils.isEmpty(assemblyDataMap)) prodRuleContext.assemblyDataJson(assemblyDataMap.get(productionPartContext.getWorkOrderNo())); - return prodRuleContext; - } - //【非排序线】获取产品加工规则 @Override public List getProdRuleNosortCfgList(MesProdRuleContext prodRuleContext) { @@ -120,4 +81,11 @@ public class MesProdRuleCfgExtService implements IMesProdRuleCfgExtService { return prodRuleContext; } + //【排序线】获取产品加工规则(条码对应的装配件绑定记录,目前条码等同工单) + @Override + public MesProdRuleContext getProdRuleSortContext(MesProdRuleContext prodRuleContext) { + return prodRuleContext.assemblyDataJson(assemblyExtService.getProductionAssemblySortContextList(prodRuleContext)); + } + + } 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 ccbfdba..c5a41d1 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 @@ -8,6 +8,7 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*; 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.PojoAttrUtil; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.MesProdRuleNosortCfg; import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; @@ -25,6 +26,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import java.util.*; +import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; /** @@ -82,6 +84,7 @@ public class MesAssemblyShowNosortStepService extends BaseStepService { if (CollectionUtils.isEmpty(prodRuleContextList)) prodRuleContextList = new ArrayList<>(); Integer initSize = prodRuleContextList.size(); + //封装非排序加工规则 doHandleProdRuleData(reqBean, resultBean, stepResult, workCenter, cellEquipContext, prodRuleContextList, productionPartContextList, productionPsInContextList); if (prodRuleContextList.size() != initSize) { @@ -144,7 +147,7 @@ public class MesAssemblyShowNosortStepService extends BaseStepService { for (MesProductionPartContext productionPartContext : productionPartContextList) { //foreignKey有值代表已经匹配过产品加工规则 - if (null == productionPartContext || !StringUtils.isEmpty(productionPartContext.getForeignKey())) continue; + if (null == productionPartContext || productionPartContext.getIsFinishCode().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0 || !StringUtils.isEmpty(productionPartContext.getForeignKey())) continue; List filterList = !CollectionUtils.isEmpty(prodRuleNosortCfgMap) ? prodRuleNosortCfgMap.get(productionPartContext.getPartNo()) : null; if (CollectionUtils.isEmpty(prodRuleNosortCfgList)) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("请检查非排序产品加工规则信息,未查询到设备[%s]产出零件[%s]进料零件[空]进料零件规则[空]的配置信息", cellEquipContext.getEquipmentCode(), productionPartContext.getPartNo())); @@ -172,7 +175,7 @@ public class MesAssemblyShowNosortStepService extends BaseStepService { for (MesProductionPsInContext productionPsInContext : productionPsInContextList) { //foreignKey有值代表已经匹配过产品加工规则 - if (null == productionPsInContext || !StringUtils.isEmpty(productionPsInContext.getForeignKey())) continue; + if (null == productionPsInContext || productionPsInContext.getIsFinishCode().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0 || !StringUtils.isEmpty(productionPsInContext.getForeignKey())) continue; List filterList; //搜集进料零件号匹配的产品加工规则 @@ -215,7 +218,7 @@ public class MesAssemblyShowNosortStepService extends BaseStepService { for (MesProductionPartContext productionPartContext : productionPartContextList) { //foreignKey有值代表已经匹配过产品加工规则 - if (null == productionPartContext || !StringUtils.isEmpty(productionPartContext.getForeignKey())) continue; + if (null == productionPartContext || productionPartContext.getIsFinishCode().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0 || !StringUtils.isEmpty(productionPartContext.getForeignKey())) continue; //获取匹配产出零件的所有加工规则 List outPartNoProdRuleList = !CollectionUtils.isEmpty(prodRuleNosortCfgMap) ? prodRuleNosortCfgMap.get(productionPartContext.getPartNo()) : null; @@ -228,7 +231,7 @@ public class MesAssemblyShowNosortStepService extends BaseStepService { for (MesProductionPsInContext productionPsInContext : productionPsInContextList) { //foreignKey有值代表已经匹配过产品加工规则 - if (null == productionPsInContext || !StringUtils.isEmpty(productionPsInContext.getForeignKey())) continue; + if (null == productionPsInContext || productionPartContext.getIsFinishCode().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0 || !StringUtils.isEmpty(productionPsInContext.getForeignKey())) continue; List innerfilterList; //搜集进料零件号匹配的产品加工规则 @@ -310,12 +313,16 @@ public class MesAssemblyShowNosortStepService extends BaseStepService { private List getAssemblyShowContextList(MesCellEquipContext cellEquipContext, List productionAssemblyContextList, MesProdRuleContext prodRuleContext, String workOrderNo) { if (CollectionUtils.isEmpty(productionAssemblyContextList)) return null; List assemblyShowContextList = new ArrayList<>(); - Integer index = 0; for (MesProductionAssemblyContext item : productionAssemblyContextList) { if (null == item) continue; - assemblyShowContextList.add(assemblyShowContext(item, prodRuleContext, workOrderNo).index(index += 1)); + assemblyShowContextList.add(assemblyShowContext(item, prodRuleContext, workOrderNo)); } + assemblyShowContextList = assemblyShowContextList.stream().filter(o -> null != o).sorted(Comparator.comparing(MesAssemblyShowContext::getRouteSeq)).collect(Collectors.toList()); + + AtomicReference index = new AtomicReference<>(0); + assemblyShowContextList.forEach(o -> o.index(index.updateAndGet(v -> v + 1))); + return assemblyShowContextList; } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowSortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowSortStepService.java index 1051634..848fc40 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowSortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowSortStepService.java @@ -7,6 +7,7 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*; 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.PojoAttrUtil; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; import cn.estsh.i3plus.pojo.mes.model.AttrBean; @@ -24,6 +25,8 @@ import org.springframework.util.StringUtils; import java.util.ArrayList; import java.util.Comparator; import java.util.List; +import java.util.Optional; +import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; /** @@ -68,8 +71,27 @@ public class MesAssemblyShowSortStepService extends BaseStepService { //获取上下文加工规则数据信息集合 List prodRuleContextList = productionDispatchContextStepService.getProdRuleDataContext(reqBean); - //不存在加工规则数据信息则进行查询 - if (CollectionUtils.isEmpty(prodRuleContextList)) prodRuleContextList = doHandleProdRuleData(reqBean, resultBean, stepResult, cellEquipContext); + //获取上下文产出零件数据信息集合 + List productionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean); + + //获取上下文进料零件条码信息集合 + List productionPsInContextList = productionDispatchContextStepService.getProductionPsInContext(reqBean); + + //根据现有数据【产出零件数据】【进料零件条码信息】比对上下文中已经存在的加工规则数据信息集合, 没有加工规则的数据进行查询 + if (CollectionUtils.isEmpty(prodRuleContextList)) prodRuleContextList = new ArrayList<>(); + Integer initSize = prodRuleContextList.size(); + + //封装排序加工规则 + doHandleProdRuleData(reqBean, resultBean, stepResult, workCenter, cellEquipContext, prodRuleContextList, productionPartContextList, productionPsInContextList); + + if (prodRuleContextList.size() != initSize) { + //保存上下文产品加工规则信息集合 + productionDispatchContextStepService.saveProdRuleDataContext(reqBean, prodRuleContextList); + //保存上下文产出零件信息 + if (!CollectionUtils.isEmpty(productionPartContextList)) productionDispatchContextStepService.saveProductionPartContext(reqBean, productionPartContextList); + //保存进料主条码数据 + if (!CollectionUtils.isEmpty(productionPsInContextList)) productionDispatchContextStepService.saveProductionPsInContext(reqBean, productionPsInContextList); + } if (!stepResult.isCompleted()) return stepResult; @@ -77,29 +99,33 @@ public class MesAssemblyShowSortStepService extends BaseStepService { if (!showProductionAssembly(reqBean, resultBean, workCenter, cellEquipContext, prodRuleContextList)) return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "当前未查询到相关的装配件清单"); - //保存上下文产品加工规则信息集合 - productionDispatchContextStepService.saveProdRuleDataContext(reqBean, prodRuleContextList); - return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "显示装配件扫描项成功!"); } //查询排序线加工规则装配件数据信息 - private List doHandleProdRuleData(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesCellEquipContext cellEquipContext) { + private void doHandleProdRuleData(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesWorkCenter workCenter, MesCellEquipContext cellEquipContext, + List prodRuleContextList, List productionPartContextList, List productionPsInContextList) { - //从上下文中取出生产工单数据信息集合 - List productionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean); + //上下文中不存在进料主条码数据信息 + if (CollectionUtils.isEmpty(productionPsInContextList) || CollectionUtils.isEmpty(productionPartContextList)) + execNonCompleteAndSendMsg(reqBean, resultBean.writeDbLog(), stepResult, String.format("生产线[%s]工位[%s]的上下文中已不存在加工单或条码数据信息,请重置工序!", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode())); + + //拿到当前最大的foreignKey + Optional maxForeignKeyOptional = productionPsInContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getForeignKey()))).max(Comparator.comparing(MesProductionPsInContext::getForeignKey)); + Integer foreignKey = (null != maxForeignKeyOptional && maxForeignKeyOptional.isPresent()) ? maxForeignKeyOptional.get().getForeignKey() : MesPcnExtConstWords.ZERO; - //上下文中不存在生产工单数据信息集合 - if (CollectionUtils.isEmpty(productionPartContextList)) execNonCompleteAndSendMsg(reqBean, resultBean.writeDbLog(), stepResult, String.format("生产线[%s]工位[%s]的上下文中已不存在生产工单数据信息,请重新扫描加工单!", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode())); + for (MesProductionPsInContext productionPsInContext : productionPsInContextList) { - //获取排序线的装配件清单 - List prodRuleContextList = prodRuleCfgExtService.getProdRuleSortContextList(new MesProdRuleContext(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), reqBean.getProcessCode()), productionPartContextList); + //foreignKey有值代表已经匹配过产品加工规则 + if (null == productionPsInContext || productionPsInContext.getIsFinishCode().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0 || !StringUtils.isEmpty(productionPsInContext.getForeignKey())) continue; - //保存设备当前一轮工序的装配件清单信息 - if (!CollectionUtils.isEmpty(prodRuleContextList)) productionDispatchContextStepService.saveProdRuleDataContext(reqBean, prodRuleContextList); + //【排序线】获取产品加工规则(条码对应的装配件绑定记录,目前条码等同工单) + prodRuleContextList.add(prodRuleCfgExtService.getProdRuleSortContext(new MesProdRuleContext( + reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), reqBean.getProcessCode(), productionPsInContext.getProductSn()).foreignKey( + productionPartContextList.stream().filter(o -> (null != o && o.getWorkOrderNo().equals(productionPsInContext.getWorkOrderNo()))).findFirst().get().foreignKey(productionPsInContext.foreignKey(foreignKey += 1).getForeignKey()).getForeignKey()))); - return prodRuleContextList; + } } @@ -142,6 +168,10 @@ public class MesAssemblyShowSortStepService extends BaseStepService { assemblyShowContextList.add(assemblyShowContext(item)); } assemblyShowContextList = assemblyShowContextList.stream().filter(o -> null != o).sorted(Comparator.comparing(MesAssemblyShowContext::getRouteSeq)).collect(Collectors.toList()); + + AtomicReference index = new AtomicReference<>(0); + assemblyShowContextList.forEach(o -> o.index(index.updateAndGet(v -> v + 1))); + return assemblyShowContextList; } diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProdRuleContext.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProdRuleContext.java index b11ce4b..bea3e83 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProdRuleContext.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProdRuleContext.java @@ -27,6 +27,9 @@ public class MesProdRuleContext implements Serializable { @ApiParam(name = "数据关联键") private Integer foreignKey; + @ApiParam(name = "读/扫主条码信息(内制件/外协件/排序条码即工单号),不一定有值") + private String productSn; + @ApiParam("装配件绑定清单 [JSON]List") public String assemblyDataJson; @@ -43,9 +46,6 @@ public class MesProdRuleContext implements Serializable { //-------以下非排序属性------------- - @ApiParam(name = "读/扫主条码信息(内制件/外协件),不一定有值") - private String productSn; - @ApiParam("非排序产品加工规则ID") public Long pid; @@ -107,11 +107,12 @@ public class MesProdRuleContext implements Serializable { this.organizeCode = organizeCode; } - public MesProdRuleContext(String organizeCode, String workCenterCode, String workCellCode, String processCode) { + public MesProdRuleContext(String organizeCode, String workCenterCode, String workCellCode, String processCode, String productSn) { this.organizeCode = organizeCode; this.workCenterCode = workCenterCode; this.workCellCode = workCellCode; this.processCode = processCode; + this.productSn = productSn; } public MesProdRuleContext foreignKey(Integer foreignKey) { 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 7a21931..ebdeaf3 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 @@ -31,7 +31,10 @@ public class MesProductionPsInContext implements Serializable { @ApiParam("未知条码ID/队列ID") private Long relateId; - @ApiParam("非排序进料零件条码/排序工单号") + @ApiParam("工单号") + private String workOrderNo; + + @ApiParam("零件条码") private String productSn; @ApiParam("过程条码")