From 52adc4d46bf83cf8c968a8cd870fb021519e145f Mon Sep 17 00:00:00 2001
From: cuilei <ray_tsu1@163.com>
Date: 星期五, 15 八月 2025 16:11:30 +0800
Subject: [PATCH] 报工、齐套性检查部分接口

---
 src/main/java/org/jeecg/modules/mes/service/impl/MesWorkReportingServiceImpl.java |  106 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 106 insertions(+), 0 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 9021437..3dde504 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
@@ -1,12 +1,35 @@
 package org.jeecg.modules.mes.service.impl;
 
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.modules.base.entity.Factory;
+import org.jeecg.modules.base.entity.LineSideWarehouse;
+import org.jeecg.modules.base.entity.Shift;
+import org.jeecg.modules.base.service.IFactoryService;
+import org.jeecg.modules.base.service.ILineSideWarehouseService;
+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.enums.MaterialCategory;
+import org.jeecg.modules.lsw.service.ILswMaterialInboundService;
+import org.jeecg.modules.lsw.service.ILswMaterialService;
+import org.jeecg.modules.mes.entity.MesProductionWorkOrder;
 import org.jeecg.modules.mes.entity.MesWorkReporting;
 import org.jeecg.modules.mes.mapper.MesWorkReportingMapper;
+import org.jeecg.modules.mes.service.IMesProductionWorkOrderService;
 import org.jeecg.modules.mes.service.IMesWorkReportingService;
+import org.jeecg.modules.mes.utils.CommonUtils;
+import org.jeecg.modules.system.service.ISysBusinessCodeRuleService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
 import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
 
 /**
  * @Description: 宸ュ崟鎶ュ伐
@@ -17,6 +40,21 @@
 @Service
 public class MesWorkReportingServiceImpl extends ServiceImpl<MesWorkReportingMapper, MesWorkReporting> implements IMesWorkReportingService {
 
+    @Autowired
+    private IMesProductionWorkOrderService mesProductionWorkOrderService;
+    @Autowired
+    private ILswMaterialService lswMaterialService;
+    @Autowired
+    private IFactoryService factoryService;
+    @Autowired
+    private IShiftService shiftService;
+    @Autowired
+    private ILineSideWarehouseService lineSideWarehouseService;
+    @Autowired
+    private ILswMaterialInboundService lswMaterialInboundService;
+    @Autowired
+    private ISysBusinessCodeRuleService sysBusinessCodeRuleService;
+
     @Override
     public List<MesWorkReporting> queryWorkReportingByWorkOrderId(String workOrderId) {
         return baseMapper.queryWorkReportingByWorkOrderId(workOrderId);
@@ -26,4 +64,72 @@
     public List<MesWorkReporting> queryWorkReportingByOrderId(String orderId) {
         return baseMapper.queryWorkReportingByOrderId(orderId);
     }
+
+    @Override
+    public void addReporting(MesWorkReporting mesWorkReporting) {
+        MesProductionWorkOrder workOrder = mesProductionWorkOrderService.getById(mesWorkReporting.getWorkOrderId());
+        if (workOrder == null) {
+            throw new JeecgBootException("宸ュ崟涓嶅瓨鍦紒");
+        }
+        LswMaterial material = lswMaterialService.list(new LambdaQueryWrapper<LswMaterial>()
+                        .eq(LswMaterial::getMaterialNumber, workOrder.getMaterialNumber())
+                        .eq(LswMaterial::getDelFlag, CommonConstant.DEL_FLAG_0)).stream()
+                .findAny().orElse(null);
+        if (material == null) {
+            throw new JeecgBootException("鐗╂枡涓嶅瓨鍦紒");
+        }
+        MaterialCategory materialCategory = MaterialCategory.fromName(material.getMaterialCategory());
+        if (materialCategory == null) {
+            throw new JeecgBootException("鏈煡鐨勭墿鏂欑被鍨嬶紒");
+        }
+        //鐢熶骇鎵规鍙�
+        String batchNumber = sysBusinessCodeRuleService.generateBusinessCodeSeq("WorkReportingBatchNumber");
+        mesWorkReporting.setBatchNumber(batchNumber);
+        LineSideWarehouse lineSideWarehouse = lineSideWarehouseService.list(new LambdaQueryWrapper<LineSideWarehouse>()
+                        .eq(LineSideWarehouse::getFactoryId, mesWorkReporting.getFactoryId())
+                        .eq(LineSideWarehouse::getDelFlag, CommonConstant.DEL_FLAG_0))
+                .stream().findAny().orElse(null);
+        if (lineSideWarehouse == null) {
+            throw new JeecgBootException("绾胯竟浠撳簱涓嶅瓨鍦紒");
+        }
+        mesWorkReporting.setWarehouseId(lineSideWarehouse.getId());
+        mesWorkReporting.setReporter(Objects.requireNonNull(CommonUtils.getCurrentUser()).getUsername());
+        mesWorkReporting.setReportTime(new Date());
+        String date = DateUtil.format(new Date(), "yyMMdd");
+        switch (materialCategory) {
+            case FINISHED:
+                //鎴愬搧鎶ュ伐閫昏緫
+                String palletNumber4 = sysBusinessCodeRuleService.generateBusinessCodeSeq("WorkReportingPalletNumber4");
+                String finishedPalletNumber = material.getMaterialNumber() + date + palletNumber4;
+                mesWorkReporting.setPalletNumber(finishedPalletNumber);
+                //todo 鎵e噺鍐呮硶鍏帮紙瀵瑰簲鏈哄姞鍐呮硶鍏扮嚎杈瑰簱锛夈�佸娉曞叞锛堝搴旀満鍔犲娉曞叞绾胯竟搴擄級銆佸皬鍐呭湀锛堝搴旇閰嶇嚎杈瑰簱锛夊簱瀛橈紝璋冪敤SAP鎶曟枡鎺ュ彛
+                //todo 璋冪敤SAP宸ュ簭鎶ュ伐
+                //todo 鎵撳嵃鎴愬搧鎵樻爣绛俱�佹楠屾爣璇嗗崱銆佺Щ搴撳崟銆佸畬宸ユ楠屽伐鍗曪紱鍒ゆ柇鐢熶骇璁㈠崟鏄惁闇�瑕佸叧闂紙鍚堟牸鏁伴噺 = 璁㈠崟鏁伴噺锛�
+                break;
+            case HALF:
+            case RAW:
+                //鍗婃垚鍝佹姤宸ラ�昏緫
+                Factory factory = factoryService.getById(mesWorkReporting.getFactoryId());
+                Shift shift = shiftService.getById(workOrder.getShiftId());
+                String palletNumber6 = sysBusinessCodeRuleService.generateBusinessCodeSeq("WorkReportingPalletNumber6");
+                //鎷兼帴鍗婃垚鍝佹姤宸ユ墭鍙�
+                String halfPalletNumber = factory.getFactoryCode() + material.getMaterialNumber() + date + shift.getShiftCode() + palletNumber6;
+                mesWorkReporting.setPalletNumber(halfPalletNumber);
+                //todo 鎵e噺瀵瑰簲绾胯竟搴擄紙澶栨硶鍏版瘺鍧�佸唴娉曞叞姣涘澂锛夊簱瀛樺悗锛岃皟鐢⊿AP鎶曟枡鎺ュ彛
+                //todo 璋冪敤SAP宸ュ簭鎶ュ伐
+                break;
+            case PARTS:
+                break;
+        }
+        save(mesWorkReporting);
+        //绾胯竟搴撳叆搴撻�昏緫
+        LswMaterialInbound lswMaterialInbound = new LswMaterialInbound()
+                .setFactoryId(mesWorkReporting.getFactoryId())
+                .setMaterialNumber(material.getMaterialNumber())
+                .setMaterialName(material.getMaterialName())
+                .setBatchNumber(batchNumber)
+                .setQuantity(mesWorkReporting.getQuantity())
+                .setWarehouseId(lineSideWarehouse.getId());
+        lswMaterialInboundService.save(lswMaterialInbound);
+    }
 }

--
Gitblit v1.9.3