Commit b886ad6f8f3081f4e47742a500bba9d19c3ad6d6

Authored by YunaiV
1 parent b69aad26

✨ feat(mes): 添加物料产品状态更新功能,优化物料分类选择器

yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
@@ -34,6 +34,7 @@ public interface ErrorCodeConstants { @@ -34,6 +34,7 @@ public interface ErrorCodeConstants {
34 // ========== MES 基础数据-物料批次属性配置(1-040-102-100) ========== 34 // ========== MES 基础数据-物料批次属性配置(1-040-102-100) ==========
35 ErrorCode MD_ITEM_BATCH_CONFIG_NOT_EXISTS = new ErrorCode(1_040_102_100, "物料批次属性配置不存在"); 35 ErrorCode MD_ITEM_BATCH_CONFIG_NOT_EXISTS = new ErrorCode(1_040_102_100, "物料批次属性配置不存在");
36 ErrorCode MD_ITEM_BATCH_CONFIG_AT_LEAST_ONE_FLAG = new ErrorCode(1_040_102_101, "批次管理已启用,至少需要配置一个批次属性"); 36 ErrorCode MD_ITEM_BATCH_CONFIG_AT_LEAST_ONE_FLAG = new ErrorCode(1_040_102_101, "批次管理已启用,至少需要配置一个批次属性");
  37 + ErrorCode MD_ITEM_PRODUCT_BOM_REQUIRED = new ErrorCode(1_040_102_102, "产品类物料启用前,必须配置至少一个 BOM 组成");
37 38
38 // ========== MES 仓库管理-批次管理(1-040-717-000) ========== 39 // ========== MES 仓库管理-批次管理(1-040-717-000) ==========
39 ErrorCode WM_BATCH_PRODUCE_DATE_REQUIRED = new ErrorCode(1_040_717_000, "批次配置要求生产日期不能为空"); 40 ErrorCode WM_BATCH_PRODUCE_DATE_REQUIRED = new ErrorCode(1_040_717_000, "批次配置要求生产日期不能为空");
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/item/MesMdItemServiceImpl.java
@@ -105,9 +105,18 @@ public class MesMdItemServiceImpl implements MesMdItemService { @@ -105,9 +105,18 @@ public class MesMdItemServiceImpl implements MesMdItemService {
105 public void updateItemStatus(Long id, Integer status) { 105 public void updateItemStatus(Long id, Integer status) {
106 // 校验存在 106 // 校验存在
107 MesMdItemDO item = validateItemExists(id); 107 MesMdItemDO item = validateItemExists(id);
108 - // 如果启用,校验批次属性配置  
109 - if (CommonStatusEnum.isEnable(status) && Boolean.TRUE.equals(item.getBatchFlag())) {  
110 - validateBatchConfigExists(id); 108 + if (CommonStatusEnum.isEnable(status)) {
  109 + // 如果启用了批次管理,校验批次属性配置
  110 + if (Boolean.TRUE.equals(item.getBatchFlag())) {
  111 + validateBatchConfigExists(id);
  112 + }
  113 + // 如果是产品类型,校验必须配置 BOM
  114 + MesMdItemTypeDO itemType = itemTypeService.getItemType(item.getItemTypeId());
  115 + if (itemType != null && "PRODUCT".equals(itemType.getItemOrProduct())) {
  116 + if (CollUtil.isEmpty(productBomService.getProductBomListByItemId(id))) {
  117 + throw exception(MD_ITEM_PRODUCT_BOM_REQUIRED);
  118 + }
  119 + }
111 } 120 }
112 121
113 // 更新状态 122 // 更新状态