Commit 979ecde4de1e55608d2e322a9d49a4b5ae9ed139
1 parent
513d43f8
feat: 出库单单据自动合并逻辑调整,自动合并一条单据改为自动合并所有符合条件的单据
Showing
3 changed files
with
20 additions
and
10 deletions
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<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<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)" |
... | ... |