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/pojo/IfsSplitOrderRecord.java                   |    4 ++++
 inspect-server/src/main/java/com/ruoyi/inspect/aspect/MoveLocationAfterPushMesStockAspect.java |   25 +++++++++++++++++++++----
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java   |   13 +++++++------
 3 files changed, 32 insertions(+), 10 deletions(-)

diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/aspect/MoveLocationAfterPushMesStockAspect.java b/inspect-server/src/main/java/com/ruoyi/inspect/aspect/MoveLocationAfterPushMesStockAspect.java
index d6ee1d0..8af553f 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/aspect/MoveLocationAfterPushMesStockAspect.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/aspect/MoveLocationAfterPushMesStockAspect.java
@@ -3,7 +3,9 @@
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.basic.mapper.IfsInventoryQuantityMapper;
 import com.ruoyi.basic.pojo.IfsInventoryQuantity;
+import com.ruoyi.common.numgen.NumberGenerator;
 import com.ruoyi.common.utils.api.MesApiUtils;
 import com.ruoyi.inspect.pojo.IfsSplitOrderRecord;
 import com.ruoyi.inspect.service.IfsSplitOrderRecordService;
@@ -16,10 +18,7 @@
 import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 
 /**
  * 鎵цifs绉诲簱鎿嶄綔鍚庯紝鍚屾鎺ㄩ�乵es瀹炴椂搴撳瓨
@@ -36,6 +35,12 @@
     private MesApiUtils mesApiUtils;
 
     private final static String LOCATION_NO = "WG-02-001";//mes澶栬喘鍚堟牸搴撲綅
+
+    @Autowired
+    private IfsInventoryQuantityMapper ifsInventoryQuantityMapper;
+
+    @Autowired
+    private NumberGenerator<IfsSplitOrderRecord> splitOrderRecordNumberGenerator;
 
     @AfterReturning(value = "execution(* com.ruoyi.inspect.service.impl.InsOrderServiceImpl.moveRawMaterial(..))")
     @Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
@@ -55,6 +60,18 @@
                         .last("limit 1")
                 );
                 if(Objects.nonNull(one)){
+                    //鏌ヨ瀵瑰簲璁板綍鏄惁鏈夌浉鍚屾壒鍙峰拰闆朵欢鐨勮鍗曡褰�
+                    List<IfsInventoryQuantity> quantityList = ifsInventoryQuantityMapper.selectList(Wrappers.<IfsInventoryQuantity>lambdaQuery()
+                            .eq(IfsInventoryQuantity::getUpdateBatchNo, one.getLotBatchNo())
+                            .eq(IfsInventoryQuantity::getPartNo, one.getPartNo())
+                            .ne(IfsInventoryQuantity::getId,ifsInventoryQuantity.getId())
+                    );
+                    //鑾峰彇宸叉楠岀殑鏁版嵁鏉℃暟
+                    long count = quantityList.stream().filter(f -> f.getIsFinish().equals(1)).count();
+                    if(!quantityList.isEmpty() && count>0){
+                        //鐢熸垚鏂扮殑绯荤粺缂栧彿
+                        one.setSystemNo(splitOrderRecordNumberGenerator.generateNumberWithPrefix(IfsSplitOrderRecord.DIGIT,IfsSplitOrderRecord.PREFIX,IfsSplitOrderRecord::getSystemNo));
+                    }
                     //鍚屾MES瀹炴椂搴撳瓨
                     Map<String, Object> requestMap = new HashMap<>();
                     requestMap.put("partNo", one.getPartNo()); // 闆朵欢缂栧彿
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/pojo/IfsSplitOrderRecord.java b/inspect-server/src/main/java/com/ruoyi/inspect/pojo/IfsSplitOrderRecord.java
index 3daf2ba..bc0ef3c 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/pojo/IfsSplitOrderRecord.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/pojo/IfsSplitOrderRecord.java
@@ -21,6 +21,10 @@
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 
+    public static final int DIGIT = 6;//绯荤粺缂栧彿鐢熸垚浣嶆暟
+
+    public static final String PREFIX ="WG";//绯荤粺缂栧彿鐢熸垚鍓嶇紑
+
     /**
      * 涓婚敭id
      */
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 f95862f..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
@@ -100,7 +100,7 @@
 
     private IfsSplitOrderRecordService ifsSplitOrderRecordService;
 
-
+    private final NumberGenerator<IfsSplitOrderRecord> splitOrderRecordNumberGenerator;
 
     @Override
     public Result selectStandardTreeListByPartNo(String partNo) {
@@ -112,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()));
                     }
                     // 鍒ゆ柇缁戝畾鐨勬槸鍚︽槸褰撳墠闆朵欢鍙�
@@ -952,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