Эх сурвалжийг харах

feat: 个人积分包导出excel优化

lixuesong 1 жил өмнө
parent
commit
06f05e2f3b

+ 20 - 6
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmScorePackageController.java

@@ -75,6 +75,7 @@ import java.util.*;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 
@@ -2824,11 +2825,12 @@ public class WmScorePackageController {
 		Map<String, List<WmScorePackageStatus>> packageStatusGroupMap = scorePackageStatusList.stream()
 				.collect(Collectors.groupingBy(WmScorePackageStatus::getPackageId));
 
-		//获取上级包 TODO
-//		Set<String> packageIds = scorePackageList.stream().map(WmScorePackage::getRelationScoreId).collect(Collectors.toSet());
-//		List<WmScorePackage> relationScorePackages = wmScorePackageMapper.selectList(Wrappers.<WmScorePackage>lambdaQuery()
-//				.in(WmScorePackage::getId, packageIds));
-//		relationScorePackages.stream().collect(Collectors.groupingBy(WmScorePackage::getId));
+		//获取上级包
+		Set<String> parentPackageIds = scorePackageList.stream().map(WmScorePackage::getRelationScoreId).collect(Collectors.toSet());
+		List<WmScorePackage> parentPackages = wmScorePackageMapper.selectList(Wrappers.<WmScorePackage>lambdaQuery()
+				.in(WmScorePackage::getId, parentPackageIds));
+		Map<String, WmScorePackage> parentPackageNameMap = parentPackages.stream()
+				.collect(Collectors.toMap(WmScorePackage::getId, Function.identity()));
 
 		// 类型标签
 		List<SysDictItem> dictItems = sysDictItemService.list(Wrappers.<SysDictItem>lambdaQuery()
@@ -2837,6 +2839,16 @@ public class WmScorePackageController {
 		List<SysDictItem> packageType1List = dictItemMap.get("package_type1");
 		List<SysDictItem> packageType2List = dictItemMap.get("package_type2");
 
+		// 结算记录
+		List<WmScorePackageSettleNote> noteList = settleNoteMapper.selectList(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
+				.in(WmScorePackageSettleNote::getPackageId, packageIds));
+		Map<String, List<WmScorePackageSettleNote>> noteMap = noteList.stream()
+				.collect(Collectors.groupingBy(WmScorePackageSettleNote::getPackageId));
+
+		// 有效任务类型
+		List<WmScoreTaskType> taskTypeList = wmScoreTaskTypeMapper.getScoreTaskTypeByScoreId(String.join(",", packageIds));
+		Map<String, List<WmScoreTaskType>> taskTypeMap = taskTypeList.stream().collect(Collectors.groupingBy(WmScoreTaskType::getScoreId));
+
 		List<WmScorePackageExcelModel> excelModelList = new ArrayList<>(scorePackageList.size());
 		for (int i = 0; i < scorePackageList.size(); i++) {
 			WmScorePackage wmScorePackage = scorePackageList.get(i);
@@ -2844,9 +2856,11 @@ public class WmScorePackageController {
 
 			List<WmTask> tasks = taskGoupMap.getOrDefault(wmScorePackage.getId(), new ArrayList<>());
 			List<WmScorePackageStatus> statuses = packageStatusGroupMap.getOrDefault(wmScorePackage.getId(), new ArrayList<>());
+			List<WmScorePackageSettleNote> notes = noteMap.getOrDefault(wmScorePackage.getId(), new ArrayList<>());
+			List<WmScoreTaskType> scoreTaskTypes = taskTypeMap.getOrDefault(wmScorePackage.getId(), new ArrayList<>());
 
 			wmScorePackageService.buildScorePackageSync(wmScorePackage, packageType1, packageType2, tasks, statuses,
-					packageType1List, packageType2List);
+					packageType1List, packageType2List, parentPackageNameMap, notes, scoreTaskTypes);
 
 			WmScorePackageExcelModel excelModel = BeanUtil.copyProperties(wmScorePackage, WmScorePackageExcelModel.class);
 			if (StrUtil.isNotBlank(wmScorePackage.getScorePackageStatus())) {

+ 12 - 4
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmScorePackageService.java

@@ -28,7 +28,9 @@ import com.qunzhixinxi.hnqz.admin.api.entity.WmReportOpt;
 import com.qunzhixinxi.hnqz.admin.api.vo.WmScorePackageVO;
 import com.qunzhixinxi.hnqz.admin.entity.WmDaDrugEntDrugtable;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
+import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageSettleNote;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageStatus;
+import com.qunzhixinxi.hnqz.admin.entity.WmScoreTaskType;
 import com.qunzhixinxi.hnqz.admin.entity.WmTask;
 import com.qunzhixinxi.hnqz.admin.entity.dto.UnpackDTO;
 import com.qunzhixinxi.hnqz.admin.entity.input.WmScorePackageApiOutput;
@@ -182,15 +184,21 @@ public interface WmScorePackageService extends IService<WmScorePackage> {
 	/**
 	 * 同步处理积分包详情数据
 	 *
-	 * @param wmScorePackage   积分包信息
-	 * @param packageType1     积分包type1
-	 * @param packageType2     积分包type2
+	 * @param wmScorePackage       积分包信息
+	 * @param packageType1         积分包type1
+	 * @param packageType2         积分包type2
 	 * @param tasks
 	 * @param statuses
 	 * @param packageType1List
 	 * @param packageType2List
+	 * @param parentPackageNameMap
+	 * @param notes
+	 * @param scoreTaskTypes
 	 */
-	void buildScorePackageSync(WmScorePackage wmScorePackage, Integer packageType1, Integer packageType2, List<WmTask> tasks, List<WmScorePackageStatus> statuses, List<SysDictItem> packageType1List, List<SysDictItem> packageType2List);
+	void buildScorePackageSync(WmScorePackage wmScorePackage, Integer packageType1, Integer packageType2,
+							   List<WmTask> tasks, List<WmScorePackageStatus> statuses, List<SysDictItem> packageType1List,
+							   List<SysDictItem> packageType2List, Map<String, WmScorePackage> parentPackageNameMap,
+							   List<WmScorePackageSettleNote> notes, List<WmScoreTaskType> scoreTaskTypes);
 
 	void getReportOpt(WmScorePackage wmScorePackage);
 

+ 11 - 16
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageServiceImpl.java

@@ -2524,11 +2524,15 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 	 * @param scorePackageStatusList 领包记录
 	 * @param packageType1List
 	 * @param packageType2List
+	 * @param parentPackageNameMap
+	 * @param notes
+	 * @param scoreTaskTypes
 	 */
 	@Override
 	public void buildScorePackageSync(WmScorePackage scorePackage, Integer packageType1, Integer packageType2,
 									  List<WmTask> taskList, List<WmScorePackageStatus> scorePackageStatusList,
-									  List<SysDictItem> packageType1List, List<SysDictItem> packageType2List) {
+									  List<SysDictItem> packageType1List, List<SysDictItem> packageType2List,
+									  Map<String, WmScorePackage> parentPackageNameMap, List<WmScorePackageSettleNote> notes, List<WmScoreTaskType> scoreTaskTypes) {
 		List<String> reportWaitingCheckStatus = Arrays.asList("0", "1", "2", "3", "4");
 
 		// 审核通过
@@ -2635,9 +2639,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 
 
 		//获取上级包
-		WmScorePackage relationScorePackage = wmScorePackageMapper.selectOne(Wrappers.<WmScorePackage>lambdaQuery()
-				.eq(WmScorePackage::getId, scorePackage.getRelationScoreId()).last("limit 1"));
-
+		WmScorePackage relationScorePackage = parentPackageNameMap.get(scorePackage.getRelationScoreId());
 
 		// 类型标签
 		SysDictItem package_type1 = packageType1List.stream()
@@ -2673,8 +2675,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 
 
 		// 结算记录
-		WmScorePackageSettleNote note = settleNoteMapper.selectOne(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
-				.eq(WmScorePackageSettleNote::getPackageId, scorePackage.getId()).last("limit 1"));
+		WmScorePackageSettleNote note = CollUtil.isNotEmpty(notes) ? notes.get(0) : null;
 
 		scorePackage.setSettleAmount(null);
 		if (note != null) {
@@ -2688,13 +2689,8 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 
 		if (packageType2 == 2) {
 
-
-			int wsNum = settleNoteMapper.selectCount(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
-					.eq(WmScorePackageSettleNote::getPackageId, scorePackage.getId())
-					.in(WmScorePackageSettleNote::getSettleNoteStatus, 2, 9));
-			int asNum = settleNoteMapper.selectCount(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
-					.eq(WmScorePackageSettleNote::getPackageId, scorePackage.getId())
-					.eq(WmScorePackageSettleNote::getSettleNoteStatus, 1));
+			int wsNum = (int) notes.stream().filter(n -> Arrays.asList(2, 9).contains(n.getSettleNoteStatus())).count();
+			int asNum = (int) notes.stream().filter(n -> Arrays.asList(1).contains(n.getSettleNoteStatus())).count();
 			scorePackage.setWsTaskNum(wsNum);
 			scorePackage.setAsTaskNum(asNum);
 
@@ -2709,9 +2705,8 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 			}
 		}
 
-		List<WmScoreTaskType> taskTypeList = wmScoreTaskTypeMapper.getScoreTaskTypeByScoreId(scorePackage.getId());
-		if (CollUtil.isNotEmpty(taskTypeList)) {
-			String taskTypes = taskTypeList.stream().map(
+		if (CollUtil.isNotEmpty(scoreTaskTypes)) {
+			String taskTypes = scoreTaskTypes.stream().map(
 					WmScoreTaskType::getTaskTypeName).collect(Collectors.joining(","));
 			scorePackage.setTaskTypes(taskTypes);
 		}