diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/mapper/ComplexQueryMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/mapper/ComplexQueryMapper.java index 34b9a32b..41c6f6b5 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/mapper/ComplexQueryMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/mapper/ComplexQueryMapper.java @@ -5,6 +5,7 @@ import com.bonus.material.basic.domain.vo.MaTypeSelectInfo; import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Set; /** * @Author ma_sh @@ -159,4 +160,6 @@ public interface ComplexQueryMapper { * @return */ List getPersonNum(RetainedEquipmentInfo bean); + + List batchSelectInfo(@Param("list") Set leaseIds); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/service/impl/ComplexQueryServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/service/impl/ComplexQueryServiceImpl.java index 097b7ffb..76f0cdc9 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/service/impl/ComplexQueryServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/service/impl/ComplexQueryServiceImpl.java @@ -375,12 +375,9 @@ public class ComplexQueryServiceImpl implements ComplexQueryService { @Override public List getUserRecords(UseStorageInfo bean) { try { - // 查询库管员 - UseStorageInfo info = complexQueryMapper.selectMaTypeName(bean); List list = complexQueryMapper.getUserRecords(bean); if (CollectionUtils.isNotEmpty(list)) { - for (UseStorageInfo useStorageInfo : list) { - useStorageInfo.setMaKeeper(info.getMaKeeper() == null ? "" : info.getMaKeeper()); + /*for (UseStorageInfo useStorageInfo : list) { // 查询出库信息 if (useStorageInfo.getLeaseId() != null) { UseStorageInfo dto = complexQueryMapper.selectInFo(useStorageInfo); @@ -389,7 +386,35 @@ public class ComplexQueryServiceImpl implements ComplexQueryService { useStorageInfo.setOutTime(dto.getOutTime()); } } + }*/ + // 提取所有非空的leaseId,批量查询出库信息 + Set leaseIds = list.stream() + .map(UseStorageInfo::getLeaseId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + + // 批量查询并缓存结果,减少数据库交互 + Map leaseInfoMap = Collections.emptyMap(); + if (!leaseIds.isEmpty()) { + leaseInfoMap = complexQueryMapper.batchSelectInfo(leaseIds).stream() + .collect(Collectors.toMap( + UseStorageInfo::getLeaseId, + info -> info, + (existing, replacement) -> existing // 遇到重复key时保留第一个值 + )); } + // 批量设置出库信息 + Map finalLeaseInfoMap = leaseInfoMap; + list.forEach(useStorageInfo -> { + Object leaseId = useStorageInfo.getLeaseId(); + if (leaseId != null) { + UseStorageInfo dto = finalLeaseInfoMap.get(leaseId); + if (dto != null) { + useStorageInfo.setCreator(dto.getCreator()); + useStorageInfo.setOutTime(dto.getOutTime()); + } + } + }); String keyWord = bean.getKeyWord(); // 如果关键字不为空,进行过滤 if (!com.bonus.common.core.utils.StringUtils.isBlank(keyWord)) { diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/basic/ComplexQueryMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/basic/ComplexQueryMapper.xml index 7e2948a0..24e3d687 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/basic/ComplexQueryMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/basic/ComplexQueryMapper.xml @@ -550,7 +550,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" mm.ma_code AS maCode, bp.pro_name AS projectName, sai.lease_id AS leaseId, - sai.type_id AS typeId + sai.type_id AS typeId, + GROUP_CONCAT( DISTINCT su.nick_name ORDER BY su.nick_name SEPARATOR ', ' ) AS maKeeper FROM slt_agreement_info sai LEFT JOIN ma_type mt ON mt.type_id = sai.type_id @@ -558,6 +559,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" LEFT JOIN ma_machine mm ON mm.ma_id = sai.ma_id LEFT JOIN bm_agreement_info bai ON bai.agreement_id = sai.agreement_id LEFT JOIN bm_project bp ON bai.project_id = bp.pro_id + LEFT JOIN ma_type_keeper mtk ON sai.type_id = mtk.type_id + LEFT JOIN sys_user su ON mtk.user_id = su.user_id WHERE sai.`status` = '0' AND sai.end_time IS NULL @@ -566,6 +569,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND sai.type_id = #{typeId} + GROUP BY + sai.type_id, + sai.ma_id, + bp.pro_id +