From 5f1edfec21b921ec885b40b0a86c7ffe4aa5a7de Mon Sep 17 00:00:00 2001
From: cuilei <ray_tsu1@163.com>
Date: 星期一, 15 九月 2025 11:52:06 +0800
Subject: [PATCH] 齐套性检查排除已检查过且齐套的物料

---
 src/main/java/org/jeecg/modules/mes/service/impl/MesProductionWorkOrderServiceImpl.java |   53 ++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 50 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/jeecg/modules/mes/service/impl/MesProductionWorkOrderServiceImpl.java b/src/main/java/org/jeecg/modules/mes/service/impl/MesProductionWorkOrderServiceImpl.java
index 83314ea..62f19b8 100644
--- a/src/main/java/org/jeecg/modules/mes/service/impl/MesProductionWorkOrderServiceImpl.java
+++ b/src/main/java/org/jeecg/modules/mes/service/impl/MesProductionWorkOrderServiceImpl.java
@@ -29,6 +29,7 @@
 import org.jeecg.modules.mes.entity.MesKittingCompletenessCheck;
 import org.jeecg.modules.mes.entity.MesProductionOrder;
 import org.jeecg.modules.mes.enums.ProductionOrderStatus;
+import org.jeecg.modules.mes.service.IMesKittingCompletenessCheckService;
 import org.jeecg.modules.mes.service.IMesProductionOrderService;
 import org.jeecg.modules.mes.service.IMesProductionWorkOrderService;
 import org.jeecg.modules.mes.entity.MesProductionWorkOrder;
@@ -76,6 +77,8 @@
     private ILswMaterialInventoryService lswMaterialInventoryService;
     @Autowired
     private ILineSideWarehouseService lineSideWarehouseService;
+    @Autowired
+    private IMesKittingCompletenessCheckService mesKittingCompletenessCheckService;
 
     @Override
     public List<MesProductionWorkOrder> schedule(MesProductionWorkScheduleRequest request) {
@@ -234,14 +237,25 @@
         List<String> bomMaterialNumberList = processBillMaterialsDetails.stream()
                 .map(PmsProcessBillMaterialsDetail::getMaterialNumber).collect(Collectors.toList());
         Map<String, LswMaterialInventoryVo> lswMaterialInventoryMap = lswMaterialInventoryService
-                .selectLineSideMaterialInventoryByMaterialNumber(bomMaterialNumberList, lineSideWarehouse.getId()).stream()
+                .selectLineSideMaterialInventoryByMaterialNumber(bomMaterialNumberList, lineSideWarehouse.getId(), null).stream()
                 .collect(Collectors.toMap(LswMaterialInventoryVo::getMaterialNumber, v1 -> v1, (v1, v2) -> v1));
         List<MesKittingCompletenessCheck> completenessCheckResultList = CollectionUtil.newArrayList();
+        //鏌ヨ鏄惁鏈夐綈濂楁鏌ヨ褰曪紙宸查綈澶囩殑锛�
+        List<String> checkedMaterialNumberList = mesKittingCompletenessCheckService.list(new LambdaQueryWrapper<MesKittingCompletenessCheck>()
+                        .eq(MesKittingCompletenessCheck::getWorkOrderId, workOrder.getId())
+                        .in(MesKittingCompletenessCheck::getMaterialNumber, bomMaterialNumberList)
+                        .eq(MesKittingCompletenessCheck::getCheckFlag, CommonConstant.DEFAULT_1))
+                        .stream().map(MesKittingCompletenessCheck::getMaterialNumber).collect(Collectors.toList());
         //鏍规嵁璁㈠崟BOM鏄庣粏鍒楀嚭榻愬妫�鏌ョ粨鏋�
         for (PmsProcessBillMaterialsDetail processBillMaterialsDetail : processBillMaterialsDetails) {
-            LswMaterialInventoryVo materialInventoryVo = lswMaterialInventoryMap.get(processBillMaterialsDetail.getMaterialNumber());
+            String materialNumber = processBillMaterialsDetail.getMaterialNumber();
+            if (checkedMaterialNumberList.contains(materialNumber)) {
+                //濡傛灉宸茬粡鍋氳繃榻愬鎬ф鏌ワ紝骞朵笖榻愬锛屽氨蹇界暐鎺�
+                continue;
+            }
+            LswMaterialInventoryVo materialInventoryVo = lswMaterialInventoryMap.get(materialNumber);
             MesKittingCompletenessCheck completenessCheckItem = new MesKittingCompletenessCheck()
-                    .setMaterialNumber(processBillMaterialsDetail.getMaterialNumber())
+                    .setMaterialNumber(materialNumber)
                     .setMaterialName(processBillMaterialsDetail.getMaterialName())
                     //闇�姹傛暟閲� = (bom鏄庣粏鐨勯渶姹傛暟閲� / bom璁㈠崟鐨勬暟閲�) * 鎺掍骇宸ュ崟璁″垝鐢熶骇鏁伴噺
                     .setRequiredQuantity(processBillMaterialsDetail.getUsageQuantity()
@@ -260,4 +274,37 @@
         });
         return completenessCheckResultList;
     }
+
+    @Override
+    public List<MesKittingCompletenessCheck> workOrderCompletenessCheckOnHeatTreatment(MesProductionWorkOrder workOrder) {
+        //鏌ヨ宸ュ崟鎵�灞炰骇绾垮搴旂殑绾胯竟浠�
+        LineSideWarehouse lineSideWarehouse = lineSideWarehouseService.list(new LambdaQueryWrapper<LineSideWarehouse>()
+                        .eq(LineSideWarehouse::getFactoryId, workOrder.getFactoryId())
+                        .eq(LineSideWarehouse::getDelFlag, CommonConstant.DEL_FLAG_0)
+                        .eq(LineSideWarehouse::getWarehouseStatus, CommonConstant.DEFAULT_1))
+                .stream().findFirst().orElse(null);
+        if (lineSideWarehouse == null) {
+            throw new JeecgBootException("璇ヤ骇绾挎湭閰嶇疆绾胯竟浠擄紒");
+        }
+        //鏌ヨ宸ュ崟鐑鐞嗙墿鏂欏搴旀瘺鍧湪绾胯竟浠撶殑搴撳瓨
+        LswMaterialInventoryVo materialInventoryVo = lswMaterialInventoryService.selectLineSideMaterialInventoryByMaterialNumber(Collections
+                        .singletonList(workOrder.getMaterialNumber()), lineSideWarehouse.getId(), CommonConstant.DEFAULT_0)
+                .stream().findFirst().orElse(null);
+        if (materialInventoryVo == null) {
+            throw new JeecgBootException("绾胯竟搴撶墿鏂欎笉瀛樺湪锛�");
+        }
+        MesKittingCompletenessCheck completenessCheck = new MesKittingCompletenessCheck()
+                .setMaterialNumber(materialInventoryVo.getMaterialNumber())
+                .setMaterialName(materialInventoryVo.getMaterialName())
+                .setRequiredQuantity(workOrder.getPlanQuantity())
+                .setActualQuantity(materialInventoryVo.getStockQuantity())
+                .setProductionUnit("PC")
+                .setCheckFlag(materialInventoryVo.getStockQuantity().compareTo(workOrder.getPlanQuantity()) > 0 ? CommonConstant.DEFAULT_1 : CommonConstant.DEFAULT_0);
+        return Collections.singletonList(completenessCheck);
+    }
+
+    @Override
+    public IPage<MesProductionWorkOrder> queryWorkOrderByTransfer(Page<MesProductionWorkOrder> page) {
+        return this.getBaseMapper().queryWorkOrderByTransfer(page);
+    }
 }

--
Gitblit v1.9.3