Преглед изворни кода

feat: 我的积分-积分记录列表3

李学松 пре 2 година
родитељ
комит
6e287d2183

+ 7 - 2
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/vo/PersonalScoreRecordVO.java

@@ -54,8 +54,8 @@ public class PersonalScoreRecordVO implements Serializable {
 	@Getter
 	@AllArgsConstructor
 	public enum PersonalScoreRecordStatus {
-		PAID("PAID", "6", "已结算积分"),
-		UNPAID("UNPAID", "4,5,7", "待结算积分");
+		PAID("PAID", "6", "1", "已结算积分"),
+		UNPAID("UNPAID", "4,5,7", "0,2,3,4,5,9", "待结算积分");
 
 		/**
 		 * 记录统计状态
@@ -67,6 +67,11 @@ public class PersonalScoreRecordVO implements Serializable {
 		 */
 		private final String scorePackageStatus;
 
+		/**
+		 * 结算状态
+		 */
+		private final String settleStatus;
+
 		/**
 		 * 描述
 		 */

+ 20 - 17
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java

@@ -67,6 +67,7 @@ import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
 import com.qunzhixinxi.hnqz.admin.enums.EnableEnum;
 import com.qunzhixinxi.hnqz.admin.enums.PackageStatusEnum;
 import com.qunzhixinxi.hnqz.admin.enums.PackageTypeEnum;
+import com.qunzhixinxi.hnqz.admin.enums.SettleStatusEnum;
 import com.qunzhixinxi.hnqz.admin.enums.SubjectLocation;
 import com.qunzhixinxi.hnqz.admin.enums.SubjectTypeEnum;
 import com.qunzhixinxi.hnqz.admin.enums.TaskStatusEnum;
@@ -696,22 +697,17 @@ public class ApiController {
 			if (CollUtil.isNotEmpty(ids)) {
 				List<WmScorePackage> packages = wmScorePackageService.listByIds(ids);
 
-				// 记录统计状态对应的 积分包状态
 				// 已结算
-				List<String> paidStatuses = Collections.singletonList(PersonalScoreRecordVO.PersonalScoreRecordStatus.PAID.getScorePackageStatus());
+				paid = packages.stream()
+						.filter(pkg -> PersonalScoreRecordVO.PersonalScoreRecordStatus.PAID.getSettleStatus().equals(String.valueOf(pkg.getSettleStatus())))
+						.map(WmScorePackage::getScore)
+						.reduce(0, Integer::sum);
 				// 待结算
-				List<String> unpaidStatuses = StrUtil.split(PersonalScoreRecordVO.PersonalScoreRecordStatus.UNPAID.getScorePackageStatus(), StrUtil.COMMA);
-
-				Map<PersonalScoreRecordVO.PersonalScoreRecordStatus, Integer> collect = packages.stream()
-						.filter(pkg -> paidStatuses.contains(pkg.getScorePackageStatus()) || unpaidStatuses.contains(pkg.getScorePackageStatus()))
-						.collect(Collectors.groupingBy(wmScorePackage -> PersonalScoreRecordVO.PersonalScoreRecordStatus.getByScorePackageStatus(wmScorePackage.getScorePackageStatus())))
-						.entrySet().stream()
-						.collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().stream().mapToInt(WmScorePackage::getScore).sum()));
-
-				if (CollUtil.isNotEmpty(collect)) {
-					paid = collect.get(PersonalScoreRecordVO.PersonalScoreRecordStatus.PAID) != null ? collect.get(PersonalScoreRecordVO.PersonalScoreRecordStatus.PAID) : 0;
-					unpaid = collect.get(PersonalScoreRecordVO.PersonalScoreRecordStatus.UNPAID) != null ? collect.get(PersonalScoreRecordVO.PersonalScoreRecordStatus.UNPAID) : 0;
-				}
+				unpaid = packages.stream()
+						.filter(pkg -> !PersonalScoreRecordVO.PersonalScoreRecordStatus.PAID.getSettleStatus().equals(String.valueOf(pkg.getSettleStatus())))
+						.filter(pkg -> StrUtil.split(PersonalScoreRecordVO.PersonalScoreRecordStatus.UNPAID.getScorePackageStatus(), StrUtil.COMMA).contains(pkg.getScorePackageStatus()))
+						.map(WmScorePackage::getScore)
+						.reduce(0, Integer::sum);
 
 			}
 			mapOne.put("paid", paid);
@@ -4401,8 +4397,6 @@ public class ApiController {
 									  @RequestParam(value = "status", required = true) PersonalScoreRecordVO.PersonalScoreRecordStatus status) {
 
 		Integer userId = SecurityUtils.getUser().getId();
-		// 记录统计状态对应的 积分包状态
-		List<String> scorePackageStatuses = StrUtil.split(status.getScorePackageStatus(), StrUtil.COMMA);
 
 		// 获取当前用户任务领包记录
 		List<WmScorePackageStatus> packageStatuses = wmScorePackageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery()
@@ -4417,7 +4411,16 @@ public class ApiController {
 		List<WmScorePackage> packages = wmScorePackageService.listByIds(ids);
 		// 转为map key-积分包id,value-积分包名称
 		Map<String, String> packageMap = packages.stream()
-				.filter(pkg -> scorePackageStatuses.contains(pkg.getScorePackageStatus()))
+				.filter(pkg -> StrUtil.split(status.getScorePackageStatus(), StrUtil.COMMA).contains(pkg.getScorePackageStatus()))
+				.filter(pkg -> {
+					if (PersonalScoreRecordVO.PersonalScoreRecordStatus.PAID.getSettleStatus().equals(String.valueOf(pkg.getSettleStatus()))) {
+						// 如果条件是已结算,则直接返回
+						return true;
+					} else {
+						// 如果是待结算,则过滤掉对应的积分包状态
+						return StrUtil.split(status.getScorePackageStatus(), StrUtil.COMMA).contains(pkg.getScorePackageStatus());
+					}
+				})
 				.collect(Collectors.toMap(WmScorePackage::getId, WmScorePackage::getScorePackageName));
 
 		if (CollUtil.isEmpty(packageMap)) {