From bc1bb870250e78daabdce205cb164513796ecbb4 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Thu, 13 Mar 2025 14:59:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A8=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pcn/api/busi/IMesQueueOrderPushService.java | 11 +++-- .../serviceimpl/busi/MesQueueOrderPushService.java | 50 ++++++++++++++++------ .../function/MesFunctionQueueOrderPushService.java | 9 ++-- 3 files changed, 49 insertions(+), 21 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesQueueOrderPushService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesQueueOrderPushService.java index cbff6aa..7b359ee 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesQueueOrderPushService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesQueueOrderPushService.java @@ -24,15 +24,18 @@ public interface IMesQueueOrderPushService { List getQueueOrderPushCellCfgList(String organizeCode, String workCenterCode); //递增步长10,取整10位; 例如:查询=10 >> 返回=20 ; 查询=29 >> 返回=30 - @ApiOperation(value = "获取当前工单对应的工位推单队列中最大的顺序号") - Integer getQueueOrderPushMaxSeq(String organizeCode, String workOrderNo); + @ApiOperation(value = "获取当前生产线推单代码中最大的顺序号") + Integer getQueueOrderPushMaxSeq(String organizeCode, MesQueueOrderPushCellCfg queueOrderPushCellCfg); + + @ApiOperation(value = "根据条件顺序号查询上一个顺序号,返回加一") + Integer getQueueOrderPushCalcSeq(String organizeCode, MesQueueOrderPushCellCfg queueOrderPushCellCfg, Integer processSeqNext); @ApiOperation(value = "写入工位工单推送信息") void insertQueueOrderPush(String organizeCode, String userInfo, List queueOrderPushCellCfgList, MesProductionPsOutContext productionPsOutContext, MesProductionPartContext productionPartContext); @ApiOperation(value = "写入工位工单推送信息") - void insertQueueOrderPush(StationRequestBean reqBean, MesWorkOrder workOrder, Map paramMap); + void insertQueueOrderPush(StationRequestBean reqBean, MesWorkOrder workOrder, MesQueueOrderPushCellCfg queueOrderPushCellCfg, String processSeqNext); @ApiOperation(value = "根据ID查询生产队列工位推送信息") MesQueueOrderPush getQueueOrderPush(String organizeCode, Long id); @@ -41,7 +44,7 @@ public interface IMesQueueOrderPushService { List getQueueOrderPushList(String organizeCode, List queueOrderPushCellCfgList); @ApiOperation(value = "根据配置查询生产队列工位推送信息") - List getQueueOrderPushListByStatus(String organizeCode, List queueOrderPushCellCfgList, Integer cdtAscOrDesc, Integer... queueStatusArr); + List getQueueOrderPushListByStatus(String organizeCode, List queueOrderPushCellCfgList, Integer ascOrDesc, Integer... queueStatusArr); @ApiOperation(value = "根据分页条件查询生产队列工位推送信息") ListPager queryQueueOrderPushListPager(Map paramMap, List pushSourceCodeList, Pager pager); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesQueueOrderPushService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesQueueOrderPushService.java index cc0bb3f..7f4be19 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesQueueOrderPushService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesQueueOrderPushService.java @@ -52,12 +52,13 @@ public class MesQueueOrderPushService implements IMesQueueOrderPushService { new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), workCenterCode}); } - //获取当前工单对应的工位推单队列中最大的顺序号; 递增步长10,取整10位; 例如:查询=10 >> 返回=20 ; 查询=29 >> 返回=30 + //获取当前生产线推单代码中最大的顺序号; 递增步长10,取整10位; 例如:查询=10 >> 返回=20 ; 查询=29 >> 返回=30 @Override - public Integer getQueueOrderPushMaxSeq(String organizeCode, String workOrderNo) { - if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(workOrderNo)) return MesPcnExtConstWords.TEN; + public Integer getQueueOrderPushMaxSeq(String organizeCode, MesQueueOrderPushCellCfg queueOrderPushCellCfg) { + if (StringUtils.isEmpty(organizeCode) || null == queueOrderPushCellCfg) return MesPcnExtConstWords.TEN; DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); - DdlPreparedPack.getStringEqualPack(workOrderNo, MesPcnExtConstWords.WORK_ORDER_NO, packBean); + DdlPreparedPack.getStringEqualPack(queueOrderPushCellCfg.getPushSourceCode(), MesPcnExtConstWords.PUSH_SOURCE_CODE, packBean); + DdlPreparedPack.getStringEqualPack(queueOrderPushCellCfg.getWorkCenterCode(), MesPcnExtConstWords.WORK_CENTER_CODE, packBean); DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{MesPcnExtConstWords.PROCESS_SEQ}, packBean); MesQueueOrderPush queueOrderPushDb2MaxSeq = queueOrderPushRepository.getByProperty(packBean); return ((null == queueOrderPushDb2MaxSeq || queueOrderPushDb2MaxSeq.getProcessSeq().compareTo(MesPcnExtConstWords.ZERO) == 0) @@ -65,13 +66,29 @@ public class MesQueueOrderPushService implements IMesQueueOrderPushService { ) * MesPcnExtConstWords.TEN; } + //根据条件顺序号查询上一个顺序号,返回加一 + @Override + public Integer getQueueOrderPushCalcSeq(String organizeCode, MesQueueOrderPushCellCfg queueOrderPushCellCfg, Integer processSeqNext) { + if (StringUtils.isEmpty(organizeCode) || null == queueOrderPushCellCfg) return MesPcnExtConstWords.TEN; + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(queueOrderPushCellCfg.getPushSourceCode(), MesPcnExtConstWords.PUSH_SOURCE_CODE, packBean); + DdlPreparedPack.getStringEqualPack(queueOrderPushCellCfg.getWorkCenterCode(), MesPcnExtConstWords.WORK_CENTER_CODE, packBean); + DdlPreparedPack.getNumberSmallerPackContainsZero(processSeqNext, MesPcnExtConstWords.PROCESS_SEQ, packBean); + DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{MesPcnExtConstWords.PROCESS_SEQ}, packBean); + MesQueueOrderPush queueOrderPushDb2MaxSeq = queueOrderPushRepository.getByProperty(packBean); + if (null == queueOrderPushDb2MaxSeq) return MesPcnExtConstWords.ONE; + Integer processSeq = queueOrderPushDb2MaxSeq.getProcessSeq() + 1; + if (processSeq.compareTo(processSeqNext) == 0) return queueOrderPushDb2MaxSeq.getProcessSeq(); + return processSeq; + } + //写入工位工单推送信息 @Override public void insertQueueOrderPush(String organizeCode, String userInfo, List queueOrderPushCellCfgList, MesProductionPsOutContext productionPsOutContext, MesProductionPartContext productionPartContext) { if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(userInfo) || null == productionPsOutContext || CollectionUtils.isEmpty(queueOrderPushCellCfgList)) return; - Integer processSeq = getQueueOrderPushMaxSeq(organizeCode, productionPsOutContext.getWorkOrderNo()); for (MesQueueOrderPushCellCfg queueOrderPushCellCfg : queueOrderPushCellCfgList) { + Integer processSeq = getQueueOrderPushMaxSeq(organizeCode, queueOrderPushCellCfg); if (null == queueOrderPushCellCfg) continue; MesQueueOrderPush queueOrderPush = new MesQueueOrderPush(); queueOrderPush.setPushSourceCode(queueOrderPushCellCfg.getPushSourceCode()); @@ -98,10 +115,17 @@ public class MesQueueOrderPushService implements IMesQueueOrderPushService { //写入工位工单推送信息 @Override - public void insertQueueOrderPush(StationRequestBean reqBean, MesWorkOrder workOrder, Map paramMap) { + public void insertQueueOrderPush(StationRequestBean reqBean, MesWorkOrder workOrder, MesQueueOrderPushCellCfg queueOrderPushCellCfg, String processSeqNext) { + Integer processSeq; + //获取当前生产线推单代码中最大的顺序号 + if (StringUtils.isEmpty(processSeqNext)) processSeq = getQueueOrderPushMaxSeq(reqBean.getOrganizeCode(), queueOrderPushCellCfg); + //根据条件顺序号查询上一个顺序号,返回加一 + else processSeq = getQueueOrderPushCalcSeq(reqBean.getOrganizeCode(), queueOrderPushCellCfg, Integer.valueOf(processSeqNext)); + + //新增队列 MesQueueOrderPush queueOrderPush = new MesQueueOrderPush(); - queueOrderPush.setPushSourceCode(paramMap.get(MesPcnExtConstWords.PUSH_SOURCE_CODE)); - queueOrderPush.setProcessSeq(Integer.valueOf(paramMap.get(MesPcnExtConstWords.PROCESS_SEQ))); + queueOrderPush.setPushSourceCode(queueOrderPushCellCfg.getPushSourceCode()); + queueOrderPush.setProcessSeq(processSeq); queueOrderPush.setWorkOrderNo(workOrder.getWorkOrderNo()); queueOrderPush.setProductSn(workOrder.getWorkOrderNo()); queueOrderPush.setCustSn(workOrder.getCustSn()); @@ -134,7 +158,7 @@ public class MesQueueOrderPushService implements IMesQueueOrderPushService { @Override public List getQueueOrderPushList(String organizeCode, List queueOrderPushCellCfgList) { if (StringUtils.isEmpty(organizeCode) || CollectionUtils.isEmpty(queueOrderPushCellCfgList)) return null; - //搜集推送来源代码 去重; 根据生产线代码,推送来源代码集合查询创建状态的生产队列工位推送信息【创建时间正序】 + //搜集推送来源代码 去重; 根据生产线代码,推送来源代码集合查询创建状态的生产队列工位推送信息【工序顺序号正序,创建时间正序】 List queueOrderPushList = getQueueOrderPushListByStatus(organizeCode, queueOrderPushCellCfgList, CommonEnumUtil.ASC_OR_DESC.ASC.getValue(), MesExtEnumUtil.QUEUE_ORDER_STATUS.CREATE.getValue()); //条码去重 return CollectionUtils.isEmpty(queueOrderPushList) ? null : @@ -145,7 +169,7 @@ public class MesQueueOrderPushService implements IMesQueueOrderPushService { //根据配置查询生产队列工位推送信息 @Override - public List getQueueOrderPushListByStatus(String organizeCode, List queueOrderPushCellCfgList, Integer cdtAscOrDesc, Integer... queueStatusArr) { + public List getQueueOrderPushListByStatus(String organizeCode, List queueOrderPushCellCfgList, Integer ascOrDesc, Integer... queueStatusArr) { if (StringUtils.isEmpty(organizeCode) || CollectionUtils.isEmpty(queueOrderPushCellCfgList)) return null; @@ -155,7 +179,7 @@ public class MesQueueOrderPushService implements IMesQueueOrderPushService { ).stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList()); if (CollectionUtils.isEmpty(pushSourceCodeList)) return null; - //根据生产线代码,推送来源代码集合查询入参状态的生产队列工位推送信息【创建时间正序】 + //根据生产线代码,推送来源代码集合查询入参状态的生产队列工位推送信息【工艺顺序号,创建时间根据条件排序】 DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getStringEqualPack(queueOrderPushCellCfgList.get(0).getWorkCenterCode(), MesPcnExtConstWords.WORK_CENTER_CODE, packBean); @@ -166,7 +190,7 @@ public class MesQueueOrderPushService implements IMesQueueOrderPushService { if (pushSourceCodeList.size() == 1) DdlPreparedPack.getStringEqualPack(pushSourceCodeList.get(0), MesPcnExtConstWords.PUSH_SOURCE_CODE, packBean); else DdlPreparedPack.getInPackList(pushSourceCodeList, MesPcnExtConstWords.PUSH_SOURCE_CODE, packBean); - if (!StringUtils.isEmpty(cdtAscOrDesc)) DdlPreparedPack.getOrderByPack(new Object[]{cdtAscOrDesc}, new String[]{MesPcnExtConstWords.CREATE_DATE_TIME}, packBean); + if (!StringUtils.isEmpty(ascOrDesc)) DdlPreparedPack.getOrderByPack(new Object[]{ascOrDesc, ascOrDesc}, new String[]{MesPcnExtConstWords.PROCESS_SEQ, MesPcnExtConstWords.CREATE_DATE_TIME}, packBean); return queueOrderPushRepository.findByHqlWhere(packBean); } @@ -193,7 +217,7 @@ public class MesQueueOrderPushService implements IMesQueueOrderPushService { else DdlPreparedPack.getInPackList(queueStatusList, MesPcnExtConstWords.QUEUE_STATUS, packBean); } - DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{MesPcnExtConstWords.CREATE_DATE_TIME}, packBean); + DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{MesPcnExtConstWords.PROCESS_SEQ, MesPcnExtConstWords.CREATE_DATE_TIME}, packBean); pager = PagerHelper.getPager(pager, queueOrderPushRepository.findByHqlWhereCount(packBean)); List list = queueOrderPushRepository.findByHqlWherePage(packBean, pager); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionQueueOrderPushService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionQueueOrderPushService.java index fe96e5a..2dfe0bd 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionQueueOrderPushService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionQueueOrderPushService.java @@ -133,9 +133,6 @@ public class MesFunctionQueueOrderPushService extends BaseSwsService implements if (!paramMap.containsKey(MesPcnExtConstWords.PUSH_SOURCE_CODE)) { return packResultMap(reqBean, resultBean, resultMap, String.format("[%s]新增:请选择推送来源代码!", buttonDynamicModel.getButtonName())); } - if (!paramMap.containsKey(MesPcnExtConstWords.PROCESS_SEQ)) { - return packResultMap(reqBean, resultBean, resultMap, String.format("[%s]新增:请输入工艺顺序号!", buttonDynamicModel.getButtonName())); - } if (!paramMap.containsKey(MesPcnExtConstWords.WORK_ORDER_NO)) { return packResultMap(reqBean, resultBean, resultMap, String.format("[%s]新增:请扫描加工单或客户条码!", buttonDynamicModel.getButtonName())); } @@ -154,9 +151,13 @@ public class MesFunctionQueueOrderPushService extends BaseSwsService implements if (null == workOrder) { return packResultMap(reqBean, resultBean, resultMap, String.format("[%s]新增:根据扫描信息[%s]未匹配到有效的加工单!", buttonDynamicModel.getButtonName(), paramMap.get(MesPcnExtConstWords.WORK_ORDER_NO))); } + if (!MesExtEnumUtil.ORDER_STATUS.checkSortAllowStatus(workOrder.getWorkOrderStatus())) { + return packResultMap(reqBean, resultBean, resultMap, String.format("[%s]新增:加工单[%s]状态[%s],操作失败!", + buttonDynamicModel.getButtonName(), paramMap.get(MesPcnExtConstWords.WORK_ORDER_NO), MesExtEnumUtil.ORDER_STATUS.valueOfDescription(workOrder.getWorkOrderStatus()))); + } //写入工位工单推送信息 - queueOrderPushService.insertQueueOrderPush(reqBean, workOrder, paramMap); + queueOrderPushService.insertQueueOrderPush(reqBean, workOrder, optional.get(), paramMap.get(MesPcnExtConstWords.PROCESS_SEQ)); return resultMap;