Commit a2832d9972bad3d6afd349ad8053bb20914d5907

Authored by YunaiV
1 parent f51654cc

✨ feat(mes): 移除单位编号字段,优化工单请求参数

yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/MesProWorkorderController.java
... ... @@ -165,21 +165,23 @@ public class MesProWorkOrderController {
165 165 convertSet(list, MesProWorkOrderDO::getClientId));
166 166 Map<Long, MesMdVendorDO> vendorMap = vendorService.getVendorMap(
167 167 convertSet(list, MesProWorkOrderDO::getVendorId));
  168 + // 单位从产品关联的 item 获得
168 169 Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
169   - convertSet(list, MesProWorkOrderDO::getUnitMeasureId));
  170 + convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
170 171 Map<Long, MesProWorkOrderDO> parentMap = workOrderService.getWorkOrderMap(
171 172 convertSet(list, MesProWorkOrderDO::getParentId));
172   - // 2. 拼接 VO
  173 + // 2. 拼接 VO(单位名称从产品关联的 item 获得)
173 174 return BeanUtils.toBean(list, MesProWorkOrderRespVO.class, vo -> {
174   - MapUtils.findAndThen(itemMap, vo.getProductId(), item ->
175   - vo.setProductName(item.getName()).setProductCode(item.getCode())
176   - .setProductSpec(item.getSpecification()));
  175 + MapUtils.findAndThen(itemMap, vo.getProductId(), item -> {
  176 + vo.setProductName(item.getName()).setProductCode(item.getCode())
  177 + .setProductSpec(item.getSpecification());
  178 + MapUtils.findAndThen(unitMeasureMap, item.getUnitMeasureId(),
  179 + unitMeasure -> vo.setUnitMeasureName(unitMeasure.getName()));
  180 + });
177 181 MapUtils.findAndThen(clientMap, vo.getClientId(),
178 182 client -> vo.setClientName(client.getName()).setClientCode(client.getCode()));
179 183 MapUtils.findAndThen(vendorMap, vo.getVendorId(),
180 184 vendor -> vo.setVendorName(vendor.getName()).setVendorCode(vendor.getCode()));
181   - MapUtils.findAndThen(unitMeasureMap, vo.getUnitMeasureId(),
182   - unitMeasure -> vo.setUnitMeasureName(unitMeasure.getName()));
183 185 MapUtils.findAndThen(parentMap, vo.getParentId(),
184 186 parent -> vo.setParentCode(parent.getCode()));
185 187 });
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/vo/MesProWorkorderRespVO.java
... ... @@ -57,9 +57,6 @@ public class MesProWorkOrderRespVO {
57 57 @ExcelProperty("规格型号")
58 58 private String productSpec;
59 59  
60   - @Schema(description = "单位编号", example = "200")
61   - private Long unitMeasureId;
62   -
63 60 @Schema(description = "单位名称", example = "个")
64 61 @ExcelProperty("单位")
65 62 private String unitMeasureName;
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/vo/MesProWorkorderSaveReqVO.java
... ... @@ -38,10 +38,6 @@ public class MesProWorkOrderSaveReqVO {
38 38 @NotNull(message = "产品不能为空")
39 39 private Long productId;
40 40  
41   - @Schema(description = "单位编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "200")
42   - @NotNull(message = "单位不能为空")
43   - private Long unitMeasureId;
44   -
45 41 @Schema(description = "生产数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
46 42 @NotNull(message = "生产数量不能为空")
47 43 private BigDecimal quantity;
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/workorder/MesProWorkorderDO.java
... ... @@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder;
3 3 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
4 4 import cn.iocoder.yudao.module.mes.dal.dataobject.md.client.MesMdClientDO;
5 5 import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
6   -import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
7 6 import cn.iocoder.yudao.module.mes.dal.dataobject.md.vendor.MesMdVendorDO;
8 7 import cn.iocoder.yudao.module.mes.enums.pro.MesProWorkOrderSourceTypeEnum;
9 8 import cn.iocoder.yudao.module.mes.enums.pro.MesProWorkOrderStatusEnum;
... ... @@ -72,12 +71,6 @@ public class MesProWorkOrderDO extends BaseDO {
72 71 */
73 72 private Long productId;
74 73 /**
75   - * 单位编号
76   - *
77   - * 关联 {@link MesMdUnitMeasureDO#getId()}
78   - */
79   - private Long unitMeasureId;
80   - /**
81 74 * 生产数量
82 75 */
83 76 private BigDecimal quantity;
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkorderBomServiceImpl.java
... ... @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.mes.service.pro.workorder;
2 2  
3 3 import cn.hutool.core.collection.CollUtil;
4 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5   -import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
6 5 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
7 6 import cn.iocoder.yudao.module.mes.controller.admin.pro.workorder.vo.MesProWorkOrderSaveReqVO;
8 7 import cn.iocoder.yudao.module.mes.controller.admin.pro.workorder.vo.bom.MesProWorkOrderBomPageReqVO;
... ... @@ -18,9 +17,13 @@ import org.springframework.context.annotation.Lazy;
18 17 import org.springframework.stereotype.Service;
19 18 import org.springframework.validation.annotation.Validated;
20 19  
21   -import java.util.*;
  20 +import java.util.ArrayList;
  21 +import java.util.List;
  22 +import java.util.Map;
  23 +import java.util.Set;
22 24  
23 25 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
  26 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
24 27 import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.MD_ITEM_NOT_EXISTS;
25 28 import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.PRO_WORK_ORDER_BOM_NOT_EXISTS;
26 29  
... ... @@ -113,7 +116,7 @@ public class MesProWorkOrderBomServiceImpl implements MesProWorkOrderBomService
113 116 return;
114 117 }
115 118 // 2.2 批量获取并校验 BOM 物料
116   - Set<Long> bomItemIds = CollectionUtils.convertSet(productBomList, MesMdProductBomDO::getBomItemId);
  119 + Set<Long> bomItemIds = convertSet(productBomList, MesMdProductBomDO::getBomItemId);
117 120 Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(bomItemIds);
118 121 bomItemIds.forEach(itemId -> {
119 122 if (itemMap.get(itemId) == null) {
... ...