From df64c34d92cbe8501bbbfe837bc491a47452c0b6 Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期一, 09 六月 2025 10:58:19 +0800
Subject: [PATCH] feat(eims): 新增保养工单批量修改功能并优化相关领域对象

---
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareInoutServiceImpl.java |   81 +++++++++++++++++++++-------------------
 1 files changed, 42 insertions(+), 39 deletions(-)

diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareInoutServiceImpl.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareInoutServiceImpl.java
index 334eb44..28f0446 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareInoutServiceImpl.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareInoutServiceImpl.java
@@ -136,58 +136,61 @@
         if (flag) {
             bo.setId(add.getId());
         }
-        //鍏ュ簱锛嬪簱瀛�  鍑哄簱-搴撳瓨  锛堥粯璁ゅ叆搴擄級
-        int  OperationType;
-
-         //鍑哄簱
-         if(bo.getType().equals(DictConstants.SPARE_INOUT_TYPE_DETAIL.CK)){
-            OperationType =  -1;
-        } else {
-             OperationType = 1;
-         }
+        // 鍏ュ簱锛嬪簱瀛�  鍑哄簱-搴撳瓨  锛堥粯璁ゅ叆搴擄級
+        int OperationType = bo.getType().equals(DictConstants.SPARE_INOUT_TYPE_DETAIL.CK) ? -1 : 1;
 
         List<EimsSpareBo> spareList = Optional.ofNullable(bo.getSpareList()).orElse(new ArrayList<>());
-        // 鎻掑叆鍑哄簱鏄庣粏
-        List<EimsSpareInoutdt> dtList = spareList.stream()
-            .map(eimsSpareBo -> {
-                EimsSpareInoutdt dt = new EimsSpareInoutdt();
-                dt.setInoutId(add.getId());
-                dt.setSpareId(eimsSpareBo.getId());
-                dt.setBeforeStock(eimsSpareBo.getActualStock());
-                // 娉ㄦ剰鍏ュ簱鍑哄簱
-                dt.setActualStock(eimsSpareBo.getActualStock() + (eimsSpareBo.getQuantity() * OperationType));
-                dt.setQuantity(eimsSpareBo.getQuantity());
 
-                // 璁剧疆鍗曚环鍜岄噾棰�
-                Optional.ofNullable(eimsSpareBo.getReferPrice()).ifPresent(referPrice -> {
-                    dt.setUnitPrice(referPrice);
-                    dt.setAmount(referPrice.multiply(BigDecimal.valueOf(eimsSpareBo.getQuantity())));
-                });
+        // 鍚堝苟涓ゆ寰幆涓轰竴娆″惊鐜�
+        List<EimsSpareInoutdt> dtList = new ArrayList<>();
+        List<EimsSpare> updateSpareList = new ArrayList<>();
 
-                return dt;
-            })
-            .toList();
+        for (EimsSpareBo eimsSpareBo : spareList) {
+            EimsSpare spare = spareMapper.selectById(eimsSpareBo.getId());
+            if (spare == null) {
+                spare = new EimsSpare();
+                spare.setName(eimsSpareBo.getName());
+                spare.setCode(eimsSpareBo.getCode());
+                spare.setActualStock(100L);
+                spareMapper.insert(spare);
+                eimsSpareBo.setId(spare.getId());
+            }
+
+            // 鎻掑叆鍑哄簱鏄庣粏
+            EimsSpareInoutdt dt = new EimsSpareInoutdt();
+            dt.setInoutId(add.getId());
+            dt.setSpareId(spare.getId());
+            dt.setBeforeStock(spare.getActualStock());
+            dt.setActualStock(spare.getActualStock() + (eimsSpareBo.getQuantity() * OperationType));
+            dt.setQuantity(eimsSpareBo.getQuantity());
+
+            // 璁剧疆鍗曚环鍜岄噾棰�
+            Optional.ofNullable(spare.getReferPrice()).ifPresent(referPrice -> {
+                dt.setUnitPrice(referPrice);
+                dt.setAmount(referPrice.multiply(BigDecimal.valueOf(eimsSpareBo.getQuantity())));
+            });
+            dtList.add(dt);
+
+            // 鏇存柊澶囦欢搴撳瓨
+            EimsSpare updatedSpare = new EimsSpare();
+            updatedSpare.setId(spare.getId());
+            updatedSpare.setActualStock(spare.getActualStock() + (eimsSpareBo.getQuantity() * OperationType));
+            Optional.ofNullable(spare.getReferPrice()).ifPresent(referPrice -> {
+                updatedSpare.setStockAmount(referPrice.multiply(BigDecimal.valueOf(updatedSpare.getActualStock())));
+            });
+            updateSpareList.add(updatedSpare);
+        }
 
         // 鎵归噺鎻掑叆鏁版嵁
         if (!dtList.isEmpty()) {
             inoutdtMapper.insertBatch(dtList);
         }
 
-        // 鏇存柊澶囦欢鐨勫簱瀛�
-        List<EimsSpare> updateSpareList = spareList.stream().map(spareBo -> {
-            EimsSpare spare = new EimsSpare();
-            spare.setId(spareBo.getId());
-            spare.setActualStock(spareBo.getActualStock() + (spareBo.getQuantity() * OperationType));
-            // 璁剧疆鍗曚环鍜岄噾棰�
-            Optional.ofNullable(spareBo.getReferPrice()).ifPresent(referPrice -> {
-                spare.setStockAmount(referPrice.multiply(BigDecimal.valueOf(spare.getActualStock())));
-            });
-            return spare;
-        }).toList();
-
+        // 鎵归噺鏇存柊澶囦欢搴撳瓨
         if (!updateSpareList.isEmpty()) {
             spareMapper.updateBatchById(updateSpareList);
         }
+
         return flag;
     }
 

--
Gitblit v1.9.3