zhuguifei
2025-04-28 442928123f63ee497d766f9a7a14f0a6ee067e25
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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;
 
/**
 * 全局事件监听
 * <p>
 * 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<String> userIds = new HashSet<>();
 
            //是否自己指定的办理人
            Object opinionObject = entity.getVariable(Constant.ACT_APPLY_OPINION_LIST);
            if (opinionObject != null) {
                List<ApprovalOpinionDTO> 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;
    }
}