From 29dd614d4ba9b9525cd595f09df929565ea4846c Mon Sep 17 00:00:00 2001 From: yxw Date: Tue, 24 Sep 2024 10:55:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=89=93=E5=8D=B0=E5=B7=A5?= =?UTF-8?q?=E5=8D=95=E6=89=93=E5=8D=B0=E9=98=9F=E5=88=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/api/base/IMesWorkOrderService.java | 3 ++ .../controller/base/MesWorkOrderController.java | 16 +++++++++ .../serviceimpl/base/MesWorkOrderCutService.java | 39 +++++++++++++++++----- .../serviceimpl/base/MesWorkOrderService.java | 16 ++++++++- 4 files changed, 64 insertions(+), 10 deletions(-) diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java index 68b8cb1..11c2105 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java @@ -42,6 +42,9 @@ public interface IMesWorkOrderService extends IBaseMesService { @ApiOperation("重新打开") void doReopen(Long[] ids,String userName,String organizeCode); + @ApiOperation("新增工单打印队列") + void doSaveWorkOrderPrintQueue(MesWorkOrder workOrder); + List getPreDayReportMesProductionRecord(String organizeCode , List mesShiftList, String workCenterCode); List getPreDayReportMesProduceSn(String organizeCode ,List mesProductionRecordList ); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java index 8919f88..9c93f0e 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java @@ -183,6 +183,22 @@ public class MesWorkOrderController extends BaseMesController { } } + @PostMapping(value = "/save-work-print-queue") + @ApiOperation(value = "新增打印工单打印队列") + public ResultBean doSaveWorkOrderPrintQueue(@RequestBody MesWorkOrder workOrder) { + try { + + ValidatorBean.checkNotNull(workOrder.getOrganizeCode(),"工厂代码不能为空"); + + mesWorkOrderService.doSaveWorkOrderPrintQueue(workOrder); + return ResultBean.success("反向冲销成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + @PutMapping(value = "/reopen") @ApiOperation(value = "重新打开") public ResultBean doReopen(Long[] ids) { diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderCutService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderCutService.java index 4c07afb..cc8ebfb 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderCutService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderCutService.java @@ -170,22 +170,43 @@ public class MesWorkOrderCutService extends BaseMesService impl List workOrders = workOrderListMapByPartNo.get(cutSchemeFg.getPartNo()); - MesWorkOrder workOrder = workOrders.get(0); + //MesWorkOrder workOrder = workOrders.get(0); - if (workOrders.size() > 1) - MesException.throwMesBusiException("零件号【%s】存在多个工单", cutSchemeFg.getPartNo()); + //if (workOrders.size() > 1) + // MesException.throwMesBusiException("零件号【%s】存在多个工单", cutSchemeFg.getPartNo()); - if (!workOrder.getWorkCenterCode().equals(cutScheme.getWorkCenterCode())) - MesException.throwMesBusiException("工单【%s】关联产线【%】与裁片方案【%】关联产线不一致!", workOrder.getWorkCenterCode(), cutScheme.getWorkCenterCode()); + if (!CollectionUtils.isEmpty(workOrders)) workOrders.sort(Comparator.comparing(MesWorkOrder::getUnCompleteQty)); // 成品配置计划数量 * 版数 = 裁片工单该成品总消耗数量 Double totalQty = MathOperation.mul(cutSchemeFg.getQty(), editionNumber); - if (totalQty.compareTo(workOrder.getUnCompleteQty()) > 0) - MesException.throwMesBusiException("零件号【%s】工单未完成数量【%s】不满足产成总数【%s】", - cutSchemeFg.getPartNo(), workOrder.getUnCompleteQty(), totalQty); + Double unCompleteQty = 0.0; + List needWorkOrderNoList = new ArrayList<>(); + for (MesWorkOrder order : workOrders) { - workOrderUnCompleteMap.put(workOrder.getWorkOrderNo(), MathOperation.sub(workOrder.getUnCompleteQty(), totalQty)); + if (!order.getWorkCenterCode().equals(cutScheme.getWorkCenterCode())) + MesException.throwMesBusiException("工单【%s】关联产线【%】与裁片方案【%】关联产线不一致!", order.getWorkCenterCode(), cutScheme.getWorkCenterCode()); + + if (unCompleteQty.compareTo(totalQty) > 0) + MesException.throwMesBusiException("零件号【%s】工单【%s】未完成数量汇总【%s】已满足产成总数【%s】!请取消勾选工单【%s】", order.getWorkCenterCode(), needWorkOrderNoList, cutScheme.getWorkCenterCode(), workOrders.subList(needWorkOrderNoList.size(), workOrders.size())); + + unCompleteQty = MathOperation.add(unCompleteQty, order.getUnCompleteQty()); + + needWorkOrderNoList.add(order.getWorkOrderNo()); + + if (order.getUnCompleteQty().compareTo(totalQty) >= 0) { + workOrderUnCompleteMap.put(order.getWorkOrderNo(), MathOperation.sub(order.getUnCompleteQty(), totalQty)); + } else { + workOrderUnCompleteMap.put(order.getWorkOrderNo(), 0.0); + } + + } + + if (totalQty.compareTo(unCompleteQty) > 0) { + List workOrderNoList = workOrders.stream().map(MesWorkOrder::getWorkOrderNo).collect(Collectors.toList()); + MesException.throwMesBusiException("零件号【%s】工单【%s】未完成数量【%s】不满足产成总数【%s】!", + cutSchemeFg.getPartNo(), workOrderNoList, unCompleteQty, totalQty); + } } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java index 766c6c5..859c42f 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java @@ -446,7 +446,7 @@ public class MesWorkOrderService extends BaseMesService implements MesPrintQueue printQueue = new MesPrintQueue(); BeanUtils.copyProperties(workOrder, printQueue, MesExtConstWords.ID); - printQueue.setPrintQueueType(MesExtEnumUtil.PRINT_QUEUE_TYPE.WORK_ORDER.getValue()); + printQueue.setPrintQueueType(MesExtEnumUtil.PRINT_QUEUE_TYPE.WORK_ORDER_ASSEMBLY.getValue()); printQueue.setPartProdGroupCode(mesPartProdGroup.getPartProdGroupCode()); printQueue.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.UNPRINT.getValue()); return printQueueRepository.save(printQueue); @@ -1138,6 +1138,20 @@ public class MesWorkOrderService extends BaseMesService implements mesCcscTaskService.insertMesCcscTask(organizeCode,mesWorkOrderList); } + @Override + public void doSaveWorkOrderPrintQueue(MesWorkOrder workOrder) { + if (workOrder == null) return; + + if (workOrder.getWorkOrderType() != MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) { + log.info("doSaveWorkOrderPrintQueue --- 工单:{} 为非排序,无需新增打印队列", workOrder.getWorkOrderNo()); + return; + } + + insertPrintQueue(workOrder, null); + + + } + private List getMesWorkOrderList(Long[] ids, String organizeCode) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getInPackArray(ids,"id",packBean);