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