Commit 979ecde4de1e55608d2e322a9d49a4b5ae9ed139

Authored by 易文鹏
1 parent 513d43f8

feat: 出库单单据自动合并逻辑调整,自动合并一条单据改为自动合并所有符合条件的单据

src/main/java/com/huaheng/pc/shipment/shipmentHeader/controller/ShipmentHeaderController.java
... ... @@ -588,7 +588,7 @@ public class ShipmentHeaderController extends BaseController {
588 588  
589 589  
590 590 /**
591   - * 自动合并一条单据
  591 + * 自动合并单据
592 592 */
593 593 @RequiresPermissions("shipment:bill:wave")
594 594 @Log(title = "出库-出库单", operating = "自动合并一个单据", action = BusinessType.OTHER)
... ...
src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderServiceImpl.java
... ... @@ -478,20 +478,20 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl<ShipmentHeaderMapper,
478 478 return AjaxResult.success("合并成功");
479 479 }
480 480  
481   - /* 自动合并一条单据 */
  481 + /* 自动合并单据 */
482 482 @Override
483 483 public AjaxResult autoBillMerge() {
484   - //出库单状态是新建的单据,根据通知单号、原仓库、车间都相同都的出库单进行合并。(只合并一次)
  484 + // 出库单状态是新建的单据,根据通知单号、原仓库、车间都相同的出库单进行合并
485 485 List<ShipmentHeader> list = shipmentHeaderService.list(new LambdaQueryWrapper<ShipmentHeader>()
486 486 .eq(ShipmentHeader::getDeleted, 0)
487 487 .eq(ShipmentHeader::getLastStatus, QuantityConstant.SHIPMENT_HEADER_BUILD)
488 488 .eq(ShipmentHeader::getFirstStatus, QuantityConstant.SHIPMENT_HEADER_BUILD));
  489 +
489 490 // 用于存储相同出库单的映射
490 491 Map<String, List<Integer>> matchingMap = new HashMap<>();
491 492  
492   - // 遍历出库单集合
  493 + // 遍历出库单集合,将符合条件的出库单加入到 matchingMap 中
493 494 for (ShipmentHeader currentHeader : list) {
494   - // 构建当前出库单的键
495 495 String key = currentHeader.getNoticeNo() + "-" + currentHeader.getWorkshop() + "-" + currentHeader.getWarehouse();
496 496  
497 497 // 如果映射中已存在该键,则将当前出库单的ID添加到对应的列表中
... ... @@ -503,11 +503,14 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl&lt;ShipmentHeaderMapper,
503 503 idList.add(currentHeader.getId());
504 504 matchingMap.put(key, idList);
505 505 }
  506 + }
506 507  
  508 + // 用于记录是否有单据被合并过
  509 + boolean mergedAny = false;
507 510  
508   - }
  511 + // 遍历符合合并条件的出库单列表,进行合并操作
509 512 for (List<Integer> idList : matchingMap.values()) {
510   - if (idList.size() > 1) {
  513 + if (idList.size() > 1) { // 如果存在多于一张出库单
511 514 StringBuilder idsBuilder = new StringBuilder();
512 515 for (Integer id : idList) {
513 516 if (idsBuilder.length() > 0) {
... ... @@ -520,10 +523,17 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl&lt;ShipmentHeaderMapper,
520 523 if (ajaxResult.hasErr()) {
521 524 return AjaxResult.error(ajaxResult.getMsg());
522 525 }
523   - return AjaxResult.success("成功合并" + idList.size() + "条单据");
  526 + mergedAny = true; // 设置标志,表明有单据被合并
524 527 }
525 528 }
526   - return AjaxResult.error("没有可以合并的单据");
  529 +
  530 + // 如果没有合并过单据,则返回相应的错误信息
  531 + if (!mergedAny) {
  532 + return AjaxResult.error("没有可以合并的单据");
  533 + }
  534 +
  535 + // 如果有合并过单据,则返回相应的成功信息
  536 + return AjaxResult.success("成功合并所有符合条件的单据");
527 537 }
528 538  
529 539 //出库单打印
... ...
src/main/resources/templates/shipment/shipmentHeader/shipmentHeader.html
... ... @@ -195,7 +195,7 @@
195 195 </a>
196 196 <a class="btn btn-outline btn-success btn-rounded" onclick="autoBillMerge()"
197 197 shiro:hasPermission="shipment:bill:wave">
198   - <i class="fa fa-plus"></i> 自动合并一条单据
  198 + <i class="fa fa-plus"></i> 自动合并单据
199 199 </a>
200 200 <a id="openAutoShipmentBtn" class="btn btn-outline btn-success btn-rounded"
201 201 onclick="autoShipment(1)"
... ...