Commit be3b3ef11420a7c49f42865c7c774e995e417678

Authored by YunaiV
1 parent b92c8e1a

feat(mes): 添加安灯配置编号和用户信息字段,重构相关数据对象和服务接口

yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordPageReqVO.java
@@ -20,8 +20,11 @@ public class MesProAndonRecordPageReqVO extends PageParam { @@ -20,8 +20,11 @@ public class MesProAndonRecordPageReqVO extends PageParam {
20 @Schema(description = "工作站编号", example = "100") 20 @Schema(description = "工作站编号", example = "100")
21 private Long workstationId; 21 private Long workstationId;
22 22
23 - @Schema(description = "级别", example = "1")  
24 - private Integer level; 23 + @Schema(description = "发起用户编号", example = "1")
  24 + private Long userId;
  25 +
  26 + @Schema(description = "处置人编号", example = "1")
  27 + private Long handlerUserId;
25 28
26 @Schema(description = "处置状态", example = "0") 29 @Schema(description = "处置状态", example = "0")
27 private Integer status; 30 private Integer status;
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordRespVO.java
@@ -19,6 +19,9 @@ public class MesProAndonRecordRespVO { @@ -19,6 +19,9 @@ public class MesProAndonRecordRespVO {
19 @ExcelProperty("编号") 19 @ExcelProperty("编号")
20 private Long id; 20 private Long id;
21 21
  22 + @Schema(description = "安灯配置编号", example = "1")
  23 + private Long configId;
  24 +
22 @Schema(description = "工作站编号", example = "100") 25 @Schema(description = "工作站编号", example = "100")
23 private Long workstationId; 26 private Long workstationId;
24 27
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordSaveReqVO.java
@@ -9,6 +9,10 @@ import lombok.Data; @@ -9,6 +9,10 @@ import lombok.Data;
9 @Data 9 @Data
10 public class MesProAndonRecordSaveReqVO { 10 public class MesProAndonRecordSaveReqVO {
11 11
  12 + @Schema(description = "安灯配置编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  13 + @NotNull(message = "安灯配置不能为空")
  14 + private Long configId;
  15 +
12 @Schema(description = "工作站编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") 16 @Schema(description = "工作站编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
13 @NotNull(message = "工作站不能为空") 17 @NotNull(message = "工作站不能为空")
14 private Long workstationId; 18 private Long workstationId;
@@ -23,14 +27,6 @@ public class MesProAndonRecordSaveReqVO { @@ -23,14 +27,6 @@ public class MesProAndonRecordSaveReqVO {
23 @Schema(description = "工序编号", example = "300") 27 @Schema(description = "工序编号", example = "300")
24 private Long processId; 28 private Long processId;
25 29
26 - @Schema(description = "呼叫原因", requiredMode = Schema.RequiredMode.REQUIRED, example = "设备故障")  
27 - @NotEmpty(message = "呼叫原因不能为空")  
28 - private String reason;  
29 -  
30 - @Schema(description = "级别", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")  
31 - @NotNull(message = "级别不能为空")  
32 - private Integer level;  
33 -  
34 @Schema(description = "备注", example = "备注") 30 @Schema(description = "备注", example = "备注")
35 private String remark; 31 private String remark;
36 32
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/andon/MesProAndonRecordDO.java
@@ -34,6 +34,12 @@ public class MesProAndonRecordDO extends BaseDO { @@ -34,6 +34,12 @@ public class MesProAndonRecordDO extends BaseDO {
34 @TableId 34 @TableId
35 private Long id; 35 private Long id;
36 /** 36 /**
  37 + * 安灯配置编号
  38 + *
  39 + * 关联 {@link MesProAndonConfigDO#getId()}
  40 + */
  41 + private Long configId;
  42 + /**
37 * 工作站编号 43 * 工作站编号
38 * 44 *
39 * 关联 {@link MesMdWorkstationDO#getId()} 45 * 关联 {@link MesMdWorkstationDO#getId()}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/andon/MesProAndonConfigMapper.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.dal.mysql.pro.andon;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
  5 +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
  6 +import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.config.MesProAndonConfigPageReqVO;
  7 +import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonConfigDO;
  8 +import org.apache.ibatis.annotations.Mapper;
  9 +
  10 +/**
  11 + * MES 安灯呼叫配置 Mapper
  12 + *
  13 + * @author 芋道源码
  14 + */
  15 +@Mapper
  16 +public interface MesProAndonConfigMapper extends BaseMapperX<MesProAndonConfigDO> {
  17 +
  18 + default PageResult<MesProAndonConfigDO> selectPage(MesProAndonConfigPageReqVO reqVO) {
  19 + return selectPage(reqVO, new LambdaQueryWrapperX<MesProAndonConfigDO>()
  20 + .likeIfPresent(MesProAndonConfigDO::getReason, reqVO.getReason())
  21 + .eqIfPresent(MesProAndonConfigDO::getLevel, reqVO.getLevel())
  22 + .orderByDesc(MesProAndonConfigDO::getId));
  23 + }
  24 +
  25 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/andon/MesProAndonRecordMapper.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.dal.mysql.pro.andon;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
  5 +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
  6 +import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordPageReqVO;
  7 +import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonRecordDO;
  8 +import org.apache.ibatis.annotations.Mapper;
  9 +
  10 +/**
  11 + * MES 安灯呼叫记录 Mapper
  12 + *
  13 + * @author 芋道源码
  14 + */
  15 +@Mapper
  16 +public interface MesProAndonRecordMapper extends BaseMapperX<MesProAndonRecordDO> {
  17 +
  18 + default PageResult<MesProAndonRecordDO> selectPage(MesProAndonRecordPageReqVO reqVO) {
  19 + return selectPage(reqVO, new LambdaQueryWrapperX<MesProAndonRecordDO>()
  20 + .eqIfPresent(MesProAndonRecordDO::getWorkstationId, reqVO.getWorkstationId())
  21 + .eqIfPresent(MesProAndonRecordDO::getUserId, reqVO.getUserId())
  22 + .eqIfPresent(MesProAndonRecordDO::getHandlerUserId, reqVO.getHandlerUserId())
  23 + .eqIfPresent(MesProAndonRecordDO::getStatus, reqVO.getStatus())
  24 + .betweenIfPresent(MesProAndonRecordDO::getCreateTime, reqVO.getCreateTime())
  25 + .orderByDesc(MesProAndonRecordDO::getId));
  26 + }
  27 +
  28 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationService.java
@@ -38,6 +38,13 @@ public interface MesMdWorkstationService { @@ -38,6 +38,13 @@ public interface MesMdWorkstationService {
38 void deleteWorkstation(Long id); 38 void deleteWorkstation(Long id);
39 39
40 /** 40 /**
  41 + * 校验工作站存在
  42 + *
  43 + * @param id 编号
  44 + */
  45 + void validateWorkstationExists(Long id);
  46 +
  47 + /**
41 * 获得工作站 48 * 获得工作站
42 * 49 *
43 * @param id 编号 50 * @param id 编号
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationServiceImpl.java
@@ -108,7 +108,8 @@ public class MesMdWorkstationServiceImpl implements MesMdWorkstationService { @@ -108,7 +108,8 @@ public class MesMdWorkstationServiceImpl implements MesMdWorkstationService {
108 workstationMapper.deleteById(id); 108 workstationMapper.deleteById(id);
109 } 109 }
110 110
111 - private void validateWorkstationExists(Long id) { 111 + @Override
  112 + public void validateWorkstationExists(Long id) {
112 if (workstationMapper.selectById(id) == null) { 113 if (workstationMapper.selectById(id) == null) {
113 throw exception(MD_WORKSTATION_NOT_EXISTS); 114 throw exception(MD_WORKSTATION_NOT_EXISTS);
114 } 115 }
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonConfigService.java
@@ -38,6 +38,14 @@ public interface MesProAndonConfigService { @@ -38,6 +38,14 @@ public interface MesProAndonConfigService {
38 void deleteAndonConfig(Long id); 38 void deleteAndonConfig(Long id);
39 39
40 /** 40 /**
  41 + * 校验安灯呼叫配置存在
  42 + *
  43 + * @param id 编号
  44 + * @return 安灯呼叫配置
  45 + */
  46 + MesProAndonConfigDO validateAndonConfigExists(Long id);
  47 +
  48 + /**
41 * 获得安灯呼叫配置 49 * 获得安灯呼叫配置
42 * 50 *
43 * @param id 编号 51 * @param id 编号
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonConfigServiceImpl.java
@@ -57,10 +57,13 @@ public class MesProAndonConfigServiceImpl implements MesProAndonConfigService { @@ -57,10 +57,13 @@ public class MesProAndonConfigServiceImpl implements MesProAndonConfigService {
57 andonConfigMapper.deleteById(id); 57 andonConfigMapper.deleteById(id);
58 } 58 }
59 59
60 - private void validateAndonConfigExists(Long id) {  
61 - if (andonConfigMapper.selectById(id) == null) { 60 + @Override
  61 + public MesProAndonConfigDO validateAndonConfigExists(Long id) {
  62 + MesProAndonConfigDO config = andonConfigMapper.selectById(id);
  63 + if (config == null) {
62 throw exception(PRO_ANDON_CONFIG_NOT_EXISTS); 64 throw exception(PRO_ANDON_CONFIG_NOT_EXISTS);
63 } 65 }
  66 + return config;
64 } 67 }
65 68
66 @Override 69 @Override
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonRecordServiceImpl.java
@@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; @@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
6 import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordHandleReqVO; 6 import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordHandleReqVO;
7 import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordPageReqVO; 7 import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordPageReqVO;
8 import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordSaveReqVO; 8 import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordSaveReqVO;
  9 +import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonConfigDO;
9 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonRecordDO; 10 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonRecordDO;
10 import cn.iocoder.yudao.module.mes.dal.mysql.pro.andon.MesProAndonRecordMapper; 11 import cn.iocoder.yudao.module.mes.dal.mysql.pro.andon.MesProAndonRecordMapper;
11 import cn.iocoder.yudao.module.mes.enums.pro.MesProAndonStatusEnum; 12 import cn.iocoder.yudao.module.mes.enums.pro.MesProAndonStatusEnum;
@@ -17,8 +18,7 @@ import org.springframework.stereotype.Service; @@ -17,8 +18,7 @@ import org.springframework.stereotype.Service;
17 import org.springframework.validation.annotation.Validated; 18 import org.springframework.validation.annotation.Validated;
18 19
19 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 20 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
20 -import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.PRO_ANDON_RECORD_ALREADY_HANDLED;  
21 -import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.PRO_ANDON_RECORD_NOT_EXISTS; 21 +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
22 22
23 /** 23 /**
24 * MES 安灯呼叫记录 Service 实现类 24 * MES 安灯呼叫记录 Service 实现类
@@ -41,19 +41,24 @@ public class MesProAndonRecordServiceImpl implements MesProAndonRecordService { @@ -41,19 +41,24 @@ public class MesProAndonRecordServiceImpl implements MesProAndonRecordService {
41 @Resource 41 @Resource
42 private MesProProcessService processService; 42 private MesProProcessService processService;
43 43
  44 + @Resource
  45 + private MesProAndonConfigService andonConfigService;
  46 +
44 @Override 47 @Override
45 public Long createAndonRecord(MesProAndonRecordSaveReqVO createReqVO) { 48 public Long createAndonRecord(MesProAndonRecordSaveReqVO createReqVO) {
46 // 1. 校验关联数据存在 49 // 1. 校验关联数据存在
47 - workstationService.getWorkstation(createReqVO.getWorkstationId()); // 工作站必填,直接校验 50 + MesProAndonConfigDO config = andonConfigService.validateAndonConfigExists(createReqVO.getConfigId());
  51 + workstationService.validateWorkstationExists(createReqVO.getWorkstationId());
48 if (createReqVO.getWorkOrderId() != null) { 52 if (createReqVO.getWorkOrderId() != null) {
49 workOrderService.validateWorkOrderExists(createReqVO.getWorkOrderId()); 53 workOrderService.validateWorkOrderExists(createReqVO.getWorkOrderId());
50 } 54 }
51 if (createReqVO.getProcessId() != null) { 55 if (createReqVO.getProcessId() != null) {
52 - processService.getProcess(createReqVO.getProcessId()); 56 + processService.validateProcessExists(createReqVO.getProcessId());
53 } 57 }
54 58
55 // 2. 插入 59 // 2. 插入
56 MesProAndonRecordDO record = BeanUtils.toBean(createReqVO, MesProAndonRecordDO.class); 60 MesProAndonRecordDO record = BeanUtils.toBean(createReqVO, MesProAndonRecordDO.class);
  61 + record.setReason(config.getReason()).setLevel(config.getLevel());
57 record.setStatus(MesProAndonStatusEnum.ACTIVE.getStatus()); 62 record.setStatus(MesProAndonStatusEnum.ACTIVE.getStatus());
58 andonRecordMapper.insert(record); 63 andonRecordMapper.insert(record);
59 return record.getId(); 64 return record.getId();
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/process/MesProProcessServiceImpl.java
1 package cn.iocoder.yudao.module.mes.service.pro.process; 1 package cn.iocoder.yudao.module.mes.service.pro.process;
2 2
  3 +import cn.hutool.core.collection.CollUtil;
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 import cn.iocoder.yudao.framework.common.util.object.BeanUtils; 5 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
5 import cn.iocoder.yudao.module.mes.controller.admin.pro.process.vo.MesProProcessPageReqVO; 6 import cn.iocoder.yudao.module.mes.controller.admin.pro.process.vo.MesProProcessPageReqVO;
@@ -12,6 +13,7 @@ import org.springframework.stereotype.Service; @@ -12,6 +13,7 @@ import org.springframework.stereotype.Service;
12 import org.springframework.transaction.annotation.Transactional; 13 import org.springframework.transaction.annotation.Transactional;
13 import org.springframework.validation.annotation.Validated; 14 import org.springframework.validation.annotation.Validated;
14 15
  16 +import java.util.Collections;
15 import java.util.List; 17 import java.util.List;
16 18
17 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 19 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@@ -37,11 +39,12 @@ public class MesProProcessServiceImpl implements MesProProcessService { @@ -37,11 +39,12 @@ public class MesProProcessServiceImpl implements MesProProcessService {
37 39
38 @Override 40 @Override
39 public Long createProcess(MesProProcessSaveReqVO createReqVO) { 41 public Long createProcess(MesProProcessSaveReqVO createReqVO) {
40 - // 1. 校验工序编码唯一性 42 + // 1.1 校验工序编码唯一性
41 validateProcessCodeUnique(null, createReqVO.getCode()); 43 validateProcessCodeUnique(null, createReqVO.getCode());
42 - // 2. 校验工序名称唯一性 44 + // 1.2 校验工序名称唯一性
43 validateProcessNameUnique(null, createReqVO.getName()); 45 validateProcessNameUnique(null, createReqVO.getName());
44 - // 3. 插入工序 46 +
  47 + // 2. 插入工序
45 MesProProcessDO process = BeanUtils.toBean(createReqVO, MesProProcessDO.class); 48 MesProProcessDO process = BeanUtils.toBean(createReqVO, MesProProcessDO.class);
46 processMapper.insert(process); 49 processMapper.insert(process);
47 return process.getId(); 50 return process.getId();
@@ -49,13 +52,14 @@ public class MesProProcessServiceImpl implements MesProProcessService { @@ -49,13 +52,14 @@ public class MesProProcessServiceImpl implements MesProProcessService {
49 52
50 @Override 53 @Override
51 public void updateProcess(MesProProcessSaveReqVO updateReqVO) { 54 public void updateProcess(MesProProcessSaveReqVO updateReqVO) {
52 - // 1. 校验存在 55 + // 1.1 校验存在
53 validateProcessExists(updateReqVO.getId()); 56 validateProcessExists(updateReqVO.getId());
54 - // 2. 校验工序编码唯一性 57 + // 1.2 校验工序编码唯一性
55 validateProcessCodeUnique(updateReqVO.getId(), updateReqVO.getCode()); 58 validateProcessCodeUnique(updateReqVO.getId(), updateReqVO.getCode());
56 - // 3. 校验工序名称唯一性 59 + // 1.3 校验工序名称唯一性
57 validateProcessNameUnique(updateReqVO.getId(), updateReqVO.getName()); 60 validateProcessNameUnique(updateReqVO.getId(), updateReqVO.getName());
58 - // 4. 更新工序 61 +
  62 + // 2. 更新工序
59 MesProProcessDO updateObj = BeanUtils.toBean(updateReqVO, MesProProcessDO.class); 63 MesProProcessDO updateObj = BeanUtils.toBean(updateReqVO, MesProProcessDO.class);
60 processMapper.updateById(updateObj); 64 processMapper.updateById(updateObj);
61 } 65 }
@@ -63,19 +67,22 @@ public class MesProProcessServiceImpl implements MesProProcessService { @@ -63,19 +67,22 @@ public class MesProProcessServiceImpl implements MesProProcessService {
63 @Override 67 @Override
64 @Transactional(rollbackFor = Exception.class) 68 @Transactional(rollbackFor = Exception.class)
65 public void deleteProcess(Long id) { 69 public void deleteProcess(Long id) {
66 - // 1. 校验存在 70 + // 1.1 校验存在
67 validateProcessExists(id); 71 validateProcessExists(id);
68 - // 2. 校验是否被工艺路线引用 72 + // 1.2 校验是否被工艺路线引用
  73 + // TODO @AI:CollUtil.isNotEmpty() 可能更好
69 if (!routeProcessMapper.selectListByProcessId(id).isEmpty()) { 74 if (!routeProcessMapper.selectListByProcessId(id).isEmpty()) {
70 throw exception(PRO_PROCESS_USED_BY_ROUTE); 75 throw exception(PRO_PROCESS_USED_BY_ROUTE);
71 } 76 }
72 - // 3. 删除工序 77 +
  78 + // 2. 删除工序
73 processMapper.deleteById(id); 79 processMapper.deleteById(id);
74 - // 4. 级联删除工序内容 80 + // 3. 级联删除工序内容
75 processContentService.deleteProcessContentByProcessId(id); 81 processContentService.deleteProcessContentByProcessId(id);
76 } 82 }
77 83
78 - private void validateProcessExists(Long id) { 84 + @Override
  85 + public void validateProcessExists(Long id) {
79 if (processMapper.selectById(id) == null) { 86 if (processMapper.selectById(id) == null) {
80 throw exception(PRO_PROCESS_NOT_EXISTS); 87 throw exception(PRO_PROCESS_NOT_EXISTS);
81 } 88 }
@@ -114,7 +121,10 @@ public class MesProProcessServiceImpl implements MesProProcessService { @@ -114,7 +121,10 @@ public class MesProProcessServiceImpl implements MesProProcessService {
114 121
115 @Override 122 @Override
116 public List<MesProProcessDO> getProcessList(List<Long> ids) { 123 public List<MesProProcessDO> getProcessList(List<Long> ids) {
117 - return processMapper.selectBatchIds(ids); 124 + if (CollUtil.isEmpty(ids)) {
  125 + return Collections.emptyList();
  126 + }
  127 + return processMapper.selectByIds(ids);
118 } 128 }
119 129
120 @Override 130 @Override