Parcourir la source

fix: sql超长问题

lixuesong il y a 1 jour
Parent
commit
4dd652a212

+ 3 - 14
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageExportServiceImpl.java

@@ -39,7 +39,6 @@ import com.qunzhixinxi.hnqz.common.core.constant.CommonConstants;
 import com.qunzhixinxi.hnqz.common.core.exception.BizException;
 import com.qunzhixinxi.hnqz.common.core.util.SpringContextHolder;
 import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
-import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -145,20 +144,10 @@ public class WmScorePackageExportServiceImpl implements WmScorePackageExportServ
 		List<String> cPkgIds = scope.getCPkgIds();
 		List<WmScorePackage> childrenPkgs = scope.getChildrenPkgs();
 		Map<Integer, List<WmPackageTaskTypeQty>> pttMap = scope.getPttMap();
+		List<WmScorePackage> pkgs = scope.getPkgs();
 
-		// 获取区域的上级包
-		List<String> parentIds = childrenPkgs.stream()
-				.map(WmScorePackage::getRelationScoreId)
-				.distinct()
-				.sorted()
-				.collect(Collectors.toList());
-
-		Map<String, WmScorePackage> parentPackageMap = scorePackageMapper
-				.selectList(
-						Wrappers.<WmScorePackage>lambdaQuery()
-								.eq(WmScorePackage::getEnableFlag, EnableEnum.ENABLE.val())
-								.in(WmScorePackage::getId, parentIds))
-				.stream()
+		// 区域包
+		Map<String, WmScorePackage> parentPackageMap = pkgs.stream()
 				.collect(Collectors.toMap(WmScorePackage::getId, Function.identity()));
 
 		// 获取全部的任务

+ 25 - 24
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmTaskDetailExportServiceImpl.java

@@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.qunzhixinxi.hnqz.admin.api.constant.enums.EnableEnum;
 import com.qunzhixinxi.hnqz.admin.api.constant.enums.ExportType;
 import com.qunzhixinxi.hnqz.admin.api.constant.enums.PackageStatusEnum;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysCheckChainNodeCheckHistory;
@@ -24,7 +23,6 @@ import com.qunzhixinxi.hnqz.admin.manager.WmPackageExportScope;
 import com.qunzhixinxi.hnqz.admin.manager.WmPackageManager;
 import com.qunzhixinxi.hnqz.admin.mapper.SysCheckChainNodeCheckHistoryMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.SysUserMapper;
-import com.qunzhixinxi.hnqz.admin.mapper.WmScorePackageMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmScorePackageStatusMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmTaskMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmTaskTypeMapper;
@@ -61,7 +59,6 @@ import java.util.stream.Collectors;
 @Service
 @RequiredArgsConstructor
 public class WmTaskDetailExportServiceImpl implements WmTaskDetailExportService {
-	private final WmScorePackageMapper scorePackageMapper;
 	private final WmTaskMapper taskMapper;
 	private final SysCheckChainNodeCheckHistoryMapper checkChainNodeCheckHistoryMapper;
 	private final WmTaskTypeMapper taskTypeMapper;
@@ -140,27 +137,23 @@ public class WmTaskDetailExportServiceImpl implements WmTaskDetailExportService
 		Map<String, WmDaDrugEntDrugtable> drugtableMap = scope.getDrugtableMap();
 		List<String> cPkgIds = scope.getCPkgIds();
 		List<WmScorePackage> childrenPkgs = scope.getChildrenPkgs();
+		List<WmScorePackage> pkgs = scope.getPkgs();
 
-		// 获取区域的上级包
-		List<String> parentIds = childrenPkgs.stream()
-				.map(WmScorePackage::getRelationScoreId)
-				.distinct()
-				.sorted()
-				.collect(Collectors.toList());
-
-		Map<String, WmScorePackage> parentPackageMap = scorePackageMapper
-				.selectList(
-						Wrappers.<WmScorePackage>lambdaQuery()
-								.eq(WmScorePackage::getEnableFlag, EnableEnum.ENABLE.val())
-								.in(WmScorePackage::getId, parentIds))
-				.stream()
+		// 区域包
+		Map<String, WmScorePackage> parentPackageMap = pkgs.stream()
 				.collect(Collectors.toMap(WmScorePackage::getId, Function.identity()));
 
 		// 获取全部的任务
-		List<WmTask> tasks = taskMapper.selectList(
-				Wrappers.<WmTask>lambdaQuery()
-						.in(WmTask::getScorePackageId, cPkgIds)
-						.between(WmTask::getCreateTime, startDate, endDate));
+		List<WmTask> tasks = new ArrayList<>();
+		// 分批次查询
+		List<List<String>> batchCPkgIds = CollUtil.split(cPkgIds, 1000);
+		for (List<String> cPkgIdList : batchCPkgIds) {
+			List<WmTask> subTasks = taskMapper.selectList(
+					Wrappers.<WmTask>lambdaQuery()
+							.in(WmTask::getScorePackageId, cPkgIdList)
+							.between(WmTask::getCreateTime, startDate, endDate));
+			tasks.addAll(subTasks);
+		}
 		if (CollUtil.isEmpty(tasks)) {
 			throw new BizException("数据导出失败,您选择时间范围暂无数据,请修改后重试");
 		}
@@ -207,11 +200,19 @@ public class WmTaskDetailExportServiceImpl implements WmTaskDetailExportService
 				.collect(Collectors.groupingBy(WmTask::getScorePackageId));
 
 		Set<String> taskIds = tasks.stream().map(WmTask::getId).collect(Collectors.toSet());
+
+
 		// 查询审核记录
-		List<SysCheckChainNodeCheckHistory> nodeCheckHistories = checkChainNodeCheckHistoryMapper.selectList(
-				Wrappers.<SysCheckChainNodeCheckHistory>lambdaQuery()
-						.in(SysCheckChainNodeCheckHistory::getTargetId, taskIds)
-						.orderByAsc(SysCheckChainNodeCheckHistory::getHistoryId));
+		List<SysCheckChainNodeCheckHistory> nodeCheckHistories = new ArrayList<>();
+		// 分批次查询
+		List<List<String>> batchTaskIds = CollUtil.split(taskIds, 1000);
+		for (List<String> taskIdList : batchTaskIds) {
+			List<SysCheckChainNodeCheckHistory> subNodeCheckHistories = checkChainNodeCheckHistoryMapper.selectList(
+					Wrappers.<SysCheckChainNodeCheckHistory>lambdaQuery()
+							.in(SysCheckChainNodeCheckHistory::getTargetId, taskIdList)
+							.orderByAsc(SysCheckChainNodeCheckHistory::getHistoryId));
+			nodeCheckHistories.addAll(subNodeCheckHistories);
+		}
 		Map<Integer, List<SysCheckChainNodeCheckHistory>> nodeCheckHistoryMap =
 				nodeCheckHistories.stream().collect(Collectors.groupingBy(SysCheckChainNodeCheckHistory::getTargetId));