Commit 98f21288f0168d277e713fda595903acdc355dfb
1 parent
a46f2b1f
✨ feat(mes): 新增转移单行和明细的删除功能,优化删除逻辑
新增通过行ID和转移ID删除转移单行和明细的功能,简化了删除操作,提升代码可读性和维护性。同时,增加了转移数量超过库存数量的错误码,增强了系统的健壮性。
Showing
5 changed files
with
27 additions
and
11 deletions
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/transfer/MesWmTransferDetailMapper.java
| @@ -25,4 +25,12 @@ public interface MesWmTransferDetailMapper extends BaseMapperX<MesWmTransferDeta | @@ -25,4 +25,12 @@ public interface MesWmTransferDetailMapper extends BaseMapperX<MesWmTransferDeta | ||
| 25 | .orderByAsc(MesWmTransferDetailDO::getId)); | 25 | .orderByAsc(MesWmTransferDetailDO::getId)); |
| 26 | } | 26 | } |
| 27 | 27 | ||
| 28 | + default void deleteByLineId(Long lineId) { | ||
| 29 | + delete(MesWmTransferDetailDO::getLineId, lineId); | ||
| 30 | + } | ||
| 31 | + | ||
| 32 | + default void deleteByTransferId(Long transferId) { | ||
| 33 | + delete(MesWmTransferDetailDO::getTransferId, transferId); | ||
| 34 | + } | ||
| 35 | + | ||
| 28 | } | 36 | } |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/transfer/MesWmTransferLineMapper.java
| @@ -19,4 +19,8 @@ public interface MesWmTransferLineMapper extends BaseMapperX<MesWmTransferLineDO | @@ -19,4 +19,8 @@ public interface MesWmTransferLineMapper extends BaseMapperX<MesWmTransferLineDO | ||
| 19 | .orderByAsc(MesWmTransferLineDO::getId)); | 19 | .orderByAsc(MesWmTransferLineDO::getId)); |
| 20 | } | 20 | } |
| 21 | 21 | ||
| 22 | + default void deleteByTransferId(Long transferId) { | ||
| 23 | + delete(MesWmTransferLineDO::getTransferId, transferId); | ||
| 24 | + } | ||
| 25 | + | ||
| 22 | } | 26 | } |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
| @@ -451,6 +451,7 @@ public interface ErrorCodeConstants { | @@ -451,6 +451,7 @@ public interface ErrorCodeConstants { | ||
| 451 | ErrorCode WM_TRANSFER_NO_LINE = new ErrorCode(1_040_710_008, "转移单至少需要一条行数据"); | 451 | ErrorCode WM_TRANSFER_NO_LINE = new ErrorCode(1_040_710_008, "转移单至少需要一条行数据"); |
| 452 | ErrorCode WM_TRANSFER_DETAIL_QUANTITY_MISMATCH = new ErrorCode(1_040_710_009, "转移单行数量与明细数量不一致"); | 452 | ErrorCode WM_TRANSFER_DETAIL_QUANTITY_MISMATCH = new ErrorCode(1_040_710_009, "转移单行数量与明细数量不一致"); |
| 453 | ErrorCode WM_TRANSFER_LINE_NOT_EXISTS = new ErrorCode(1_040_710_100, "转移单行不存在"); | 453 | ErrorCode WM_TRANSFER_LINE_NOT_EXISTS = new ErrorCode(1_040_710_100, "转移单行不存在"); |
| 454 | + ErrorCode WM_TRANSFER_LINE_QUANTITY_EXCEED_STOCK = new ErrorCode(1_040_710_101, "转移数量不能超过库存数量"); | ||
| 454 | ErrorCode WM_TRANSFER_DETAIL_NOT_EXISTS = new ErrorCode(1_040_710_200, "调拨明细不存在"); | 455 | ErrorCode WM_TRANSFER_DETAIL_NOT_EXISTS = new ErrorCode(1_040_710_200, "调拨明细不存在"); |
| 455 | ErrorCode WM_TRANSFER_DETAIL_QUANTITY_EXCEED = new ErrorCode(1_040_710_201, "调拨明细总数量不能超过调拨单行数量"); | 456 | ErrorCode WM_TRANSFER_DETAIL_QUANTITY_EXCEED = new ErrorCode(1_040_710_201, "调拨明细总数量不能超过调拨单行数量"); |
| 456 | ErrorCode WM_TRANSFER_DETAIL_MIXED_GOODS = new ErrorCode(1_040_710_202, "同一目标仓位下已存在其他物料的明细,不允许混货"); | 457 | ErrorCode WM_TRANSFER_DETAIL_MIXED_GOODS = new ErrorCode(1_040_710_202, "同一目标仓位下已存在其他物料的明细,不允许混货"); |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transfer/MesWmTransferDetailServiceImpl.java
| @@ -95,15 +95,12 @@ public class MesWmTransferDetailServiceImpl implements MesWmTransferDetailServic | @@ -95,15 +95,12 @@ public class MesWmTransferDetailServiceImpl implements MesWmTransferDetailServic | ||
| 95 | 95 | ||
| 96 | @Override | 96 | @Override |
| 97 | public void deleteTransferDetailByTransferId(Long transferId) { | 97 | public void deleteTransferDetailByTransferId(Long transferId) { |
| 98 | - getTransferDetailListByTransferId(transferId) | ||
| 99 | - .forEach(detail -> transferDetailMapper.deleteById(detail.getId())); | 98 | + transferDetailMapper.deleteByTransferId(transferId); |
| 100 | } | 99 | } |
| 101 | 100 | ||
| 102 | @Override | 101 | @Override |
| 103 | public void deleteTransferDetailByLineId(Long lineId) { | 102 | public void deleteTransferDetailByLineId(Long lineId) { |
| 104 | - // TODO @AI:不要 get;直接去 deletebylineId; | ||
| 105 | - getTransferDetailListByLineId(lineId) | ||
| 106 | - .forEach(detail -> transferDetailMapper.deleteById(detail.getId())); | 103 | + transferDetailMapper.deleteByLineId(lineId); |
| 107 | } | 104 | } |
| 108 | 105 | ||
| 109 | private void validateTransferDetailExists(Long id) { | 106 | private void validateTransferDetailExists(Long id) { |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transfer/MesWmTransferLineServiceImpl.java
| @@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | @@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | ||
| 4 | import cn.iocoder.yudao.module.mes.controller.admin.wm.transfer.vo.line.MesWmTransferLineSaveReqVO; | 4 | import cn.iocoder.yudao.module.mes.controller.admin.wm.transfer.vo.line.MesWmTransferLineSaveReqVO; |
| 5 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.transfer.MesWmTransferLineDO; | 5 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.transfer.MesWmTransferLineDO; |
| 6 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.transfer.MesWmTransferLineMapper; | 6 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.transfer.MesWmTransferLineMapper; |
| 7 | +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialstock.MesWmMaterialStockDO; | ||
| 7 | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; | 8 | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| 8 | import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService; | 9 | import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService; |
| 9 | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; | 10 | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| @@ -18,6 +19,7 @@ import java.util.List; | @@ -18,6 +19,7 @@ import java.util.List; | ||
| 18 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 19 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 19 | import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_MATERIAL_STOCK_NOT_EXISTS; | 20 | import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_MATERIAL_STOCK_NOT_EXISTS; |
| 20 | import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_TRANSFER_LINE_NOT_EXISTS; | 21 | import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_TRANSFER_LINE_NOT_EXISTS; |
| 22 | +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_TRANSFER_LINE_QUANTITY_EXCEED_STOCK; | ||
| 21 | 23 | ||
| 22 | /** | 24 | /** |
| 23 | * MES 转移单行 Service 实现类 | 25 | * MES 转移单行 Service 实现类 |
| @@ -91,8 +93,7 @@ public class MesWmTransferLineServiceImpl implements MesWmTransferLineService { | @@ -91,8 +93,7 @@ public class MesWmTransferLineServiceImpl implements MesWmTransferLineService { | ||
| 91 | 93 | ||
| 92 | @Override | 94 | @Override |
| 93 | public void deleteTransferLineByTransferId(Long transferId) { | 95 | public void deleteTransferLineByTransferId(Long transferId) { |
| 94 | - getTransferLineListByTransferId(transferId) | ||
| 95 | - .forEach(line -> transferLineMapper.deleteById(line.getId())); | 96 | + transferLineMapper.deleteByTransferId(transferId); |
| 96 | } | 97 | } |
| 97 | 98 | ||
| 98 | @Override | 99 | @Override |
| @@ -112,10 +113,15 @@ public class MesWmTransferLineServiceImpl implements MesWmTransferLineService { | @@ -112,10 +113,15 @@ public class MesWmTransferLineServiceImpl implements MesWmTransferLineService { | ||
| 112 | // 校验来源仓库、库区、库位的关联关系 | 113 | // 校验来源仓库、库区、库位的关联关系 |
| 113 | warehouseAreaService.validateWarehouseAreaExists(reqVO.getFromWarehouseId(), | 114 | warehouseAreaService.validateWarehouseAreaExists(reqVO.getFromWarehouseId(), |
| 114 | reqVO.getFromLocationId(), reqVO.getFromAreaId()); | 115 | reqVO.getFromLocationId(), reqVO.getFromAreaId()); |
| 115 | - // 校验库存记录存在 | ||
| 116 | - if (reqVO.getMaterialStockId() != null | ||
| 117 | - && materialStockService.getMaterialStock(reqVO.getMaterialStockId()) == null) { | ||
| 118 | - throw exception(WM_MATERIAL_STOCK_NOT_EXISTS); | 116 | + // 校验库存记录存在,且转移数量不超过库存数量 |
| 117 | + if (reqVO.getMaterialStockId() != null) { | ||
| 118 | + MesWmMaterialStockDO stock = materialStockService.getMaterialStock(reqVO.getMaterialStockId()); | ||
| 119 | + if (stock == null) { | ||
| 120 | + throw exception(WM_MATERIAL_STOCK_NOT_EXISTS); | ||
| 121 | + } | ||
| 122 | + if (stock.getQuantity() != null && reqVO.getQuantity().compareTo(stock.getQuantity()) > 0) { | ||
| 123 | + throw exception(WM_TRANSFER_LINE_QUANTITY_EXCEED_STOCK); | ||
| 124 | + } | ||
| 119 | } | 125 | } |
| 120 | } | 126 | } |
| 121 | 127 |