Commit be3709eb175f3f00478e78a958a75f2e15248372

Authored by YunaiV
1 parent 0a70bb5c

feat(mes): 规范 qc-template Controller 代码风格

- MesQcTemplateIndicatorController:Mapper 注入改为 Service 注入(MesQcIndicatorService、MesMdUnitMeasureService),方法重命名为 buildIndicatorRespVOList,使用 findAndThen 链式设置冗余字段
- MesQcTemplateItemController:同上,MesMdItemService、MesMdUnitMeasureService,方法重命名为 buildItemRespVOList,嵌套 findAndThen 补充物料及单位名称
- MesQcTemplatePageReqVO:enableFlag 改为 Boolean,type 改为 Integer(单值查询)
- MesQcTemplateMapper:selectPage 改用 findInSet 匹配 types 字段,eqIfPresent 匹配 enableFlag
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/template/MesQcTemplateIndicatorController.java
1 1 package cn.iocoder.yudao.module.mes.controller.admin.qc.template;
2 2  
  3 +import cn.hutool.core.collection.CollUtil;
3 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 6 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
... ... @@ -9,8 +10,8 @@ import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.indicator.Mes
9 10 import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
10 11 import cn.iocoder.yudao.module.mes.dal.dataobject.qc.MesQcIndicatorDO;
11 12 import cn.iocoder.yudao.module.mes.dal.dataobject.qc.MesQcTemplateIndicatorDO;
12   -import cn.iocoder.yudao.module.mes.dal.mysql.md.unitmeasure.MesMdUnitMeasureMapper;
13   -import cn.iocoder.yudao.module.mes.dal.mysql.qc.MesQcIndicatorMapper;
  13 +import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
  14 +import cn.iocoder.yudao.module.mes.service.qc.MesQcIndicatorService;
14 15 import cn.iocoder.yudao.module.mes.service.qc.MesQcTemplateService;
15 16 import io.swagger.v3.oas.annotations.Operation;
16 17 import io.swagger.v3.oas.annotations.Parameter;
... ... @@ -21,9 +22,12 @@ import org.springframework.security.access.prepost.PreAuthorize;
21 22 import org.springframework.validation.annotation.Validated;
22 23 import org.springframework.web.bind.annotation.*;
23 24  
  25 +import java.util.Collections;
24 26 import java.util.List;
25   -import java.util.stream.Collectors;
  27 +import java.util.Map;
26 28  
  29 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
  30 +import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen;
27 31 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
28 32  
29 33 @Tag(name = "管理后台 - MES 质检方案-检测指标项")
... ... @@ -35,9 +39,9 @@ public class MesQcTemplateIndicatorController {
35 39 @Resource
36 40 private MesQcTemplateService templateService;
37 41 @Resource
38   - private MesQcIndicatorMapper indicatorMapper;
  42 + private MesQcIndicatorService indicatorService;
39 43 @Resource
40   - private MesMdUnitMeasureMapper unitMeasureMapper;
  44 + private MesMdUnitMeasureService unitMeasureService;
41 45  
42 46 @PostMapping("/create")
43 47 @Operation(summary = "创建质检方案-检测指标项")
... ... @@ -68,8 +72,8 @@ public class MesQcTemplateIndicatorController {
68 72 @Parameter(name = "id", description = "编号", required = true, example = "1024")
69 73 @PreAuthorize("@ss.hasPermission('mes:qc-template:query')")
70 74 public CommonResult<MesQcTemplateIndicatorRespVO> getTemplateIndicator(@RequestParam("id") Long id) {
71   - MesQcTemplateIndicatorDO do0 = templateService.getTemplateIndicator(id);
72   - return success(convertIndicatorRespVO(do0));
  75 + MesQcTemplateIndicatorDO indicator = templateService.getTemplateIndicator(id);
  76 + return success(buildIndicatorRespVOList(Collections.singletonList(indicator)).get(0));
73 77 }
74 78  
75 79 @GetMapping("/page")
... ... @@ -78,40 +82,29 @@ public class MesQcTemplateIndicatorController {
78 82 public CommonResult<PageResult<MesQcTemplateIndicatorRespVO>> getTemplateIndicatorPage(
79 83 @Valid MesQcTemplateIndicatorPageReqVO pageReqVO) {
80 84 PageResult<MesQcTemplateIndicatorDO> pageResult = templateService.getTemplateIndicatorPage(pageReqVO);
81   - List<MesQcTemplateIndicatorRespVO> voList = pageResult.getList().stream()
82   - .map(this::convertIndicatorRespVO)
83   - .collect(Collectors.toList());
84   - return success(new PageResult<>(voList, pageResult.getTotal()));
  85 + return success(new PageResult<>(buildIndicatorRespVOList(pageResult.getList()), pageResult.getTotal()));
85 86 }
86 87  
87   - // TODO @AI:参考别的模块,buildVO;包括注释;
88   - /**
89   - * DO → RespVO:JOIN mes_qc_indicator 补充检测项信息,JOIN mes_md_unit_measure 补充单位名称
90   - */
91   - private MesQcTemplateIndicatorRespVO convertIndicatorRespVO(MesQcTemplateIndicatorDO do0) {
92   - // TODO @AI:应该是批量的操作;
93   - if (do0 == null) {
94   - return null;
95   - }
96   - MesQcTemplateIndicatorRespVO vo = BeanUtils.toBean(do0, MesQcTemplateIndicatorRespVO.class);
97   - // JOIN 质检指标
98   - if (do0.getIndicatorId() != null) {
99   - MesQcIndicatorDO indicator = indicatorMapper.selectById(do0.getIndicatorId());
100   - if (indicator != null) {
101   - vo.setIndicatorCode(indicator.getCode());
102   - vo.setIndicatorName(indicator.getName());
103   - vo.setIndicatorType(indicator.getType());
104   - vo.setIndicatorTool(indicator.getTool());
105   - }
106   - }
107   - // JOIN 计量单位
108   - if (do0.getUnitMeasureId() != null) {
109   - MesMdUnitMeasureDO unit = unitMeasureMapper.selectById(do0.getUnitMeasureId());
110   - if (unit != null) {
111   - vo.setUnitMeasureName(unit.getName());
112   - }
  88 + // ==================== 拼接 VO ====================
  89 +
  90 + private List<MesQcTemplateIndicatorRespVO> buildIndicatorRespVOList(List<MesQcTemplateIndicatorDO> list) {
  91 + if (CollUtil.isEmpty(list)) {
  92 + return Collections.emptyList();
113 93 }
114   - return vo;
  94 + // 批量查询质检指标
  95 + Map<Long, MesQcIndicatorDO> indicatorMap = indicatorService.getIndicatorMap(
  96 + convertSet(list, MesQcTemplateIndicatorDO::getIndicatorId));
  97 + // 批量查询计量单位
  98 + Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
  99 + convertSet(list, MesQcTemplateIndicatorDO::getUnitMeasureId));
  100 + // 拼装 VO
  101 + return BeanUtils.toBean(list, MesQcTemplateIndicatorRespVO.class, vo -> {
  102 + findAndThen(indicatorMap, vo.getIndicatorId(), indicator ->
  103 + vo.setIndicatorCode(indicator.getCode()).setIndicatorName(indicator.getName())
  104 + .setIndicatorType(indicator.getType()).setIndicatorTool(indicator.getTool()));
  105 + findAndThen(unitMeasureMap, vo.getUnitMeasureId(),
  106 + unit -> vo.setUnitMeasureName(unit.getName()));
  107 + });
115 108 }
116 109  
117 110 }
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/template/MesQcTemplateItemController.java
... ... @@ -9,8 +9,8 @@ import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.item.MesQcTem
9 9 import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
10 10 import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
11 11 import cn.iocoder.yudao.module.mes.dal.dataobject.qc.MesQcTemplateItemDO;
12   -import cn.iocoder.yudao.module.mes.dal.mysql.md.item.MesMdItemMapper;
13   -import cn.iocoder.yudao.module.mes.dal.mysql.md.unitmeasure.MesMdUnitMeasureMapper;
  12 +import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
  13 +import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
14 14 import cn.iocoder.yudao.module.mes.service.qc.MesQcTemplateService;
15 15 import io.swagger.v3.oas.annotations.Operation;
16 16 import io.swagger.v3.oas.annotations.Parameter;
... ... @@ -21,9 +21,12 @@ import org.springframework.security.access.prepost.PreAuthorize;
21 21 import org.springframework.validation.annotation.Validated;
22 22 import org.springframework.web.bind.annotation.*;
23 23  
  24 +import java.util.Collections;
24 25 import java.util.List;
25   -import java.util.stream.Collectors;
  26 +import java.util.Map;
26 27  
  28 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
  29 +import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen;
27 30 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
28 31  
29 32 @Tag(name = "管理后台 - MES 质检方案-产品关联")
... ... @@ -35,9 +38,9 @@ public class MesQcTemplateItemController {
35 38 @Resource
36 39 private MesQcTemplateService templateService;
37 40 @Resource
38   - private MesMdItemMapper mdItemMapper;
  41 + private MesMdItemService mdItemService;
39 42 @Resource
40   - private MesMdUnitMeasureMapper unitMeasureMapper;
  43 + private MesMdUnitMeasureService unitMeasureService;
41 44  
42 45 @PostMapping("/create")
43 46 @Operation(summary = "创建质检方案-产品关联")
... ... @@ -68,8 +71,8 @@ public class MesQcTemplateItemController {
68 71 @Parameter(name = "id", description = "编号", required = true, example = "1024")
69 72 @PreAuthorize("@ss.hasPermission('mes:qc-template:query')")
70 73 public CommonResult<MesQcTemplateItemRespVO> getTemplateItem(@RequestParam("id") Long id) {
71   - MesQcTemplateItemDO do0 = templateService.getTemplateItem(id);
72   - return success(convertItemRespVO(do0));
  74 + MesQcTemplateItemDO item = templateService.getTemplateItem(id);
  75 + return success(buildItemRespVOList(Collections.singletonList(item)).get(0));
73 76 }
74 77  
75 78 @GetMapping("/page")
... ... @@ -78,38 +81,29 @@ public class MesQcTemplateItemController {
78 81 public CommonResult<PageResult<MesQcTemplateItemRespVO>> getTemplateItemPage(
79 82 @Valid MesQcTemplateItemPageReqVO pageReqVO) {
80 83 PageResult<MesQcTemplateItemDO> pageResult = templateService.getTemplateItemPage(pageReqVO);
81   - List<MesQcTemplateItemRespVO> voList = pageResult.getList().stream()
82   - .map(this::convertItemRespVO)
83   - .collect(Collectors.toList());
84   - return success(new PageResult<>(voList, pageResult.getTotal()));
  84 + return success(new PageResult<>(buildItemRespVOList(pageResult.getList()), pageResult.getTotal()));
85 85 }
86 86  
87   - // TODO @AI:参考别的模块,buildVO;包括注释;
88   - // 质检方案-产品关联的 VO 构建方法
89   - /**
90   - * DO → RespVO:JOIN mes_md_item 补充物料信息,JOIN mes_md_unit_measure 补充单位名称
91   - */
92   - private MesQcTemplateItemRespVO convertItemRespVO(MesQcTemplateItemDO do0) {
93   - if (do0 == null) {
94   - return null;
95   - }
96   - MesQcTemplateItemRespVO vo = BeanUtils.toBean(do0, MesQcTemplateItemRespVO.class);
97   - if (do0.getItemId() != null) {
98   - MesMdItemDO item = mdItemMapper.selectById(do0.getItemId());
99   - if (item != null) {
100   - vo.setItemCode(item.getCode());
101   - vo.setItemName(item.getName());
102   - vo.setSpecification(item.getSpecification());
103   - // 查询计量单位名称
104   - if (item.getUnitMeasureId() != null) {
105   - MesMdUnitMeasureDO unit = unitMeasureMapper.selectById(item.getUnitMeasureId());
106   - if (unit != null) {
107   - vo.setUnitMeasureName(unit.getName());
108   - }
109   - }
110   - }
  87 + // ==================== 拼接 VO ====================
  88 +
  89 + private List<MesQcTemplateItemRespVO> buildItemRespVOList(List<MesQcTemplateItemDO> list) {
  90 + if (list.isEmpty()) {
  91 + return Collections.emptyList();
111 92 }
112   - return vo;
  93 + // 批量查询物料
  94 + Map<Long, MesMdItemDO> itemMap = mdItemService.getItemMap(
  95 + convertSet(list, MesQcTemplateItemDO::getItemId));
  96 + // 批量查询计量单位
  97 + Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
  98 + convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
  99 + // 拼装 VO
  100 + return BeanUtils.toBean(list, MesQcTemplateItemRespVO.class, vo -> {
  101 + findAndThen(itemMap, vo.getItemId(), item -> {
  102 + vo.setItemCode(item.getCode()).setItemName(item.getName()).setSpecification(item.getSpecification());
  103 + findAndThen(unitMeasureMap, item.getUnitMeasureId(),
  104 + unit -> vo.setUnitMeasureName(unit.getName()));
  105 + });
  106 + });
113 107 }
114 108  
115 109 }
... ...