From 32863d68c09f45cd501fd3db59c7f13e57130fe4 Mon Sep 17 00:00:00 2001
From: cuilei <ray_tsu1@163.com>
Date: 星期三, 10 九月 2025 17:51:36 +0800
Subject: [PATCH] 热处理报工优化

---
 src/main/java/org/jeecg/modules/mes/service/impl/MesWorkReportingServiceImpl.java |   58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 56 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/jeecg/modules/mes/service/impl/MesWorkReportingServiceImpl.java b/src/main/java/org/jeecg/modules/mes/service/impl/MesWorkReportingServiceImpl.java
index 5a7af5a..2dda41a 100644
--- a/src/main/java/org/jeecg/modules/mes/service/impl/MesWorkReportingServiceImpl.java
+++ b/src/main/java/org/jeecg/modules/mes/service/impl/MesWorkReportingServiceImpl.java
@@ -17,11 +17,15 @@
 import org.jeecg.modules.base.service.IShiftService;
 import org.jeecg.modules.lsw.entity.LswMaterial;
 import org.jeecg.modules.lsw.entity.LswMaterialInbound;
+import org.jeecg.modules.lsw.entity.LswMaterialInventory;
 import org.jeecg.modules.lsw.enums.MaterialCategoryEnum;
 import org.jeecg.modules.lsw.enums.MaterialInboundCategory;
+import org.jeecg.modules.lsw.enums.MaterialInventoryStatusEnum;
 import org.jeecg.modules.lsw.service.ILswMaterialInboundService;
+import org.jeecg.modules.lsw.service.ILswMaterialInventoryService;
 import org.jeecg.modules.lsw.service.ILswMaterialService;
 import org.jeecg.modules.mes.entity.*;
+import org.jeecg.modules.mes.enums.ReportCategoryEnum;
 import org.jeecg.modules.mes.mapper.MesWorkReportingMapper;
 import org.jeecg.modules.mes.service.*;
 import org.jeecg.modules.mes.utils.CommonUtils;
@@ -49,6 +53,7 @@
 import java.time.temporal.ChronoField;
 import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * @Description: 宸ュ崟鎶ュ伐
@@ -94,6 +99,8 @@
     private IInspectionPlanItemService inspectionPlanItemService;
     @Autowired
     private IMesMaterialConsumptionDetailService mesMaterialConsumptionDetailService;
+    @Autowired
+    private ILswMaterialInventoryService lswMaterialInventoryService;
 
     @Override
     public List<MesWorkReporting> queryWorkReportingByWorkOrderId(String workOrderId) {
@@ -158,7 +165,7 @@
                 //鎷兼帴鎴愬搧鎶ュ伐鎵樺彿
                 String palletNumber4 = sysBusinessCodeRuleService.generateBusinessCodeSeq("WorkReportingPalletNumber4");
                 String finishedPalletNumber = material.getMaterialNumber() + date + palletNumber4;
-                mesWorkReporting.setPalletNumber(finishedPalletNumber).setReportType("FINISHED");
+                mesWorkReporting.setPalletNumber(finishedPalletNumber).setReportType(ReportCategoryEnum.FINISHED.name());
                 break;
             case INNER_FLANGE:
             case OUTER_FLANGE:
@@ -168,8 +175,13 @@
                 Shift shift = shiftService.getById(workOrder.getShiftId());
                 String palletNumber6 = sysBusinessCodeRuleService.generateBusinessCodeSeq("WorkReportingPalletNumber6");
                 String halfPalletNumber = factory.getFactoryCode() + material.getMaterialNumber() + date + shift.getShiftCode() + palletNumber6;
-                mesWorkReporting.setPalletNumber(halfPalletNumber).setReportType("HALF");
+                mesWorkReporting.setPalletNumber(halfPalletNumber).setReportType(ReportCategoryEnum.HALF.name());
                 break;
+            case BLANK:
+                //鐑鐞嗘姤宸�
+                consumptionDetailList = heatTreatmentReport(mesWorkReporting, workOrder, lineSideWarehouse);
+                mesWorkReporting.setReportType(ReportCategoryEnum.HEATTREATMENT.name());
+
         }
         //鏂板鎶ュ伐璁板綍
         save(mesWorkReporting);
@@ -186,6 +198,48 @@
         return mesWorkReporting;
     }
 
+    //鐑鐞嗘姤宸�
+    private List<MesMaterialConsumptionDetail> heatTreatmentReport(MesWorkReporting mesWorkReporting, MesProductionWorkOrder workOrder, LineSideWarehouse lineSideWarehouse) {
+        //1銆佸叆搴撶儹澶勭悊姣涘澂鍒板搴旂嚎杈瑰簱锛岀儹澶勭悊鍓嶅悗鐗╂枡缂栫爜涓嶅彂鐢熷彉鍖栵紝鍙渶瑕佹洿鏂扮儹澶勭悊鏍囪瘑锛屾墍浠ユ澶勪笉鑳界洿鎺ヨ皟鐢ㄧ嚎杈瑰簱鐨勫叆搴撴柟娉曪紝闇�瑕佺洿鎺ユ洿鏂扮墿鏂欏簱瀛樹俊鎭腑鐨勭儹澶勭悊鏍囪瘑瀛楁
+        LswMaterialInventory materialInventory = lswMaterialInventoryService.list(new LambdaQueryWrapper<LswMaterialInventory>()
+                .eq(LswMaterialInventory::getWarehouseId, lineSideWarehouse.getId())
+                .eq(LswMaterialInventory::getInventoryStatus, MaterialInventoryStatusEnum.OUTBOUND.name())
+                .eq(LswMaterialInventory::getHeatTreatmentFlag, CommonConstant.STATUS_0)
+                .apply("EXISTS (SELECT 1 FROM lsw_material t WHERE t.id = lsw_material_inventory.material_id AND t.material_number = {0} " +
+                        "AND t.del_flag = {1} AND t.material_status = {2})", workOrder.getMaterialNumber(), CommonConstant.DEL_FLAG_0, CommonConstant.STATUS_1))
+                .stream().findFirst().orElse(null);
+        if (materialInventory == null) {
+            throw new JeecgBootException("绾胯竟搴撴棤璇ョ墿鏂欏簱瀛樹俊鎭紒");
+        }
+        if (materialInventory.getQuantity().compareTo(mesWorkReporting.getQuantity()) != 0) {
+            throw new JeecgBootException("鎶ュ伐鏁伴噺涓嶇鍚堟暣鎵规鏁伴噺瑕佹眰锛�");
+        }
+        materialInventory.setHeatTreatmentFlag(CommonConstant.STATUS_1);
+        materialInventory.setInventoryStatus(MaterialInventoryStatusEnum.NORMAL.name());
+        lswMaterialInventoryService.updateById(materialInventory);
+        //2銆佹洿鏂拌鎵规鍙峰緱涓婃枡璁板綍
+        MesMaterialLoading materialLoading = mesMaterialLoadingService.list(new LambdaQueryWrapper<MesMaterialLoading>()
+                        .eq(MesMaterialLoading::getFactoryId, workOrder.getFactoryId())
+                        .eq(MesMaterialLoading::getWarehouseId, lineSideWarehouse.getId())
+                        .eq(MesMaterialLoading::getMaterialNumber, workOrder.getMaterialNumber())
+                        .eq(MesMaterialLoading::getBatchNumber, materialInventory.getBatchNumber()))
+                        .stream().findFirst().orElse(null);
+        if (materialLoading == null) {
+            throw new JeecgBootException("鏈壘鍒拌鎵规鍙风殑涓婃枡璁板綍锛�");
+        }
+        materialLoading.setRemainingQuantity(BigDecimal.ZERO);
+        mesMaterialLoadingService.updateById(materialLoading);
+        //鐑鐞嗘姤宸ワ紝鎵规鍙峰彇搴撳瓨鐨勬暣鎵规壒娆″彿
+        mesWorkReporting.setBatchNumber(materialInventory.getBatchNumber());
+        //3銆佽褰曟秷鑰楁槑缁�
+        MesMaterialConsumptionDetail materialConsumptionDetail = new MesMaterialConsumptionDetail()
+                .setWorkOrderId(workOrder.getId())
+                .setFactoryId(workOrder.getFactoryId())
+                .setLoadingId(materialLoading.getId())
+                .setQuantity(mesWorkReporting.getQuantity());
+        return Collections.singletonList(materialConsumptionDetail);
+    }
+
     //鍗婃垚鍝�(鍐呮硶鍏般�佸娉曞叞)銆佹垚鍝佹姤宸�
     private List<MesMaterialConsumptionDetail> productReport(MesWorkReporting mesWorkReporting, MesProductionWorkOrder workOrder, LineSideWarehouse lineSideWarehouse) {
         //1銆佸叆搴� 鍗婃垚鍝�/鎴愬搧 鍒板搴旂嚎杈瑰簱

--
Gitblit v1.9.3