ソースを参照

fix: 可分配积分值计算错误

lixuesong 1 年間 前
コミット
d2b440ff60

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

@@ -3367,7 +3367,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 						.collect(Collectors.groupingBy(WmScorePackage::getRelationScoreId, Collectors.summingInt(WmScorePackage::getScore)));
 			}
 
-			// 查询积分包的任务
+			// 查询当前积分包的直接关联的任务
 			List<WmTask> tasks = wmTaskMapper.selectList(Wrappers.<WmTask>lambdaQuery()
 					.in(WmTask::getScorePackageId, packageIdSet)
                     .eq(WmTask::getDelFlag, DelEnum.NOT_DEL.val())
@@ -3386,19 +3386,22 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 				String packageId = pkg.getId();
 				// 统计可分配积分值
                 Integer score = pkg.getScore();
-                if (finalRelatedPackageScoresMap.containsKey(packageId)) {
-					score -= finalRelatedPackageScoresMap.get(packageId);
-                }
-                if (finalRelatedTaskScoresMap.containsKey(packageId)) {
-					score -= finalRelatedTaskScoresMap.get(packageId);
-                }
-
 				// 实际可下发积分值 = 可分配积分值 / (1+审核管理费比例)
 				int actualScore = BigDecimal.valueOf(score).divide(
 						pkg.getAuditManagementFeeRates().divide(new BigDecimal("100.00"), RoundingMode.HALF_EVEN)
 								.add(BigDecimal.ONE),
 						RoundingMode.HALF_EVEN
 				).intValue();
+
+				// 减去直接关联的下级包的积分值
+                if (finalRelatedPackageScoresMap.containsKey(packageId)) {
+					actualScore -= finalRelatedPackageScoresMap.get(packageId);
+                }
+				// 减去直接关联的任务(目前任务类型只有企业任务)的积分值
+                if (finalRelatedTaskScoresMap.containsKey(packageId)) {
+					actualScore -= finalRelatedTaskScoresMap.get(packageId);
+                }
+
 				pkg.setKfpjf(actualScore);
 			});
 		}