From 7aab622f762d86a34500a5c3314fb3836e015016 Mon Sep 17 00:00:00 2001 From: jun Date: Thu, 21 Nov 2024 20:27:38 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=AE=E8=A7=86=E5=8D=95=E6=89=93=E5=8D=B0?= =?UTF-8?q?=E7=A9=BA=E6=8C=87=E9=92=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../busi/MesProduceSnPrintController.java | 1 - ...WorkOrderAssemblyPrintQueueStrategyService.java | 50 ++++++++++++++-------- 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesProduceSnPrintController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesProduceSnPrintController.java index 24a2907..fd7ed9a 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesProduceSnPrintController.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesProduceSnPrintController.java @@ -144,7 +144,6 @@ public class MesProduceSnPrintController { try { ValidatorBean.checkNotNull(printQueue.getPrintQueueType(), "打印类型不能为空"); - MesRedisLockUtil mesRedisLockUtil = new MesRedisLockUtil(); String workCenterCodeQuery = printQueue.getWorkCenterCodeQuery(); String partProdGroupCodeQuery = printQueue.getPartProdGroupCodeQuery(); if (printQueue.getPrintQueueType() == MesExtEnumUtil.PRINT_QUEUE_TYPE.WORK_ORDER_ASSEMBLY.getValue()) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/printqueue/strategy/WorkOrderAssemblyPrintQueueStrategyService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/printqueue/strategy/WorkOrderAssemblyPrintQueueStrategyService.java index 656ceec..062d935 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/printqueue/strategy/WorkOrderAssemblyPrintQueueStrategyService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/printqueue/strategy/WorkOrderAssemblyPrintQueueStrategyService.java @@ -68,10 +68,17 @@ public class WorkOrderAssemblyPrintQueueStrategyService implements IPrintQueueSt List printQueueList = getMesPrintQueues(model); // 无打印直接返回 - if (CollectionUtils.isEmpty(printQueueList)) return null; + if (CollectionUtils.isEmpty(printQueueList)){ + log.info("无待打印的数据"); + return null; + } // 获取工单信息 List workOrderList = getMesWorkOrders(model, printQueueList); + if(CollectionUtils.isEmpty(workOrderList)) { + log.info("工单信息不存在"); + return null; + } // 产线代码集合 List workCenterCodeList = workOrderList.stream().map(MesWorkOrder::getWorkCenterCode).distinct().collect(Collectors.toList()); @@ -80,13 +87,17 @@ public class WorkOrderAssemblyPrintQueueStrategyService implements IPrintQueueSt List mesWorkCenters = workCenterService.queryMesWorkCenterList(workCenterCodeList, model.getOrganizeCode()); // 产线名称集合 - Map workCenterNameMap = mesWorkCenters.stream().collect(Collectors.toMap(MesWorkCenter::getWorkCenterCode, MesWorkCenter::getWorkCenterName, (x, y) -> y)); + Map workCenterNameMap = CollectionUtils.isEmpty(mesWorkCenters) ? null : mesWorkCenters.stream().collect(Collectors.toMap(MesWorkCenter::getWorkCenterCode, MesWorkCenter::getWorkCenterName, (x, y) -> y)); // 根据工单号对工单分组 Map workOrderMapByWorkOrderNo = workOrderList.stream().collect(Collectors.toMap(MesWorkOrder::getWorkOrderNo, Function.identity(), (x, y) -> y)); // 根据零件生产组代码分组 Map partProdGroupMap = getMesPartProdGroupMap(model, printQueueList); + if(Objects.isNull(partProdGroupMap)){ + log.info("零件生产组信息不存在"); + return null; + } // 客户车型配置名称MAP Map carModelMapByCode = getMesCustomerCarModelMap(model, workOrderList); @@ -102,18 +113,25 @@ public class WorkOrderAssemblyPrintQueueStrategyService implements IPrintQueueSt for (MesPrintQueue printQueue : printQueueList) { - MesWorkOrder mesWorkOrder = workOrderMapByWorkOrderNo.get(printQueue.getWorkOrderNo()); + MesWorkOrder mesWorkOrder = workOrderMapByWorkOrderNo.getOrDefault(printQueue.getWorkOrderNo(), null); if (mesWorkOrder == null) { log.info("WorkOrderAssemblyPrintQueueStrategyService --- 工单{}为空 暂不输出打印", printQueue.getWorkOrderNo()); continue; } - mesWorkOrder.setWorkCenterName(workCenterNameMap.get(printQueue.getWorkCenterCode())); + mesWorkOrder.setWorkCenterName(Objects.isNull(workCenterNameMap) || !workCenterNameMap.containsKey(printQueue.getWorkCenterCode()) ? "" : workCenterNameMap.get(printQueue.getWorkCenterCode())); printQueue.setWorkOrderTypeName(MesExtEnumUtil.ORDER_TYPE.valueOfDescription(mesWorkOrder.getWorkOrderType())); - MesPartProdGroup mesPartProdGroup = partProdGroupMap.get(printQueue.getPartProdGroupCode()); + MesPartProdGroup mesPartProdGroup = partProdGroupMap.getOrDefault(printQueue.getPartProdGroupCode(), null); + if(Objects.isNull(mesPartProdGroup)){ + printQueue.setRemark("生产组信息不存在"); + printQueue.setSystemSyncStatus(CommonEnumUtil.FALSE); + ConvertBean.serviceModelUpdate(printQueue, model.getModifyUser()); + log.info("WorkOrderAssemblyPrintQueueStrategyService --- 生产组{}为空 暂不输出打印", printQueue.getPartProdGroupCode()); + continue; + } String printTemplate = mesPartProdGroup.getPrintTemplate(); @@ -126,12 +144,9 @@ public class WorkOrderAssemblyPrintQueueStrategyService implements IPrintQueueSt MesLabelTemplate labelTemplate = mesTemplateService.getLabelTemplate(printTemplate, model.getOrganizeCode()); - //根据反射获取策略类--封装打印数据 - String methodCode = labelTemplate.getMethodCode(); - //模板信息丢失抛出异常 - if (StringUtils.isEmpty(methodCode)) { - printQueue.setRemark(String.format("模板代码[%s]方法类为空,请配置!", labelTemplate.getTemplateCode())); + if (StringUtils.isEmpty(labelTemplate) || StringUtils.isEmpty(labelTemplate.getMethodCode())) { + printQueue.setRemark(String.format("模板代码[%s]方法类为空,请配置!", printTemplate)); printQueue.setSystemSyncStatus(CommonEnumUtil.FALSE); ConvertBean.serviceModelUpdate(printQueue, model.getModifyUser()); continue; @@ -141,11 +156,11 @@ public class WorkOrderAssemblyPrintQueueStrategyService implements IPrintQueueSt modelMap.put("mesWorkOrder", mesWorkOrder); modelMap.put("mesPartProdGroup", mesPartProdGroup); - MesCustomerCarModel customerCarModel = carModelMapByCode.get(mesWorkOrder.getCarModelCode()); + MesCustomerCarModel customerCarModel = Objects.isNull(carModelMapByCode) || !carModelMapByCode.containsKey(mesWorkOrder.getCarModelCode()) ? null : carModelMapByCode.get(mesWorkOrder.getCarModelCode()); if (customerCarModel != null) { modelMap.put("mesCustomerCarModel", customerCarModel); } - List workOrderAssemblyListByWorkOrderNo = workOrderAssemblyMapByWorkOrderNo.get(printQueue.getWorkOrderNo()); + List workOrderAssemblyListByWorkOrderNo = Objects.isNull(workOrderAssemblyMapByWorkOrderNo) || !workOrderAssemblyMapByWorkOrderNo.containsKey(printQueue.getWorkOrderNo()) ? null : workOrderAssemblyMapByWorkOrderNo.get(printQueue.getWorkOrderNo()); if (!CollectionUtils.isEmpty(workOrderAssemblyListByWorkOrderNo)) { modelMap.put("mesWorkOrderAssemblyList", workOrderAssemblyListByWorkOrderNo); } @@ -158,7 +173,7 @@ public class WorkOrderAssemblyPrintQueueStrategyService implements IPrintQueueSt MesProduceSnPrintModel snPrintModel = null; try { - IPrintTemplateStrategyService strategyService = (IPrintTemplateStrategyService) SpringContextsUtil.getBean(methodCode); + IPrintTemplateStrategyService strategyService = (IPrintTemplateStrategyService) SpringContextsUtil.getBean(labelTemplate.getMethodCode()); snPrintModel = strategyService.execute(null, mesProduceSnPrintModel, null, null, null ,false); } catch (BeansException e) { printQueue.setRemark(String.format("模板代码[%s]方法类[%s]执行异常,请配置!", labelTemplate.getTemplateCode(), labelTemplate.getMethodCode())); @@ -196,8 +211,7 @@ public class WorkOrderAssemblyPrintQueueStrategyService implements IPrintQueueSt DdlPackBean packBean = DdlPackBean.getDdlPackBean(model.getOrganizeCode()); DdlPreparedPack.getInPackList(workOrderNoList, MesPcnExtConstWords.WORK_ORDER_NO, packBean); List workOrderAssemblyList = workOrderAssemblyRepository.findByHqlWhere(packBean); - Map> workOrderAssemblyMapByWorkOrderNo = workOrderAssemblyList.stream().collect(Collectors.groupingBy(MesWorkOrderAssembly::getWorkOrderNo)); - return workOrderAssemblyMapByWorkOrderNo; + return CollectionUtils.isEmpty(workOrderAssemblyList) ? null : workOrderAssemblyList.stream().collect(Collectors.groupingBy(MesWorkOrderAssembly::getWorkOrderNo)); } private Map getMesCustomerCarModelMap(MesPrintQueue model, List workOrderList) { @@ -206,9 +220,7 @@ public class WorkOrderAssemblyPrintQueueStrategyService implements IPrintQueueSt DdlPackBean packBean = DdlPackBean.getDdlPackBean(model.getOrganizeCode()); DdlPreparedPack.getInPackList(carModelCodeList, MesPcnExtConstWords.CAR_MODEL_CODE, packBean); List customerCarModelList = customerCarModelRepository.findByHqlWhere(packBean); - - Map carModelMapByCode = customerCarModelList.stream().collect(Collectors.toMap(MesCustomerCarModel::getCarModelCode, Function.identity(), (x, y) -> y)); - return carModelMapByCode; + return CollectionUtils.isEmpty(customerCarModelList) ? null : customerCarModelList.stream().collect(Collectors.toMap(MesCustomerCarModel::getCarModelCode, Function.identity(), (x, y) -> y)); } private Map getMesPartProdGroupMap(MesPrintQueue model, List printQueueList) { @@ -218,7 +230,7 @@ public class WorkOrderAssemblyPrintQueueStrategyService implements IPrintQueueSt //DdlPreparedPack.getInPackList(workCenterCodeList, MesPcnExtConstWords.WORK_CENTER_CODE, packBean); DdlPreparedPack.getInPackList(partProdGroupCodeList, MesPcnExtConstWords.PART_PROD_GROUP_CODE, packBean); List partProdGroupList = partProdGroupRepository.findByHqlWhere(packBean); - return partProdGroupList.stream().collect(Collectors.toMap(MesPartProdGroup::getPartProdGroupCode, Function.identity(), (x,y) -> y)); + return CollectionUtils.isEmpty(partProdGroupList) ? null : partProdGroupList.stream().collect(Collectors.toMap(MesPartProdGroup::getPartProdGroupCode, Function.identity(), (x, y) -> y)); } private List getMesWorkOrders(MesPrintQueue model, List printQueueList) {