Commit bf026611e3334fcbdc0c0eeacefc26dac80a19c7
1 parent
807db914
✨ feat(mes): 增强删除入库明细和行逻辑校验
Showing
3 changed files
with
15 additions
and
7 deletions
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 |
| 85 | 85 | |
| 86 | 86 | @Override |
| 87 | 87 | public void deleteItemReceiptDetail(Long id) { |
| 88 | - // 校验存在 | |
| 89 | - validateItemReceiptDetailExists(id); | |
| 88 | + // 1.1 校验存在 | |
| 89 | + MesWmItemReceiptDetailDO detail = validateItemReceiptDetailExists(id); | |
| 90 | + // 1.2 校验父单据存在且为可编辑状态 | |
| 91 | + itemReceiptService.validateItemReceiptEditable(detail.getReceiptId()); | |
| 92 | + | |
| 90 | 93 | // 删除 |
| 91 | 94 | itemReceiptDetailMapper.deleteById(id); |
| 92 | 95 | } | ... | ... |
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 |
| 98 | 98 | @Override |
| 99 | 99 | @Transactional(rollbackFor = Exception.class) |
| 100 | 100 | public void deleteItemReceiptLine(Long id) { |
| 101 | - // 校验存在 | |
| 102 | - validateItemReceiptLineExists(id); | |
| 101 | + // 1.1 校验存在 | |
| 102 | + MesWmItemReceiptLineDO line = validateItemReceiptLineExists(id); | |
| 103 | + // 1.2 校验父单据存在且为可编辑状态 | |
| 104 | + itemReceiptService.validateItemReceiptEditable(line.getReceiptId()); | |
| 103 | 105 | |
| 104 | - // 级联删除明细 | |
| 106 | + // 2.1 级联删除明细 | |
| 105 | 107 | itemReceiptDetailService.deleteItemReceiptDetailByLineId(id); |
| 106 | - // 删除 | |
| 108 | + // 2.2 删除 | |
| 107 | 109 | itemReceiptLineMapper.deleteById(id); |
| 108 | 110 | } |
| 109 | 111 | ... | ... |
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 { |
| 147 | 147 | } |
| 148 | 148 | // 校验每行明细数量之和是否等于行入库数量 |
| 149 | 149 | List<MesWmItemReceiptLineDO> lines = itemReceiptLineService.getItemReceiptLineListByReceiptId(id); |
| 150 | + if (CollUtil.isEmpty(lines)) { | |
| 151 | + throw exception(WM_ITEM_RECEIPT_NO_LINE); | |
| 152 | + } | |
| 150 | 153 | for (MesWmItemReceiptLineDO line : lines) { |
| 151 | 154 | List<MesWmItemReceiptDetailDO> details = itemReceiptDetailService.getItemReceiptDetailListByLineId(line.getId()); |
| 152 | 155 | BigDecimal totalDetailQty = CollectionUtils.getSumValue(details, |
| 153 | 156 | MesWmItemReceiptDetailDO::getQuantity, BigDecimal::add, BigDecimal.ZERO); |
| 154 | - if (line.getReceivedQuantity() != null && totalDetailQty.compareTo(line.getReceivedQuantity()) != 0) { | |
| 157 | + if (line.getReceivedQuantity() == null || totalDetailQty.compareTo(line.getReceivedQuantity()) != 0) { | |
| 155 | 158 | throw exception(WM_ITEM_RECEIPT_DETAIL_QUANTITY_MISMATCH); |
| 156 | 159 | } |
| 157 | 160 | } | ... | ... |