Jelajahi Sumber

feat: 快速批量任务审核-审核功能调整

李学松 2 tahun lalu
induk
melakukan
a066849fee

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

@@ -2648,8 +2648,14 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 		if (scorePackageIds.size() > 1) {
 			throw new RuntimeException("只能处理同一个积分包下的任务");
 		}
+
+		String scorePackageId = scorePackageIds.iterator().next();
 		// 批量查询积分包
-		WmScorePackage wmScorePackage = wmScorePackageService.getById(scorePackageIds.iterator().next());
+		WmScorePackage wmScorePackage = wmScorePackageService.getById(scorePackageId);
+
+		if (!StrUtil.equals(ScorePackageStatusEnum.IN_PROGRESS.val(), wmScorePackage.getScorePackageStatus())) {
+			throw new RuntimeException("积分包状态不支持审核");
+		}
 
 		idList.forEach(id -> {
 			// 查询这条任务
@@ -2667,12 +2673,6 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 				throw new RuntimeException("已生成报告");
 			}
 
-			// 查询积分包
-			String scorePackageId = queryTask.getScorePackageId();
-			if (!StrUtil.equals(ScorePackageStatusEnum.IN_PROGRESS.val(), wmScorePackage.getScorePackageStatus())) {
-				throw new RuntimeException("积分包状态不支持审核");
-			}
-
 			// STEP1:更新task状态
 			LambdaUpdateWrapper<WmTask> taskUpdateWrapper = Wrappers.<WmTask>lambdaUpdate()
 					.eq(WmTask::getId, id)
@@ -2690,67 +2690,6 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 				throw new RuntimeException("操作失败,请重试");
 			}
 
-			// 查询积分包下审核通过和审核中的任务
-			List<WmTask> wmTaskList = wmTaskMapper.selectList(Wrappers.<WmTask>lambdaQuery()
-					.eq(WmTask::getScorePackageId, scorePackageId)
-					.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";
-			// 查询领包记录
-			List<WmScorePackageStatus> packageStatusList = wmScorePackageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery()
-					.eq(WmScorePackageStatus::getStatus, PackageStatusEnum.APPROVED.val())
-					.eq(WmScorePackageStatus::getPackageId, wmScorePackage.getId()));
-			if (CollUtil.isNotEmpty(packageStatusList)) {
-				// STEP2:修改领包记录状态
-				packageStatusList.forEach(packageStatus -> {
-					LambdaUpdateWrapper<WmScorePackageStatus> updateWrapper = Wrappers.<WmScorePackageStatus>lambdaUpdate()
-							.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::getUpdateTime, now)
-							.set(WmScorePackageStatus::getUpdateUser, operatorId);
-					log.info("pacakgeStatus更新参数:条件id={},updateTime={},updateUser={},更新项taskAddFlag={},updateTime={},updateUser={}",
-							packageStatus.getId(), packageStatus.getUpdateTime(), packageStatus.getUpdateUser(), taskAddFlagStr, now, operatorId);
-					boolean pacakgeStatusUpdate = wmScorePackageStatusService.update(updateWrapper);
-					if (!pacakgeStatusUpdate) {
-						throw new RuntimeException("操作失败,请重试");
-					}
-				});
-			}
-
-			// STEP3:修改积分包状态
-			String packageFinishStatus = totalCount >= wmScorePackage.getScore() ?
-					PackageFinishStatusEnum.NOT_COMPLETE.val() : PackageFinishStatusEnum.COMPLETED.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::getUpdateUser, wmScorePackage.getUpdateUser())
-					.set(WmScorePackage::getUpdateTime, now);
-			if (taskAddFlag) {
-				// 任务总积分超过积分包的值
-				// 积分包完成时间
-				scorePackageUpdateWrapper.set(WmScorePackage::getPackageFinishTime, now);
-				// 积分包状态:有关联积分包,则设置为‘已完成待审批’;没有关联积分包,则直接设置为‘已完成待结算’
-				scorePackageUpdateWrapper.set(WmScorePackage::getScorePackageStatus, StringUtils.isNotBlank(wmScorePackage.getRelationScoreId()) ?
-						ScorePackageStatusEnum.TO_BE_APPROVAL.val() : ScorePackageStatusEnum.TO_BE_SETTLED.val());
-			} else {
-				// 任务总积分小于积分包的值
-				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);
-			boolean packageUpdate = wmScorePackageService.update(scorePackageUpdateWrapper);
-			if (!packageUpdate) {
-				throw new RuntimeException("操作失败,请重试");
-			}
-
 			// STEP4: 如果是源头积分包,则判断是否审核入库调查信息
 			if (StringUtils.isBlank(wmScorePackage.getRelationScoreId())) {
 				this.task15_30_16_18(queryTask, taskStatus, taskStatusInfo);
@@ -2760,6 +2699,67 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 			this.removePicCache(queryTask);
 		});
 
+		// 查询积分包下审核通过和审核中的任务
+		List<WmTask> wmTaskList = wmTaskMapper.selectList(Wrappers.<WmTask>lambdaQuery()
+				.eq(WmTask::getScorePackageId, scorePackageId)
+				.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";
+		// 查询领包记录
+		List<WmScorePackageStatus> packageStatusList = wmScorePackageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery()
+				.eq(WmScorePackageStatus::getStatus, PackageStatusEnum.APPROVED.val())
+				.eq(WmScorePackageStatus::getPackageId, wmScorePackage.getId()));
+		if (CollUtil.isNotEmpty(packageStatusList)) {
+			// STEP2:修改领包记录状态
+			packageStatusList.forEach(packageStatus -> {
+				LambdaUpdateWrapper<WmScorePackageStatus> updateWrapper = Wrappers.<WmScorePackageStatus>lambdaUpdate()
+						.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::getUpdateTime, now)
+						.set(WmScorePackageStatus::getUpdateUser, operatorId);
+				log.info("pacakgeStatus更新参数:条件id={},updateTime={},updateUser={},更新项taskAddFlag={},updateTime={},updateUser={}",
+						packageStatus.getId(), packageStatus.getUpdateTime(), packageStatus.getUpdateUser(), taskAddFlagStr, now, operatorId);
+				boolean pacakgeStatusUpdate = wmScorePackageStatusService.update(updateWrapper);
+				if (!pacakgeStatusUpdate) {
+					throw new RuntimeException("操作失败,请重试");
+				}
+			});
+		}
+
+		// STEP3:修改积分包状态
+		String packageFinishStatus = totalCount >= wmScorePackage.getScore() ?
+				PackageFinishStatusEnum.NOT_COMPLETE.val() : PackageFinishStatusEnum.COMPLETED.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::getUpdateUser, wmScorePackage.getUpdateUser())
+				.set(WmScorePackage::getUpdateTime, now);
+		if (taskAddFlag) {
+			// 任务总积分超过积分包的值
+			// 积分包完成时间
+			scorePackageUpdateWrapper.set(WmScorePackage::getPackageFinishTime, now);
+			// 积分包状态:有关联积分包,则设置为‘已完成待审批’;没有关联积分包,则直接设置为‘已完成待结算’
+			scorePackageUpdateWrapper.set(WmScorePackage::getScorePackageStatus, StringUtils.isNotBlank(wmScorePackage.getRelationScoreId()) ?
+					ScorePackageStatusEnum.TO_BE_APPROVAL.val() : ScorePackageStatusEnum.TO_BE_SETTLED.val());
+		} else {
+			// 任务总积分小于积分包的值
+			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);
+		boolean packageUpdate = wmScorePackageService.update(scorePackageUpdateWrapper);
+		if (!packageUpdate) {
+			throw new RuntimeException("操作失败,请重试");
+		}
+
 		return Boolean.TRUE;
 	}