From 27a90e70749f5a569eda2c225d7b319b3c2d77a5 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期一, 15 十二月 2025 11:41:03 +0800
Subject: [PATCH] 订单拆分生成系统编号逻辑调整

---
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java |   58 +++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 43 insertions(+), 15 deletions(-)

diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java
index 50a5633..4f2fe8b 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java
@@ -50,6 +50,7 @@
 import com.ruoyi.inspect.service.RawMaterialOrderService;
 import com.ruoyi.common.numgen.NumberGenerator;
 import com.ruoyi.framework.exception.ErrorException;
+import com.ruoyi.basic.vo.IfsInventoryQuantityVO;
 import com.ruoyi.performance.mapper.AuxiliaryOutputWorkingHoursMapper;
 import com.ruoyi.performance.pojo.AuxiliaryOutputWorkingHours;
 import com.ruoyi.system.mapper.UserMapper;
@@ -99,7 +100,7 @@
 
     private IfsSplitOrderRecordService ifsSplitOrderRecordService;
 
-
+    private final NumberGenerator<IfsSplitOrderRecord> splitOrderRecordNumberGenerator;
 
     @Override
     public Result selectStandardTreeListByPartNo(String partNo) {
@@ -111,7 +112,7 @@
         for (FactoryDto factoryDto : factoryDtos) {
             for (LaboratoryDto laboratoryDto : factoryDto.getChildren()) {
                 for (SampleTypeDto sampleTypeDto : laboratoryDto.getChildren()) {
-                    if (sampleTypeDto.getChildren().size() == 0) {
+                    if (sampleTypeDto.getChildren().isEmpty()) {
                         sampleTypeDto.setChildren(standardTreeMapper.getStandardTree3(sampleTypeDto.getValue()));
                     }
                     // 鍒ゆ柇缁戝畾鐨勬槸鍚︽槸褰撳墠闆朵欢鍙�
@@ -146,8 +147,15 @@
     }
 
     @Override
-    public IPage<IfsInventoryQuantity> getWarehouseSubmit(IPage<IfsInventoryQuantity> page, IfsInventoryQuantity ifsInventoryQuantity) {
-        return standardTreeMapper.selectIfsPage(page, QueryWrappers.queryWrappers(ifsInventoryQuantity));
+    public IPage<IfsInventoryQuantityVO> getWarehouseSubmit(IPage<IfsInventoryQuantity> page, IfsInventoryQuantity ifsInventoryQuantity) {
+        IPage<IfsInventoryQuantityVO> ifsInventoryQuantityIPage = standardTreeMapper.selectIfsPage(page, QueryWrappers.queryWrappers(ifsInventoryQuantity));
+        ifsInventoryQuantityIPage.getRecords().forEach(f->{
+            Long count = ifsInventoryQuantityMapper.selectCount(Wrappers.<IfsInventoryQuantity>lambdaQuery()
+                    .ne(IfsInventoryQuantity::getId,f.getId())
+                    .eq(IfsInventoryQuantity::getUpdateBatchNo, f.getUpdateBatchNo()));
+            f.setLotBatchNoHasRepeat(count>0);
+        });
+        return ifsInventoryQuantityIPage;
     }
 
     @Override
@@ -241,13 +249,32 @@
 
         threadPoolTaskExecutor.execute(() -> {
             IfsInventoryQuantity inventoryQuantity = ifsInventoryQuantityMapper.selectById(ifsInventoryQuantity.getId());
-            // 浼佷笟寰俊閫氱煡
-            String message = "";
-            message += "鏂板鎶ユ閫氱煡";
-            message += "\n鎵规鍙�: " + inventoryQuantity.getUpdateBatchNo();
-            message += "\n闆朵欢鎻忚堪: " + inventoryQuantity.getPartDesc();
-            message += "\n鎶佃揪鏁伴噺: " + inventoryQuantity.getQtyArrived().stripTrailingZeros().toPlainString() + inventoryQuantity.getBuyUnitMeas();
-            WxCpUtils.informWebHook(wechatProperty.getExaminingUrl(), message);
+            //鏌ヨ鐩稿悓鎵瑰彿鐨勫巻鍙瞚fs璁㈠崟
+            List<IfsInventoryQuantity> historyRecords = ifsInventoryQuantityMapper.selectList(Wrappers.<IfsInventoryQuantity>lambdaQuery()
+                    .ne(IfsInventoryQuantity::getId, ifsInventoryQuantity.getId())
+                    .eq(IfsInventoryQuantity::getIsInspect, 1)
+                    .eq(IfsInventoryQuantity::getUpdateBatchNo, ifsInventoryQuantity.getUpdateBatchNo())
+            );
+            if(CollUtil.isEmpty(historyRecords)){
+                // 浼佷笟寰俊閫氱煡
+                String message = "";
+                message += "鏂板鎶ユ閫氱煡";
+                message += "\n鎵规鍙�: " + inventoryQuantity.getUpdateBatchNo();
+                message += "\n闆朵欢鎻忚堪: " + inventoryQuantity.getPartDesc();
+                message += "\n鎶佃揪鏁伴噺: " + inventoryQuantity.getQtyArrived().stripTrailingZeros().toPlainString() + inventoryQuantity.getBuyUnitMeas();
+                WxCpUtils.informWebHook(wechatProperty.getExaminingUrl(), message);
+            }else{
+                //鑾峰彇鍘嗗彶鎶佃揪鏁伴噺
+                double sum = historyRecords.stream().map(IfsInventoryQuantity::getQtyArrived).mapToDouble(BigDecimal::doubleValue).sum();
+                String historyQuantity = sum + inventoryQuantity.getBuyUnitMeas();
+                String messageMarkdown = "";
+                messageMarkdown += "鏂板鎶ユ閫氱煡";
+                messageMarkdown += "\n鎵规鍙�: <font color='warning'>" + inventoryQuantity.getUpdateBatchNo() + "</font>";
+                messageMarkdown += "\n闆朵欢鎻忚堪: "+ inventoryQuantity.getPartDesc();
+                messageMarkdown += "\n鎶佃揪鏁伴噺: " + inventoryQuantity.getQtyArrived().stripTrailingZeros().toPlainString() + inventoryQuantity.getBuyUnitMeas();
+                messageMarkdown += "\n鍘嗗彶鎶佃揪鏁伴噺: " + historyQuantity;
+                WxCpUtils.informWebHook(wechatProperty.getExaminingUrl(), messageMarkdown,"markdown");
+            }
         });
         return 1;
     }
@@ -925,16 +952,17 @@
         }
         //鍕鹃�夊悓姝ュ埌MES锛屼繚瀛樿鍗曟媶鍒嗚褰�
         if(orderSplitDTO.getPushToMes()){
-            List<IfsSplitOrderRecord> collect = orderSplitDTO.getSplitDetailList().stream().map(m -> {
+            orderSplitDTO.getSplitDetailList().forEach(m -> {
                 IfsSplitOrderRecord record = new IfsSplitOrderRecord();
                 BeanUtil.copyProperties(m, record);
+                record.setSystemNo(splitOrderRecordNumberGenerator.generateNumberWithPrefix(IfsSplitOrderRecord.DIGIT, IfsSplitOrderRecord.PREFIX, IfsSplitOrderRecord::getSystemNo));
                 record.setOrderNo(ifsInventoryQuantity.getOrderNo());
                 record.setLineNo(ifsInventoryQuantity.getLineNo());
                 record.setReleaseNo(ifsInventoryQuantity.getReleaseNo());
                 record.setReceiptNo(ifsInventoryQuantity.getReceiptNo());
-                return record;
-            }).collect(Collectors.toList());
-            return ifsSplitOrderRecordService.saveBatch(collect);
+                ifsSplitOrderRecordService.save(record);
+            });
+            return true;
         }
         return false;
     }

--
Gitblit v1.9.3