package cn.iocoder.yudao.module.mes.service.qc.pendinginspect; import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils; import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; import cn.iocoder.yudao.module.mes.controller.admin.qc.pendinginspect.vo.MesQcPendingInspectPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.qc.pendinginspect.vo.MesQcPendingInspectRespVO; import cn.iocoder.yudao.module.mes.dal.mysql.qc.pendinginspect.MesQcPendingInspectMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen; /** * MES 待检任务 Service 实现类 */ @Service @Validated public class MesQcPendingInspectServiceImpl implements MesQcPendingInspectService { @Resource private MesQcPendingInspectMapper pendingInspectMapper; @Resource private MdmItemApi mdmItemApi; @Resource private MdmUnitMeasureApi mdmUnitMeasureApi; @Override public PageResult getPendingInspectPage(MesQcPendingInspectPageReqVO pageReqVO) { // 分页查询 IPage page = MyBatisUtils.buildPage(pageReqVO); pendingInspectMapper.selectQcPendingPage(page, pageReqVO.getSourceDocCode(), pageReqVO.getQcType(), pageReqVO.getItemId()); List list = page.getRecords(); // 填充物料信息(来源单据的 item_id 为 MDM 物料 ID) if (CollUtil.isNotEmpty(list)) { Map itemMap = mdmItemApi.getItemMap( convertSet(list, MesQcPendingInspectRespVO::getItemId)); Map unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); list.forEach(vo -> findAndThen(itemMap, vo.getItemId(), item -> { vo.setItemCode(item.getCode()).setItemName(item.getName()).setSpecification(item.getSpecification()); findAndThen(unitMeasureMap, item.getUnitMeasureId(), unitMeasure -> vo.setUnitName(unitMeasure.getName())); })); } // 返回结果 return new PageResult<>(list, page.getTotal()); } }