|
@@ -14,7 +14,6 @@ import com.qmth.distributed.print.business.enums.ExamStatusEnum;
|
|
|
import com.qmth.distributed.print.business.enums.FlowModelEnum;
|
|
|
import com.qmth.distributed.print.business.service.*;
|
|
|
import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
|
|
|
-import com.qmth.teachcloud.common.config.DictionaryConfig;
|
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
|
import com.qmth.teachcloud.common.entity.BasicSchool;
|
|
|
import com.qmth.teachcloud.common.entity.SysOrg;
|
|
@@ -32,6 +31,7 @@ import org.activiti.engine.RepositoryService;
|
|
|
import org.activiti.engine.RuntimeService;
|
|
|
import org.activiti.engine.TaskService;
|
|
|
import org.activiti.engine.impl.RepositoryServiceImpl;
|
|
|
+import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
|
|
|
import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
|
|
|
import org.activiti.engine.repository.DeploymentBuilder;
|
|
|
import org.activiti.engine.runtime.ProcessInstance;
|
|
@@ -185,9 +185,9 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
tfFlowApproveQueryWrapper.lambda().eq(TFFlowApprove::getFlowId, Long.parseLong(flowId));
|
|
|
TFFlowApprove tfFlowApprove = tfFlowApproveService.getOne(tfFlowApproveQueryWrapper);
|
|
|
if (Objects.isNull(tfFlowApprove)) {
|
|
|
- ExamTask examTask = examTaskService.findByFlowId(Long.parseLong(flowId));
|
|
|
+ ExamTask examTask = examTaskService.findByFlowId(flowId);
|
|
|
int count = sysUserService.countByTeachingRoomId(examTask.getTeachingRoomId());
|
|
|
- tfFlowApprove = new TFFlowApprove(sysUser.getSchoolId(), sysUser.getOrgId(), Long.parseLong(flowId), sysUser.getId(), FlowStatusEnum.END, sysUser.getId(), count == 0 ? FlowModelEnum.CHOOSE : FlowModelEnum.SYSTEM);
|
|
|
+ tfFlowApprove = new TFFlowApprove(sysUser.getSchoolId(), sysUser.getOrgId(), flowId, sysUser.getId(), FlowStatusEnum.END, sysUser.getId(), count == 0 ? FlowModelEnum.CHOOSE : FlowModelEnum.SYSTEM);
|
|
|
} else {
|
|
|
tfFlowApprove.setStatus(FlowStatusEnum.END);
|
|
|
tfFlowApprove.setSetup(FlowApproveSetupEnum.END.getSetup());
|
|
@@ -196,8 +196,8 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
tfFlowApproveService.saveOrUpdate(tfFlowApprove);
|
|
|
|
|
|
//流程流水日志
|
|
|
- ExamTask examTask = examTaskService.findByFlowId(Long.parseLong(flowId));
|
|
|
- TFFlowLog tfFlowLog = new TFFlowLog(sysUser.getSchoolId(), sysUser.getOrgId(), Long.parseLong(flowId), examTask.getId(), sysUser.getId(), sysUser.getId(), FlowApproveSetupEnum.END.getTitle());
|
|
|
+ ExamTask examTask = examTaskService.findByFlowId(flowId);
|
|
|
+ TFFlowLog tfFlowLog = new TFFlowLog(sysUser.getSchoolId(), sysUser.getOrgId(), flowId, examTask.getId(), sysUser.getId(), sysUser.getId(), FlowApproveSetupEnum.END.getTitle());
|
|
|
tfFlowLog.setApproveOperation(FlowApproveOperationEnum.END);
|
|
|
tfFlowLog.setApproveSetup(FlowApproveSetupEnum.END.getSetup());
|
|
|
tfFlowLogService.save(tfFlowLog);
|
|
@@ -217,7 +217,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
.eq(TFFlowApproveLog::getTaskId, examTask.getId());
|
|
|
TFFlowApproveLog tfFlowApproveLog = tfFlowApproveLogService.getOne(tfFlowApproveLogQueryWrapper);
|
|
|
if (Objects.isNull(tfFlowApproveLog)) {
|
|
|
- tfFlowApproveLog = new TFFlowApproveLog(sysUser.getSchoolId(), sysUser.getOrgId(), Long.parseLong(flowId), examTask.getId(), sysUser.getId(), sysUser.getId());
|
|
|
+ tfFlowApproveLog = new TFFlowApproveLog(sysUser.getSchoolId(), sysUser.getOrgId(), flowId, examTask.getId(), sysUser.getId(), sysUser.getId());
|
|
|
}
|
|
|
FlowApproveSetupEnum setupEnum = FlowApproveSetupEnum.convertToInstance(userTask.getId());
|
|
|
//广东医科大学流程
|
|
@@ -272,7 +272,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
public void flowApproveStart(Map<String, Object> map) {
|
|
|
SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
Optional.ofNullable(map.get(SystemConstant.FLOW_ID)).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程id不能为空"));
|
|
|
- Long flowId = Long.parseLong(map.get(SystemConstant.FLOW_ID).toString());
|
|
|
+ String flowId = (String) map.get(SystemConstant.FLOW_ID);
|
|
|
|
|
|
Optional.ofNullable(map.get(SystemConstant.FLOW_STATUS)).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程状态不能为空"));
|
|
|
FlowStatusEnum flowStatusEnum = (FlowStatusEnum) map.get(SystemConstant.FLOW_STATUS);
|
|
@@ -303,7 +303,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
Task task = taskService.createTaskQuery().taskId(flowTaskId).singleResult();
|
|
|
Optional.ofNullable(task).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程任务为空或该流程已被他人审核,请刷新再试!"));
|
|
|
String processInstanceId = task.getProcessInstanceId();
|
|
|
- ExamTask examTask = examTaskService.findByFlowId(Long.parseLong(processInstanceId));
|
|
|
+ ExamTask examTask = examTaskService.findByFlowId(processInstanceId);
|
|
|
|
|
|
String processDefinitionId = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult().getProcessDefinitionId();
|
|
|
ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService).getDeployedProcessDefinition(processDefinitionId);
|
|
@@ -328,13 +328,14 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
UserTask userTask = (UserTask) currFlow;
|
|
|
String remark = Objects.nonNull(map.get(SystemConstant.APPROVE_REMARK)) ? map.get(SystemConstant.APPROVE_REMARK).toString() : null;
|
|
|
//流程流水日志
|
|
|
- tfFlowLog = new TFFlowLog(sysUser.getSchoolId(), sysUser.getOrgId(), Long.parseLong(processInstanceId), examTask.getId(), sysUser.getId(), sysUser.getId(), remark);
|
|
|
+ tfFlowLog = new TFFlowLog(sysUser.getSchoolId(), sysUser.getOrgId(), processInstanceId, examTask.getId(), sysUser.getId(), sysUser.getId(), remark);
|
|
|
FlowApproveSetupEnum setupEnum = FlowApproveSetupEnum.convertToInstance(userTask.getId());
|
|
|
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(), processInstanceId, examTask.getId(), sysUser.getId(), sysUser.getId());
|
|
|
}
|
|
|
//广东医科大学流程
|
|
|
- if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)) {
|
|
|
+ if (Objects.nonNull(processDefinitionEntity) && (processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)
|
|
|
+ || processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_SUB_FLOW_KEY))) {
|
|
|
if (setupEnum == FlowApproveSetupEnum.SUBMIT) {//命题提交
|
|
|
this.assignSubmit(task, sysUser, tfFlowApprove, tfFlowLog, map);
|
|
|
} else if (setupEnum == FlowApproveSetupEnum.PRIMARY_APPROVE) {//主任提交
|
|
@@ -369,13 +370,45 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
} else if (approve == FlowApproveVariableEnum.SECOND_APPROVE) {//提交
|
|
|
tfFlowLog.setApproveOperation(FlowApproveOperationEnum.APPROVE);
|
|
|
tfFlowApproveLog.setSecondApproveOperation(FlowApproveOperationEnum.APPROVE);
|
|
|
- tfFlowApprove.setStatus(FlowStatusEnum.FINISH);
|
|
|
- tfFlowApprove.setSetup(FlowApproveSetupEnum.FINISH.getSetup());
|
|
|
+ tfFlowApprove.setStatus(FlowStatusEnum.AUDITING);
|
|
|
+ tfFlowApprove.setSetup(FlowApproveSetupEnum.THREE_APPROVE.getSetup());
|
|
|
} else {
|
|
|
throw ExceptionResultEnum.ERROR.exception("流程变量值错误");
|
|
|
}
|
|
|
FlowApproveVariableEnum finalApprove = approve;
|
|
|
map.computeIfAbsent(SystemConstant.APPROVE, v -> finalApprove.getId());
|
|
|
+ TFFlowApproveLog finalTfFlowApproveLog = tfFlowApproveLog;
|
|
|
+ map.computeIfAbsent(SystemConstant.APPROVE_ID, v -> finalTfFlowApproveLog.getStartId());
|
|
|
+ } else if (setupEnum == FlowApproveSetupEnum.THREE_APPROVE) {//命题提交
|
|
|
+ flowSubmitVaild(task, sysUser.getId());
|
|
|
+ tfFlowLog.setApproveSetup(FlowApproveSetupEnum.THREE_APPROVE.getSetup());
|
|
|
+ tfFlowLog.setApproveOperation(FlowApproveOperationEnum.APPROVE);
|
|
|
+ tfFlowApprove.setStatus(FlowStatusEnum.AUDITING);
|
|
|
+ tfFlowApprove.setSetup(FlowApproveSetupEnum.THREE_APPROVE.getSetup());
|
|
|
+ tfFlowApproveLog.setStartApproveId(sysUser.getId());
|
|
|
+ tfFlowApproveLog.setSecondApproveRemark(remark);
|
|
|
+ map.computeIfAbsent(SystemConstant.APPROVE_PRINT_USER_IDS, v -> map.get(SystemConstant.APPROVE_USER_IDS));
|
|
|
+ } else if (setupEnum == FlowApproveSetupEnum.FOUR_APPROVE) {//印刷员提交
|
|
|
+ flowApproveVaild(task, sysUser.getId(), map);
|
|
|
+ FlowApprovePassEnum approvePass = (FlowApprovePassEnum) map.get(SystemConstant.APPROVE_OPERATION);
|
|
|
+ FlowApproveVariableEnum approve = approvePass == FlowApprovePassEnum.PASS ? FlowApproveVariableEnum.PRIMARY_APPROVE : FlowApproveVariableEnum.PRIMARY_REJECT;
|
|
|
+ tfFlowLog.setApproveSetup(FlowApproveSetupEnum.FOUR_APPROVE.getSetup());
|
|
|
+ tfFlowApproveLog.setFourApproveId(sysUser.getId());
|
|
|
+ tfFlowApproveLog.setFourApproveRemark(remark);
|
|
|
+ if (approve == FlowApproveVariableEnum.FOUR_REJECT) {//驳回命题
|
|
|
+ tfFlowLog.setApproveOperation(FlowApproveOperationEnum.REJECT);
|
|
|
+ tfFlowApproveLog.setFourApproveOperation(FlowApproveOperationEnum.REJECT);
|
|
|
+ tfFlowApprove.setStatus(FlowStatusEnum.REJECT);
|
|
|
+ tfFlowApprove.setSetup(FlowApproveSetupEnum.THREE_APPROVE.getSetup());
|
|
|
+ } else if (approve == FlowApproveVariableEnum.FOUR_APPROVE) {//提交
|
|
|
+ tfFlowLog.setApproveOperation(FlowApproveOperationEnum.APPROVE);
|
|
|
+ tfFlowApproveLog.setFourApproveOperation(FlowApproveOperationEnum.APPROVE);
|
|
|
+ tfFlowApprove.setStatus(FlowStatusEnum.FINISH);
|
|
|
+ tfFlowApprove.setSetup(FlowApproveSetupEnum.FINISH.getSetup());
|
|
|
+ } else {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("流程变量值错误");
|
|
|
+ }
|
|
|
+ map.computeIfAbsent(SystemConstant.APPROVE, v -> approve.getId());
|
|
|
}
|
|
|
}
|
|
|
//江西中医药大学
|
|
@@ -444,6 +477,23 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
FlowApproveSetupEnum flowApproveSetupEnum = FlowApproveSetupEnum.convertToInstance(userTask.getId());
|
|
|
flowTaskResultList.add(new FlowTaskResult(Long.parseLong(flowId), userTask.getName(), flowApproveSetupEnum.getId(), flowApproveSetupEnum.getSetup()));
|
|
|
}
|
|
|
+ } else if (flowElement instanceof CallActivity) {
|
|
|
+ CallActivity callActivity = (CallActivity) flowElement;
|
|
|
+ String processDefinitionIdSub = examTaskService.getProcessDefinitionIdByMaxVersion(callActivity.getCalledElement());
|
|
|
+ ProcessDefinitionEntity processDefinitionEntitySub = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService).getDeployedProcessDefinition(processDefinitionIdSub);
|
|
|
+ BpmnModel bpmnModelSub = repositoryService.getBpmnModel(processDefinitionIdSub);
|
|
|
+ Process processSub = bpmnModelSub.getProcessById(processDefinitionEntitySub.getKey());
|
|
|
+ Collection<FlowElement> flowElementsSubs = processSub.getFlowElements();
|
|
|
+ for (FlowElement flowElementSub : flowElementsSubs) {
|
|
|
+ //假设是任务节点
|
|
|
+ if (flowElementSub instanceof UserTask) {
|
|
|
+ UserTask userTask = (UserTask) flowElementSub;
|
|
|
+ if (Objects.nonNull(userTask)) {
|
|
|
+ FlowApproveSetupEnum flowApproveSetupEnum = FlowApproveSetupEnum.convertToInstance(userTask.getId());
|
|
|
+ flowTaskResultList.add(new FlowTaskResult(Long.parseLong(flowId), userTask.getName(), flowApproveSetupEnum.getId(), flowApproveSetupEnum.getSetup()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
return flowTaskResultList;
|
|
@@ -463,8 +513,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
throw ExceptionResultEnum.ERROR.exception("有在途的流程,无法删除!");
|
|
|
} else {
|
|
|
UpdateWrapper<TFFlow> tfFlowUpdateWrapper = new UpdateWrapper<>();
|
|
|
- tfFlowUpdateWrapper.lambda().eq(TFFlow::getFlowKey, SystemConstant.GDYKDX_FLOW_KEY)
|
|
|
- .eq(TFFlow::getActFlowId, tfFlow.getActFlowId())
|
|
|
+ tfFlowUpdateWrapper.lambda().eq(TFFlow::getId, id)
|
|
|
.set(TFFlow::getEnable, false);
|
|
|
tfFlowService.update(tfFlowUpdateWrapper);
|
|
|
}
|
|
@@ -485,7 +534,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
if (Objects.nonNull(taskId) && !Objects.equals(taskId, "")) {//说明从已审核的节点开始捞人
|
|
|
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
|
|
Optional.ofNullable(task).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程任务为空或该流程已被他人审核,请刷新再试!"));
|
|
|
- flowTaskApprovePeopleAllResult = new FlowTaskApprovePeopleAllResult(Long.parseLong(task.getProcessInstanceId()));
|
|
|
+ flowTaskApprovePeopleAllResult = new FlowTaskApprovePeopleAllResult(task.getProcessInstanceId());
|
|
|
flowTaskApprovePeopleResultList = new LinkedList();
|
|
|
//获取当前流程节点
|
|
|
TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(flowTaskApprovePeopleAllResult.getFlowId());
|
|
@@ -633,7 +682,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
public boolean taskApproverExchange(String userId, String taskId) {
|
|
|
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
|
|
Optional.ofNullable(task).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程任务为空或该流程已被他人审核,请刷新再试!"));
|
|
|
- Long flowId = Long.parseLong(task.getProcessInstanceId());
|
|
|
+ String flowId = task.getProcessInstanceId();
|
|
|
TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(flowId);
|
|
|
Optional.ofNullable(tfFlowApprove).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到流程状态记录"));
|
|
|
if (tfFlowApprove.getSetup() <= 0) {
|
|
@@ -707,7 +756,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
|
|
Optional.ofNullable(task).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程任务为空或该流程已被他人审核,请刷新再试!"));
|
|
|
- FlowTaskApprovePeopleAllResult flowTaskApprovePeopleAllResult = new FlowTaskApprovePeopleAllResult(Long.parseLong(task.getProcessInstanceId()));
|
|
|
+ FlowTaskApprovePeopleAllResult flowTaskApprovePeopleAllResult = new FlowTaskApprovePeopleAllResult(task.getProcessInstanceId());
|
|
|
//获取当前流程节点
|
|
|
TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(flowTaskApprovePeopleAllResult.getFlowId());
|
|
|
Optional.ofNullable(tfFlowApprove).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到流程状态记录"));
|
|
@@ -796,7 +845,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
|
|
Optional.ofNullable(task).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程任务为空或该流程已被他人审核,请刷新再试!"));
|
|
|
|
|
|
- flowTaskApprovePeopleAllResult = new FlowTaskApprovePeopleAllResult(Long.parseLong(task.getProcessInstanceId()));
|
|
|
+ flowTaskApprovePeopleAllResult = new FlowTaskApprovePeopleAllResult(task.getProcessInstanceId());
|
|
|
//获取当前流程节点
|
|
|
TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(flowTaskApprovePeopleAllResult.getFlowId());
|
|
|
Optional.ofNullable(tfFlowApprove).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到流程状态记录"));
|