|
@@ -4,10 +4,12 @@ import com.google.common.reflect.TypeToken;
|
|
import com.google.gson.Gson;
|
|
import com.google.gson.Gson;
|
|
import com.qmth.distributed.print.business.entity.ExamTask;
|
|
import com.qmth.distributed.print.business.entity.ExamTask;
|
|
import com.qmth.distributed.print.business.entity.TFFlowApprove;
|
|
import com.qmth.distributed.print.business.entity.TFFlowApprove;
|
|
|
|
+import com.qmth.distributed.print.business.entity.TFFlowLog;
|
|
import com.qmth.distributed.print.business.enums.MessageEnum;
|
|
import com.qmth.distributed.print.business.enums.MessageEnum;
|
|
import com.qmth.distributed.print.business.service.BasicMessageService;
|
|
import com.qmth.distributed.print.business.service.BasicMessageService;
|
|
import com.qmth.distributed.print.business.service.ExamTaskService;
|
|
import com.qmth.distributed.print.business.service.ExamTaskService;
|
|
import com.qmth.distributed.print.business.service.TFFlowApproveService;
|
|
import com.qmth.distributed.print.business.service.TFFlowApproveService;
|
|
|
|
+import com.qmth.distributed.print.business.service.TFFlowLogService;
|
|
import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
|
|
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;
|
|
@@ -17,11 +19,16 @@ import com.qmth.teachcloud.common.enums.FlowApproveSetupEnum;
|
|
import com.qmth.teachcloud.common.enums.FlowStatusEnum;
|
|
import com.qmth.teachcloud.common.enums.FlowStatusEnum;
|
|
import com.qmth.teachcloud.common.service.SysUserService;
|
|
import com.qmth.teachcloud.common.service.SysUserService;
|
|
import com.qmth.teachcloud.common.util.JacksonUtil;
|
|
import com.qmth.teachcloud.common.util.JacksonUtil;
|
|
|
|
+import org.activiti.bpmn.model.BpmnModel;
|
|
|
|
+import org.activiti.bpmn.model.FlowNode;
|
|
|
|
+import org.activiti.bpmn.model.UserTask;
|
|
|
|
+import org.activiti.engine.RepositoryService;
|
|
import org.activiti.engine.delegate.DelegateTask;
|
|
import org.activiti.engine.delegate.DelegateTask;
|
|
import org.activiti.engine.delegate.TaskListener;
|
|
import org.activiti.engine.delegate.TaskListener;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Objects;
|
|
import java.util.Objects;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
@@ -47,25 +54,47 @@ public class DirectorApproveByJxzyyListener implements TaskListener {
|
|
ExamTaskService examTaskService = SpringContextHolder.getBean(ExamTaskService.class);
|
|
ExamTaskService examTaskService = SpringContextHolder.getBean(ExamTaskService.class);
|
|
BasicMessageService basicMessageService = SpringContextHolder.getBean(BasicMessageService.class);
|
|
BasicMessageService basicMessageService = SpringContextHolder.getBean(BasicMessageService.class);
|
|
TFFlowApproveService tfFlowApproveService = SpringContextHolder.getBean(TFFlowApproveService.class);
|
|
TFFlowApproveService tfFlowApproveService = SpringContextHolder.getBean(TFFlowApproveService.class);
|
|
|
|
+ TFFlowLogService tfFlowLogService = SpringContextHolder.getBean(TFFlowLogService.class);
|
|
|
|
+ RepositoryService repositoryService = SpringContextHolder.getBean(RepositoryService.class);
|
|
|
|
+
|
|
List<Long> approveUserIds = (List<Long>) delegateTask.getVariable(SystemConstant.APPROVE_DIRECTOR_USER_IDS);
|
|
List<Long> approveUserIds = (List<Long>) delegateTask.getVariable(SystemConstant.APPROVE_DIRECTOR_USER_IDS);
|
|
Long flowId = SystemConstant.convertIdToLong(delegateTask.getProcessInstanceId());
|
|
Long flowId = SystemConstant.convertIdToLong(delegateTask.getProcessInstanceId());
|
|
ExamTask examTask = examTaskService.findByFlowId(flowId);
|
|
ExamTask examTask = examTaskService.findByFlowId(flowId);
|
|
- List<ApproveUserResult> sysUserList = null;
|
|
|
|
- if (Objects.nonNull(approveUserIds) && approveUserIds.size() > 0) {
|
|
|
|
- List<SysUser> sysUsers = sysUserService.listByIds(approveUserIds);
|
|
|
|
- sysUserList = new Gson().fromJson(JacksonUtil.parseJson(sysUsers), new TypeToken<List<ApproveUserResult>>() {
|
|
|
|
- }.getType());
|
|
|
|
- delegateTask.addCandidateUsers(approveUserIds.stream().map(x -> String.valueOf(x)).collect(Collectors.toList()));
|
|
|
|
|
|
+ TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(flowId, examTask.getSchoolId());
|
|
|
|
+ TFFlowLog tfFlowLog = (TFFlowLog) delegateTask.getVariable(SystemConstant.APPROVE_TF_FLOW_LOG);
|
|
|
|
+
|
|
|
|
+ String currActivityId = delegateTask.getTaskDefinitionKey();
|
|
|
|
+ BpmnModel bpmnModel = repositoryService.getBpmnModel(delegateTask.getProcessDefinitionId());
|
|
|
|
+ FlowNode currFlow = (UserTask) bpmnModel.getMainProcess().getFlowElement(currActivityId);
|
|
|
|
+ UserTask userTask = (UserTask) currFlow;
|
|
|
|
+ String approveExchangeUserId = (String) delegateTask.getVariable(SystemConstant.APPROVE_EXCHANGE_USER_ID + userTask.getId());
|
|
|
|
+ List<ApproveUserResult> sysUserList = new ArrayList<>();
|
|
|
|
+
|
|
|
|
+ if (tfFlowApprove.getStatus() == FlowStatusEnum.REJECT && Objects.nonNull(approveExchangeUserId)) {
|
|
|
|
+ sysUserList.addAll(sysUserService.findById(Long.parseLong(approveExchangeUserId)));
|
|
|
|
+ delegateTask.addCandidateUsers(sysUserList.stream().map(s -> String.valueOf(s.getId())).collect(Collectors.toList()));
|
|
|
|
+ tfFlowLog.setPendApproveId(approveExchangeUserId);
|
|
} else {
|
|
} else {
|
|
- sysUserList = sysUserService.findByJxzyyDirectorApprove(null, FlowApproveNameEnum.DIRECTOR);
|
|
|
|
- if (Objects.nonNull(sysUserList) && sysUserList.size() > 0) {
|
|
|
|
- List<String> ids = sysUserList.stream().map(s -> String.valueOf(s.getId())).collect(Collectors.toList());
|
|
|
|
- //添加或签的人员,一人通过即可进入下一环节
|
|
|
|
- delegateTask.addCandidateUsers(ids);
|
|
|
|
|
|
+ if (Objects.nonNull(approveUserIds) && approveUserIds.size() > 0) {
|
|
|
|
+ List<SysUser> sysUsers = sysUserService.listByIds(approveUserIds);
|
|
|
|
+ sysUserList = new Gson().fromJson(JacksonUtil.parseJson(sysUsers), new TypeToken<List<ApproveUserResult>>() {
|
|
|
|
+ }.getType());
|
|
|
|
+ List<String> userIdList = approveUserIds.stream().map(x -> String.valueOf(x)).collect(Collectors.toList());
|
|
|
|
+ delegateTask.addCandidateUsers(userIdList);
|
|
|
|
+ tfFlowLog.setPendApproveId(String.join(", ", userIdList));
|
|
|
|
+ } else {
|
|
|
|
+ sysUserList = sysUserService.findByJxzyyDirectorApprove(null, FlowApproveNameEnum.DIRECTOR);
|
|
|
|
+ if (Objects.nonNull(sysUserList) && sysUserList.size() > 0) {
|
|
|
|
+ List<String> ids = sysUserList.stream().map(s -> String.valueOf(s.getId())).collect(Collectors.toList());
|
|
|
|
+ //添加或签的人员,一人通过即可进入下一环节
|
|
|
|
+ delegateTask.addCandidateUsers(ids);
|
|
|
|
+ tfFlowLog.setPendApproveId(String.join(", ", ids));
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ tfFlowLogService.updateById(tfFlowLog);
|
|
|
|
+
|
|
// 发送审核短信
|
|
// 发送审核短信
|
|
- TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(flowId, examTask.getSchoolId());
|
|
|
|
if (tfFlowApprove.getStatus().equals(FlowStatusEnum.AUDITING)
|
|
if (tfFlowApprove.getStatus().equals(FlowStatusEnum.AUDITING)
|
|
&& tfFlowApprove.getSetup().equals(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup())) {
|
|
&& tfFlowApprove.getSetup().equals(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup())) {
|
|
basicMessageService.sendNoticeTaskAuditFlow(examTask, sysUserList, MessageEnum.NOTICE_OF_AUDIT_CREATED);
|
|
basicMessageService.sendNoticeTaskAuditFlow(examTask, sysUserList, MessageEnum.NOTICE_OF_AUDIT_CREATED);
|