浏览代码

perf: 优化剩余积分

shc 2 年之前
父节点
当前提交
f4e1eda37c

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

@@ -68,6 +68,7 @@ import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 import static com.qunzhixinxi.hnqz.admin.enums.ReportEnum.REPORT_STATUS_END;
@@ -1178,9 +1179,35 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 
 	}
 
+
+	private WmScorePackage getRemainScore(String pkgId){
+
+		List<WmScorePackage> packages = this.list(Wrappers.<WmScorePackage>lambdaQuery().eq(WmScorePackage::getDelFlag, "0").eq(WmScorePackage::getEnableFlag, "0"));
+
+		// List<WmScorePackage> allParentPkg = packages.stream().filter(p -> Objects.isNull(p.getRelationScoreId())).collect(Collectors.toList());
+
+		Map<String, List<WmScorePackage>> relMap = packages.stream().filter(p -> Objects.nonNull(p.getRelationScoreId())).collect(Collectors.groupingBy(WmScorePackage::getRelationScoreId));
+
+		packages.forEach(p -> {
+			List<WmScorePackage> scorePackages = relMap.get(p.getId());
+			int sum = 0;
+			if (CollUtil.isNotEmpty(scorePackages)){
+				sum = scorePackages.stream().mapToInt(WmScorePackage::getScore).sum();
+			}
+			p.setScore(p.getScore() - sum);
+		});
+
+		return packages.stream().collect(Collectors.toMap(WmScorePackage::getId, Function.identity())).get(pkgId);
+	}
+
 	@Override
 	public R getScorePackagePageById(WmScorePackage wmScorePackage) {
-		wmScorePackage = wmScorePackageMapper.getScorePackagePageById(wmScorePackage.getId());
+
+		wmScorePackage = getRemainScore( wmScorePackage.getId());
+
+		// wmScorePackage = wmScorePackageMapper.getScorePackagePageById(wmScorePackage.getId());
+		//
+
 		//wmScorePackage=this.getById(wmScorePackage.getId());
 		if (StringUtil.isEmpty(wmScorePackage.getRelationScoreId())) {
 			wmScorePackage.setRelationScoreId("-1");