From c9d3f6285440719077a2ff48e922f94b0258fbc3 Mon Sep 17 00:00:00 2001
From: cuilei <ray_tsu1@163.com>
Date: 星期三, 20 八月 2025 16:54:21 +0800
Subject: [PATCH] 报工接口完善

---
 src/main/java/org/jeecg/modules/mes/service/impl/MesWorkReportingServiceImpl.java |   43 +++++++++++++++++++++++++++++++++++++++----
 1 files changed, 39 insertions(+), 4 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 271c5aa..d5f8a99 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
@@ -34,6 +34,11 @@
 import org.jeecg.modules.pms.service.IPmsMaterialProcessService;
 import org.jeecg.modules.pms.service.IPmsProcessBillMaterialsService;
 import org.jeecg.modules.pms.vo.ProcessBillMaterialsDetailVo;
+import org.jeecg.modules.qms.entity.InspectionPlan;
+import org.jeecg.modules.qms.entity.InspectionPlanItem;
+import org.jeecg.modules.qms.enums.PlanCategoryEnum;
+import org.jeecg.modules.qms.service.IInspectionPlanItemService;
+import org.jeecg.modules.qms.service.IInspectionPlanService;
 import org.jeecg.modules.sap.request.OrderLoadRequest;
 import org.jeecg.modules.sap.request.OrderReportRequest;
 import org.jeecg.modules.sap.service.OrderLoadService;
@@ -88,6 +93,10 @@
     private OrderReportService orderReportService;
     @Autowired
     private OrderLoadService orderLoadService;
+    @Autowired
+    private IInspectionPlanService inspectionPlanService;
+    @Autowired
+    private IInspectionPlanItemService inspectionPlanItemService;
 
     @Override
     public List<MesWorkReporting> queryWorkReportingByWorkOrderId(String workOrderId) {
@@ -101,7 +110,7 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void addReporting(MesWorkReporting mesWorkReporting) {
+    public MesWorkReporting addReporting(MesWorkReporting mesWorkReporting) {
         MesProductionWorkOrder workOrder = mesProductionWorkOrderService.getById(mesWorkReporting.getWorkOrderId());
         if (workOrder == null) {
             throw new JeecgBootException("宸ュ崟涓嶅瓨鍦紒");
@@ -134,7 +143,9 @@
         int currentPallets = workOrder.getFinishedPallets() + 1;
         String batchNumber = yearLastTwo + dayOfYearStr + shiftGroup.getGroupCode() + currentPallets;
         mesWorkReporting.setBatchNumber(batchNumber)
+                .setWorkOrderCode(workOrder.getWorkOrderCode())
                 .setWarehouseId(lineSideWarehouse.getId())
+                .setWarehouseCode(lineSideWarehouse.getWarehouseCode())
                 .setReporter(Objects.requireNonNull(CommonUtils.getCurrentUser()).getUsername())
                 .setReportTime(new Date());
         String date = today.format(DateTimeFormatter.ofPattern("yyMMdd"));
@@ -144,11 +155,12 @@
             case FINISHED_PRODUCT:
                 //鎴愬搧鎶ュ伐
                 productReport(mesWorkReporting, workOrder, lineSideWarehouse);
+                //鐢熸垚妫�楠屽伐鍗�
+                generateInspectionOrder(mesWorkReporting, workOrder);
                 //鎷兼帴鎴愬搧鎶ュ伐鎵樺彿
                 String palletNumber4 = sysBusinessCodeRuleService.generateBusinessCodeSeq("WorkReportingPalletNumber4");
                 String finishedPalletNumber = material.getMaterialNumber() + date + palletNumber4;
-                mesWorkReporting.setPalletNumber(finishedPalletNumber);
-                //todo 鎵撳嵃鎴愬搧鎵樻爣绛俱�佹楠屾爣璇嗗崱銆佺Щ搴撳崟銆佸畬宸ユ楠屽伐鍗�
+                mesWorkReporting.setPalletNumber(finishedPalletNumber).setReportType("FINISHED");
                 break;
             case INNER_FLANGE:
             case OUTER_FLANGE:
@@ -158,7 +170,7 @@
                 Shift shift = shiftService.getById(workOrder.getShiftId());
                 String palletNumber6 = sysBusinessCodeRuleService.generateBusinessCodeSeq("WorkReportingPalletNumber6");
                 String halfPalletNumber = factory.getFactoryCode() + material.getMaterialNumber() + date + shift.getShiftCode() + palletNumber6;
-                mesWorkReporting.setPalletNumber(halfPalletNumber);
+                mesWorkReporting.setPalletNumber(halfPalletNumber).setReportType("HALF");
                 break;
         }
         //鏂板鎶ュ伐璁板綍
@@ -169,6 +181,8 @@
                 .setActualQuantity(workOrder.getActualQuantity().add(mesWorkReporting.getQuantity()))
                 .setFinishedPallets(workOrder.getFinishedPallets() + 1);
         mesProductionWorkOrderService.updateById(productionWorkUpdateOrder);
+        //杩斿洖鎶ュ伐璁板綍锛岀敤浜庢墭鏍囩鎵撳嵃
+        return mesWorkReporting;
     }
 
     //鍗婃垚鍝�(鍐呮硶鍏般�佸娉曞叞)銆佹垚鍝佹姤宸�
@@ -246,6 +260,27 @@
         }
     }
 
+    //鏍规嵁妫�楠屾柟妗堢敓鎴愭楠屽伐鍗�
+    private void generateInspectionOrder(MesWorkReporting mesWorkReporting, MesProductionWorkOrder workOrder) {
+        //1.鏍规嵁鐗╂枡缂栫爜鏌ヨ妫�楠屾柟妗�
+        InspectionPlan inspectionPlan = inspectionPlanService.list(new LambdaQueryWrapper<InspectionPlan>()
+                .eq(InspectionPlan::getMaterialNumber, workOrder.getMaterialNumber())
+                .eq(InspectionPlan::getPlanCategory, PlanCategoryEnum.COMPLETION_INSPECTION.name())
+                .eq(InspectionPlan::getPlanStatus, CommonConstant.STATUS_1)
+                .eq(InspectionPlan::getDelFlag, CommonConstant.DEL_FLAG_0)).stream().findFirst().orElse(null);
+        if (inspectionPlan == null) {
+            throw new JeecgBootException("鏈壘鍒拌鐗╂枡鐨勬楠屾柟妗堬紒");
+        }
+        List<InspectionPlanItem> inspectionPlanItemList = inspectionPlanItemService.list(new LambdaQueryWrapper<InspectionPlanItem>()
+                .eq(InspectionPlanItem::getPlanId, inspectionPlan.getId())
+                .orderByAsc(InspectionPlanItem::getSorter));
+        if (inspectionPlanItemList.isEmpty()) {
+            throw new JeecgBootException("鏈壘鍒拌鐗╂枡鐨勬楠屾柟妗堟楠岄」鏄庣粏锛�");
+        }
+        //2.鐢熸垚妫�楠屽伐鍗�
+        //todo 妫�楠屽伐鍗曠洰鍓嶈繕娌℃湁鐢熸垚浠g爜锛屾病鏈夊姛鑳�
+    }
+
     private List<MesMaterialLoading> deductQuantity(List<MesMaterialLoading> materialLoadingRecordList, BigDecimal quantity) {
         for (MesMaterialLoading mesMaterialLoading : materialLoadingRecordList) {
             if (mesMaterialLoading.getRemainingQuantity().compareTo(quantity) >= 0) {

--
Gitblit v1.9.3