|
@@ -351,10 +351,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
tfFlowLog = new TFFlowLog(sysUser.getSchoolId(), sysUser.getOrgId(), Long.parseLong(processInstanceId), examTask.getId(), sysUser.getId(), sysUser.getId(), remark);
|
|
tfFlowLog = new TFFlowLog(sysUser.getSchoolId(), sysUser.getOrgId(), Long.parseLong(processInstanceId), examTask.getId(), sysUser.getId(), sysUser.getId(), remark);
|
|
FlowGdykdxApproveSetupEnum setupEnum = FlowGdykdxApproveSetupEnum.convertToInstance(userTask.getId());
|
|
FlowGdykdxApproveSetupEnum setupEnum = FlowGdykdxApproveSetupEnum.convertToInstance(userTask.getId());
|
|
if (setupEnum == FlowGdykdxApproveSetupEnum.SUBMIT) {//命题提交
|
|
if (setupEnum == FlowGdykdxApproveSetupEnum.SUBMIT) {//命题提交
|
|
- Task taskUser = taskService.createTaskQuery().taskId(flowTaskId).taskAssignee(String.valueOf(sysUser.getId())).singleResult();
|
|
|
|
- if (Objects.isNull(taskUser)) {
|
|
|
|
- throw ExceptionResultEnum.ERROR.exception("不能提交他人的任务");
|
|
|
|
- }
|
|
|
|
|
|
+ flowSubmitVaild(task, sysUser.getId());
|
|
if (Objects.isNull(tfFlowApproveLog)) {
|
|
if (Objects.isNull(tfFlowApproveLog)) {
|
|
tfFlowApproveLog = new TFFlowApproveLog(sysUser.getSchoolId(), sysUser.getOrgId(), Long.parseLong(processInstanceId), examTask.getId(), sysUser.getId(), sysUser.getId());
|
|
tfFlowApproveLog = new TFFlowApproveLog(sysUser.getSchoolId(), sysUser.getOrgId(), Long.parseLong(processInstanceId), examTask.getId(), sysUser.getId(), sysUser.getId());
|
|
}
|
|
}
|
|
@@ -363,13 +360,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
tfFlowApprove.setStatus(FlowStatusEnum.AUDITING);
|
|
tfFlowApprove.setStatus(FlowStatusEnum.AUDITING);
|
|
tfFlowApprove.setSetup(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup());
|
|
tfFlowApprove.setSetup(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup());
|
|
} else if (setupEnum == FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE) {//主任提交
|
|
} else if (setupEnum == FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE) {//主任提交
|
|
- Task taskUser = taskService.createTaskQuery().taskId(flowTaskId).taskCandidateUser(String.valueOf(sysUser.getId())).singleResult();
|
|
|
|
- if (Objects.isNull(taskUser)) {
|
|
|
|
- throw ExceptionResultEnum.ERROR.exception("不能提交他人的任务");
|
|
|
|
- }
|
|
|
|
- if (Objects.isNull(map.get(SystemConstant.APPROVE_OPERATION))) {
|
|
|
|
- throw ExceptionResultEnum.ERROR.exception("流程审核操作不能为空");
|
|
|
|
- }
|
|
|
|
|
|
+ flowApproveVaild(task, sysUser.getId(), map);
|
|
FlowApprovePassEnum approvePass = (FlowApprovePassEnum) map.get(SystemConstant.APPROVE_OPERATION);
|
|
FlowApprovePassEnum approvePass = (FlowApprovePassEnum) map.get(SystemConstant.APPROVE_OPERATION);
|
|
FlowApproveVariableEnum approve = approvePass == FlowApprovePassEnum.PASS ? FlowApproveVariableEnum.PRIMARY_APPROVE : FlowApproveVariableEnum.PRIMARY_REJECT;
|
|
FlowApproveVariableEnum approve = approvePass == FlowApprovePassEnum.PASS ? FlowApproveVariableEnum.PRIMARY_APPROVE : FlowApproveVariableEnum.PRIMARY_REJECT;
|
|
tfFlowLog.setApproveSetup(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup());
|
|
tfFlowLog.setApproveSetup(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup());
|
|
@@ -390,13 +381,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
}
|
|
}
|
|
map.computeIfAbsent(SystemConstant.APPROVE, v -> approve.getId());
|
|
map.computeIfAbsent(SystemConstant.APPROVE, v -> approve.getId());
|
|
} else if (setupEnum == FlowGdykdxApproveSetupEnum.SECOND_APPROVE) {//院长提交
|
|
} else if (setupEnum == FlowGdykdxApproveSetupEnum.SECOND_APPROVE) {//院长提交
|
|
- Task taskUser = taskService.createTaskQuery().taskId(flowTaskId).taskCandidateUser(String.valueOf(sysUser.getId())).singleResult();
|
|
|
|
- if (Objects.isNull(taskUser)) {
|
|
|
|
- throw ExceptionResultEnum.ERROR.exception("不能提交他人的任务");
|
|
|
|
- }
|
|
|
|
- if (Objects.isNull(map.get(SystemConstant.APPROVE_OPERATION))) {
|
|
|
|
- throw ExceptionResultEnum.ERROR.exception("流程审核操作不能为空");
|
|
|
|
- }
|
|
|
|
|
|
+ flowApproveVaild(task, sysUser.getId(), map);
|
|
FlowApprovePassEnum approvePass = (FlowApprovePassEnum) map.get(SystemConstant.APPROVE_OPERATION);
|
|
FlowApprovePassEnum approvePass = (FlowApprovePassEnum) map.get(SystemConstant.APPROVE_OPERATION);
|
|
FlowApproveVariableEnum approve = null;
|
|
FlowApproveVariableEnum approve = null;
|
|
tfFlowApproveLog.setSecondApproveId(sysUser.getId());
|
|
tfFlowApproveLog.setSecondApproveId(sysUser.getId());
|
|
@@ -520,17 +505,17 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
- public FlowTaskApprovePeopleAllResult taskApproverAll(String courseCode, String taskId) {
|
|
|
|
|
|
+ public FlowTaskApprovePeopleAllResult taskApproverPeopleAll(String courseCode, String taskId) {
|
|
FlowTaskApprovePeopleAllResult flowTaskApprovePeopleAllResult = null;
|
|
FlowTaskApprovePeopleAllResult flowTaskApprovePeopleAllResult = null;
|
|
List<FlowTaskApprovePeopleResult> flowTaskApprovePeopleResultList = null;
|
|
List<FlowTaskApprovePeopleResult> flowTaskApprovePeopleResultList = null;
|
|
if (Objects.nonNull(taskId) && !Objects.equals(taskId, "")) {//说明从已审核的节点开始捞人
|
|
if (Objects.nonNull(taskId) && !Objects.equals(taskId, "")) {//说明从已审核的节点开始捞人
|
|
- flowTaskApprovePeopleAllResult = new FlowTaskApprovePeopleAllResult();
|
|
|
|
- flowTaskApprovePeopleResultList = new LinkedList();
|
|
|
|
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
|
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
|
- flowTaskApprovePeopleAllResult.setFlowId(Long.parseLong(task.getProcessInstanceId()));
|
|
|
|
if (Objects.isNull(task)) {
|
|
if (Objects.isNull(task)) {
|
|
throw ExceptionResultEnum.ERROR.exception("流程任务为空");
|
|
throw ExceptionResultEnum.ERROR.exception("流程任务为空");
|
|
}
|
|
}
|
|
|
|
+ flowTaskApprovePeopleAllResult = new FlowTaskApprovePeopleAllResult();
|
|
|
|
+ flowTaskApprovePeopleResultList = new LinkedList();
|
|
|
|
+ flowTaskApprovePeopleAllResult.setFlowId(Long.parseLong(task.getProcessInstanceId()));
|
|
//获取当前流程节点
|
|
//获取当前流程节点
|
|
TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(flowTaskApprovePeopleAllResult.getFlowId());
|
|
TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(flowTaskApprovePeopleAllResult.getFlowId());
|
|
if (Objects.isNull(tfFlowApprove)) {
|
|
if (Objects.isNull(tfFlowApprove)) {
|
|
@@ -551,35 +536,29 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
}
|
|
}
|
|
switch (tfFlowApprove.getSetup()) {
|
|
switch (tfFlowApprove.getSetup()) {
|
|
case 1:
|
|
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));
|
|
|
|
|
|
+ flowTaskApprovePeopleResultList = getApproveUserAll(examTask.getCourseCode(), flowTaskApprovePeopleResultList);
|
|
break;
|
|
break;
|
|
case 2:
|
|
case 2:
|
|
- if (Objects.nonNull(flowApproveResult)) {
|
|
|
|
- throw ExceptionResultEnum.ERROR.exception("未找到流程记录");
|
|
|
|
|
|
+ if (Objects.isNull(flowApproveResult)) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("未找到流程审批记录");
|
|
}
|
|
}
|
|
//获取命题已审
|
|
//获取命题已审
|
|
List<ApproveUserResult> approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
|
|
List<ApproveUserResult> approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
|
|
flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.SUBMIT.getSetup(), true, approveUserMtResult));
|
|
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));
|
|
|
|
|
|
+ Set<Long> orgIds = approveUserMtResult.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));
|
|
flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.SECOND_APPROVE.getSetup(), sysUserPresidentList));
|
|
break;
|
|
break;
|
|
case 3:
|
|
case 3:
|
|
- if (Objects.nonNull(flowApproveResult)) {
|
|
|
|
- throw ExceptionResultEnum.ERROR.exception("未找到流程记录");
|
|
|
|
|
|
+ if (Objects.isNull(flowApproveResult)) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("未找到流程审批记录");
|
|
}
|
|
}
|
|
//获取命题已审
|
|
//获取命题已审
|
|
approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
|
|
approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
|
|
flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.SUBMIT.getSetup(), true, approveUserMtResult));
|
|
flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.SUBMIT.getSetup(), true, approveUserMtResult));
|
|
//获取主任已审
|
|
//获取主任已审
|
|
- sysUserDirectorList = sysUserService.findById(flowApproveResult.getPrimaryApproveId());
|
|
|
|
|
|
+ List<ApproveUserResult> sysUserDirectorList = sysUserService.findById(flowApproveResult.getPrimaryApproveId());
|
|
flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup(), true, sysUserDirectorList));
|
|
flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup(), true, sysUserDirectorList));
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
@@ -590,16 +569,113 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
throw ExceptionResultEnum.ERROR.exception("课程编码为空");
|
|
throw ExceptionResultEnum.ERROR.exception("课程编码为空");
|
|
}
|
|
}
|
|
flowTaskApprovePeopleAllResult = new FlowTaskApprovePeopleAllResult();
|
|
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));
|
|
|
|
|
|
+ flowTaskApprovePeopleResultList = getApproveUserAll(courseCode, flowTaskApprovePeopleResultList);
|
|
}
|
|
}
|
|
flowTaskApprovePeopleAllResult.setApproveUserList(flowTaskApprovePeopleResultList);
|
|
flowTaskApprovePeopleAllResult.setApproveUserList(flowTaskApprovePeopleResultList);
|
|
return flowTaskApprovePeopleAllResult;
|
|
return flowTaskApprovePeopleAllResult;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 流程节点转他人审批
|
|
|
|
+ *
|
|
|
|
+ * @param userId
|
|
|
|
+ * @param taskId
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public boolean taskApproverExchange(String userId, String taskId) {
|
|
|
|
+ Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
|
|
|
+ if (Objects.isNull(task)) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("流程任务为空");
|
|
|
|
+ }
|
|
|
|
+ TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(Long.parseLong(task.getProcessInstanceId()));
|
|
|
|
+ if (Objects.isNull(tfFlowApprove)) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("未找到流程状态记录");
|
|
|
|
+ }
|
|
|
|
+ if (tfFlowApprove.getSetup() <= 0) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("流程已结束或已终止");
|
|
|
|
+ }
|
|
|
|
+ switch (tfFlowApprove.getSetup()) {
|
|
|
|
+ case 1:
|
|
|
|
+ if (Objects.nonNull(task) && Objects.nonNull(task.getAssignee()) && Objects.equals(task.getAssignee(), userId)) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("不能转给自己");
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case 2:
|
|
|
|
+ case 3:
|
|
|
|
+ if (Objects.nonNull(task) && Objects.nonNull(task.getAssignee()) && Objects.equals(task.getAssignee(), userId)) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("不能转给自己");
|
|
|
|
+ } else {
|
|
|
|
+ Task taskUser = taskService.createTaskQuery().taskId(taskId).taskCandidateUser(userId).singleResult();
|
|
|
|
+ if (Objects.nonNull(taskUser)) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("该审批人已有审批权限,无需流转");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ taskService.setAssignee(taskId, userId);
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 流程提交校验
|
|
|
|
+ *
|
|
|
|
+ * @param task
|
|
|
|
+ * @param userId
|
|
|
|
+ */
|
|
|
|
+ private void flowSubmitVaild(Task task, Long userId) {
|
|
|
|
+ if (Objects.isNull(task.getAssignee())) {
|
|
|
|
+ Task taskUser = taskService.createTaskQuery().taskId(task.getId()).taskAssignee(String.valueOf(userId)).singleResult();
|
|
|
|
+ if (Objects.isNull(taskUser)) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("不能提交他人的任务");
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ if (!Objects.equals(task.getAssignee(), String.valueOf(userId))) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("不能提交他人的任务");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 流程审批校验
|
|
|
|
+ *
|
|
|
|
+ * @param task
|
|
|
|
+ * @param userId
|
|
|
|
+ * @param map
|
|
|
|
+ */
|
|
|
|
+ private void flowApproveVaild(Task task, Long userId, Map<String, Object> map) {
|
|
|
|
+ if (Objects.isNull(task.getAssignee())) {
|
|
|
|
+ Task taskUser = taskService.createTaskQuery().taskId(task.getId()).taskCandidateUser(String.valueOf(userId)).singleResult();
|
|
|
|
+ if (Objects.isNull(taskUser)) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("不能提交他人的任务");
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ if (!Objects.equals(task.getAssignee(), String.valueOf(userId))) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("不能提交他人的任务");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (Objects.isNull(map.get(SystemConstant.APPROVE_OPERATION))) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("流程审核操作不能为空");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 获取所有审批人
|
|
|
|
+ *
|
|
|
|
+ * @param courseCode
|
|
|
|
+ * @param flowTaskApprovePeopleResultList
|
|
|
|
+ */
|
|
|
|
+ private List<FlowTaskApprovePeopleResult> getApproveUserAll(String courseCode, List<FlowTaskApprovePeopleResult> flowTaskApprovePeopleResultList) {
|
|
|
|
+ flowTaskApprovePeopleResultList = Objects.isNull(flowTaskApprovePeopleResultList) ? new LinkedList() : flowTaskApprovePeopleResultList;
|
|
|
|
+ //获取教研室主任审批人
|
|
|
|
+ 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));
|
|
|
|
+ return flowTaskApprovePeopleResultList;
|
|
|
|
+ }
|
|
}
|
|
}
|