From d1d19393351fbd7ce980f754aa6a4712d74f143f Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 15 Mar 2026 10:39:07 +0800 Subject: [PATCH] ✨ feat(mes): 移除单位编号字段,优化工单 BOM 相关逻辑 --- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/MesProWorkorderBomController.java | 8 ++++---- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/vo/bom/MesProWorkorderBomSaveReqVO.java | 6 +----- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/workorder/MesProWorkorderBomDO.java | 7 ------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/DictTypeConstants.java | 1 + yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkorderBomServiceImpl.java | 3 +-- 5 files changed, 7 insertions(+), 18 deletions(-) diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/MesProWorkorderBomController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/MesProWorkorderBomController.java index 29490db..464d54d 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/MesProWorkorderBomController.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/MesProWorkorderBomController.java @@ -113,7 +113,7 @@ public class MesProWorkOrderBomController { // 2. 逐层展开,得到叶子物料 itemId → quantity Map leafItems = buildWorkOrderItems(bomList); - if (leafItems.isEmpty()) { + if (CollUtil.isEmpty(leafItems)) { return success(Collections.emptyList()); } @@ -147,7 +147,7 @@ public class MesProWorkOrderBomController { Map itemMap = itemService.getItemMap( convertSet(list, MesProWorkOrderBomDO::getItemId)); Map unitMeasureMap = unitMeasureService.getUnitMeasureMap( - convertSet(list, MesProWorkOrderBomDO::getUnitMeasureId)); + convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); Map itemTypeMap = itemTypeService.getItemTypeMap( convertSet(itemMap.values(), MesMdItemDO::getItemTypeId)); // 2. 拼接 VO @@ -157,9 +157,9 @@ public class MesProWorkOrderBomController { .setItemSpec(item.getSpecification()); MapUtils.findAndThen(itemTypeMap, item.getItemTypeId(), itemType -> vo.setItemOrProduct(itemType.getItemOrProduct())); + MapUtils.findAndThen(unitMeasureMap, item.getUnitMeasureId(), + unitMeasure -> vo.setUnitMeasureName(unitMeasure.getName())); }); - MapUtils.findAndThen(unitMeasureMap, vo.getUnitMeasureId(), - unitMeasure -> vo.setUnitMeasureName(unitMeasure.getName())); }); } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/vo/bom/MesProWorkorderBomSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/vo/bom/MesProWorkorderBomSaveReqVO.java index eca4414..4194be2 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/vo/bom/MesProWorkorderBomSaveReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/vo/bom/MesProWorkorderBomSaveReqVO.java @@ -21,10 +21,6 @@ public class MesProWorkOrderBomSaveReqVO { @NotNull(message = "BOM 物料不能为空") private Long itemId; - @Schema(description = "单位编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "300") - @NotNull(message = "单位不能为空") - private Long unitMeasureId; - @Schema(description = "预计使用量", requiredMode = Schema.RequiredMode.REQUIRED, example = "10.00") @NotNull(message = "预计使用量不能为空") private BigDecimal quantity; @@ -32,4 +28,4 @@ public class MesProWorkOrderBomSaveReqVO { @Schema(description = "备注", example = "备注") private String remark; - } +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/workorder/MesProWorkorderBomDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/workorder/MesProWorkorderBomDO.java index 0dfecd0..db63e65 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/workorder/MesProWorkorderBomDO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/workorder/MesProWorkorderBomDO.java @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -43,12 +42,6 @@ public class MesProWorkOrderBomDO extends BaseDO { */ private Long itemId; /** - * 单位编号 - * - * 关联 {@link MesMdUnitMeasureDO#getId()} - */ - private Long unitMeasureId; - /** * 预计使用量 */ private BigDecimal quantity; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/DictTypeConstants.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/DictTypeConstants.java index 067cb75..dd3b9d8 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/DictTypeConstants.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/DictTypeConstants.java @@ -7,6 +7,7 @@ package cn.iocoder.yudao.module.mes.enums; */ public interface DictTypeConstants { + String MES_MD_ITEM_OR_PRODUCT = "mes_md_item_or_product"; // MES 物料产品标识 String MES_CLIENT_TYPE = "mes_client_type"; // MES 客户类型 String MES_VENDOR_LEVEL = "mes_vendor_level"; // MES 供应商级别 String MES_CAL_HOLIDAY_TYPE = "mes_cal_holiday_type"; // MES 假期类型 diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkorderBomServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkorderBomServiceImpl.java index 6bef776..f995cd0 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkorderBomServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkorderBomServiceImpl.java @@ -127,9 +127,8 @@ public class MesProWorkOrderBomServiceImpl implements MesProWorkOrderBomService // 3. 构建工单 BOM 列表并批量插入 List bomList = new ArrayList<>(productBomList.size()); for (MesMdProductBomDO productBom : productBomList) { - MesMdItemDO bomItem = itemMap.get(productBom.getBomItemId()); bomList.add(new MesProWorkOrderBomDO().setWorkOrderId(workOrderId).setItemId(productBom.getBomItemId()) - .setQuantity(reqVO.getQuantity().multiply(productBom.getQuantity())).setUnitMeasureId(bomItem.getUnitMeasureId())); + .setQuantity(reqVO.getQuantity().multiply(productBom.getQuantity()))); } workOrderBomMapper.insertBatch(bomList); } -- libgit2 0.21.4