Commit d7b33f00ed91f14b21fa6d63f533f056f460cff3

Authored by YunaiV
1 parent 1ed449c8

✨ feat(mes): 新增点检记录明细的项目类型字段及批量创建功能

新增项目类型字段到点检记录明细响应对象,并在控制器和服务层中实现批量创建点检记录明细的功能。此变更提升了点检记录的灵活性和可扩展性。
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/checkrecord/MesDvCheckRecordLineController.java
... ... @@ -96,10 +96,8 @@ public class MesDvCheckRecordLineController {
96 96 // 2. 拼接 VO
97 97 return BeanUtils.toBean(list, MesDvCheckRecordLineRespVO.class, vo ->
98 98 MapUtils.findAndThen(subjectMap, vo.getSubjectId(), subject -> vo
99   - .setSubjectCode(subject.getCode())
100   - .setSubjectName(subject.getName())
101   - .setSubjectContent(subject.getContent())
102   - .setSubjectStandard(subject.getStandard())));
  99 + .setSubjectCode(subject.getCode()).setSubjectName(subject.getName())
  100 + .setSubjectType(subject.getType()).setSubjectContent(subject.getContent()).setSubjectStandard(subject.getStandard())));
103 101 }
104 102  
105 103 }
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/checkrecord/vo/line/MesDvCheckRecordLineRespVO.java
... ... @@ -33,6 +33,10 @@ public class MesDvCheckRecordLineRespVO {
33 33 @ExcelProperty("项目名称")
34 34 private String subjectName;
35 35  
  36 + @Schema(description = "项目类型", example = "1")
  37 + @ExcelProperty("项目类型")
  38 + private Integer subjectType;
  39 +
36 40 @Schema(description = "检查内容", example = "检查润滑油是否充足")
37 41 @ExcelProperty("检查内容")
38 42 private String subjectContent;
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/checkrecord/MesDvCheckRecordLineService.java
... ... @@ -45,6 +45,13 @@ public interface MesDvCheckRecordLineService {
45 45 void deleteByRecordId(Long recordId);
46 46  
47 47 /**
  48 + * 批量创建点检记录明细
  49 + *
  50 + * @param lines 明细列表
  51 + */
  52 + void createCheckRecordLineList(List<MesDvCheckRecordLineDO> lines);
  53 +
  54 + /**
48 55 * 校验点检记录明细存在
49 56 *
50 57 * @param id 编号
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/checkrecord/MesDvCheckRecordLineServiceImpl.java
... ... @@ -34,8 +34,8 @@ public class MesDvCheckRecordLineServiceImpl implements MesDvCheckRecordLineServ
34 34  
35 35 @Override
36 36 public Long createCheckRecordLine(MesDvCheckRecordLineSaveReqVO createReqVO) {
37   - // 1. 校验点检记录存在
38   - checkRecordService.validateCheckRecordExists(createReqVO.getRecordId());
  37 + // 1. 校验点检记录存在且为草稿状态
  38 + checkRecordService.validateCheckRecordDraft(createReqVO.getRecordId());
39 39  
40 40 // 2. 插入
41 41 MesDvCheckRecordLineDO line = BeanUtils.toBean(createReqVO, MesDvCheckRecordLineDO.class);
... ... @@ -47,8 +47,8 @@ public class MesDvCheckRecordLineServiceImpl implements MesDvCheckRecordLineServ
47 47 public void updateCheckRecordLine(MesDvCheckRecordLineSaveReqVO updateReqVO) {
48 48 // 1.1 校验行存在
49 49 validateCheckRecordLineExists(updateReqVO.getId());
50   - // 1.2 校验点检记录存在
51   - checkRecordService.validateCheckRecordExists(updateReqVO.getRecordId());
  50 + // 1.2 校验点检记录存在且为草稿状态
  51 + checkRecordService.validateCheckRecordDraft(updateReqVO.getRecordId());
52 52  
53 53 // 2. 更新
54 54 MesDvCheckRecordLineDO updateObj = BeanUtils.toBean(updateReqVO, MesDvCheckRecordLineDO.class);
... ... @@ -57,9 +57,16 @@ public class MesDvCheckRecordLineServiceImpl implements MesDvCheckRecordLineServ
57 57  
58 58 @Override
59 59 public void deleteCheckRecordLine(Long id) {
60   - // 校验存在
61   - validateCheckRecordLineExists(id);
62   - // 删除
  60 + // 1. 校验存在
  61 + // TODO @AI:复用 validateCheckRecordLineExists 方法;
  62 + MesDvCheckRecordLineDO line = checkRecordLineMapper.selectById(id);
  63 + if (line == null) {
  64 + throw exception(DV_CHECK_RECORD_LINE_NOT_EXISTS);
  65 + }
  66 +
  67 + // 2. 校验父记录为草稿状态
  68 + checkRecordService.validateCheckRecordDraft(line.getRecordId());
  69 + // 3. 删除
63 70 checkRecordLineMapper.deleteById(id);
64 71 }
65 72  
... ... @@ -69,6 +76,11 @@ public class MesDvCheckRecordLineServiceImpl implements MesDvCheckRecordLineServ
69 76 }
70 77  
71 78 @Override
  79 + public void createCheckRecordLineList(List<MesDvCheckRecordLineDO> lines) {
  80 + checkRecordLineMapper.insertBatch(lines);
  81 + }
  82 +
  83 + @Override
72 84 public void validateCheckRecordLineExists(Long id) {
73 85 if (checkRecordLineMapper.selectById(id) == null) {
74 86 throw exception(DV_CHECK_RECORD_LINE_NOT_EXISTS);
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/checkrecord/MesDvCheckRecordService.java
... ... @@ -51,6 +51,13 @@ public interface MesDvCheckRecordService {
51 51 void validateCheckRecordExists(Long id);
52 52  
53 53 /**
  54 + * 校验点检记录为草稿状态
  55 + *
  56 + * @param id 编号
  57 + */
  58 + void validateCheckRecordDraft(Long id);
  59 +
  60 + /**
54 61 * 获得指定设备的点检记录数量
55 62 *
56 63 * @param machineryId 设备编号
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/checkrecord/MesDvCheckRecordServiceImpl.java
... ... @@ -11,12 +11,13 @@ import cn.iocoder.yudao.module.mes.dal.dataobject.dv.checkrecord.MesDvCheckRecor
11 11 import cn.iocoder.yudao.module.mes.dal.dataobject.dv.checkrecord.MesDvCheckRecordLineDO;
12 12 import cn.iocoder.yudao.module.mes.enums.dv.MesDvCheckRecordStatusEnum;
13 13 import cn.iocoder.yudao.module.mes.enums.dv.MesDvCheckResultEnum;
14   -import cn.iocoder.yudao.module.mes.dal.mysql.dv.checkrecord.MesDvCheckRecordLineMapper;
15 14 import cn.iocoder.yudao.module.mes.dal.mysql.dv.checkrecord.MesDvCheckRecordMapper;
16 15 import cn.iocoder.yudao.module.mes.service.dv.checkplan.MesDvCheckPlanService;
17 16 import cn.iocoder.yudao.module.mes.service.dv.checkplan.MesDvCheckPlanSubjectService;
18 17 import cn.iocoder.yudao.module.mes.service.dv.machinery.MesDvMachineryService;
  18 +import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
19 19 import jakarta.annotation.Resource;
  20 +import org.springframework.context.annotation.Lazy;
20 21 import org.springframework.stereotype.Service;
21 22 import org.springframework.transaction.annotation.Transactional;
22 23 import org.springframework.validation.annotation.Validated;
... ... @@ -39,19 +40,22 @@ public class MesDvCheckRecordServiceImpl implements MesDvCheckRecordService {
39 40 @Resource
40 41 private MesDvCheckRecordMapper checkRecordMapper;
41 42 @Resource
42   - private MesDvCheckRecordLineMapper checkRecordLineMapper;
  43 + @Lazy
  44 + private MesDvCheckRecordLineService checkRecordLineService;
43 45 @Resource
44 46 private MesDvMachineryService machineryService;
45 47 @Resource
46 48 private MesDvCheckPlanService checkPlanService;
47 49 @Resource
48 50 private MesDvCheckPlanSubjectService checkPlanSubjectService;
  51 + @Resource
  52 + private AdminUserApi adminUserApi;
49 53  
50 54 @Override
51 55 @Transactional(rollbackFor = Exception.class)
52 56 public Long createCheckRecord(MesDvCheckRecordSaveReqVO createReqVO) {
53 57 // 1. 校验关联数据
54   - validateCheckRecordRelation(createReqVO);
  58 + validateCheckRecordSave(createReqVO);
55 59  
56 60 // 2. 插入主记录,状态默认为草稿
57 61 MesDvCheckRecordDO checkRecord = BeanUtils.toBean(createReqVO, MesDvCheckRecordDO.class)
... ... @@ -69,16 +73,17 @@ public class MesDvCheckRecordServiceImpl implements MesDvCheckRecordService {
69 73 @Transactional(rollbackFor = Exception.class)
70 74 public void updateCheckRecord(MesDvCheckRecordSaveReqVO updateReqVO) {
71 75 // 1.1 校验存在 + 状态为草稿
72   - MesDvCheckRecordDO existRecord = validateCheckRecordDraft(updateReqVO.getId());
  76 + validateCheckRecordDraft(updateReqVO.getId());
73 77 // 1.2 校验关联数据
74   - validateCheckRecordRelation(updateReqVO);
  78 + validateCheckRecordSave(updateReqVO);
75 79  
76 80 // 2. 如果计划变更,删除旧明细并重新生成
  81 + MesDvCheckRecordDO existRecord = checkRecordMapper.selectById(updateReqVO.getId());
77 82 Long oldPlanId = existRecord.getPlanId();
78 83 Long newPlanId = updateReqVO.getPlanId();
79   - boolean planChanged = !java.util.Objects.equals(oldPlanId, newPlanId);
  84 + boolean planChanged = ObjUtil.notEqual(oldPlanId, newPlanId);
80 85 if (planChanged) {
81   - checkRecordLineMapper.deleteByRecordId(updateReqVO.getId());
  86 + checkRecordLineService.deleteByRecordId(updateReqVO.getId());
82 87 if (newPlanId != null) {
83 88 generateCheckRecordLines(updateReqVO.getId(), newPlanId);
84 89 }
... ... @@ -94,7 +99,7 @@ public class MesDvCheckRecordServiceImpl implements MesDvCheckRecordService {
94 99 // 1.1 校验状态为草稿
95 100 validateCheckRecordDraft(id);
96 101 // 1.2 校验至少有一条明细
97   - List<MesDvCheckRecordLineDO> lines = checkRecordLineMapper.selectListByRecordId(id);
  102 + List<MesDvCheckRecordLineDO> lines = checkRecordLineService.getCheckRecordLineListByRecordId(id);
98 103 if (CollUtil.isEmpty(lines)) {
99 104 throw exception(DV_CHECK_RECORD_NO_LINE);
100 105 }
... ... @@ -114,7 +119,7 @@ public class MesDvCheckRecordServiceImpl implements MesDvCheckRecordService {
114 119 // 2.1 删除主记录
115 120 checkRecordMapper.deleteById(id);
116 121 // 2.2 级联删除明细
117   - checkRecordLineMapper.deleteByRecordId(id);
  122 + checkRecordLineService.deleteByRecordId(id);
118 123 }
119 124  
120 125 @Override
... ... @@ -139,12 +144,10 @@ public class MesDvCheckRecordServiceImpl implements MesDvCheckRecordService {
139 144 return checkRecordMapper.selectPage(pageReqVO);
140 145 }
141 146  
142   - // ==================== 私有方法 ====================
  147 + // ==================== 校验方法 ====================
143 148  
144   - /**
145   - * 校验点检记录为草稿状态
146   - */
147   - private MesDvCheckRecordDO validateCheckRecordDraft(Long id) {
  149 + @Override
  150 + public void validateCheckRecordDraft(Long id) {
148 151 MesDvCheckRecordDO record = checkRecordMapper.selectById(id);
149 152 if (record == null) {
150 153 throw exception(DV_CHECK_RECORD_NOT_EXISTS);
... ... @@ -152,16 +155,19 @@ public class MesDvCheckRecordServiceImpl implements MesDvCheckRecordService {
152 155 if (ObjUtil.notEqual(MesDvCheckRecordStatusEnum.DRAFT.getStatus(), record.getStatus())) {
153 156 throw exception(DV_CHECK_RECORD_NOT_DRAFT);
154 157 }
155   - return record;
156 158 }
157 159  
158   - private void validateCheckRecordRelation(MesDvCheckRecordSaveReqVO reqVO) {
  160 + private void validateCheckRecordSave(MesDvCheckRecordSaveReqVO reqVO) {
159 161 // 校验设备是否存在
160 162 machineryService.validateMachineryExists(reqVO.getMachineryId());
161 163 // 校验点检计划是否存在
162 164 if (reqVO.getPlanId() != null) {
163 165 checkPlanService.validateCheckPlanExists(reqVO.getPlanId());
164 166 }
  167 + // 校验点检人是否存在
  168 + if (reqVO.getUserId() != null) {
  169 + adminUserApi.validateUser(reqVO.getUserId());
  170 + }
165 171 }
166 172  
167 173 /**
... ... @@ -178,7 +184,7 @@ public class MesDvCheckRecordServiceImpl implements MesDvCheckRecordService {
178 184 .setRecordId(recordId).setSubjectId(planSubject.getSubjectId())
179 185 .setCheckStatus(MesDvCheckResultEnum.NORMAL.getResult()));
180 186 }
181   - checkRecordLineMapper.insertBatch(lines);
  187 + checkRecordLineService.createCheckRecordLineList(lines);
182 188 }
183 189  
184 190 }
... ...