|
@@ -104,6 +104,7 @@ import java.util.Date;
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
+import java.util.Set;
|
|
import java.util.UUID;
|
|
import java.util.UUID;
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
@@ -1460,110 +1461,119 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
|
|
updateWrapper.in(WmTask::getId, ids);
|
|
updateWrapper.in(WmTask::getId, ids);
|
|
List<WmTask> wmTaskList = list(updateWrapper);
|
|
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("审核成功");
|
|
return R.ok("审核成功");
|
|
}
|
|
}
|