Commit e999815965c7963dfca9cd78d9a5e9bed795a860

Authored by YunaiV
1 parent 8ea0c2f0

✨ feat(mes): 添加物料批次管理校验逻辑

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 }
... ...