From bf026611e3334fcbdc0c0eeacefc26dac80a19c7 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 29 Mar 2026 16:46:55 +0800 Subject: [PATCH] ✨ feat(mes): 增强删除入库明细和行逻辑校验 --- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptDetailServiceImpl.java | 7 +++++-- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptLineServiceImpl.java | 10 ++++++---- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java | 5 ++++- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptDetailServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptDetailServiceImpl.java index bd66b53..1d187f5 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptDetailServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptDetailServiceImpl.java @@ -85,8 +85,11 @@ public class MesWmItemReceiptDetailServiceImpl implements MesWmItemReceiptDetail @Override public void deleteItemReceiptDetail(Long id) { - // 校验存在 - validateItemReceiptDetailExists(id); + // 1.1 校验存在 + MesWmItemReceiptDetailDO detail = validateItemReceiptDetailExists(id); + // 1.2 校验父单据存在且为可编辑状态 + itemReceiptService.validateItemReceiptEditable(detail.getReceiptId()); + // 删除 itemReceiptDetailMapper.deleteById(id); } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptLineServiceImpl.java index a32dabe..81b5674 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptLineServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptLineServiceImpl.java @@ -98,12 +98,14 @@ public class MesWmItemReceiptLineServiceImpl implements MesWmItemReceiptLineServ @Override @Transactional(rollbackFor = Exception.class) public void deleteItemReceiptLine(Long id) { - // 校验存在 - validateItemReceiptLineExists(id); + // 1.1 校验存在 + MesWmItemReceiptLineDO line = validateItemReceiptLineExists(id); + // 1.2 校验父单据存在且为可编辑状态 + itemReceiptService.validateItemReceiptEditable(line.getReceiptId()); - // 级联删除明细 + // 2.1 级联删除明细 itemReceiptDetailService.deleteItemReceiptDetailByLineId(id); - // 删除 + // 2.2 删除 itemReceiptLineMapper.deleteById(id); } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java index 04062ff..6690cb7 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java @@ -147,11 +147,14 @@ public class MesWmItemReceiptServiceImpl implements MesWmItemReceiptService { } // 校验每行明细数量之和是否等于行入库数量 List lines = itemReceiptLineService.getItemReceiptLineListByReceiptId(id); + if (CollUtil.isEmpty(lines)) { + throw exception(WM_ITEM_RECEIPT_NO_LINE); + } for (MesWmItemReceiptLineDO line : lines) { List details = itemReceiptDetailService.getItemReceiptDetailListByLineId(line.getId()); BigDecimal totalDetailQty = CollectionUtils.getSumValue(details, MesWmItemReceiptDetailDO::getQuantity, BigDecimal::add, BigDecimal.ZERO); - if (line.getReceivedQuantity() != null && totalDetailQty.compareTo(line.getReceivedQuantity()) != 0) { + if (line.getReceivedQuantity() == null || totalDetailQty.compareTo(line.getReceivedQuantity()) != 0) { throw exception(WM_ITEM_RECEIPT_DETAIL_QUANTITY_MISMATCH); } } -- libgit2 0.21.4