|
@@ -17,20 +17,28 @@
|
|
|
package com.qunzhixinxi.hnqz.admin.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
-import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmReport;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
|
|
|
+import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageStatus;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmTask;
|
|
|
import com.qunzhixinxi.hnqz.admin.enums.ReportEnum;
|
|
|
+import com.qunzhixinxi.hnqz.admin.enums.ScorePackageStatusEnum;
|
|
|
+import com.qunzhixinxi.hnqz.admin.enums.TaskStatusEnum;
|
|
|
import com.qunzhixinxi.hnqz.admin.mapper.WmReportMapper;
|
|
|
-import com.qunzhixinxi.hnqz.admin.service.*;
|
|
|
+import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
|
|
|
+import com.qunzhixinxi.hnqz.admin.service.SysUserService;
|
|
|
+import com.qunzhixinxi.hnqz.admin.service.WmReportService;
|
|
|
+import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
|
|
|
+import com.qunzhixinxi.hnqz.admin.service.WmScorePackageStatusService;
|
|
|
+import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
|
|
|
import com.qunzhixinxi.hnqz.common.core.util.R;
|
|
|
import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
|
|
|
import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
|
|
@@ -56,6 +64,7 @@ import java.util.stream.Collectors;
|
|
|
public class WmReportServiceImpl extends ServiceImpl<WmReportMapper, WmReport> implements WmReportService {
|
|
|
|
|
|
private final WmScorePackageService wmScorePackageService;
|
|
|
+ private final WmScorePackageStatusService wmScorePackageStatusService;
|
|
|
private final WmTaskService wmTaskService;
|
|
|
private final WmReportMapper wmReportMapper;
|
|
|
private final SysDeptService sysDeptService;
|
|
@@ -161,13 +170,9 @@ public class WmReportServiceImpl extends ServiceImpl<WmReportMapper, WmReport> i
|
|
|
public R approvalReport(WmReport wmReport, List<String> taskIds, String approvalOpinion, String approvalInfo) {
|
|
|
List<WmTask> taskList=new ArrayList<>();//该报告关联的所有未提交的任务
|
|
|
//更新任务表审批意见,查询所有未审核的任务,判断报告关联任务是否全部审核
|
|
|
- WmScorePackage scorePackage=wmScorePackageService.getById(wmReport.getScoreId());
|
|
|
- SysDept sysDept = sysDeptService.getById(scorePackage.getSendPackageDeptId());
|
|
|
+ WmScorePackage scorePackage = wmScorePackageService.getById(wmReport.getScoreId());
|
|
|
LambdaUpdateWrapper<WmTask> updateTaskWrapper=new LambdaUpdateWrapper<>();
|
|
|
WmTask wmTask=new WmTask();
|
|
|
- HnqzUser currentUser=SecurityUtils.getUser();
|
|
|
-// aa = currentUser.getRoles();
|
|
|
-// if("0".equals(scorePackage.getTypeid())){//药企
|
|
|
if(SecurityUtils.getRoles().contains(3)){//药企
|
|
|
updateTaskWrapper.set(WmTask::getReportDrugApprovalStatus,ReportEnum.REPORT_STATUS_SETTLE.getType());
|
|
|
updateTaskWrapper.set(WmTask::getReportDrugApprovalOpinion,approvalOpinion);
|
|
@@ -180,7 +185,6 @@ public class WmReportServiceImpl extends ServiceImpl<WmReportMapper, WmReport> i
|
|
|
}
|
|
|
updateTaskWrapper.in(WmTask::getId,taskIds);
|
|
|
|
|
|
-// }else if("1".equals(scorePackage.getTypeid())){//一级代理商类型
|
|
|
}else if(SecurityUtils.getRoles().contains(4)){//一级代理商类型
|
|
|
|
|
|
updateTaskWrapper.set(WmTask::getReportOneApprovalStatus,ReportEnum.REPORT_STATUS_SETTLE.getType());
|
|
@@ -192,13 +196,6 @@ public class WmReportServiceImpl extends ServiceImpl<WmReportMapper, WmReport> i
|
|
|
updateTaskWrapper.set(WmTask::getReportSecondApprovalInfo,approvalInfo);
|
|
|
}
|
|
|
updateTaskWrapper.in(WmTask::getId,taskIds);
|
|
|
-// else {
|
|
|
-// updateTaskWrapper.set(WmTask::getReportOneApprovalStatus,ReportEnum.REPORT_STATUS_SETTLE.getType());
|
|
|
-// updateTaskWrapper.set(WmTask::getReportOneApprovalOpinion,approvalOpinion);
|
|
|
-// updateTaskWrapper.set(WmTask::getReportOneApprovalInfo,approvalInfo);
|
|
|
-// updateTaskWrapper.in(WmTask::getId,taskIds);
|
|
|
-// }
|
|
|
-
|
|
|
}
|
|
|
if("0".equals(scorePackage.getTypeid())){//药企
|
|
|
wmTask.setReportDrugId(wmReport.getId());
|
|
@@ -210,15 +207,13 @@ public class WmReportServiceImpl extends ServiceImpl<WmReportMapper, WmReport> i
|
|
|
wmTask.setReportSecondId(wmReport.getId());
|
|
|
wmTask.setReportSecondApprovalStatus(ReportEnum.REPORT_STATUS_APPROVAL.getType());
|
|
|
}
|
|
|
-// else if("2".equals(scorePackage.getTypeid())){//二级代理商类型
|
|
|
-// updateTaskWrapper.set(WmTask::getReportSecondApprovalStatus,ReportEnum.REPORT_STATUS_SETTLE.getType());
|
|
|
-// updateTaskWrapper.set(WmTask::getReportSecondApprovalOpinion,approvalOpinion);
|
|
|
-// updateTaskWrapper.set(WmTask::getReportSecondApprovalInfo,approvalInfo);
|
|
|
-// updateTaskWrapper.in(WmTask::getId,taskIds);
|
|
|
//
|
|
|
-// }
|
|
|
+ if ("2".equals(approvalOpinion)) {
|
|
|
+ // 审核不通过,则设置TaskStatus为不通过
|
|
|
+ updateTaskWrapper.set(WmTask::getTaskStatus, TaskStatusEnum.FAIL_APPROVED.val());
|
|
|
+ }
|
|
|
wmTaskService.update(updateTaskWrapper);
|
|
|
- taskList=wmTaskService.list(Wrappers.query(wmTask));
|
|
|
+ taskList = wmTaskService.list(Wrappers.query(wmTask));
|
|
|
//更新报告状态
|
|
|
HnqzUser user= SecurityUtils.getUser();
|
|
|
//提交修改状态,更新时间
|
|
@@ -230,11 +225,66 @@ public class WmReportServiceImpl extends ServiceImpl<WmReportMapper, WmReport> i
|
|
|
}else {//不为空,说明是部分审批
|
|
|
updateWrapper.set(WmReport::getReportStatus, ReportEnum.REPORT_STATUS_PART_APPROVAL.getType());
|
|
|
}
|
|
|
- updateWrapper.set(WmReport::getUpdatePeople,user.getId());
|
|
|
+ updateWrapper.set(WmReport::getUpdatePeople, user.getId());
|
|
|
updateWrapper.set(WmReport::getUpdateTime, LocalDateTime.now());
|
|
|
-
|
|
|
- updateWrapper.eq(WmReport::getId,wmReport.getId());
|
|
|
+ updateWrapper.eq(WmReport::getId, wmReport.getId());
|
|
|
this.update(updateWrapper);
|
|
|
+
|
|
|
+ LambdaQueryWrapper<WmTask> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.in(WmTask::getId, taskIds);
|
|
|
+ List<WmTask> wmTaskList = wmTaskService.list(queryWrapper);
|
|
|
+ if ("2".equals(approvalOpinion)) {
|
|
|
+ // 审核不通过,则释放积分值,从而直接可以重新做任务
|
|
|
+ wmTaskList.forEach(task -> {
|
|
|
+ // 查询积分包状态
|
|
|
+ WmScorePackageStatus scorePackageStatus = new WmScorePackageStatus();
|
|
|
+ scorePackageStatus.setPackageId(task.getScorePackageId());
|
|
|
+ scorePackageStatus.setUserId(task.getTaskUserId());
|
|
|
+ scorePackageStatus.setStatus("2");//接单审核通过
|
|
|
+ WmScorePackageStatus updateScorePackageStatus = wmScorePackageStatusService.getOne(Wrappers.query(scorePackageStatus));
|
|
|
+ // 查询已提交的任务(除去审核不通过的任务)
|
|
|
+ Wrapper<WmTask> taskQueryWrapper = Wrappers.<WmTask>lambdaQuery()
|
|
|
+ .eq(WmTask::getScorePackageId, scorePackage.getId())
|
|
|
+ .in(WmTask::getTaskStatus, "1", "2", "3")
|
|
|
+ .eq(WmTask::getRealFlag, "0");
|
|
|
+ List<WmTask> submitedTaskList = wmTaskService.list(taskQueryWrapper);
|
|
|
+ // 统计判断任务累计积分是否达到积分包的预设值
|
|
|
+ int totalTaskScore = 0;
|
|
|
+ for (WmTask wmtask : submitedTaskList) {
|
|
|
+ totalTaskScore += wmtask.getScore();
|
|
|
+ }
|
|
|
+ WmScorePackage updateScorePackage = new WmScorePackage();
|
|
|
+ if (totalTaskScore >= scorePackage.getScore()) {
|
|
|
+ updateScorePackage.setPackageStatus(ScorePackageStatusEnum.TO_BE_APPROVAL.val());
|
|
|
+ updateScorePackage.setTaskAddFlag("0");
|
|
|
+ updateScorePackageStatus.setTaskAddFlag("0");
|
|
|
+ }else {
|
|
|
+ updateScorePackage.setPackageStatus(ScorePackageStatusEnum.IN_PROGRESS.val());
|
|
|
+ updateScorePackage.setTaskAddFlag("1");
|
|
|
+ updateScorePackageStatus.setTaskAddFlag("1");
|
|
|
+ }
|
|
|
+ wmScorePackageStatusService.updateById(updateScorePackageStatus);
|
|
|
+ wmScorePackageService.updateById(updateScorePackage);
|
|
|
+ });
|
|
|
+ } else if ("1".equals(approvalOpinion)) {
|
|
|
+ // 审核通过,则判断企业审核通过积分值是否达到积分包的预设值
|
|
|
+ Wrapper<WmTask> apporvalWrapper = Wrappers.<WmTask>lambdaQuery()
|
|
|
+ .eq(WmTask::getScorePackageId, scorePackage.getId())
|
|
|
+ .eq(WmTask::getTaskStatus, TaskStatusEnum.APPROVED.val())
|
|
|
+ .and(wrapper -> wrapper.eq(WmTask::getReportDrugApprovalOpinion, "1")
|
|
|
+ .or().eq(WmTask::getReportOneApprovalOpinion, "1"));
|
|
|
+ List<WmTask> approvalTaskList = wmTaskService.list(apporvalWrapper);
|
|
|
+ int totalScore = approvalTaskList.stream().mapToInt(WmTask::getScore).sum();
|
|
|
+ if (totalScore >= scorePackage.getScore()) {
|
|
|
+ WmScorePackage updateScorePackage = new WmScorePackage();
|
|
|
+ if (totalScore >= scorePackage.getScore()) {
|
|
|
+ updateScorePackage.setPackageStatus(ScorePackageStatusEnum.TO_BE_SETTLED.val());
|
|
|
+ updateScorePackage.setTaskAddFlag("0");
|
|
|
+ }
|
|
|
+ wmScorePackageService.updateById(updateScorePackage);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
return R.ok("审批成功");
|
|
|
}
|
|
|
|