Browse Source

feat(service): 新增结算报告审批不通过释放积分

lixuesong 3 năm trước cách đây
mục cha
commit
096e4ae02e

+ 5 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/enums/ScorePackageStatusEnum.java

@@ -31,7 +31,11 @@ public enum ScorePackageStatusEnum {
 	/**
 	 * 已终止
 	 */
-	TERMINATED("6");
+	TERMINATED("6"),
+	/**
+	 * 已完成待审批
+	 */
+	TO_BE_APPROVAL("7");
 
 	private String val;
 

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

@@ -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("审批成功");
 	}
 

+ 2 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageStatusServiceImpl.java

@@ -29,6 +29,7 @@ import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageStatus;
 import com.qunzhixinxi.hnqz.admin.entity.WmTask;
 import com.qunzhixinxi.hnqz.admin.entity.input.WmScorePackageApiInput;
 import com.qunzhixinxi.hnqz.admin.entity.input.WmScorePackageApiOutput;
+import com.qunzhixinxi.hnqz.admin.enums.ScorePackageStatusEnum;
 import com.qunzhixinxi.hnqz.admin.mapper.WmScorePackageMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmScorePackageStatusMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmTaskMapper;
@@ -284,7 +285,7 @@ public class WmScorePackageStatusServiceImpl extends ServiceImpl<WmScorePackageS
 				wmTaskMapper.update(new WmTask(),updateWrapper1);
 
 				wmScorePackage.setPackageFinishStatus("1");//已完成
-				wmScorePackage.setScorePackageStatus("4");//已完成待结算
+				wmScorePackage.setScorePackageStatus(ScorePackageStatusEnum.TO_BE_APPROVAL.val()); // 已完成待审批
 				wmScorePackage.setTaskAddFlag("0");//已完成不可以做任务
 				wmScorePackage.setPackageFinishTime(LocalDateTime.now());