|
@@ -2,15 +2,22 @@ package com.qmth.distributed.print.business.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.qmth.boot.api.exception.ApiException;
|
|
import com.qmth.boot.api.exception.ApiException;
|
|
|
|
+import com.qmth.distributed.print.business.bean.result.FlowApproveResult;
|
|
|
|
+import com.qmth.distributed.print.business.bean.result.FlowTaskApprovePeopleAllResult;
|
|
|
|
+import com.qmth.distributed.print.business.bean.result.FlowTaskApprovePeopleResult;
|
|
import com.qmth.distributed.print.business.bean.result.FlowTaskResult;
|
|
import com.qmth.distributed.print.business.bean.result.FlowTaskResult;
|
|
import com.qmth.distributed.print.business.entity.*;
|
|
import com.qmth.distributed.print.business.entity.*;
|
|
import com.qmth.distributed.print.business.enums.ExamStatusEnum;
|
|
import com.qmth.distributed.print.business.enums.ExamStatusEnum;
|
|
import com.qmth.distributed.print.business.service.*;
|
|
import com.qmth.distributed.print.business.service.*;
|
|
|
|
+import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
|
|
import com.qmth.teachcloud.common.contant.SpringContextHolder;
|
|
import com.qmth.teachcloud.common.contant.SpringContextHolder;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import com.qmth.teachcloud.common.entity.SysUser;
|
|
import com.qmth.teachcloud.common.entity.SysUser;
|
|
import com.qmth.teachcloud.common.enums.*;
|
|
import com.qmth.teachcloud.common.enums.*;
|
|
|
|
+import com.qmth.teachcloud.common.service.SysUserService;
|
|
import com.qmth.teachcloud.common.util.RedisUtil;
|
|
import com.qmth.teachcloud.common.util.RedisUtil;
|
|
import com.qmth.teachcloud.common.util.ResultUtil;
|
|
import com.qmth.teachcloud.common.util.ResultUtil;
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
@@ -35,6 +42,7 @@ import javax.annotation.Resource;
|
|
import java.io.File;
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
* @Description: activiti service impl
|
|
* @Description: activiti service impl
|
|
@@ -77,6 +85,9 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
@Resource
|
|
@Resource
|
|
TFFlowService tfFlowService;
|
|
TFFlowService tfFlowService;
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ SysUserService sysUserService;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 注册流程
|
|
* 注册流程
|
|
*
|
|
*
|
|
@@ -309,7 +320,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
}
|
|
}
|
|
String processInstanceId = task.getProcessInstanceId();
|
|
String processInstanceId = task.getProcessInstanceId();
|
|
QueryWrapper<ExamTask> examTaskQueryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<ExamTask> examTaskQueryWrapper = new QueryWrapper<>();
|
|
- examTaskQueryWrapper.lambda().eq(ExamTask::getFlowId, Long.parseLong(task.getProcessInstanceId()));
|
|
|
|
|
|
+ examTaskQueryWrapper.lambda().eq(ExamTask::getFlowId, Long.parseLong(processInstanceId));
|
|
ExamTask examTask = examTaskService.getOne(examTaskQueryWrapper);
|
|
ExamTask examTask = examTaskService.getOne(examTaskQueryWrapper);
|
|
|
|
|
|
String processDefinitionId = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult().getProcessDefinitionId();
|
|
String processDefinitionId = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult().getProcessDefinitionId();
|
|
@@ -500,4 +511,95 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
}
|
|
}
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 获取所有流程节点待审批人
|
|
|
|
+ *
|
|
|
|
+ * @param courseCode
|
|
|
|
+ * @param taskId
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public FlowTaskApprovePeopleAllResult taskApproverAll(String courseCode, String taskId) {
|
|
|
|
+ FlowTaskApprovePeopleAllResult flowTaskApprovePeopleAllResult = null;
|
|
|
|
+ List<FlowTaskApprovePeopleResult> flowTaskApprovePeopleResultList = null;
|
|
|
|
+ if (Objects.nonNull(taskId) && !Objects.equals(taskId, "")) {//说明从已审核的节点开始捞人
|
|
|
|
+ flowTaskApprovePeopleAllResult = new FlowTaskApprovePeopleAllResult();
|
|
|
|
+ flowTaskApprovePeopleResultList = new LinkedList();
|
|
|
|
+ Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
|
|
|
+ flowTaskApprovePeopleAllResult.setFlowId(Long.parseLong(task.getProcessInstanceId()));
|
|
|
|
+ if (Objects.isNull(task)) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("流程任务为空");
|
|
|
|
+ }
|
|
|
|
+ //获取当前流程节点
|
|
|
|
+ TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(flowTaskApprovePeopleAllResult.getFlowId());
|
|
|
|
+ if (Objects.isNull(tfFlowApprove)) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("未找到流程状态记录");
|
|
|
|
+ }
|
|
|
|
+ if (tfFlowApprove.getSetup() <= 0) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("流程已结束或已终止");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ QueryWrapper<ExamTask> examTaskQueryWrapper = new QueryWrapper<>();
|
|
|
|
+ examTaskQueryWrapper.lambda().eq(ExamTask::getFlowId, flowTaskApprovePeopleAllResult.getFlowId());
|
|
|
|
+ ExamTask examTask = examTaskService.getOne(examTaskQueryWrapper);
|
|
|
|
+
|
|
|
|
+ IPage<FlowApproveResult> flowApproveResultIPage = tfFlowService.flowApproveList(new Page<>(SystemConstant.PAGE_NUMBER, SystemConstant.PAGE_SIZE), null, SystemConstant.getHeadOrUserSchoolId(), null, flowTaskApprovePeopleAllResult.getFlowId());
|
|
|
|
+ FlowApproveResult flowApproveResult = null;
|
|
|
|
+ if (Objects.nonNull(flowApproveResultIPage) && flowApproveResultIPage.getRecords().size() > 0) {
|
|
|
|
+ flowApproveResult = flowApproveResultIPage.getRecords().get(0);
|
|
|
|
+ }
|
|
|
|
+ switch (tfFlowApprove.getSetup()) {
|
|
|
|
+ case 1:
|
|
|
|
+ //获取教研室主任审批人
|
|
|
|
+ List<ApproveUserResult> sysUserDirectorList = sysUserService.findByDirectorApprove(examTask.getCourseCode());
|
|
|
|
+ flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup(), sysUserDirectorList));
|
|
|
|
+ Set<Long> orgIds = sysUserDirectorList.stream().map(s -> s.getOrgId()).collect(Collectors.toSet());
|
|
|
|
+ //获取院长审批人
|
|
|
|
+ List<ApproveUserResult> sysUserPresidentList = sysUserService.findByPresidentApprove(new ArrayList<>(orgIds));
|
|
|
|
+ flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.SECOND_APPROVE.getSetup(), sysUserPresidentList));
|
|
|
|
+ break;
|
|
|
|
+ case 2:
|
|
|
|
+ if (Objects.nonNull(flowApproveResult)) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("未找到流程记录");
|
|
|
|
+ }
|
|
|
|
+ //获取命题已审
|
|
|
|
+ List<ApproveUserResult> approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
|
|
|
|
+ flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.SUBMIT.getSetup(), true, approveUserMtResult));
|
|
|
|
+ //获取院长审批人
|
|
|
|
+ orgIds = approveUserMtResult.stream().map(s -> s.getOrgId()).collect(Collectors.toSet());
|
|
|
|
+ sysUserPresidentList = sysUserService.findByPresidentApprove(new ArrayList<>(orgIds));
|
|
|
|
+ flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.SECOND_APPROVE.getSetup(), sysUserPresidentList));
|
|
|
|
+ break;
|
|
|
|
+ case 3:
|
|
|
|
+ if (Objects.nonNull(flowApproveResult)) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("未找到流程记录");
|
|
|
|
+ }
|
|
|
|
+ //获取命题已审
|
|
|
|
+ approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
|
|
|
|
+ flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.SUBMIT.getSetup(), true, approveUserMtResult));
|
|
|
|
+ //获取主任已审
|
|
|
|
+ sysUserDirectorList = sysUserService.findById(flowApproveResult.getPrimaryApproveId());
|
|
|
|
+ flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup(), true, sysUserDirectorList));
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ } else {//获取整个节点审批人
|
|
|
|
+ if (Objects.isNull(courseCode) || Objects.equals(courseCode, "")) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("课程编码为空");
|
|
|
|
+ }
|
|
|
|
+ flowTaskApprovePeopleAllResult = new FlowTaskApprovePeopleAllResult();
|
|
|
|
+ flowTaskApprovePeopleResultList = new LinkedList();
|
|
|
|
+ //获取教研室主任审批人
|
|
|
|
+ List<ApproveUserResult> sysUserDirectorList = sysUserService.findByDirectorApprove(courseCode);
|
|
|
|
+ flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup(), sysUserDirectorList));
|
|
|
|
+ Set<Long> orgIds = sysUserDirectorList.stream().map(s -> s.getOrgId()).collect(Collectors.toSet());
|
|
|
|
+ //获取院长审批人
|
|
|
|
+ List<ApproveUserResult> sysUserPresidentList = sysUserService.findByPresidentApprove(new ArrayList<>(orgIds));
|
|
|
|
+ flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.SECOND_APPROVE.getSetup(), sysUserPresidentList));
|
|
|
|
+ }
|
|
|
|
+ flowTaskApprovePeopleAllResult.setApproveUserList(flowTaskApprovePeopleResultList);
|
|
|
|
+ return flowTaskApprovePeopleAllResult;
|
|
|
|
+ }
|
|
}
|
|
}
|