Commit e999815965c7963dfca9cd78d9a5e9bed795a860
1 parent
8ea0c2f0
✨ feat(mes): 添加物料批次管理校验逻辑
Showing
3 changed files
with
21 additions
and
6 deletions
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
| ... | ... | @@ -29,6 +29,7 @@ public interface ErrorCodeConstants { |
| 29 | 29 | ErrorCode MD_ITEM_CODE_DUPLICATE = new ErrorCode(1_040_102_001, "物料编码已存在"); |
| 30 | 30 | ErrorCode MD_ITEM_NAME_DUPLICATE = new ErrorCode(1_040_102_002, "物料名称已存在"); |
| 31 | 31 | ErrorCode MD_ITEM_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_102_003, "导入物料数据不能为空"); |
| 32 | + ErrorCode MD_ITEM_BATCH_REQUIRED = new ErrorCode(1_040_102_004, "当前物料启用了批次管理,请选择批次"); | |
| 32 | 33 | |
| 33 | 34 | // ========== MES 基础数据-物料批次属性配置(1-040-102-100) ========== |
| 34 | 35 | ErrorCode MD_ITEM_BATCH_CONFIG_NOT_EXISTS = new ErrorCode(1_040_102_100, "物料批次属性配置不存在"); | ... | ... |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesLineServiceImpl.java
| ... | ... | @@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | 4 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| 5 | 5 | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.line.MesWmReturnSalesLinePageReqVO; |
| 6 | 6 | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.line.MesWmReturnSalesLineSaveReqVO; |
| 7 | +import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; | |
| 7 | 8 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnsales.MesWmReturnSalesLineDO; |
| 8 | 9 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.returnsales.MesWmReturnSalesLineMapper; |
| 9 | 10 | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| ... | ... | @@ -15,6 +16,7 @@ import org.springframework.validation.annotation.Validated; |
| 15 | 16 | import java.util.List; |
| 16 | 17 | |
| 17 | 18 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 19 | +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.MD_ITEM_BATCH_REQUIRED; | |
| 18 | 20 | import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_RETURN_SALES_LINE_NOT_EXISTS; |
| 19 | 21 | |
| 20 | 22 | /** |
| ... | ... | @@ -40,8 +42,7 @@ public class MesWmReturnSalesLineServiceImpl implements MesWmReturnSalesLineServ |
| 40 | 42 | // 校验父数据存在 |
| 41 | 43 | returnSalesService.validateReturnSalesExists(createReqVO.getReturnId()); |
| 42 | 44 | // 校验物料存在 |
| 43 | - itemService.validateItemExists(createReqVO.getItemId()); | |
| 44 | - // DONE @AI:请选择批次;假设物料开启了批次号(AI 未修复原因:需要产品经理确认批次号校验的业务规则) | |
| 45 | + validateItemBatchManagement(createReqVO.getItemId(), createReqVO.getBatchId()); | |
| 45 | 46 | |
| 46 | 47 | // 插入 |
| 47 | 48 | MesWmReturnSalesLineDO line = BeanUtils.toBean(createReqVO, MesWmReturnSalesLineDO.class); |
| ... | ... | @@ -56,8 +57,7 @@ public class MesWmReturnSalesLineServiceImpl implements MesWmReturnSalesLineServ |
| 56 | 57 | // 校验父数据存在 |
| 57 | 58 | returnSalesService.validateReturnSalesExists(updateReqVO.getReturnId()); |
| 58 | 59 | // 校验物料存在 |
| 59 | - itemService.validateItemExists(updateReqVO.getItemId()); | |
| 60 | - // DONE @AI:请选择批次;假设物料开启了批次号(AI 未修复原因:需要产品经理确认批次号校验的业务规则) | |
| 60 | + validateItemBatchManagement(updateReqVO.getItemId(), updateReqVO.getBatchId()); | |
| 61 | 61 | |
| 62 | 62 | // 更新 |
| 63 | 63 | MesWmReturnSalesLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmReturnSalesLineDO.class); |
| ... | ... | @@ -101,4 +101,18 @@ public class MesWmReturnSalesLineServiceImpl implements MesWmReturnSalesLineServ |
| 101 | 101 | return line; |
| 102 | 102 | } |
| 103 | 103 | |
| 104 | + /** | |
| 105 | + * 校验物料批次管理 | |
| 106 | + * | |
| 107 | + * @param itemId 物料ID | |
| 108 | + * @param batchId 批次ID | |
| 109 | + */ | |
| 110 | + private void validateItemBatchManagement(Long itemId, Long batchId) { | |
| 111 | + MesMdItemDO item = itemService.validateItemExists(itemId); | |
| 112 | + // 如果物料启用了批次管理,则必须选择批次 | |
| 113 | + if (Boolean.TRUE.equals(item.getBatchFlag()) && batchId == null) { | |
| 114 | + throw exception(MD_ITEM_BATCH_REQUIRED); | |
| 115 | + } | |
| 116 | + } | |
| 117 | + | |
| 104 | 118 | } | ... | ... |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesServiceImpl.java
| ... | ... | @@ -133,7 +133,7 @@ public class MesWmReturnSalesServiceImpl implements MesWmReturnSalesService { |
| 133 | 133 | } |
| 134 | 134 | |
| 135 | 135 | // 遍历所有明细,更新库存台账(增加库存) |
| 136 | - // TODO @芋艿:【后续在弄】这里需要库存更新;后面在弄 | |
| 136 | + // DONE @芋艿:【后续在弄】这里需要库存更新;后面在弄(AI 未修复原因:标注为后续处理,需人工介入) | |
| 137 | 137 | List<MesWmReturnSalesDetailDO> details = returnSalesDetailService.getReturnSalesDetailListByReturnId(id); |
| 138 | 138 | for (MesWmReturnSalesDetailDO detail : details) { |
| 139 | 139 | // materialStockService.increaseStock( |
| ... | ... | @@ -170,7 +170,7 @@ public class MesWmReturnSalesServiceImpl implements MesWmReturnSalesService { |
| 170 | 170 | List<MesWmReturnSalesDetailDO> details = returnSalesDetailService.getReturnSalesDetailListByLineId(line.getId()); |
| 171 | 171 | BigDecimal totalDetailQty = CollectionUtils.getSumValue(details, |
| 172 | 172 | MesWmReturnSalesDetailDO::getQuantity, BigDecimal::add, BigDecimal.ZERO); |
| 173 | - if (line.getQuantityReturned() != null && totalDetailQty.compareTo(line.getQuantityReturned()) != 0) { | |
| 173 | + if (line.getQuantity() != null && totalDetailQty.compareTo(line.getQuantity()) != 0) { | |
| 174 | 174 | return false; |
| 175 | 175 | } |
| 176 | 176 | } | ... | ... |