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); } }