package org.jeecg.modules.apply.lisener; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.activiti.engine.RepositoryService; import org.activiti.engine.delegate.event.ActivitiEntityEvent; import org.activiti.engine.delegate.event.ActivitiEvent; import org.activiti.engine.delegate.event.ActivitiEventListener; import org.activiti.engine.delegate.event.ActivitiEventType; import org.activiti.engine.impl.persistence.entity.TaskEntity; import org.jeecg.common.Constant; import org.jeecg.common.util.SpringContextUtils; import org.jeecg.common.utils.StringUtils; import org.jeecg.modules.approval.model.dto.ApprovalOpinionDTO; import org.jeecg.modules.approval.service.ApprovalService; import org.springframework.stereotype.Component; import java.io.Serializable; import java.util.HashSet; import java.util.List; import java.util.Set; /** * 全局事件监听 *

* Create by YLL on 2020/1/2 */ @Component @Slf4j public class CustomEventListener implements ActivitiEventListener, Serializable { @Override public void onEvent(ActivitiEvent event) { // TODO: 2020/4/15 这段代码发布时需要注释掉!! //测试,将所有流程审核人设成admin; // if (event.getType().equals(ActivitiEventType.TASK_ASSIGNED)) { // ActivitiEntityEvent entityEvent = (ActivitiEntityEvent) event; // TaskEntity entity = (TaskEntity) entityEvent.getEntity(); // entity.setAssignee("e9ca23d68d884d4ebb19d07889727dae"); // } if (event.getType().equals(ActivitiEventType.TASK_CREATED)) { ActivitiEntityEvent entityEvent = (ActivitiEntityEvent) event; TaskEntity entity = (TaskEntity) entityEvent.getEntity(); RepositoryService repositoryService = SpringContextUtils.getBean(RepositoryService.class); Set userIds = new HashSet<>(); //是否自己指定的办理人 Object opinionObject = entity.getVariable(Constant.ACT_APPLY_OPINION_LIST); if (opinionObject != null) { List approvalOpinionDTOS = JSONObject.parseArray(opinionObject.toString(), ApprovalOpinionDTO.class); ApprovalOpinionDTO approvalOpinionDTO = approvalOpinionDTOS.get(approvalOpinionDTOS.size() - 1); if (Constant.YES.equals(approvalOpinionDTO.getDefNextAssignee()) && approvalOpinionDTO.getNextAssignee() != null) { entity.setAssignee(approvalOpinionDTO.getNextAssignee().getId()); } } if (StringUtils.isNotEmpty(entity.getAssignee())) { userIds.add(entity.getAssignee()); } else if (StringUtils.isNotEmpty(entity.getCandidates())) { ApprovalService approvalService = SpringContextUtils.getBean(ApprovalService.class); userIds = approvalService.getCandiates(entity.getId()); } } } @Override public boolean isFailOnException() { return false; } }