Procházet zdrojové kódy

fix: 积分包结算管理/结算复核页面sql查询优化

lixuesong před 1 rokem
rodič
revize
3b193f0e6d

+ 5 - 5
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmPayOffController.java

@@ -283,7 +283,7 @@ public class WmPayOffController {
 	 * @param taskIds 任务id
 	 * @return 待提交的信息
 	 */
-	@SysLog("多人承接-按积分值业务结算-查询")
+//	@SysLog("多人承接-按积分值业务结算-查询")
 	@GetMapping("/settle-info-by-taskIds")
 	public R<?> settleInfoByTaskIds(@RequestParam("taskIds") String[] taskIds) {
 
@@ -297,7 +297,7 @@ public class WmPayOffController {
 	 * @param input 参数
 	 * @return 分页结果
 	 */
-	@SysLog("分页查询结算-用于BC")
+//	@SysLog("分页查询结算-用于BC")
 	@GetMapping("/listPackageSettleListForBC")
 	public R<?> listPackageSettleListForBC(Page<WmScorePackageSettleOutput> page, WmScorePackageSettleInput input) {
 
@@ -314,7 +314,7 @@ public class WmPayOffController {
 	 * @param input 参数
 	 * @return 分页结果
 	 */
-	@SysLog("分页查询结算")
+//	@SysLog("分页查询结算")
 	@GetMapping("/listPackageSettleList")
 	public R<?> listPackageSettleList(Page<WmScorePackageSettleOutput> page, WmScorePackageSettleInput input) {
 
@@ -332,7 +332,7 @@ public class WmPayOffController {
 	 * @param input 参数
 	 * @return 分页结果
 	 */
-	@SysLog("分页查询结算")
+//	@SysLog("分页查询结算")
 	@GetMapping("/listMahPackageSettleListForBC")
 	public R<?> listMAHPackageSettleListForBC(Page<WmScorePackageSettleOutput> page, WmScorePackageSettleInput input) {
 
@@ -352,7 +352,7 @@ public class WmPayOffController {
 	 * @param input 参数
 	 * @return 分页结果
 	 */
-	@SysLog("分页查询结算")
+//	@SysLog("分页查询结算")
 	@GetMapping("/listMahPackageSettleList")
 	public R<?> listMAHPackageSettleList(Page<WmScorePackageSettleOutput> page, WmScorePackageSettleInput input) {
 

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

@@ -1857,7 +1857,34 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 		Page<WmScorePackageSettleOutput> settleListPage = wmScorePackageMapper.listPackageSettleList(page, input);
 
 		List<WmScorePackageSettleOutput> settleList = settleListPage.getRecords();
-		this.settleDetail(settleList);
+
+		if (CollUtil.isEmpty(settleList)) {
+			return page;
+		}
+
+		List<String> packageIds = settleList.stream().map(WmScorePackageSettleOutput::getId).collect(Collectors.toList());
+
+		Map<String, List<WmScorePackageStatus>> statusMap = new HashMap<>();
+		List<SysUser> users = new ArrayList<>();
+		// 查询领包记录
+		List<WmScorePackageStatus> packageStatusList = wmScorePackageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery()
+				.in(WmScorePackageStatus::getPackageId, packageIds)
+				.eq(WmScorePackageStatus::getStatus, PackageStatusEnum.APPROVED.val()));
+		if (CollUtil.isNotEmpty(packageStatusList)) {
+			statusMap.putAll(packageStatusList.stream().collect(Collectors.groupingBy(WmScorePackageStatus::getPackageId)));
+
+			Set<String> userIds = packageStatusList.stream().map(WmScorePackageStatus::getUserId).collect(Collectors.toSet());
+			// 查询接单人
+			users = sysUserMapper.selectList(Wrappers.<SysUser>lambdaQuery().in(SysUser::getUserId, userIds));
+		}
+
+		// 查询结算信息
+		List<WmScorePackageSettleNote> packageSettleNoteList = settleNoteMapper.selectList(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
+				.in(WmScorePackageSettleNote::getPackageId, packageIds));
+		Map<String, List<WmScorePackageSettleNote>> settleNoteMap = packageSettleNoteList.stream()
+				.collect(Collectors.groupingBy(WmScorePackageSettleNote::getPackageId));
+
+		this.settleDetail(settleList, statusMap, users, settleNoteMap);
 		return settleListPage;
 	}
 
@@ -3709,7 +3736,34 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 		IPage<WmScorePackageSettleOutput> detailPage = wmScorePackageMapper.pageFinancialReviewDetail(page, query);
 
 		List<WmScorePackageSettleOutput> settleList = detailPage.getRecords();
-		this.settleDetail(settleList);
+
+		if (CollUtil.isEmpty(settleList)) {
+			return page;
+		}
+
+		List<String> packageIds = settleList.stream().map(WmScorePackageSettleOutput::getId).collect(Collectors.toList());
+
+		Map<String, List<WmScorePackageStatus>> statusMap = new HashMap<>();
+		List<SysUser> users = new ArrayList<>();
+		// 查询领包记录
+		List<WmScorePackageStatus> packageStatusList = wmScorePackageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery()
+				.in(WmScorePackageStatus::getPackageId, packageIds)
+				.eq(WmScorePackageStatus::getStatus, PackageStatusEnum.APPROVED.val()));
+		if (CollUtil.isNotEmpty(packageStatusList)) {
+			statusMap.putAll(packageStatusList.stream().collect(Collectors.groupingBy(WmScorePackageStatus::getPackageId)));
+
+			Set<String> userIds = packageStatusList.stream().map(WmScorePackageStatus::getUserId).collect(Collectors.toSet());
+			// 查询接单人
+			users = sysUserMapper.selectList(Wrappers.<SysUser>lambdaQuery().in(SysUser::getUserId, userIds));
+		}
+
+		// 查询结算信息
+		List<WmScorePackageSettleNote> packageSettleNoteList = settleNoteMapper.selectList(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
+				.in(WmScorePackageSettleNote::getPackageId, packageIds));
+		Map<String, List<WmScorePackageSettleNote>> settleNoteMap = packageSettleNoteList.stream()
+				.collect(Collectors.groupingBy(WmScorePackageSettleNote::getPackageId));
+
+		this.settleDetail(settleList, statusMap, users, settleNoteMap);
 
 		return detailPage;
 	}
@@ -3717,31 +3771,31 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 	/**
 	 * 结算数据字段拼接转换
 	 *
-	 * @param settleList 数据列表
+	 * @param settleList    数据列表
+	 * @param statusMap     领包记录map
+	 * @param userList      用户信息
+	 * @param settleNoteMap 结算信息map
 	 */
-	private void settleDetail(List<WmScorePackageSettleOutput> settleList) {
+	private void settleDetail(List<WmScorePackageSettleOutput> settleList, Map<String, List<WmScorePackageStatus>> statusMap,
+							  List<SysUser> userList, Map<String, List<WmScorePackageSettleNote>> settleNoteMap) {
 		for (WmScorePackageSettleOutput ouPut : settleList) {
-			WmScorePackageStatus statusQuery = new WmScorePackageStatus();
-			statusQuery.setPackageId(ouPut.getId());
-			statusQuery.setStatus("2");
-			List<WmScorePackageStatus> statusList = wmScorePackageStatusService.getByPackageId(statusQuery);
-			String userNames = statusList.stream()
-					.map(WmScorePackageStatus::getUserId)
-					.collect(Collectors.joining(","));
-			ouPut.setUserNames(userNames);
+			List<WmScorePackageStatus> statusList = statusMap.get(ouPut.getId());
 
-			Set<String> userIds = statusList.stream().map(WmScorePackageStatus::getTaskUserId).collect(Collectors.toSet());
+			Set<String> userIds = statusList.stream().map(WmScorePackageStatus::getUserId).collect(Collectors.toSet());
 			if (CollUtil.isNotEmpty(userIds)) {
-				List<SysUser> users = sysUserMapper.selectList(Wrappers.<SysUser>lambdaQuery().in(SysUser::getUserId, userIds));
+				List<SysUser> users = userList.stream().filter(user -> userIds.contains(String.valueOf(user.getUserId()))).collect(Collectors.toList());
 				String userPhones = users.stream().map(SysUser::getUsername).collect(Collectors.joining(","));
 				ouPut.setUserPhones(userPhones);
 				// 脱敏的身份证号
 				String idCardNums = users.stream().map(user -> DesensitizedUtil.idCardNum(user.getIdCardNumber(), 5, 4)).collect(Collectors.joining(","));
 				ouPut.setIdCardNums(idCardNums);
+				// 姓名
+				String userNames = users.stream().map(SysUser::getRealname).collect(Collectors.joining(","));
+				ouPut.setUserNames(userNames);
 			}
-			// 查询结算成功时间
-			List<WmScorePackageSettleNote> packageSettleNoteList = settleNoteMapper.selectList(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
-					.eq(WmScorePackageSettleNote::getPackageId, ouPut.getId()));
+
+			// 查询结算信息
+			List<WmScorePackageSettleNote> packageSettleNoteList = settleNoteMap.get(ouPut.getId());
 			if (CollectionUtil.isNotEmpty(packageSettleNoteList)) {
 				WmScorePackageSettleNote settleNote = packageSettleNoteList.get(0);
 				LocalDateTime notifyTime = settleNote.getNotifyTime();