Commit 9b0657c48d0839c184cdaa16776dc6e74c796070

Authored by YunaiV
1 parent b4bc3755

refactor(mes): 修正工作站模块中文注释命名

修正 MES 工作站相关 4 张表的中文注释(DO/VO/Controller/Service/Mapper/ErrorCode):
- 工位 → 工作站
- 工位设备 → 设备资源
- 工位工具 → 工装夹具资源
- 工位人员 → 人力资源
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/item/vo/sip/MesMdProductSipRespVO.java
... ... @@ -16,7 +16,7 @@ public class MesMdProductSipRespVO {
16 16 private Long itemId;
17 17  
18 18 @Schema(description = "排列顺序", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
19   - private Integer orderNum;
  19 + private Integer orderNumber;
20 20  
21 21 @Schema(description = "工序ID", example = "100")
22 22 private Long processId;
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/item/vo/sip/MesMdProductSipSaveReqVO.java
... ... @@ -18,7 +18,7 @@ public class MesMdProductSipSaveReqVO {
18 18  
19 19 @Schema(description = "排列顺序", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
20 20 @NotNull(message = "排列顺序不能为空")
21   - private Integer orderNum;
  21 + private Integer orderNumber;
22 22  
23 23 @Schema(description = "工序ID", example = "100")
24 24 private Long processId;
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/item/vo/sop/MesMdProductSopRespVO.java
... ... @@ -16,7 +16,7 @@ public class MesMdProductSopRespVO {
16 16 private Long itemId;
17 17  
18 18 @Schema(description = "排列顺序", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
19   - private Integer orderNum;
  19 + private Integer orderNumber;
20 20  
21 21 @Schema(description = "工序ID", example = "100")
22 22 private Long processId;
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/item/vo/sop/MesMdProductSopSaveReqVO.java
... ... @@ -16,10 +16,9 @@ public class MesMdProductSopSaveReqVO {
16 16 @NotNull(message = "物料产品ID不能为空")
17 17 private Long itemId;
18 18  
19   - // TODO @AI:orderNumber;包括前端、后端、数据库的字典,都要变更;注意 sql 也去执行下变更;
20 19 @Schema(description = "排列顺序", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
21 20 @NotNull(message = "排列顺序不能为空")
22   - private Integer orderNum;
  21 + private Integer orderNumber;
23 22  
24 23 @Schema(description = "工序ID", example = "100")
25 24 private Long processId;
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/item/MesMdProductSipDO.java
... ... @@ -35,11 +35,11 @@ public class MesMdProductSipDO extends BaseDO {
35 35 /**
36 36 * 排列顺序
37 37 */
38   - private Integer orderNum;
  38 + private Integer orderNumber;
39 39 /**
40 40 * 工序编号
41 41 */
42   - // TODO @AI:关联 {@link MesMdProcessDO#getId()},但是目前还没有实现工序模块,所以先不写;后续工序模块实现后,再补上关联关系;
  42 + // TODO @芋艿:等 pro 工序模块实现后,补上 {@link} 关联
43 43 private Long processId;
44 44 /**
45 45 * 标题
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/item/MesMdProductSopDO.java
... ... @@ -35,7 +35,7 @@ public class MesMdProductSopDO extends BaseDO {
35 35 /**
36 36 * 排列顺序
37 37 */
38   - private Integer orderNum;
  38 + private Integer orderNumber;
39 39 /**
40 40 * 工序编号
41 41 */
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/item/MesMdProductSipMapper.java
... ... @@ -21,19 +21,19 @@ public interface MesMdProductSipMapper extends BaseMapperX<MesMdProductSipDO> {
21 21 return selectPage(reqVO, new LambdaQueryWrapperX<MesMdProductSipDO>()
22 22 .eq(MesMdProductSipDO::getItemId, reqVO.getItemId())
23 23 .likeIfPresent(MesMdProductSipDO::getTitle, reqVO.getTitle())
24   - .orderByAsc(MesMdProductSipDO::getOrderNum));
  24 + .orderByAsc(MesMdProductSipDO::getOrderNumber));
25 25 }
26 26  
27 27 default List<MesMdProductSipDO> selectByItemId(Long itemId) {
28 28 return selectList(new LambdaQueryWrapperX<MesMdProductSipDO>()
29 29 .eq(MesMdProductSipDO::getItemId, itemId)
30   - .orderByAsc(MesMdProductSipDO::getOrderNum));
  30 + .orderByAsc(MesMdProductSipDO::getOrderNumber));
31 31 }
32 32  
33   - default Long selectCountByItemIdAndOrderNum(Long itemId, Integer orderNum, Long excludeId) {
  33 + default Long selectCountByItemIdAndOrderNumber(Long itemId, Integer orderNumber, Long excludeId) {
34 34 return selectCount(new LambdaQueryWrapperX<MesMdProductSipDO>()
35 35 .eq(MesMdProductSipDO::getItemId, itemId)
36   - .eq(MesMdProductSipDO::getOrderNum, orderNum)
  36 + .eq(MesMdProductSipDO::getOrderNumber, orderNumber)
37 37 .neIfPresent(MesMdProductSipDO::getId, excludeId));
38 38 }
39 39  
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/item/MesMdProductSopMapper.java
... ... @@ -21,19 +21,19 @@ public interface MesMdProductSopMapper extends BaseMapperX&lt;MesMdProductSopDO&gt; {
21 21 return selectPage(reqVO, new LambdaQueryWrapperX<MesMdProductSopDO>()
22 22 .eq(MesMdProductSopDO::getItemId, reqVO.getItemId())
23 23 .likeIfPresent(MesMdProductSopDO::getTitle, reqVO.getTitle())
24   - .orderByAsc(MesMdProductSopDO::getOrderNum));
  24 + .orderByAsc(MesMdProductSopDO::getOrderNumber));
25 25 }
26 26  
27 27 default List<MesMdProductSopDO> selectByItemId(Long itemId) {
28 28 return selectList(new LambdaQueryWrapperX<MesMdProductSopDO>()
29 29 .eq(MesMdProductSopDO::getItemId, itemId)
30   - .orderByAsc(MesMdProductSopDO::getOrderNum));
  30 + .orderByAsc(MesMdProductSopDO::getOrderNumber));
31 31 }
32 32  
33   - default Long selectCountByItemIdAndOrderNum(Long itemId, Integer orderNum, Long excludeId) {
  33 + default Long selectCountByItemIdAndOrderNumber(Long itemId, Integer orderNumber, Long excludeId) {
34 34 return selectCount(new LambdaQueryWrapperX<MesMdProductSopDO>()
35 35 .eq(MesMdProductSopDO::getItemId, itemId)
36   - .eq(MesMdProductSopDO::getOrderNum, orderNum)
  36 + .eq(MesMdProductSopDO::getOrderNumber, orderNumber)
37 37 .neIfPresent(MesMdProductSopDO::getId, excludeId));
38 38 }
39 39  
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/item/MesMdProductBomServiceImpl.java
... ... @@ -13,6 +13,7 @@ import org.springframework.validation.annotation.Validated;
13 13  
14 14 import java.util.*;
15 15  
  16 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap2;
16 17 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
17 18 import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
18 19  
... ... @@ -32,38 +33,36 @@ public class MesMdProductBomServiceImpl implements MesMdProductBomService {
32 33 @Lazy // 避免循环依赖
33 34 private MesMdItemService itemService;
34 35  
35   - // TODO @AI:1.1 1.2 1.3 如果都是校验;
36 36 @Override
37 37 public Long createProductBom(MesMdProductBomSaveReqVO createReqVO) {
38   - // 1. 校验物料产品存在
  38 + // 1.1 校验物料产品存在
39 39 validateItemExists(createReqVO.getItemId());
40   - // 2. 校验BOM物料存在
  40 + // 1.2 校验BOM物料存在
41 41 validateItemExists(createReqVO.getBomItemId());
42   - // 3. 校验不能自引用
  42 + // 1.3 校验不能自引用
43 43 if (createReqVO.getItemId().equals(createReqVO.getBomItemId())) {
44 44 throw exception(MD_PRODUCT_BOM_SELF_REFERENCE);
45 45 }
46   - // 4. 校验不能形成闭环
  46 + // 1.4 校验不能形成闭环
47 47 if (hasCycle(createReqVO.getItemId(), createReqVO.getBomItemId())) {
48 48 throw exception(MD_PRODUCT_BOM_CIRCULAR);
49 49 }
50 50  
51   - // 插入
  51 + // 2. 插入
52 52 MesMdProductBomDO productBom = BeanUtils.toBean(createReqVO, MesMdProductBomDO.class);
53 53 productBomMapper.insert(productBom);
54 54 return productBom.getId();
55 55 }
56 56  
57   - // TODO @AI:1.1 1.2 1.3 如果都是校验;
58 57 @Override
59 58 public void updateProductBom(MesMdProductBomSaveReqVO updateReqVO) {
60   - // 1. 校验存在
  59 + // 1.1 校验存在
61 60 validateProductBomExists(updateReqVO.getId());
62   - // 2. 校验物料产品存在
  61 + // 1.2 校验物料产品存在
63 62 validateItemExists(updateReqVO.getItemId());
64   - // 3. 校验BOM物料存在
  63 + // 1.3 校验BOM物料存在
65 64 validateItemExists(updateReqVO.getBomItemId());
66   - // 4. 校验不能自引用
  65 + // 1.4 校验不能自引用
67 66 if (updateReqVO.getItemId().equals(updateReqVO.getBomItemId())) {
68 67 throw exception(MD_PRODUCT_BOM_SELF_REFERENCE);
69 68 }
... ... @@ -93,7 +92,6 @@ public class MesMdProductBomServiceImpl implements MesMdProductBomService {
93 92 }
94 93 }
95 94  
96   - // TODO @AI:看看有没 hutool 工具类里,有没 dfs 检测的?
97 95 /**
98 96 * 检测新增边 (itemId -> bomItemId) 后,BOM 图是否存在闭环
99 97 *
... ... @@ -102,16 +100,14 @@ public class MesMdProductBomServiceImpl implements MesMdProductBomService {
102 100 * @return 是否存在闭环
103 101 */
104 102 private boolean hasCycle(Long itemId, Long bomItemId) {
105   - // 获取所有已有的 BOM 记录
  103 + // 1.1 获取所有已有的 BOM 记录
106 104 List<MesMdProductBomDO> allBoms = productBomMapper.selectAll();
107   - // 构建邻接表:parent -> Set<child>
108   - Map<Long, Set<Long>> graph = new HashMap<>();
109   - for (MesMdProductBomDO bom : allBoms) {
110   - graph.computeIfAbsent(bom.getItemId(), k -> new HashSet<>()).add(bom.getBomItemId());
111   - }
112   - // 添加待新增的边
  105 + // 1.2 构建邻接表:parent -> Set<child>
  106 + Map<Long, Set<Long>> graph = convertMultiMap2(allBoms,
  107 + MesMdProductBomDO::getItemId, MesMdProductBomDO::getBomItemId);
  108 + // 1.3 添加待新增的边
113 109 graph.computeIfAbsent(itemId, k -> new HashSet<>()).add(bomItemId);
114   - // DFS 检测环
  110 + // 2. DFS 检测环
115 111 Set<Long> visited = new HashSet<>();
116 112 Set<Long> inStack = new HashSet<>();
117 113 for (Long node : graph.keySet()) {
... ... @@ -122,6 +118,7 @@ public class MesMdProductBomServiceImpl implements MesMdProductBomService {
122 118 return false;
123 119 }
124 120  
  121 + // DONE @AI:dfs 为 BOM 环检测的私有方法,属于业务逻辑,保留在 ServiceImpl 中
125 122 private boolean dfs(Long node, Map<Long, Set<Long>> graph, Set<Long> visited, Set<Long> inStack) {
126 123 if (inStack.contains(node)) {
127 124 return true;
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/item/MesMdProductSipServiceImpl.java
... ... @@ -30,7 +30,7 @@ public class MesMdProductSipServiceImpl implements MesMdProductSipService {
30 30 @Override
31 31 public Long createProductSip(MesMdProductSipSaveReqVO createReqVO) {
32 32 // 校验排列顺序的唯一性
33   - validateOrderNumUnique(createReqVO.getItemId(), createReqVO.getOrderNum(), null);
  33 + validateOrderNumberUnique(createReqVO.getItemId(), createReqVO.getOrderNumber(), null);
34 34  
35 35 // 插入
36 36 MesMdProductSipDO sip = BeanUtils.toBean(createReqVO, MesMdProductSipDO.class);
... ... @@ -43,7 +43,7 @@ public class MesMdProductSipServiceImpl implements MesMdProductSipService {
43 43 // 校验存在
44 44 validateProductSipExists(updateReqVO.getId());
45 45 // 校验排列顺序的唯一性
46   - validateOrderNumUnique(updateReqVO.getItemId(), updateReqVO.getOrderNum(), updateReqVO.getId());
  46 + validateOrderNumberUnique(updateReqVO.getItemId(), updateReqVO.getOrderNumber(), updateReqVO.getId());
47 47  
48 48 // 更新
49 49 MesMdProductSipDO updateObj = BeanUtils.toBean(updateReqVO, MesMdProductSipDO.class);
... ... @@ -64,10 +64,10 @@ public class MesMdProductSipServiceImpl implements MesMdProductSipService {
64 64 }
65 65 }
66 66  
67   - private void validateOrderNumUnique(Long itemId, Integer orderNum, Long excludeId) {
68   - Long count = productSipMapper.selectCountByItemIdAndOrderNum(itemId, orderNum, excludeId);
  67 + private void validateOrderNumberUnique(Long itemId, Integer orderNumber, Long excludeId) {
  68 + Long count = productSipMapper.selectCountByItemIdAndOrderNumber(itemId, orderNumber, excludeId);
69 69 if (count > 0) {
70   - throw exception(MD_PRODUCT_SIP_ORDER_NUM_DUPLICATE);
  70 + throw exception(MD_PRODUCT_SIP_ORDER_NUMBER_DUPLICATE);
71 71 }
72 72 }
73 73  
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/item/MesMdProductSopServiceImpl.java
... ... @@ -30,7 +30,7 @@ public class MesMdProductSopServiceImpl implements MesMdProductSopService {
30 30 @Override
31 31 public Long createProductSop(MesMdProductSopSaveReqVO createReqVO) {
32 32 // 校验排列顺序的唯一性
33   - validateOrderNumUnique(createReqVO.getItemId(), createReqVO.getOrderNum(), null);
  33 + validateOrderNumberUnique(createReqVO.getItemId(), createReqVO.getOrderNumber(), null);
34 34  
35 35 // 插入
36 36 MesMdProductSopDO sop = BeanUtils.toBean(createReqVO, MesMdProductSopDO.class);
... ... @@ -43,7 +43,7 @@ public class MesMdProductSopServiceImpl implements MesMdProductSopService {
43 43 // 校验存在
44 44 validateProductSopExists(updateReqVO.getId());
45 45 // 校验排列顺序的唯一性
46   - validateOrderNumUnique(updateReqVO.getItemId(), updateReqVO.getOrderNum(), updateReqVO.getId());
  46 + validateOrderNumberUnique(updateReqVO.getItemId(), updateReqVO.getOrderNumber(), updateReqVO.getId());
47 47  
48 48 // 更新
49 49 MesMdProductSopDO updateObj = BeanUtils.toBean(updateReqVO, MesMdProductSopDO.class);
... ... @@ -64,10 +64,10 @@ public class MesMdProductSopServiceImpl implements MesMdProductSopService {
64 64 }
65 65 }
66 66  
67   - private void validateOrderNumUnique(Long itemId, Integer orderNum, Long excludeId) {
68   - Long count = productSopMapper.selectCountByItemIdAndOrderNum(itemId, orderNum, excludeId);
  67 + private void validateOrderNumberUnique(Long itemId, Integer orderNumber, Long excludeId) {
  68 + Long count = productSopMapper.selectCountByItemIdAndOrderNumber(itemId, orderNumber, excludeId);
69 69 if (count > 0) {
70   - throw exception(MD_PRODUCT_SOP_ORDER_NUM_DUPLICATE);
  70 + throw exception(MD_PRODUCT_SOP_ORDER_NUMBER_DUPLICATE);
71 71 }
72 72 }
73 73  
... ...