Browse Source

feat: 批量审批、复审修改积分包状态的判断

李学松 2 years ago
parent
commit
fda5d7074c

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

@@ -448,6 +448,9 @@ public class WmReportServiceImpl extends ServiceImpl<WmReportMapper, WmReport> i
 				.eq(WmTask::getRealFlag, "0"));
 		// 统计判断任务累计积分是否达到积分包的预设值
 		int totalTaskScore = submitedTaskList.stream().mapToInt(WmTask::getScore).sum();
+		int approvedCount = submitedTaskList.stream()
+				.filter(task -> TaskStatusEnum.APPROVED.val().equals(task.getTaskStatus()))
+				.map(WmTask::getScore).reduce(0, Integer::sum);
 
 		// STEP3: 更新领包记录
 		List<WmScorePackageStatus> packageStatusList = wmScorePackageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery()
@@ -476,9 +479,9 @@ public class WmReportServiceImpl extends ServiceImpl<WmReportMapper, WmReport> i
 		// STEP4: 更新积分包状态
 		if ("2".equals(approvalOpinion)) {
 			// 审核不通过,则释放积分值,从而直接可以重新做任务
-			String scorePackageStatus = totalTaskScore >= taskScorePackage.getScore() ?
-					ScorePackageStatusEnum.TO_BE_SETTLED.val() : ScorePackageStatusEnum.IN_PROGRESS.val();
-			String taskAddFlagStr = totalTaskScore >= taskScorePackage.getScore() ? "0" : "1";
+			String scorePackageStatus = approvedCount >= taskScorePackage.getScore() ?
+					ScorePackageStatusEnum.TO_BE_APPROVAL.val() : ScorePackageStatusEnum.IN_PROGRESS.val();
+			String taskAddFlagStr = approvedCount >= taskScorePackage.getScore() ? "0" : "1";
 			// 更新积分包
 			log.info("scorePackage更新参数:条件id={},updateTime={},updateUser={},更新项scorePackageStatus={},taskAddFlag={},updateTime={},updateUser={}",
 					taskScorePackageId, taskScorePackage.getUpdateTime(), taskScorePackage.getUpdateUser(), scorePackageStatus, taskAddFlagStr, now, operatorId);
@@ -503,7 +506,7 @@ public class WmReportServiceImpl extends ServiceImpl<WmReportMapper, WmReport> i
 							.or().eq(WmTask::getReportOneApprovalOpinion, "1")));
 			int totalScore = approvalTaskList.stream().mapToInt(WmTask::getScore).sum();
 			String scorePackageStatus = totalScore >= taskScorePackage.getScore() ?
-					ScorePackageStatusEnum.TO_BE_SETTLED.val() : ScorePackageStatusEnum.IN_PROGRESS.val();
+					ScorePackageStatusEnum.TO_BE_SETTLED.val() : ScorePackageStatusEnum.TO_BE_APPROVAL.val();
 			String taskAddFlagStr = totalScore >= taskScorePackage.getScore() ? "0" : "1";
 			// 更新积分包
 			log.info("scorePackage更新参数:条件id={},updateTime={},updateUser={},更新项scorePackageStatus={},taskAddFlag={},updateTime={},updateUser={}",
@@ -667,6 +670,9 @@ public class WmReportServiceImpl extends ServiceImpl<WmReportMapper, WmReport> i
 					.eq(WmTask::getRealFlag, "0"));
 			// 统计判断任务累计积分是否达到积分包的预设值
 			int totalTaskScore = submitedTaskList.stream().mapToInt(WmTask::getScore).sum();
+			int approvedCount = submitedTaskList.stream()
+					.filter(task -> TaskStatusEnum.APPROVED.val().equals(task.getTaskStatus()))
+					.map(WmTask::getScore).reduce(0, Integer::sum);
 
 			// STEP3: 更新领包记录
 			List<WmScorePackageStatus> packageStatusList = wmScorePackageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery()
@@ -695,9 +701,9 @@ public class WmReportServiceImpl extends ServiceImpl<WmReportMapper, WmReport> i
 			// STEP4: 更新积分包状态
 			if ("2".equals(approvalOpinion)) {
 				// 审核不通过,则释放积分值,从而直接可以重新做任务
-				String scorePackageStatus = totalTaskScore >= taskScorePackage.getScore() ?
-						ScorePackageStatusEnum.TO_BE_SETTLED.val() : ScorePackageStatusEnum.IN_PROGRESS.val();
-				String taskAddFlagStr = totalTaskScore >= taskScorePackage.getScore() ? "0" : "1";
+				String scorePackageStatus = approvedCount >= taskScorePackage.getScore() ?
+						ScorePackageStatusEnum.TO_BE_APPROVAL.val() : ScorePackageStatusEnum.IN_PROGRESS.val();
+				String taskAddFlagStr = approvedCount >= taskScorePackage.getScore() ? "0" : "1";
 				// 更新积分包
 				log.info("scorePackage更新参数:条件id={},updateTime={},updateUser={},更新项scorePackageStatus={},taskAddFlag={},updateTime={},updateUser={}",
 						taskScorePackageId, taskScorePackage.getUpdateTime(), taskScorePackage.getUpdateUser(), scorePackageStatus, taskAddFlagStr, now, operatorId);
@@ -722,7 +728,7 @@ public class WmReportServiceImpl extends ServiceImpl<WmReportMapper, WmReport> i
 								.or().eq(WmTask::getReportOneApprovalOpinion, "1")));
 				int totalScore = approvalTaskList.stream().mapToInt(WmTask::getScore).sum();
 				String scorePackageStatus = totalScore >= taskScorePackage.getScore() ?
-						ScorePackageStatusEnum.TO_BE_SETTLED.val() : ScorePackageStatusEnum.IN_PROGRESS.val();
+						ScorePackageStatusEnum.TO_BE_SETTLED.val() : ScorePackageStatusEnum.TO_BE_APPROVAL.val();
 				String taskAddFlagStr = totalScore >= taskScorePackage.getScore() ? "0" : "1";
 				// 更新积分包
 				log.info("scorePackage更新参数:条件id={},updateTime={},updateUser={},更新项scorePackageStatus={},taskAddFlag={},updateTime={},updateUser={}",

+ 32 - 20
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmTaskServiceImpl.java

@@ -2562,9 +2562,15 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 				.ne(WmTask::getTaskStatus, TaskStatusEnum.FAIL_APPROVED.val())
 				.eq(WmTask::getRealFlag, "0"));
 		int totalCount = wmTaskList.stream().map(WmTask::getScore).reduce(0, Integer::sum);
-		// 标记任务总积分 是否超过积分包的值
-		boolean taskAddFlag = totalCount >= wmScorePackage.getScore();
-		String taskAddFlagStr = taskAddFlag ? "0" : "1";
+		int approvedCount = wmTaskList.stream()
+				.filter(task -> TaskStatusEnum.APPROVED.val().equals(task.getTaskStatus()))
+				.map(WmTask::getScore).reduce(0, Integer::sum);
+
+		// 标记任务总积分 是否超过积分包的值(标记小程序能不能做任务)
+		String totalTaskAddFlagStr = totalCount >= wmScorePackage.getScore() ? "0" : "1";
+		// 标记审核通过任务 是否超过积分包值(标记积分包状态)
+		String approvedTaskAddFlagStr = approvedCount >= wmScorePackage.getScore() ? "0" : "1";
+
 		// 查询领包记录
 		List<WmScorePackageStatus> packageStatusList = wmScorePackageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery()
 				.eq(WmScorePackageStatus::getStatus, PackageStatusEnum.APPROVED.val())
@@ -2576,11 +2582,11 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 						.eq(WmScorePackageStatus::getId, packageStatus.getId())
 						.eq(packageStatus.getUpdateTime() != null, WmScorePackageStatus::getUpdateTime, packageStatus.getUpdateTime())
 						.eq(packageStatus.getUpdateUser() != null, WmScorePackageStatus::getUpdateUser, packageStatus.getUpdateUser())
-						.set(WmScorePackageStatus::getTaskAddFlag, taskAddFlagStr)
+						.set(WmScorePackageStatus::getTaskAddFlag, totalTaskAddFlagStr)
 						.set(WmScorePackageStatus::getUpdateTime, now)
 						.set(WmScorePackageStatus::getUpdateUser, operatorId);
 				log.info("pacakgeStatus更新参数:条件id={},updateTime={},updateUser={},更新项taskAddFlag={},updateTime={},updateUser={}",
-						packageStatus.getId(), packageStatus.getUpdateTime(), packageStatus.getUpdateUser(), taskAddFlagStr, now, operatorId);
+						packageStatus.getId(), packageStatus.getUpdateTime(), packageStatus.getUpdateUser(), totalTaskAddFlagStr, now, operatorId);
 				boolean pacakgeStatusUpdate = wmScorePackageStatusService.update(updateWrapper);
 				if (!pacakgeStatusUpdate) {
 					throw new RuntimeException("操作失败,请重试");
@@ -2589,17 +2595,17 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 		}
 
 		// STEP3:修改积分包状态
-		String packageFinishStatus = totalCount >= wmScorePackage.getScore() ?
-				PackageFinishStatusEnum.NOT_COMPLETE.val() : PackageFinishStatusEnum.COMPLETED.val();
+		String packageFinishStatus = approvedCount >= wmScorePackage.getScore() ?
+				PackageFinishStatusEnum.COMPLETED.val() : PackageFinishStatusEnum.NOT_COMPLETE.val();
 		LambdaUpdateWrapper<WmScorePackage> scorePackageUpdateWrapper = Wrappers.<WmScorePackage>lambdaUpdate()
 				.eq(WmScorePackage::getId, scorePackageId)
 				.eq(wmScorePackage.getUpdateTime() != null, WmScorePackage::getUpdateTime, wmScorePackage.getUpdateTime())
 				.eq(wmScorePackage.getUpdateUser() != null, WmScorePackage::getUpdateUser, wmScorePackage.getUpdateUser())
 				.set(WmScorePackage::getPackageFinishStatus, packageFinishStatus)
-				.set(WmScorePackage::getTaskAddFlag, taskAddFlagStr)
+				.set(WmScorePackage::getTaskAddFlag, approvedTaskAddFlagStr)
 				.set(WmScorePackage::getUpdateUser, wmScorePackage.getUpdateUser())
 				.set(WmScorePackage::getUpdateTime, now);
-		if (taskAddFlag) {
+		if (approvedCount >= wmScorePackage.getScore()) {
 			// 积分包完成时间
 			scorePackageUpdateWrapper.set(WmScorePackage::getPackageFinishTime, now);
 			// 积分包状态:有关联积分包,则设置为‘已完成待审批’;没有关联积分包,则直接设置为‘已完成待结算’
@@ -2609,7 +2615,7 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 			scorePackageUpdateWrapper.set(WmScorePackage::getScorePackageStatus, ScorePackageStatusEnum.IN_PROGRESS.val());
 		}
 		log.info("scorePackage更新参数:条件id={},updateTime={},updateUser={},更新项packageFinishStatus={},taskAddFlag={},updateTime={},updateUser={}",
-				scorePackageId, wmScorePackage.getUpdateTime(), wmScorePackage.getUpdateUser(), packageFinishStatus, taskAddFlagStr, now, operatorId);
+				scorePackageId, wmScorePackage.getUpdateTime(), wmScorePackage.getUpdateUser(), packageFinishStatus, approvedTaskAddFlagStr, now, operatorId);
 		boolean packageUpdate = wmScorePackageService.update(scorePackageUpdateWrapper);
 		if (!packageUpdate) {
 			throw new RuntimeException("操作失败,请重试");
@@ -2705,9 +2711,15 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 				.ne(WmTask::getTaskStatus, TaskStatusEnum.FAIL_APPROVED.val())
 				.eq(WmTask::getRealFlag, "0"));
 		int totalCount = wmTaskList.stream().map(WmTask::getScore).reduce(0, Integer::sum);
-		// 标记任务总积分 是否超过积分包的值
-		boolean taskAddFlag = totalCount >= wmScorePackage.getScore();
-		String taskAddFlagStr = taskAddFlag ? "0" : "1";
+		int approvedCount = wmTaskList.stream()
+				.filter(task -> TaskStatusEnum.APPROVED.val().equals(task.getTaskStatus()))
+				.map(WmTask::getScore).reduce(0, Integer::sum);
+
+		// 标记任务总积分 是否超过积分包的值(标记小程序能不能做任务)
+		String totalTaskAddFlagStr = totalCount >= wmScorePackage.getScore() ? "0" : "1";
+		// 标记审核通过任务 是否超过积分包值(标记积分包状态)
+		String approvedTaskAddFlagStr = approvedCount >= wmScorePackage.getScore() ? "0" : "1";
+
 		// 查询领包记录
 		List<WmScorePackageStatus> packageStatusList = wmScorePackageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery()
 				.eq(WmScorePackageStatus::getStatus, PackageStatusEnum.APPROVED.val())
@@ -2719,11 +2731,11 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 						.eq(WmScorePackageStatus::getId, packageStatus.getId())
 						.eq(packageStatus.getUpdateTime() != null, WmScorePackageStatus::getUpdateTime, packageStatus.getUpdateTime())
 						.eq(packageStatus.getUpdateUser() != null, WmScorePackageStatus::getUpdateUser, packageStatus.getUpdateUser())
-						.set(WmScorePackageStatus::getTaskAddFlag, taskAddFlagStr)
+						.set(WmScorePackageStatus::getTaskAddFlag, totalTaskAddFlagStr)
 						.set(WmScorePackageStatus::getUpdateTime, now)
 						.set(WmScorePackageStatus::getUpdateUser, operatorId);
 				log.info("pacakgeStatus更新参数:条件id={},updateTime={},updateUser={},更新项taskAddFlag={},updateTime={},updateUser={}",
-						packageStatus.getId(), packageStatus.getUpdateTime(), packageStatus.getUpdateUser(), taskAddFlagStr, now, operatorId);
+						packageStatus.getId(), packageStatus.getUpdateTime(), packageStatus.getUpdateUser(), totalTaskAddFlagStr, now, operatorId);
 				boolean pacakgeStatusUpdate = wmScorePackageStatusService.update(updateWrapper);
 				if (!pacakgeStatusUpdate) {
 					throw new RuntimeException("操作失败,请重试");
@@ -2732,17 +2744,17 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 		}
 
 		// STEP3:修改积分包状态
-		String packageFinishStatus = totalCount >= wmScorePackage.getScore() ?
-				PackageFinishStatusEnum.NOT_COMPLETE.val() : PackageFinishStatusEnum.COMPLETED.val();
+		String packageFinishStatus = approvedCount >= wmScorePackage.getScore() ?
+				PackageFinishStatusEnum.COMPLETED.val() : PackageFinishStatusEnum.NOT_COMPLETE.val();
 		LambdaUpdateWrapper<WmScorePackage> scorePackageUpdateWrapper = Wrappers.<WmScorePackage>lambdaUpdate()
 				.eq(WmScorePackage::getId, scorePackageId)
 				.eq(wmScorePackage.getUpdateTime() != null, WmScorePackage::getUpdateTime, wmScorePackage.getUpdateTime())
 				.eq(wmScorePackage.getUpdateUser() != null, WmScorePackage::getUpdateUser, wmScorePackage.getUpdateUser())
 				.set(WmScorePackage::getPackageFinishStatus, packageFinishStatus)
-				.set(WmScorePackage::getTaskAddFlag, taskAddFlagStr)
+				.set(WmScorePackage::getTaskAddFlag, approvedTaskAddFlagStr)
 				.set(WmScorePackage::getUpdateUser, wmScorePackage.getUpdateUser())
 				.set(WmScorePackage::getUpdateTime, now);
-		if (taskAddFlag) {
+		if (approvedCount >= wmScorePackage.getScore()) {
 			// 任务总积分超过积分包的值
 			// 积分包完成时间
 			scorePackageUpdateWrapper.set(WmScorePackage::getPackageFinishTime, now);
@@ -2754,7 +2766,7 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 			scorePackageUpdateWrapper.set(WmScorePackage::getScorePackageStatus, ScorePackageStatusEnum.IN_PROGRESS.val());
 		}
 		log.info("scorePackage更新参数:条件id={},updateTime={},updateUser={},更新项packageFinishStatus={},taskAddFlag={},updateTime={},updateUser={}",
-				scorePackageId, wmScorePackage.getUpdateTime(), wmScorePackage.getUpdateUser(), packageFinishStatus, taskAddFlagStr, now, operatorId);
+				scorePackageId, wmScorePackage.getUpdateTime(), wmScorePackage.getUpdateUser(), packageFinishStatus, totalTaskAddFlagStr, now, operatorId);
 		boolean packageUpdate = wmScorePackageService.update(scorePackageUpdateWrapper);
 		if (!packageUpdate) {
 			throw new RuntimeException("操作失败,请重试");