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,8 +85,11 @@ public class MesWmItemReceiptDetailServiceImpl implements MesWmItemReceiptDetail | ||
| 85 | 85 | ||
| 86 | @Override | 86 | @Override |
| 87 | public void deleteItemReceiptDetail(Long id) { | 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 | itemReceiptDetailMapper.deleteById(id); | 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,12 +98,14 @@ public class MesWmItemReceiptLineServiceImpl implements MesWmItemReceiptLineServ | ||
| 98 | @Override | 98 | @Override |
| 99 | @Transactional(rollbackFor = Exception.class) | 99 | @Transactional(rollbackFor = Exception.class) |
| 100 | public void deleteItemReceiptLine(Long id) { | 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 | itemReceiptDetailService.deleteItemReceiptDetailByLineId(id); | 107 | itemReceiptDetailService.deleteItemReceiptDetailByLineId(id); |
| 106 | - // 删除 | 108 | + // 2.2 删除 |
| 107 | itemReceiptLineMapper.deleteById(id); | 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,11 +147,14 @@ public class MesWmItemReceiptServiceImpl implements MesWmItemReceiptService { | ||
| 147 | } | 147 | } |
| 148 | // 校验每行明细数量之和是否等于行入库数量 | 148 | // 校验每行明细数量之和是否等于行入库数量 |
| 149 | List<MesWmItemReceiptLineDO> lines = itemReceiptLineService.getItemReceiptLineListByReceiptId(id); | 149 | List<MesWmItemReceiptLineDO> lines = itemReceiptLineService.getItemReceiptLineListByReceiptId(id); |
| 150 | + if (CollUtil.isEmpty(lines)) { | ||
| 151 | + throw exception(WM_ITEM_RECEIPT_NO_LINE); | ||
| 152 | + } | ||
| 150 | for (MesWmItemReceiptLineDO line : lines) { | 153 | for (MesWmItemReceiptLineDO line : lines) { |
| 151 | List<MesWmItemReceiptDetailDO> details = itemReceiptDetailService.getItemReceiptDetailListByLineId(line.getId()); | 154 | List<MesWmItemReceiptDetailDO> details = itemReceiptDetailService.getItemReceiptDetailListByLineId(line.getId()); |
| 152 | BigDecimal totalDetailQty = CollectionUtils.getSumValue(details, | 155 | BigDecimal totalDetailQty = CollectionUtils.getSumValue(details, |
| 153 | MesWmItemReceiptDetailDO::getQuantity, BigDecimal::add, BigDecimal.ZERO); | 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 | throw exception(WM_ITEM_RECEIPT_DETAIL_QUANTITY_MISMATCH); | 158 | throw exception(WM_ITEM_RECEIPT_DETAIL_QUANTITY_MISMATCH); |
| 156 | } | 159 | } |
| 157 | } | 160 | } |