diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/MesQcTemplateService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/MesQcTemplateService.java index ca971b7..cdcf139 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/MesQcTemplateService.java +++ b/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; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.MesQcTemplatePageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.MesQcTemplateRespVO; import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.MesQcTemplateSaveReqVO; import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.indicator.MesQcTemplateIndicatorPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.indicator.MesQcTemplateIndicatorRespVO; import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.indicator.MesQcTemplateIndicatorSaveReqVO; import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.item.MesQcTemplateItemPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.item.MesQcTemplateItemRespVO; import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.item.MesQcTemplateItemSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.qc.MesQcTemplateDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.qc.MesQcTemplateIndicatorDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.qc.MesQcTemplateItemDO; import jakarta.validation.Valid; import java.util.Collection; @@ -53,9 +54,9 @@ public interface MesQcTemplateService { * 获得质检方案 * * @param id 编号 - * @return 质检方案 + * @return 质检方案 RespVO(含 types List、enableFlag Boolean) */ - MesQcTemplateDO getTemplate(Long id); + MesQcTemplateRespVO getTemplate(Long id); /** * 获得质检方案分页 @@ -63,12 +64,12 @@ public interface MesQcTemplateService { * @param pageReqVO 分页查询 * @return 质检方案分页 */ - PageResult getTemplatePage(MesQcTemplatePageReqVO pageReqVO); + PageResult getTemplatePage(MesQcTemplatePageReqVO pageReqVO); /** * 获得质检方案列表(用于下拉选择) * - * @return 质检方案列表 + * @return 质检方案列表(DO,简单列表场景) */ List getTemplateList(); @@ -118,17 +119,17 @@ public interface MesQcTemplateService { * 获得检测指标项 * * @param id 编号 - * @return 检测指标项 + * @return 检测指标项(含 JOIN 的指标信息) */ - MesQcTemplateIndicatorDO getTemplateIndicator(Long id); + MesQcTemplateIndicatorRespVO getTemplateIndicator(Long id); /** * 获得检测指标项分页 * * @param pageReqVO 分页查询 - * @return 检测指标项分页 + * @return 检测指标项分页(含 JOIN 的指标信息) */ - PageResult getTemplateIndicatorPage(MesQcTemplateIndicatorPageReqVO pageReqVO); + PageResult getTemplateIndicatorPage(MesQcTemplateIndicatorPageReqVO pageReqVO); // ========== 质检方案-产品关联 ========== @@ -158,16 +159,16 @@ public interface MesQcTemplateService { * 获得产品关联 * * @param id 编号 - * @return 产品关联 + * @return 产品关联(含 JOIN 的物料信息) */ - MesQcTemplateItemDO getTemplateItem(Long id); + MesQcTemplateItemRespVO getTemplateItem(Long id); /** * 获得产品关联分页 * * @param pageReqVO 分页查询 - * @return 产品关联分页 + * @return 产品关联分页(含 JOIN 的物料信息) */ - PageResult getTemplateItemPage(MesQcTemplateItemPageReqVO pageReqVO); + PageResult getTemplateItemPage(MesQcTemplateItemPageReqVO pageReqVO); } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/MesQcTemplateServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/MesQcTemplateServiceImpl.java index 6404fb9..c65ecf5 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/MesQcTemplateServiceImpl.java +++ b/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; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjUtil; +import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.MesQcTemplatePageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.MesQcTemplateRespVO; import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.MesQcTemplateSaveReqVO; import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.indicator.MesQcTemplateIndicatorPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.indicator.MesQcTemplateIndicatorRespVO; import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.indicator.MesQcTemplateIndicatorSaveReqVO; import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.item.MesQcTemplateItemPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.item.MesQcTemplateItemRespVO; import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.item.MesQcTemplateItemSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.qc.MesQcIndicatorDO; import cn.iocoder.yudao.module.mes.dal.dataobject.qc.MesQcTemplateDO; import cn.iocoder.yudao.module.mes.dal.dataobject.qc.MesQcTemplateIndicatorDO; import cn.iocoder.yudao.module.mes.dal.dataobject.qc.MesQcTemplateItemDO; +import cn.iocoder.yudao.module.mes.dal.mysql.md.item.MesMdItemMapper; +import cn.iocoder.yudao.module.mes.dal.mysql.md.unitmeasure.MesMdUnitMeasureMapper; +import cn.iocoder.yudao.module.mes.dal.mysql.qc.MesQcIndicatorMapper; import cn.iocoder.yudao.module.mes.dal.mysql.qc.MesQcTemplateIndicatorMapper; import cn.iocoder.yudao.module.mes.dal.mysql.qc.MesQcTemplateItemMapper; import cn.iocoder.yudao.module.mes.dal.mysql.qc.MesQcTemplateMapper; @@ -21,14 +31,15 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; -// TODO @AI:类似别的模块,service 拆分为多个; /** * MES 质检方案 Service 实现类 * @@ -44,6 +55,12 @@ public class MesQcTemplateServiceImpl implements MesQcTemplateService { private MesQcTemplateIndicatorMapper templateIndicatorMapper; @Resource private MesQcTemplateItemMapper templateItemMapper; + @Resource + private MesQcIndicatorMapper indicatorMapper; + @Resource + private MesMdItemMapper mdItemMapper; + @Resource + private MesMdUnitMeasureMapper unitMeasureMapper; // ========== 质检方案主表 ========== @@ -54,6 +71,8 @@ public class MesQcTemplateServiceImpl implements MesQcTemplateService { // 插入 MesQcTemplateDO template = BeanUtils.toBean(createReqVO, MesQcTemplateDO.class); + template.setTypes(convertTypesToString(createReqVO.getTypes())); + template.setEnableFlag(Boolean.TRUE.equals(createReqVO.getEnableFlag()) ? "Y" : "N"); templateMapper.insert(template); return template.getId(); } @@ -67,6 +86,8 @@ public class MesQcTemplateServiceImpl implements MesQcTemplateService { // 更新 MesQcTemplateDO updateObj = BeanUtils.toBean(updateReqVO, MesQcTemplateDO.class); + updateObj.setTypes(convertTypesToString(updateReqVO.getTypes())); + updateObj.setEnableFlag(Boolean.TRUE.equals(updateReqVO.getEnableFlag()) ? "Y" : "N"); templateMapper.updateById(updateObj); } @@ -101,13 +122,21 @@ public class MesQcTemplateServiceImpl implements MesQcTemplateService { } @Override - public MesQcTemplateDO getTemplate(Long id) { - return templateMapper.selectById(id); + public MesQcTemplateRespVO getTemplate(Long id) { + MesQcTemplateDO do0 = templateMapper.selectById(id); + if (do0 == null) { + return null; + } + return convertTemplateRespVO(do0); } @Override - public PageResult getTemplatePage(MesQcTemplatePageReqVO pageReqVO) { - return templateMapper.selectPage(pageReqVO); + public PageResult getTemplatePage(MesQcTemplatePageReqVO pageReqVO) { + PageResult pageResult = templateMapper.selectPage(pageReqVO); + return new PageResult<>( + pageResult.getList().stream().map(this::convertTemplateRespVO).collect(Collectors.toList()), + pageResult.getTotal() + ); } @Override @@ -123,6 +152,40 @@ public class MesQcTemplateServiceImpl implements MesQcTemplateService { return templateMapper.selectByIds(ids); } + /** + * DO → RespVO:转换 types(String → List)和 enableFlag(Y/N → Boolean) + */ + private MesQcTemplateRespVO convertTemplateRespVO(MesQcTemplateDO do0) { + MesQcTemplateRespVO vo = BeanUtils.toBean(do0, MesQcTemplateRespVO.class); + vo.setTypes(convertTypesToList(do0.getTypes())); + vo.setEnableFlag("Y".equals(do0.getEnableFlag())); + return vo; + } + + /** + * List → 逗号分隔字符串(如 [1,3] → "1,3") + */ + private String convertTypesToString(List types) { + if (CollUtil.isEmpty(types)) { + return null; + } + return types.stream().map(String::valueOf).collect(Collectors.joining(",")); + } + + /** + * 逗号分隔字符串 → List(如 "1,3" → [1,3]) + */ + private List convertTypesToList(String types) { + if (StrUtil.isBlank(types)) { + return Collections.emptyList(); + } + return Arrays.stream(types.split(",")) + .map(String::trim) + .filter(StrUtil::isNotBlank) + .map(Integer::parseInt) + .collect(Collectors.toList()); + } + // ========== 质检方案-检测指标项 ========== @Override @@ -161,13 +224,38 @@ public class MesQcTemplateServiceImpl implements MesQcTemplateService { } @Override - public MesQcTemplateIndicatorDO getTemplateIndicator(Long id) { - return templateIndicatorMapper.selectById(id); + public MesQcTemplateIndicatorRespVO getTemplateIndicator(Long id) { + MesQcTemplateIndicatorDO do0 = templateIndicatorMapper.selectById(id); + if (do0 == null) { + return null; + } + return convertIndicatorRespVO(do0); } @Override - public PageResult getTemplateIndicatorPage(MesQcTemplateIndicatorPageReqVO pageReqVO) { - return templateIndicatorMapper.selectPage(pageReqVO); + public PageResult getTemplateIndicatorPage(MesQcTemplateIndicatorPageReqVO pageReqVO) { + PageResult pageResult = templateIndicatorMapper.selectPage(pageReqVO); + return new PageResult<>( + pageResult.getList().stream().map(this::convertIndicatorRespVO).collect(Collectors.toList()), + pageResult.getTotal() + ); + } + + /** + * DO → RespVO:JOIN mes_qc_indicator 补充检测项信息 + */ + private MesQcTemplateIndicatorRespVO convertIndicatorRespVO(MesQcTemplateIndicatorDO do0) { + MesQcTemplateIndicatorRespVO vo = BeanUtils.toBean(do0, MesQcTemplateIndicatorRespVO.class); + if (do0.getIndicatorId() != null) { + MesQcIndicatorDO indicator = indicatorMapper.selectById(do0.getIndicatorId()); + if (indicator != null) { + vo.setIndicatorCode(indicator.getCode()); + vo.setIndicatorName(indicator.getName()); + vo.setIndicatorType(indicator.getType()); + vo.setIndicatorTool(indicator.getTool()); + } + } + return vo; } // ========== 质检方案-产品关联 ========== @@ -222,13 +310,44 @@ public class MesQcTemplateServiceImpl implements MesQcTemplateService { } @Override - public MesQcTemplateItemDO getTemplateItem(Long id) { - return templateItemMapper.selectById(id); + public MesQcTemplateItemRespVO getTemplateItem(Long id) { + MesQcTemplateItemDO do0 = templateItemMapper.selectById(id); + if (do0 == null) { + return null; + } + return convertItemRespVO(do0); } @Override - public PageResult getTemplateItemPage(MesQcTemplateItemPageReqVO pageReqVO) { - return templateItemMapper.selectPage(pageReqVO); + public PageResult getTemplateItemPage(MesQcTemplateItemPageReqVO pageReqVO) { + PageResult pageResult = templateItemMapper.selectPage(pageReqVO); + return new PageResult<>( + pageResult.getList().stream().map(this::convertItemRespVO).collect(Collectors.toList()), + pageResult.getTotal() + ); + } + + /** + * DO → RespVO:JOIN mes_md_item 补充物料信息,JOIN mes_md_unit_measure 补充单位名称 + */ + private MesQcTemplateItemRespVO convertItemRespVO(MesQcTemplateItemDO do0) { + MesQcTemplateItemRespVO vo = BeanUtils.toBean(do0, MesQcTemplateItemRespVO.class); + if (do0.getItemId() != null) { + MesMdItemDO item = mdItemMapper.selectById(do0.getItemId()); + if (item != null) { + vo.setItemCode(item.getCode()); + vo.setItemName(item.getName()); + vo.setSpecification(item.getSpecification()); + // 查询计量单位名称 + if (item.getUnitMeasureId() != null) { + MesMdUnitMeasureDO unit = unitMeasureMapper.selectById(item.getUnitMeasureId()); + if (unit != null) { + vo.setUnitMeasureName(unit.getName()); + } + } + } + } + return vo; } }