diff --git a/klp-mes/src/main/java/com/klp/mes/qc/domain/vo/QcInspectionTaskVo.java b/klp-mes/src/main/java/com/klp/mes/qc/domain/vo/QcInspectionTaskVo.java index fb8808bc..80b59e0a 100644 --- a/klp-mes/src/main/java/com/klp/mes/qc/domain/vo/QcInspectionTaskVo.java +++ b/klp-mes/src/main/java/com/klp/mes/qc/domain/vo/QcInspectionTaskVo.java @@ -1,11 +1,14 @@ package com.klp.mes.qc.domain.vo; import java.util.Date; +import java.util.List; + import com.fasterxml.jackson.annotation.JsonFormat; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import com.klp.common.annotation.ExcelDictFormat; import com.klp.common.convert.ExcelDictConvert; +import com.klp.domain.vo.WmsMaterialCoilVo; import lombok.Data; @@ -113,8 +116,9 @@ public class QcInspectionTaskVo { /** * 钢卷ID集合,多个使用英文逗号分隔 */ - @ExcelProperty(value = "钢卷ID集合") private String coilIds; + private List coilList; + } diff --git a/klp-mes/src/main/java/com/klp/mes/qc/service/impl/QcInspectionTaskServiceImpl.java b/klp-mes/src/main/java/com/klp/mes/qc/service/impl/QcInspectionTaskServiceImpl.java index 836f9e12..5b953efb 100644 --- a/klp-mes/src/main/java/com/klp/mes/qc/service/impl/QcInspectionTaskServiceImpl.java +++ b/klp-mes/src/main/java/com/klp/mes/qc/service/impl/QcInspectionTaskServiceImpl.java @@ -7,6 +7,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.klp.common.utils.StringUtils; +import com.klp.domain.bo.WmsMaterialCoilBo; +import com.klp.domain.vo.WmsMaterialCoilVo; +import com.klp.service.IWmsMaterialCoilService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -23,11 +26,8 @@ import com.klp.mes.qc.domain.vo.WmsCheckItemVo; import com.klp.mes.qc.domain.WmsInspectionItemTemplate; import com.klp.mes.qc.mapper.WmsInspectionItemTemplateMapper; -import java.util.List; -import java.util.Map; -import java.util.Collection; -import java.util.ArrayList; -import java.util.Date; +import java.util.*; +import java.util.stream.Collectors; /** * 检验任务主Service业务层处理 @@ -44,6 +44,7 @@ public class QcInspectionTaskServiceImpl implements IQcInspectionTaskService { private final QcInspectionItemMapper inspectionItemMapper; private final WmsCheckItemMapper checkItemMapper; private final WmsInspectionItemTemplateMapper templateMapper; + private final IWmsMaterialCoilService wmsMaterialCoilService; /** * 查询检验任务主 @@ -60,6 +61,51 @@ public class QcInspectionTaskServiceImpl implements IQcInspectionTaskService { public TableDataInfo queryPageList(QcInspectionTaskBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + + // 批量查询钢卷信息,避免N+1查询问题 + if (result.getRecords() != null && !result.getRecords().isEmpty()) { + // 收集所有需要查询的coilIds + List allCoilIdsList = new ArrayList<>(); + for (QcInspectionTaskVo task : result.getRecords()) { + if (StringUtils.isNotBlank(task.getCoilIds())) { + allCoilIdsList.add(task.getCoilIds()); + } + } + + // 如果有需要查询的钢卷ID + if (!allCoilIdsList.isEmpty()) { + // 将所有coilIds合并成一个大的ID列表 + String allCoilIds = String.join(",", allCoilIdsList); + WmsMaterialCoilBo wmsMaterialCoilBo = new WmsMaterialCoilBo(); + wmsMaterialCoilBo.setCoilIds(allCoilIds); + List allCoils = wmsMaterialCoilService.queryList(wmsMaterialCoilBo); + + // 为每个任务设置对应的钢卷列表 + for (QcInspectionTaskVo task : result.getRecords()) { + if (StringUtils.isNotBlank(task.getCoilIds())) { + // 解析该任务的coilIds + String[] coilIdArray = task.getCoilIds().split(","); + List taskCoilIds = new ArrayList<>(); + for (String id : coilIdArray) { + if (StringUtils.isNotBlank(id)) { + try { + taskCoilIds.add(Long.valueOf(id.trim())); + } catch (NumberFormatException e) { + log.warn("无效的钢卷ID: {}", id); + } + } + } + + // 从所有钢卷中筛选出属于当前任务的钢卷 + List taskCoils = allCoils.stream() + .filter(coil -> taskCoilIds.contains(coil.getCoilId())) + .collect(Collectors.toList()); + task.setCoilList(taskCoils); + } + } + } + } + return TableDataInfo.build(result); }