From 979ecde4de1e55608d2e322a9d49a4b5ae9ed139 Mon Sep 17 00:00:00 2001
From: yiwenpeng <ywp303@163.com>
Date: Wed, 28 Feb 2024 15:02:24 +0800
Subject: [PATCH] feat: 出库单单据自动合并逻辑调整,自动合并一条单据改为自动合并所有符合条件的单据

---
 src/main/java/com/huaheng/pc/shipment/shipmentHeader/controller/ShipmentHeaderController.java |  2 +-
 src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderServiceImpl.java   | 26 ++++++++++++++++++--------
 src/main/resources/templates/shipment/shipmentHeader/shipmentHeader.html                      |  2 +-
 3 files changed, 20 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentHeader/controller/ShipmentHeaderController.java b/src/main/java/com/huaheng/pc/shipment/shipmentHeader/controller/ShipmentHeaderController.java
index c93cd48..a0ecf34 100644
--- a/src/main/java/com/huaheng/pc/shipment/shipmentHeader/controller/ShipmentHeaderController.java
+++ b/src/main/java/com/huaheng/pc/shipment/shipmentHeader/controller/ShipmentHeaderController.java
@@ -588,7 +588,7 @@ public class ShipmentHeaderController extends BaseController {
 
 
     /**
-     * 自动合并一条单据
+     * 自动合并单据
      */
     @RequiresPermissions("shipment:bill:wave")
     @Log(title = "出库-出库单", operating = "自动合并一个单据", action = BusinessType.OTHER)
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderServiceImpl.java
index cd3ddb1..5fa5d71 100644
--- a/src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderServiceImpl.java
+++ b/src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderServiceImpl.java
@@ -478,20 +478,20 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl<ShipmentHeaderMapper,
         return AjaxResult.success("合并成功");
     }
 
-    /* 自动合并一条单据 */
+    /* 自动合并单据 */
     @Override
     public AjaxResult autoBillMerge() {
-        //出库单状态是新建的单据,根据通知单号、原仓库、车间都相同都的出库单进行合并。(只合并一次)
+        // 出库单状态是新建的单据,根据通知单号、原仓库、车间都相同的出库单进行合并
         List<ShipmentHeader> list = shipmentHeaderService.list(new LambdaQueryWrapper<ShipmentHeader>()
                 .eq(ShipmentHeader::getDeleted, 0)
                 .eq(ShipmentHeader::getLastStatus, QuantityConstant.SHIPMENT_HEADER_BUILD)
                 .eq(ShipmentHeader::getFirstStatus, QuantityConstant.SHIPMENT_HEADER_BUILD));
+
         // 用于存储相同出库单的映射
         Map<String, List<Integer>> matchingMap = new HashMap<>();
 
-        // 遍历出库单集合
+        // 遍历出库单集合,将符合条件的出库单加入到 matchingMap 中
         for (ShipmentHeader currentHeader : list) {
-            // 构建当前出库单的键
             String key = currentHeader.getNoticeNo() + "-" + currentHeader.getWorkshop() + "-" + currentHeader.getWarehouse();
 
             // 如果映射中已存在该键,则将当前出库单的ID添加到对应的列表中
@@ -503,11 +503,14 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl<ShipmentHeaderMapper,
                 idList.add(currentHeader.getId());
                 matchingMap.put(key, idList);
             }
+        }
 
+        // 用于记录是否有单据被合并过
+        boolean mergedAny = false;
 
-        }
+        // 遍历符合合并条件的出库单列表,进行合并操作
         for (List<Integer> idList : matchingMap.values()) {
-            if (idList.size() > 1) {
+            if (idList.size() > 1) { // 如果存在多于一张出库单
                 StringBuilder idsBuilder = new StringBuilder();
                 for (Integer id : idList) {
                     if (idsBuilder.length() > 0) {
@@ -520,10 +523,17 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl<ShipmentHeaderMapper,
                 if (ajaxResult.hasErr()) {
                     return AjaxResult.error(ajaxResult.getMsg());
                 }
-                return AjaxResult.success("成功合并" + idList.size() + "条单据");
+                mergedAny = true; // 设置标志,表明有单据被合并
             }
         }
-        return AjaxResult.error("没有可以合并的单据");
+
+        // 如果没有合并过单据,则返回相应的错误信息
+        if (!mergedAny) {
+            return AjaxResult.error("没有可以合并的单据");
+        }
+
+        // 如果有合并过单据,则返回相应的成功信息
+        return AjaxResult.success("成功合并所有符合条件的单据");
     }
 
     //出库单打印
diff --git a/src/main/resources/templates/shipment/shipmentHeader/shipmentHeader.html b/src/main/resources/templates/shipment/shipmentHeader/shipmentHeader.html
index e449b35..6e07bf9 100644
--- a/src/main/resources/templates/shipment/shipmentHeader/shipmentHeader.html
+++ b/src/main/resources/templates/shipment/shipmentHeader/shipmentHeader.html
@@ -195,7 +195,7 @@
                         </a>
                         <a class="btn btn-outline btn-success btn-rounded" onclick="autoBillMerge()"
                            shiro:hasPermission="shipment:bill:wave">
-                            <i class="fa fa-plus"></i> 自动合并一条单据
+                            <i class="fa fa-plus"></i> 自动合并单据
                         </a>
                         <a id="openAutoShipmentBtn" class="btn btn-outline btn-success btn-rounded"
                            onclick="autoShipment(1)"
--
libgit2 0.22.2