Commit 3ca2f75f55d6f9a48c020bfa379ab1ef90089caf

Authored by YunaiV
1 parent 631a829f

✨ feat(mes): 添加工序编号及名称,优化工作站相关功能

新增工序编号和名称字段,更新工作站相关逻辑以支持工序信息的处理。优化工作站的创建、更新和查询功能,确保工序信息的有效性和完整性。
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/workstation/MesMdWorkstationController.java
... ... @@ -14,8 +14,10 @@ import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.MesMdWorks
14 14 import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.MesMdWorkstationSaveReqVO;
15 15 import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkshopDO;
16 16 import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO;
  17 +import cn.iocoder.yudao.module.mes.dal.dataobject.pro.process.MesProProcessDO;
17 18 import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkshopService;
18 19 import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService;
  20 +import cn.iocoder.yudao.module.mes.service.pro.process.MesProProcessService;
19 21 import io.swagger.v3.oas.annotations.Operation;
20 22 import io.swagger.v3.oas.annotations.Parameter;
21 23 import io.swagger.v3.oas.annotations.tags.Tag;
... ... @@ -44,9 +46,10 @@ public class MesMdWorkstationController {
44 46  
45 47 @Resource
46 48 private MesMdWorkstationService workstationService;
47   -
48 49 @Resource
49 50 private MesMdWorkshopService workshopService;
  51 + @Resource
  52 + private MesProProcessService processService;
50 53  
51 54 @PostMapping("/create")
52 55 @Operation(summary = "创建工作站")
... ... @@ -116,13 +119,17 @@ public class MesMdWorkstationController {
116 119 if (CollUtil.isEmpty(list)) {
117 120 return Collections.emptyList();
118 121 }
119   - // 1. 批量获取车间信息
  122 + // 1. 批量获取车间、工序信息
120 123 Map<Long, MesMdWorkshopDO> workshopMap = workshopService.getWorkshopMap(
121 124 convertSet(list, MesMdWorkstationDO::getWorkshopId));
  125 + Map<Long, MesProProcessDO> processMap = processService.getProcessMap(
  126 + convertSet(list, MesMdWorkstationDO::getProcessId));
122 127 // 2. 拼接 VO
123 128 return BeanUtils.toBean(list, MesMdWorkstationRespVO.class, vo -> {
124 129 MapUtils.findAndThen(workshopMap, vo.getWorkshopId(),
125 130 workshop -> vo.setWorkshopName(workshop.getName()));
  131 + MapUtils.findAndThen(processMap, vo.getProcessId(),
  132 + process -> vo.setProcessName(process.getName()));
126 133 });
127 134 }
128 135  
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/workstation/vo/MesMdWorkstationPageReqVO.java
... ... @@ -21,6 +21,9 @@ public class MesMdWorkstationPageReqVO extends PageParam {
21 21 @Schema(description = "所在车间编号", example = "1")
22 22 private Long workshopId;
23 23  
  24 + @Schema(description = "工序编号", example = "1")
  25 + private Long processId;
  26 +
24 27 @Schema(description = "状态", example = "0")
25 28 private Integer status;
26 29  
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/workstation/vo/MesMdWorkstationRespVO.java
... ... @@ -38,6 +38,10 @@ public class MesMdWorkstationRespVO {
38 38 @Schema(description = "工序编号", example = "1")
39 39 private Long processId;
40 40  
  41 + @Schema(description = "工序名称", example = "打磨")
  42 + @ExcelProperty("工序名称")
  43 + private String processName;
  44 +
41 45 @Schema(description = "线边库编号", example = "1")
42 46 private Long warehouseId;
43 47  
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/workstation/vo/MesMdWorkstationSaveReqVO.java
... ... @@ -27,7 +27,8 @@ public class MesMdWorkstationSaveReqVO {
27 27 @NotNull(message = "所在车间不能为空")
28 28 private Long workshopId;
29 29  
30   - @Schema(description = "工序编号", example = "1")
  30 + @Schema(description = "工序编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  31 + @NotNull(message = "所属工序不能为空")
31 32 private Long processId;
32 33  
33 34 @Schema(description = "线边库编号", example = "1")
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/workstation/MesMdWorkstationDO.java
1 1 package cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation;
2 2  
3 3 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
  4 +import cn.iocoder.yudao.module.mes.dal.dataobject.pro.process.MesProProcessDO;
  5 +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO;
  6 +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO;
  7 +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO;
4 8 import com.baomidou.mybatisplus.annotation.KeySequence;
5 9 import com.baomidou.mybatisplus.annotation.TableId;
6 10 import com.baomidou.mybatisplus.annotation.TableName;
... ... @@ -47,25 +51,25 @@ public class MesMdWorkstationDO extends BaseDO {
47 51 /**
48 52 * 工序编号
49 53 *
50   - * TODO @芋艿:等 pro 模块,关联工序表
  54 + * 关联 {@link MesProProcessDO#getId()}
51 55 */
52 56 private Long processId;
53 57 /**
54 58 * 线边库编号
55 59 *
56   - * TODO @芋艿:等 wm 模块,关联仓库表
  60 + * 关联 {@link MesWmWarehouseDO#getId()}
57 61 */
58 62 private Long warehouseId;
59 63 /**
60 64 * 库区编号
61 65 *
62   - * TODO @芋艿:等 wm 模块,关联库区表
  66 + * 关联 {@link MesWmWarehouseLocationDO#getId()}
63 67 */
64 68 private Long locationId;
65 69 /**
66 70 * 库位编号
67 71 *
68   - * TODO @芋艿:等 wm 模块,关联库位表
  72 + * 关联 {@link MesWmWarehouseAreaDO#getId()}
69 73 */
70 74 private Long areaId;
71 75 /**
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/workstation/MesMdWorkstationMapper.java
... ... @@ -22,6 +22,7 @@ public interface MesMdWorkstationMapper extends BaseMapperX&lt;MesMdWorkstationDO&gt;
22 22 .eqIfPresent(MesMdWorkstationDO::getCode, reqVO.getCode())
23 23 .likeIfPresent(MesMdWorkstationDO::getName, reqVO.getName())
24 24 .eqIfPresent(MesMdWorkstationDO::getWorkshopId, reqVO.getWorkshopId())
  25 + .eqIfPresent(MesMdWorkstationDO::getProcessId, reqVO.getProcessId())
25 26 .eqIfPresent(MesMdWorkstationDO::getStatus, reqVO.getStatus())
26 27 .orderByDesc(MesMdWorkstationDO::getId));
27 28 }
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/md/autocode/MesMdAutoCodeRuleCodeEnum.java
... ... @@ -15,6 +15,7 @@ public enum MesMdAutoCodeRuleCodeEnum {
15 15 MD_ITEM_CODE("MD_ITEM_CODE", "物料编码"),
16 16 MD_VENDOR_CODE("MD_VENDOR_CODE", "供应商编码"),
17 17 MD_CLIENT_CODE("MD_CLIENT_CODE", "客户编码"),
  18 + MD_WORKSTATION_CODE("MD_WORKSTATION_CODE", "工作站编码"),
18 19 WM_SN_CODE("WM_SN_CODE", "SN 码"),
19 20 WM_PACKAGE_CODE("WM_PACKAGE_CODE", "装箱单编码"),
20 21 WM_BATCH_CODE("WM_BATCH_CODE", "批次编码"),
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationServiceImpl.java
... ... @@ -19,6 +19,7 @@ import cn.iocoder.yudao.module.mes.service.wm.barcode.MesWmBarcodeService;
19 19 import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
20 20 import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService;
21 21 import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseService;
  22 +import cn.iocoder.yudao.module.mes.service.pro.process.MesProProcessService;
22 23 import jakarta.annotation.Resource;
23 24 import org.springframework.stereotype.Service;
24 25 import org.springframework.transaction.annotation.Transactional;
... ... @@ -67,16 +68,13 @@ public class MesMdWorkstationServiceImpl implements MesMdWorkstationService {
67 68 @Resource
68 69 private MesWmBarcodeService barcodeService;
69 70  
  71 + @Resource
  72 + private MesProProcessService processService;
  73 +
70 74 @Override
71 75 public Long createWorkstation(MesMdWorkstationSaveReqVO createReqVO) {
72   - // 校验编码唯一
73   - validateWorkstationCodeUnique(null, createReqVO.getCode());
74   - // 校验名称唯一
75   - validateWorkstationNameUnique(null, createReqVO.getName());
76   - // 校验车间存在
77   - validateWorkshopExists(createReqVO.getWorkshopId());
78   - // 校验仓库层级
79   - validateWarehouseHierarchy(createReqVO);
  76 + // 校验数据
  77 + validateWorkstationSaveData(null, createReqVO);
80 78  
81 79 // 插入
82 80 MesMdWorkstationDO workstation = BeanUtils.toBean(createReqVO, MesMdWorkstationDO.class);
... ... @@ -92,20 +90,27 @@ public class MesMdWorkstationServiceImpl implements MesMdWorkstationService {
92 90 public void updateWorkstation(MesMdWorkstationSaveReqVO updateReqVO) {
93 91 // 校验存在
94 92 validateWorkstationExists(updateReqVO.getId());
95   - // 校验编码唯一
96   - validateWorkstationCodeUnique(updateReqVO.getId(), updateReqVO.getCode());
97   - // 校验名称唯一
98   - validateWorkstationNameUnique(updateReqVO.getId(), updateReqVO.getName());
99   - // 校验车间存在
100   - validateWorkshopExists(updateReqVO.getWorkshopId());
101   - // 校验仓库层级
102   - validateWarehouseHierarchy(updateReqVO);
  93 + // 校验数据
  94 + validateWorkstationSaveData(updateReqVO.getId(), updateReqVO);
103 95  
104 96 // 更新
105 97 MesMdWorkstationDO updateObj = BeanUtils.toBean(updateReqVO, MesMdWorkstationDO.class);
106 98 workstationMapper.updateById(updateObj);
107 99 }
108 100  
  101 + private void validateWorkstationSaveData(Long id, MesMdWorkstationSaveReqVO reqVO) {
  102 + // 校验编码唯一
  103 + validateWorkstationCodeUnique(id, reqVO.getCode());
  104 + // 校验名称唯一
  105 + validateWorkstationNameUnique(id, reqVO.getName());
  106 + // 校验车间存在
  107 + validateWorkshopExists(reqVO.getWorkshopId());
  108 + // 校验工序存在
  109 + processService.validateProcessExists(reqVO.getProcessId());
  110 + // 校验仓库层级
  111 + validateWarehouseHierarchy(reqVO);
  112 + }
  113 +
109 114 @Override
110 115 @Transactional(rollbackFor = Exception.class)
111 116 public void deleteWorkstation(Long id) {
... ...