From cb0cbf01863bf3d22c06410a37d280719a5c92c3 Mon Sep 17 00:00:00 2001
From: cuilei <ray_tsu1@163.com>
Date: 星期五, 12 九月 2025 15:05:24 +0800
Subject: [PATCH] 齐套性检查适配热处理产线

---
 db/双林新火炬MES数据库设计.pdma.json                                                              |    6 ++-
 src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialInventoryMapper.xml           |    4 ++
 src/main/java/org/jeecg/modules/mes/service/impl/MesProductionWorkOrderServiceImpl.java |   30 ++++++++++++++
 src/main/java/org/jeecg/modules/mes/controller/MesProductionWorkOrderController.java    |   13 ++++++
 src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialInventoryServiceImpl.java   |    4 +-
 src/main/java/org/jeecg/modules/lsw/service/ILswMaterialInventoryService.java           |    2 
 src/main/java/org/jeecg/modules/mes/service/IMesProductionWorkOrderService.java         |    2 +
 src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialInventoryMapper.java              |    3 +
 8 files changed, 57 insertions(+), 7 deletions(-)

diff --git "a/db/\345\217\214\346\236\227\346\226\260\347\201\253\347\202\254MES\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json" "b/db/\345\217\214\346\236\227\346\226\260\347\201\253\347\202\254MES\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json"
index 23e4f7d..151d536 100644
--- "a/db/\345\217\214\346\236\227\346\226\260\347\201\253\347\202\254MES\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json"
+++ "b/db/\345\217\214\346\236\227\346\226\260\347\201\253\347\202\254MES\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json"
@@ -4,7 +4,7 @@
   "avatar": "",
   "version": "4.9.2",
   "createdTime": "2025-3-10 16:38:19",
-  "updatedTime": "2025-9-9 17:51:22",
+  "updatedTime": "2025-9-12 15:03:56",
   "dbConns": [],
   "profile": {
     "default": {
@@ -71266,7 +71266,9 @@
         "B57F92D3-3089-453E-A007-85C497CEE088",
         "EE37A932-3559-47C8-A1F3-1E788DE4A116",
         "D1A16DCC-C4AB-4717-A74C-1B52B918A87F",
-        "378CF92C-B63B-4D7F-84DF-5D2F84CE4753"
+        "378CF92C-B63B-4D7F-84DF-5D2F84CE4753",
+        "9F7C10B2-9B87-4E80-AF35-D054CEEF11FA",
+        "C4D7D8D8-A80F-4A15-B253-50CF701ADF78"
       ],
       "refViews": [],
       "refDiagrams": [],
diff --git a/src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialInventoryMapper.java b/src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialInventoryMapper.java
index 33b2e38..2afeb8d 100644
--- a/src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialInventoryMapper.java
+++ b/src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialInventoryMapper.java
@@ -18,7 +18,8 @@
 public interface LswMaterialInventoryMapper extends BaseMapper<LswMaterialInventory> {
 
     List<LswMaterialInventoryVo> selectLineSideMaterialInventoryByMaterialNumber(@Param("materialNumberList") List<String> bomMaterialNumberList,
-																				 @Param("factoryId") String factoryId);
+																				 @Param("factoryId") String factoryId,
+																				 @Param("heatFlag") String heatFlag);
 
 	/**
 	 * 搴撳瓨缁熻
diff --git a/src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialInventoryMapper.xml b/src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialInventoryMapper.xml
index e04fea9..c7cedf7 100644
--- a/src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialInventoryMapper.xml
+++ b/src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialInventoryMapper.xml
@@ -13,7 +13,11 @@
 		<foreach collection="materialNumberList" item="item" separator="," open="(" close=")">
 			#{item}
 		</foreach>
+        <if test="heatFlag != null and heatFlag != ''">
+            AND t2.heat_treatment_flag = #{heatFlag}
+        </if>
 		AND t2.warehouse_id = #{factoryId}
+		AND t2.inventory_status = 'NORMAL'
 		AND t1.del_flag = 0
 		GROUP BY
 			t1.material_number,
diff --git a/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialInventoryService.java b/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialInventoryService.java
index a4e9e61..c63b5cb 100644
--- a/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialInventoryService.java
+++ b/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialInventoryService.java
@@ -16,7 +16,7 @@
  */
 public interface ILswMaterialInventoryService extends IService<LswMaterialInventory> {
     /** 閫氳繃鐗╂枡缂栫爜鍜岀嚎杈瑰簱id鏌ヨ鐗╂枡搴撳瓨 */
-    List<LswMaterialInventoryVo> selectLineSideMaterialInventoryByMaterialNumber(List<String> bomMaterialNumberList, String factoryId);
+    List<LswMaterialInventoryVo> selectLineSideMaterialInventoryByMaterialNumber(List<String> bomMaterialNumberList, String factoryId, String heatFlag);
 
     /**
      * 搴撳瓨缁熻
diff --git a/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialInventoryServiceImpl.java b/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialInventoryServiceImpl.java
index 4517bf2..542a11a 100644
--- a/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialInventoryServiceImpl.java
+++ b/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialInventoryServiceImpl.java
@@ -43,8 +43,8 @@
     private IFactoryService factoryService;
 
     @Override
-    public List<LswMaterialInventoryVo> selectLineSideMaterialInventoryByMaterialNumber(List<String> bomMaterialNumberList, String factoryId) {
-        return lswMaterialInventoryMapper.selectLineSideMaterialInventoryByMaterialNumber(bomMaterialNumberList, factoryId);
+    public List<LswMaterialInventoryVo> selectLineSideMaterialInventoryByMaterialNumber(List<String> bomMaterialNumberList, String factoryId, String heatFlag) {
+        return lswMaterialInventoryMapper.selectLineSideMaterialInventoryByMaterialNumber(bomMaterialNumberList, factoryId, heatFlag);
     }
 
     @Override
diff --git a/src/main/java/org/jeecg/modules/mes/controller/MesProductionWorkOrderController.java b/src/main/java/org/jeecg/modules/mes/controller/MesProductionWorkOrderController.java
index 9731f87..302d513 100644
--- a/src/main/java/org/jeecg/modules/mes/controller/MesProductionWorkOrderController.java
+++ b/src/main/java/org/jeecg/modules/mes/controller/MesProductionWorkOrderController.java
@@ -16,6 +16,9 @@
 import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.modules.base.entity.Factory;
+import org.jeecg.modules.base.enums.ProductionTypeEnum;
+import org.jeecg.modules.base.service.IFactoryService;
 import org.jeecg.modules.eam.constant.MaintenanceCategoryEnum;
 import org.jeecg.modules.eam.constant.MaintenanceStandardStatusEnum;
 import org.jeecg.modules.eam.entity.EamEquipment;
@@ -65,6 +68,8 @@
     private IEamProcessCheckDetailService eamProcessCheckDetailService;
     @Autowired
     private IEamEquipmentService eamEquipmentService;
+    @Autowired
+    private IFactoryService factoryService;
 
     /**
      * 鍒嗛〉鍒楄〃鏌ヨ
@@ -221,6 +226,14 @@
         if (!ProductionWorkOrderStatus.PUBLISHED.name().equals(workOrder.getWorkOrderStatus())) {
             return Result.error("褰撳墠宸ュ崟鐘舵�佷笉鑳借繘琛岄綈濂楁�ф鏌ワ紒");
         }
+        Factory factory = factoryService.getById(workOrder.getFactoryId());
+        String productionType = factory.getProductionType();
+        if (ProductionTypeEnum.HEATTREATMENT.name().equals(productionType)) {
+            //鐑鐞嗕骇绾�
+            List<MesKittingCompletenessCheck> list = mesProductionWorkOrderService.workOrderCompletenessCheckOnHeatTreatment(workOrder);
+            return Result.ok(list);
+        }
+        //鍏朵綑浜х嚎
         List<MesKittingCompletenessCheck> list = mesProductionWorkOrderService.workOrderCompletenessCheck(workOrder);
         return Result.ok(list);
     }
diff --git a/src/main/java/org/jeecg/modules/mes/service/IMesProductionWorkOrderService.java b/src/main/java/org/jeecg/modules/mes/service/IMesProductionWorkOrderService.java
index d643686..1c64a6e 100644
--- a/src/main/java/org/jeecg/modules/mes/service/IMesProductionWorkOrderService.java
+++ b/src/main/java/org/jeecg/modules/mes/service/IMesProductionWorkOrderService.java
@@ -23,4 +23,6 @@
     IPage<MesProductionWorkOrder> queryPageList(Page<MesProductionWorkOrder> page, Map<String, String[]> parameterMap);
 
     List<MesKittingCompletenessCheck> workOrderCompletenessCheck(MesProductionWorkOrder workOrder);
+
+    List<MesKittingCompletenessCheck> workOrderCompletenessCheckOnHeatTreatment(MesProductionWorkOrder workOrder);
 }
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..d41417c 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
@@ -234,7 +234,7 @@
         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();
         //鏍规嵁璁㈠崟BOM鏄庣粏鍒楀嚭榻愬妫�鏌ョ粨鏋�
@@ -260,4 +260,32 @@
         });
         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);
+    }
 }

--
Gitblit v1.9.3