Selaa lähdekoodia

Merge branch 'hotfix-taskapprove-20220331'

Qutong 3 vuotta sitten
vanhempi
commit
31c58a2cbf

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

@@ -104,6 +104,7 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
@@ -1460,110 +1461,119 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 		updateWrapper.in(WmTask::getId, ids);
 		List<WmTask> wmTaskList = list(updateWrapper);
 
-		String scorePackageId = wmTaskList.get(0).getScorePackageId();
-		WmScorePackage wmScorePackage = wmScorePackageService.getById(scorePackageId);
-
-		// 如果是源头积分包,则判断是否审核入库调查信息
-		if (StringUtils.isBlank(wmScorePackage.getRelationScoreId())) {
-			// 调查信息审核(15、30-医院 16-商业公司 18-药店)
-			wmTaskList.forEach(task -> {
-				String approvalOpinion = wmTask.getTaskStatus().equals(TaskStatusEnum.APPROVED.val()) ? "1" : "2";
-				if ("15".equals(task.getTaskTypeId()) || "30".equals(task.getTaskTypeId())) {
-					Map<String, Object> data = (Map<String, Object>) wmDaHospitalService.approvalHospital(task.getId()).getData();
-					WmTask _wmTask = (WmTask) data.get("wmTask");
-					Map<String, String> paramMap = BeanUtil.toBean(data.get("newinfo"), Map.class);
-					paramMap.put("approvalInfo", wmTask.getTaskStatusInfo());
-					paramMap.put("approvalOpinion", approvalOpinion);
-					paramMap.put("compareResult", _wmTask.getCompareResult());
-					paramMap.put("taskId", task.getId());
-					wmDaHospitalService.updateByApproval(paramMap);
-				} else if ("16".equals(task.getTaskTypeId())) {
-					Map<String, Object> data = (Map<String, Object>) wmDaDistributionService.approvalDistribution(task.getId()).getData();
-					WmTask _wmTask = (WmTask) data.get("wmTask");
-					Map<String, String> paramMap = BeanUtil.toBean(data.get("newinfo"), Map.class);
-					paramMap.put("approvalInfo", wmTask.getTaskStatusInfo());
-					paramMap.put("approvalOpinion", approvalOpinion);
-					paramMap.put("compareResult", _wmTask.getCompareResult());
-					paramMap.put("taskId", task.getId());
-					wmDaDistributionService.updateByApproval(paramMap);
-				} else if ("18".equals(task.getTaskTypeId())) {
-					Map<String, Object> data = (Map<String, Object>) wmDaPharmacyService.approvalPharmacy(task.getId()).getData();
-					WmTask _wmTask = (WmTask) data.get("_wmTask");
-					WmDaPharmacy info = (WmDaPharmacy) data.get("info");
-					Map<String, String> paramMap = MapUtil.newHashMap(4);
-					paramMap.put("infoId", info.getId());
-					paramMap.put("approvalInfo", wmTask.getTaskStatusInfo());
-					paramMap.put("approvalOpinion", approvalOpinion);
-					paramMap.put("compareResult", _wmTask.getCompareResult());
-					paramMap.put("taskId", task.getId());
-					wmDaPharmacyService.updateByapproval(paramMap);
-				}
-			});
-		}
+		// 由于批量审批的任务可能是不同积分包下的任务,所以这里需要根据积分包进行分组,分别处理不同积分包下的任务和积分包状态
+		Set<String> scorePackageIdSet = wmTaskList.stream().map(WmTask::getScorePackageId).collect(Collectors.toSet());
+		scorePackageIdSet.forEach(packageId -> {
+			// 根据积分包id,拆分不同积分包下的任务,进行分别处理
+
+			WmScorePackage wmScorePackage = wmScorePackageService.getById(packageId);
+			List<WmTask> subTaskList = wmTaskList.stream()
+					.filter(subTask -> subTask.getScorePackageId().equals(packageId))
+					.collect(Collectors.toList());
 
-		switch (wmTask.getTaskStatus()){
-			case "3": // 审核通过
-
-				// 获取用户积分系统上线
-				String value = sysPublicParamService.getSysPublicParamKeyToValue("USER_TASK_SUB_SCORE");
-				log.warn("系统当前限制积分上限:【{}】", value);
-				int limit = StringUtils.isEmpty(value) ? 30000 : Integer.parseInt(value);
-
-				List<WmTask> bathList = new ArrayList<>(wmTaskList.size());
-
-				Map<String, Map<LocalDate, List<WmTask>>> collect = wmTaskList.stream()
-						.collect(Collectors.groupingBy(WmTask::getTaskUserId, Collectors.groupingBy(task -> task.getCreateTime()
-								.toLocalDate())));
-				if (CollectionUtil.isNotEmpty(collect)){
-					for (Map.Entry<String,Map<LocalDate, List<WmTask>>> outer : collect.entrySet()){
-						String userId = outer.getKey();
-						Map<LocalDate, List<WmTask>> outerValue = outer.getValue();
-						for (Map.Entry<LocalDate, List<WmTask>> inner : outerValue.entrySet()){
-							LocalDate localDate = inner.getKey();
-							List<WmTask> taskList = inner.getValue();
-							int amount = baseMapper.newGetUserTaskSubScore(userId, LocalDateTime.of(localDate,LocalTime.MIN), LocalDateTime.of(localDate,LocalTime.MAX));
-							boolean flag = amount > limit;
-							for (WmTask t : taskList) {
-								if ((amount += t.getScore()) >= limit) {
-									if (flag) {
-										t.setScore(0);
+			// 如果是源头积分包,则判断是否审核入库调查信息
+			if (StringUtils.isBlank(wmScorePackage.getRelationScoreId())) {
+				// 调查信息审核(15、30-医院 16-商业公司 18-药店)
+				subTaskList.forEach(task -> {
+					String approvalOpinion = wmTask.getTaskStatus().equals(TaskStatusEnum.APPROVED.val()) ? "1" : "2";
+					if ("15".equals(task.getTaskTypeId()) || "30".equals(task.getTaskTypeId())) {
+						Map<String, Object> data = (Map<String, Object>) wmDaHospitalService.approvalHospital(task.getId()).getData();
+						WmTask _wmTask = (WmTask) data.get("wmTask");
+						Map<String, String> paramMap = BeanUtil.toBean(data.get("newinfo"), Map.class);
+						paramMap.put("approvalInfo", wmTask.getTaskStatusInfo());
+						paramMap.put("approvalOpinion", approvalOpinion);
+						paramMap.put("compareResult", _wmTask.getCompareResult());
+						paramMap.put("taskId", task.getId());
+						wmDaHospitalService.updateByApproval(paramMap);
+					} else if ("16".equals(task.getTaskTypeId())) {
+						Map<String, Object> data = (Map<String, Object>) wmDaDistributionService.approvalDistribution(task.getId()).getData();
+						WmTask _wmTask = (WmTask) data.get("wmTask");
+						Map<String, String> paramMap = BeanUtil.toBean(data.get("newinfo"), Map.class);
+						paramMap.put("approvalInfo", wmTask.getTaskStatusInfo());
+						paramMap.put("approvalOpinion", approvalOpinion);
+						paramMap.put("compareResult", _wmTask.getCompareResult());
+						paramMap.put("taskId", task.getId());
+						wmDaDistributionService.updateByApproval(paramMap);
+					} else if ("18".equals(task.getTaskTypeId())) {
+						Map<String, Object> data = (Map<String, Object>) wmDaPharmacyService.approvalPharmacy(task.getId()).getData();
+						WmTask _wmTask = (WmTask) data.get("_wmTask");
+						WmDaPharmacy info = (WmDaPharmacy) data.get("info");
+						Map<String, String> paramMap = MapUtil.newHashMap(4);
+						paramMap.put("infoId", info.getId());
+						paramMap.put("approvalInfo", wmTask.getTaskStatusInfo());
+						paramMap.put("approvalOpinion", approvalOpinion);
+						paramMap.put("compareResult", _wmTask.getCompareResult());
+						paramMap.put("taskId", task.getId());
+						wmDaPharmacyService.updateByapproval(paramMap);
+					}
+				});
+			}
+
+			switch (wmTask.getTaskStatus()){
+				case "3": // 审核通过
+
+					// 获取用户积分系统上线
+					String value = sysPublicParamService.getSysPublicParamKeyToValue("USER_TASK_SUB_SCORE");
+					log.warn("系统当前限制积分上限:【{}】", value);
+					int limit = StringUtils.isEmpty(value) ? 30000 : Integer.parseInt(value);
+
+					List<WmTask> bathList = new ArrayList<>(subTaskList.size());
+
+					Map<String, Map<LocalDate, List<WmTask>>> collect = subTaskList.stream()
+							.collect(Collectors.groupingBy(WmTask::getTaskUserId, Collectors.groupingBy(task -> task.getCreateTime()
+									.toLocalDate())));
+					if (CollectionUtil.isNotEmpty(collect)){
+						for (Map.Entry<String,Map<LocalDate, List<WmTask>>> outer : collect.entrySet()){
+							String userId = outer.getKey();
+							Map<LocalDate, List<WmTask>> outerValue = outer.getValue();
+							for (Map.Entry<LocalDate, List<WmTask>> inner : outerValue.entrySet()){
+								LocalDate localDate = inner.getKey();
+								List<WmTask> taskList = inner.getValue();
+								int amount = baseMapper.newGetUserTaskSubScore(userId, LocalDateTime.of(localDate,LocalTime.MIN), LocalDateTime.of(localDate,LocalTime.MAX));
+								boolean flag = amount > limit;
+								for (WmTask t : taskList) {
+									if ((amount += t.getScore()) >= limit) {
+										if (flag) {
+											t.setScore(0);
+										}
+										flag = true;
 									}
-									flag = true;
+									t.setTaskStatus("3");
+									t.setRealFlag("0");
+									t.setUpdateTime(LocalDateTime.now());
 								}
-								t.setTaskStatus("3");
-								t.setRealFlag("0");
-								t.setUpdateTime(LocalDateTime.now());
+								bathList.addAll(taskList);
 							}
-							bathList.addAll(taskList);
 						}
 					}
-				}
 
-				updateBatchById(bathList);
-				break;
-			case "4": // 审核不通过
-				updateWrapper.set(WmTask::getTaskStatus, wmTask.getTaskStatus());
-				updateWrapper.set(WmTask::getRealFlag, "0");
-				this.update(updateWrapper);
-				break;
-		}
+					updateBatchById(bathList);
+					break;
+				case "4": // 审核不通过
+					updateWrapper.set(WmTask::getTaskStatus, wmTask.getTaskStatus());
+					updateWrapper.set(WmTask::getRealFlag, "0");
+					this.update(updateWrapper);
+					break;
+			}
 
-		wmTaskList.forEach(task -> {
-			WmScorePackageStatus scorePackageStatus = new WmScorePackageStatus();
-			scorePackageStatus.setPackageId(wmScorePackage.getId());
-			scorePackageStatus.setUserId(task.getTaskUserId());
-			scorePackageStatus.setStatus("2");//接单审核通过
-			List<WmScorePackageStatus> scorePackageStatusList = wmScorePackageStatusService.list(Wrappers.query(scorePackageStatus));
+			subTaskList.forEach(task -> {
+				WmScorePackageStatus scorePackageStatus = new WmScorePackageStatus();
+				scorePackageStatus.setPackageId(wmScorePackage.getId());
+				scorePackageStatus.setUserId(task.getTaskUserId());
+				scorePackageStatus.setStatus("2");//接单审核通过
+				List<WmScorePackageStatus> scorePackageStatusList = wmScorePackageStatusService.list(Wrappers.query(scorePackageStatus));
 
-			if (CollectionUtil.isNotEmpty(scorePackageStatusList)) {
-				scorePackageStatus = scorePackageStatusList.get(0);
-				wmScorePackageStatusService.updatePackageAndStatus(task, wmScorePackage, scorePackageStatus);
-			}
-		});
+				if (CollectionUtil.isNotEmpty(scorePackageStatusList)) {
+					scorePackageStatus = scorePackageStatusList.get(0);
+					wmScorePackageStatusService.updatePackageAndStatus(task, wmScorePackage, scorePackageStatus);
+				}
+			});
 
-		//判断已审核的任务积分值,或者积分个数是否满了,如果满了,就将所有未审核的任务,更新成审核不通过
-		//即,将real_flag=9更新成real_flag=1,将task_status=2更新成task_status=4
-		wmScorePackageStatusService.updateScorePackageStatus(scorePackageId);
+
+			//判断已审核的任务积分值,或者积分个数是否满了,如果满了,就将所有未审核的任务,更新成审核不通过
+			//即,将real_flag=9更新成real_flag=1,将task_status=2更新成task_status=4
+			wmScorePackageStatusService.updateScorePackageStatus(packageId);
+		});
 
 		return R.ok("审核成功");
 	}