Commit 9d57d6c721e473d41e3b2808dacc40b88f89cd18
1 parent
68cbb1ac
review(mes):qc-template 的代码实现,功能测试
Showing
2 changed files
with
147 additions
and
27 deletions
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/MesQcTemplateService.java
| ... | ... | @@ -2,14 +2,15 @@ package cn.iocoder.yudao.module.mes.service.qc; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | 4 | import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.MesQcTemplatePageReqVO; |
| 5 | +import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.MesQcTemplateRespVO; | |
| 5 | 6 | import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.MesQcTemplateSaveReqVO; |
| 6 | 7 | import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.indicator.MesQcTemplateIndicatorPageReqVO; |
| 8 | +import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.indicator.MesQcTemplateIndicatorRespVO; | |
| 7 | 9 | import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.indicator.MesQcTemplateIndicatorSaveReqVO; |
| 8 | 10 | import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.item.MesQcTemplateItemPageReqVO; |
| 11 | +import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.item.MesQcTemplateItemRespVO; | |
| 9 | 12 | import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.item.MesQcTemplateItemSaveReqVO; |
| 10 | 13 | import cn.iocoder.yudao.module.mes.dal.dataobject.qc.MesQcTemplateDO; |
| 11 | -import cn.iocoder.yudao.module.mes.dal.dataobject.qc.MesQcTemplateIndicatorDO; | |
| 12 | -import cn.iocoder.yudao.module.mes.dal.dataobject.qc.MesQcTemplateItemDO; | |
| 13 | 14 | import jakarta.validation.Valid; |
| 14 | 15 | |
| 15 | 16 | import java.util.Collection; |
| ... | ... | @@ -53,9 +54,9 @@ public interface MesQcTemplateService { |
| 53 | 54 | * 获得质检方案 |
| 54 | 55 | * |
| 55 | 56 | * @param id 编号 |
| 56 | - * @return 质检方案 | |
| 57 | + * @return 质检方案 RespVO(含 types List、enableFlag Boolean) | |
| 57 | 58 | */ |
| 58 | - MesQcTemplateDO getTemplate(Long id); | |
| 59 | + MesQcTemplateRespVO getTemplate(Long id); | |
| 59 | 60 | |
| 60 | 61 | /** |
| 61 | 62 | * 获得质检方案分页 |
| ... | ... | @@ -63,12 +64,12 @@ public interface MesQcTemplateService { |
| 63 | 64 | * @param pageReqVO 分页查询 |
| 64 | 65 | * @return 质检方案分页 |
| 65 | 66 | */ |
| 66 | - PageResult<MesQcTemplateDO> getTemplatePage(MesQcTemplatePageReqVO pageReqVO); | |
| 67 | + PageResult<MesQcTemplateRespVO> getTemplatePage(MesQcTemplatePageReqVO pageReqVO); | |
| 67 | 68 | |
| 68 | 69 | /** |
| 69 | 70 | * 获得质检方案列表(用于下拉选择) |
| 70 | 71 | * |
| 71 | - * @return 质检方案列表 | |
| 72 | + * @return 质检方案列表(DO,简单列表场景) | |
| 72 | 73 | */ |
| 73 | 74 | List<MesQcTemplateDO> getTemplateList(); |
| 74 | 75 | |
| ... | ... | @@ -118,17 +119,17 @@ public interface MesQcTemplateService { |
| 118 | 119 | * 获得检测指标项 |
| 119 | 120 | * |
| 120 | 121 | * @param id 编号 |
| 121 | - * @return 检测指标项 | |
| 122 | + * @return 检测指标项(含 JOIN 的指标信息) | |
| 122 | 123 | */ |
| 123 | - MesQcTemplateIndicatorDO getTemplateIndicator(Long id); | |
| 124 | + MesQcTemplateIndicatorRespVO getTemplateIndicator(Long id); | |
| 124 | 125 | |
| 125 | 126 | /** |
| 126 | 127 | * 获得检测指标项分页 |
| 127 | 128 | * |
| 128 | 129 | * @param pageReqVO 分页查询 |
| 129 | - * @return 检测指标项分页 | |
| 130 | + * @return 检测指标项分页(含 JOIN 的指标信息) | |
| 130 | 131 | */ |
| 131 | - PageResult<MesQcTemplateIndicatorDO> getTemplateIndicatorPage(MesQcTemplateIndicatorPageReqVO pageReqVO); | |
| 132 | + PageResult<MesQcTemplateIndicatorRespVO> getTemplateIndicatorPage(MesQcTemplateIndicatorPageReqVO pageReqVO); | |
| 132 | 133 | |
| 133 | 134 | // ========== 质检方案-产品关联 ========== |
| 134 | 135 | |
| ... | ... | @@ -158,16 +159,16 @@ public interface MesQcTemplateService { |
| 158 | 159 | * 获得产品关联 |
| 159 | 160 | * |
| 160 | 161 | * @param id 编号 |
| 161 | - * @return 产品关联 | |
| 162 | + * @return 产品关联(含 JOIN 的物料信息) | |
| 162 | 163 | */ |
| 163 | - MesQcTemplateItemDO getTemplateItem(Long id); | |
| 164 | + MesQcTemplateItemRespVO getTemplateItem(Long id); | |
| 164 | 165 | |
| 165 | 166 | /** |
| 166 | 167 | * 获得产品关联分页 |
| 167 | 168 | * |
| 168 | 169 | * @param pageReqVO 分页查询 |
| 169 | - * @return 产品关联分页 | |
| 170 | + * @return 产品关联分页(含 JOIN 的物料信息) | |
| 170 | 171 | */ |
| 171 | - PageResult<MesQcTemplateItemDO> getTemplateItemPage(MesQcTemplateItemPageReqVO pageReqVO); | |
| 172 | + PageResult<MesQcTemplateItemRespVO> getTemplateItemPage(MesQcTemplateItemPageReqVO pageReqVO); | |
| 172 | 173 | |
| 173 | 174 | } | ... | ... |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/MesQcTemplateServiceImpl.java
| ... | ... | @@ -2,17 +2,27 @@ package cn.iocoder.yudao.module.mes.service.qc; |
| 2 | 2 | |
| 3 | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | 4 | import cn.hutool.core.util.ObjUtil; |
| 5 | +import cn.hutool.core.util.StrUtil; | |
| 5 | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | 7 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| 7 | 8 | import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.MesQcTemplatePageReqVO; |
| 9 | +import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.MesQcTemplateRespVO; | |
| 8 | 10 | import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.MesQcTemplateSaveReqVO; |
| 9 | 11 | import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.indicator.MesQcTemplateIndicatorPageReqVO; |
| 12 | +import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.indicator.MesQcTemplateIndicatorRespVO; | |
| 10 | 13 | import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.indicator.MesQcTemplateIndicatorSaveReqVO; |
| 11 | 14 | import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.item.MesQcTemplateItemPageReqVO; |
| 15 | +import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.item.MesQcTemplateItemRespVO; | |
| 12 | 16 | import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.item.MesQcTemplateItemSaveReqVO; |
| 17 | +import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; | |
| 18 | +import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; | |
| 19 | +import cn.iocoder.yudao.module.mes.dal.dataobject.qc.MesQcIndicatorDO; | |
| 13 | 20 | import cn.iocoder.yudao.module.mes.dal.dataobject.qc.MesQcTemplateDO; |
| 14 | 21 | import cn.iocoder.yudao.module.mes.dal.dataobject.qc.MesQcTemplateIndicatorDO; |
| 15 | 22 | import cn.iocoder.yudao.module.mes.dal.dataobject.qc.MesQcTemplateItemDO; |
| 23 | +import cn.iocoder.yudao.module.mes.dal.mysql.md.item.MesMdItemMapper; | |
| 24 | +import cn.iocoder.yudao.module.mes.dal.mysql.md.unitmeasure.MesMdUnitMeasureMapper; | |
| 25 | +import cn.iocoder.yudao.module.mes.dal.mysql.qc.MesQcIndicatorMapper; | |
| 16 | 26 | import cn.iocoder.yudao.module.mes.dal.mysql.qc.MesQcTemplateIndicatorMapper; |
| 17 | 27 | import cn.iocoder.yudao.module.mes.dal.mysql.qc.MesQcTemplateItemMapper; |
| 18 | 28 | import cn.iocoder.yudao.module.mes.dal.mysql.qc.MesQcTemplateMapper; |
| ... | ... | @@ -21,14 +31,15 @@ import org.springframework.stereotype.Service; |
| 21 | 31 | import org.springframework.transaction.annotation.Transactional; |
| 22 | 32 | import org.springframework.validation.annotation.Validated; |
| 23 | 33 | |
| 34 | +import java.util.Arrays; | |
| 24 | 35 | import java.util.Collection; |
| 25 | 36 | import java.util.Collections; |
| 26 | 37 | import java.util.List; |
| 38 | +import java.util.stream.Collectors; | |
| 27 | 39 | |
| 28 | 40 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 29 | 41 | import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; |
| 30 | 42 | |
| 31 | -// TODO @AI:类似别的模块,service 拆分为多个; | |
| 32 | 43 | /** |
| 33 | 44 | * MES 质检方案 Service 实现类 |
| 34 | 45 | * |
| ... | ... | @@ -44,6 +55,12 @@ public class MesQcTemplateServiceImpl implements MesQcTemplateService { |
| 44 | 55 | private MesQcTemplateIndicatorMapper templateIndicatorMapper; |
| 45 | 56 | @Resource |
| 46 | 57 | private MesQcTemplateItemMapper templateItemMapper; |
| 58 | + @Resource | |
| 59 | + private MesQcIndicatorMapper indicatorMapper; | |
| 60 | + @Resource | |
| 61 | + private MesMdItemMapper mdItemMapper; | |
| 62 | + @Resource | |
| 63 | + private MesMdUnitMeasureMapper unitMeasureMapper; | |
| 47 | 64 | |
| 48 | 65 | // ========== 质检方案主表 ========== |
| 49 | 66 | |
| ... | ... | @@ -54,6 +71,8 @@ public class MesQcTemplateServiceImpl implements MesQcTemplateService { |
| 54 | 71 | |
| 55 | 72 | // 插入 |
| 56 | 73 | MesQcTemplateDO template = BeanUtils.toBean(createReqVO, MesQcTemplateDO.class); |
| 74 | + template.setTypes(convertTypesToString(createReqVO.getTypes())); | |
| 75 | + template.setEnableFlag(Boolean.TRUE.equals(createReqVO.getEnableFlag()) ? "Y" : "N"); | |
| 57 | 76 | templateMapper.insert(template); |
| 58 | 77 | return template.getId(); |
| 59 | 78 | } |
| ... | ... | @@ -67,6 +86,8 @@ public class MesQcTemplateServiceImpl implements MesQcTemplateService { |
| 67 | 86 | |
| 68 | 87 | // 更新 |
| 69 | 88 | MesQcTemplateDO updateObj = BeanUtils.toBean(updateReqVO, MesQcTemplateDO.class); |
| 89 | + updateObj.setTypes(convertTypesToString(updateReqVO.getTypes())); | |
| 90 | + updateObj.setEnableFlag(Boolean.TRUE.equals(updateReqVO.getEnableFlag()) ? "Y" : "N"); | |
| 70 | 91 | templateMapper.updateById(updateObj); |
| 71 | 92 | } |
| 72 | 93 | |
| ... | ... | @@ -101,13 +122,21 @@ public class MesQcTemplateServiceImpl implements MesQcTemplateService { |
| 101 | 122 | } |
| 102 | 123 | |
| 103 | 124 | @Override |
| 104 | - public MesQcTemplateDO getTemplate(Long id) { | |
| 105 | - return templateMapper.selectById(id); | |
| 125 | + public MesQcTemplateRespVO getTemplate(Long id) { | |
| 126 | + MesQcTemplateDO do0 = templateMapper.selectById(id); | |
| 127 | + if (do0 == null) { | |
| 128 | + return null; | |
| 129 | + } | |
| 130 | + return convertTemplateRespVO(do0); | |
| 106 | 131 | } |
| 107 | 132 | |
| 108 | 133 | @Override |
| 109 | - public PageResult<MesQcTemplateDO> getTemplatePage(MesQcTemplatePageReqVO pageReqVO) { | |
| 110 | - return templateMapper.selectPage(pageReqVO); | |
| 134 | + public PageResult<MesQcTemplateRespVO> getTemplatePage(MesQcTemplatePageReqVO pageReqVO) { | |
| 135 | + PageResult<MesQcTemplateDO> pageResult = templateMapper.selectPage(pageReqVO); | |
| 136 | + return new PageResult<>( | |
| 137 | + pageResult.getList().stream().map(this::convertTemplateRespVO).collect(Collectors.toList()), | |
| 138 | + pageResult.getTotal() | |
| 139 | + ); | |
| 111 | 140 | } |
| 112 | 141 | |
| 113 | 142 | @Override |
| ... | ... | @@ -123,6 +152,40 @@ public class MesQcTemplateServiceImpl implements MesQcTemplateService { |
| 123 | 152 | return templateMapper.selectByIds(ids); |
| 124 | 153 | } |
| 125 | 154 | |
| 155 | + /** | |
| 156 | + * DO → RespVO:转换 types(String → List<Integer>)和 enableFlag(Y/N → Boolean) | |
| 157 | + */ | |
| 158 | + private MesQcTemplateRespVO convertTemplateRespVO(MesQcTemplateDO do0) { | |
| 159 | + MesQcTemplateRespVO vo = BeanUtils.toBean(do0, MesQcTemplateRespVO.class); | |
| 160 | + vo.setTypes(convertTypesToList(do0.getTypes())); | |
| 161 | + vo.setEnableFlag("Y".equals(do0.getEnableFlag())); | |
| 162 | + return vo; | |
| 163 | + } | |
| 164 | + | |
| 165 | + /** | |
| 166 | + * List<Integer> → 逗号分隔字符串(如 [1,3] → "1,3") | |
| 167 | + */ | |
| 168 | + private String convertTypesToString(List<Integer> types) { | |
| 169 | + if (CollUtil.isEmpty(types)) { | |
| 170 | + return null; | |
| 171 | + } | |
| 172 | + return types.stream().map(String::valueOf).collect(Collectors.joining(",")); | |
| 173 | + } | |
| 174 | + | |
| 175 | + /** | |
| 176 | + * 逗号分隔字符串 → List<Integer>(如 "1,3" → [1,3]) | |
| 177 | + */ | |
| 178 | + private List<Integer> convertTypesToList(String types) { | |
| 179 | + if (StrUtil.isBlank(types)) { | |
| 180 | + return Collections.emptyList(); | |
| 181 | + } | |
| 182 | + return Arrays.stream(types.split(",")) | |
| 183 | + .map(String::trim) | |
| 184 | + .filter(StrUtil::isNotBlank) | |
| 185 | + .map(Integer::parseInt) | |
| 186 | + .collect(Collectors.toList()); | |
| 187 | + } | |
| 188 | + | |
| 126 | 189 | // ========== 质检方案-检测指标项 ========== |
| 127 | 190 | |
| 128 | 191 | @Override |
| ... | ... | @@ -161,13 +224,38 @@ public class MesQcTemplateServiceImpl implements MesQcTemplateService { |
| 161 | 224 | } |
| 162 | 225 | |
| 163 | 226 | @Override |
| 164 | - public MesQcTemplateIndicatorDO getTemplateIndicator(Long id) { | |
| 165 | - return templateIndicatorMapper.selectById(id); | |
| 227 | + public MesQcTemplateIndicatorRespVO getTemplateIndicator(Long id) { | |
| 228 | + MesQcTemplateIndicatorDO do0 = templateIndicatorMapper.selectById(id); | |
| 229 | + if (do0 == null) { | |
| 230 | + return null; | |
| 231 | + } | |
| 232 | + return convertIndicatorRespVO(do0); | |
| 166 | 233 | } |
| 167 | 234 | |
| 168 | 235 | @Override |
| 169 | - public PageResult<MesQcTemplateIndicatorDO> getTemplateIndicatorPage(MesQcTemplateIndicatorPageReqVO pageReqVO) { | |
| 170 | - return templateIndicatorMapper.selectPage(pageReqVO); | |
| 236 | + public PageResult<MesQcTemplateIndicatorRespVO> getTemplateIndicatorPage(MesQcTemplateIndicatorPageReqVO pageReqVO) { | |
| 237 | + PageResult<MesQcTemplateIndicatorDO> pageResult = templateIndicatorMapper.selectPage(pageReqVO); | |
| 238 | + return new PageResult<>( | |
| 239 | + pageResult.getList().stream().map(this::convertIndicatorRespVO).collect(Collectors.toList()), | |
| 240 | + pageResult.getTotal() | |
| 241 | + ); | |
| 242 | + } | |
| 243 | + | |
| 244 | + /** | |
| 245 | + * DO → RespVO:JOIN mes_qc_indicator 补充检测项信息 | |
| 246 | + */ | |
| 247 | + private MesQcTemplateIndicatorRespVO convertIndicatorRespVO(MesQcTemplateIndicatorDO do0) { | |
| 248 | + MesQcTemplateIndicatorRespVO vo = BeanUtils.toBean(do0, MesQcTemplateIndicatorRespVO.class); | |
| 249 | + if (do0.getIndicatorId() != null) { | |
| 250 | + MesQcIndicatorDO indicator = indicatorMapper.selectById(do0.getIndicatorId()); | |
| 251 | + if (indicator != null) { | |
| 252 | + vo.setIndicatorCode(indicator.getCode()); | |
| 253 | + vo.setIndicatorName(indicator.getName()); | |
| 254 | + vo.setIndicatorType(indicator.getType()); | |
| 255 | + vo.setIndicatorTool(indicator.getTool()); | |
| 256 | + } | |
| 257 | + } | |
| 258 | + return vo; | |
| 171 | 259 | } |
| 172 | 260 | |
| 173 | 261 | // ========== 质检方案-产品关联 ========== |
| ... | ... | @@ -222,13 +310,44 @@ public class MesQcTemplateServiceImpl implements MesQcTemplateService { |
| 222 | 310 | } |
| 223 | 311 | |
| 224 | 312 | @Override |
| 225 | - public MesQcTemplateItemDO getTemplateItem(Long id) { | |
| 226 | - return templateItemMapper.selectById(id); | |
| 313 | + public MesQcTemplateItemRespVO getTemplateItem(Long id) { | |
| 314 | + MesQcTemplateItemDO do0 = templateItemMapper.selectById(id); | |
| 315 | + if (do0 == null) { | |
| 316 | + return null; | |
| 317 | + } | |
| 318 | + return convertItemRespVO(do0); | |
| 227 | 319 | } |
| 228 | 320 | |
| 229 | 321 | @Override |
| 230 | - public PageResult<MesQcTemplateItemDO> getTemplateItemPage(MesQcTemplateItemPageReqVO pageReqVO) { | |
| 231 | - return templateItemMapper.selectPage(pageReqVO); | |
| 322 | + public PageResult<MesQcTemplateItemRespVO> getTemplateItemPage(MesQcTemplateItemPageReqVO pageReqVO) { | |
| 323 | + PageResult<MesQcTemplateItemDO> pageResult = templateItemMapper.selectPage(pageReqVO); | |
| 324 | + return new PageResult<>( | |
| 325 | + pageResult.getList().stream().map(this::convertItemRespVO).collect(Collectors.toList()), | |
| 326 | + pageResult.getTotal() | |
| 327 | + ); | |
| 328 | + } | |
| 329 | + | |
| 330 | + /** | |
| 331 | + * DO → RespVO:JOIN mes_md_item 补充物料信息,JOIN mes_md_unit_measure 补充单位名称 | |
| 332 | + */ | |
| 333 | + private MesQcTemplateItemRespVO convertItemRespVO(MesQcTemplateItemDO do0) { | |
| 334 | + MesQcTemplateItemRespVO vo = BeanUtils.toBean(do0, MesQcTemplateItemRespVO.class); | |
| 335 | + if (do0.getItemId() != null) { | |
| 336 | + MesMdItemDO item = mdItemMapper.selectById(do0.getItemId()); | |
| 337 | + if (item != null) { | |
| 338 | + vo.setItemCode(item.getCode()); | |
| 339 | + vo.setItemName(item.getName()); | |
| 340 | + vo.setSpecification(item.getSpecification()); | |
| 341 | + // 查询计量单位名称 | |
| 342 | + if (item.getUnitMeasureId() != null) { | |
| 343 | + MesMdUnitMeasureDO unit = unitMeasureMapper.selectById(item.getUnitMeasureId()); | |
| 344 | + if (unit != null) { | |
| 345 | + vo.setUnitMeasureName(unit.getName()); | |
| 346 | + } | |
| 347 | + } | |
| 348 | + } | |
| 349 | + } | |
| 350 | + return vo; | |
| 232 | 351 | } |
| 233 | 352 | |
| 234 | 353 | } | ... | ... |