JAVA简易审批流-08

@Slf4j
@Component
public class ApprovalEventPublisher {
    @Autowired
    private ApplicationEventPublisher publisher;

    @Autowired
    private ProApprovalFlowNodeHandlerDomainService nodeHandlerService;

    @Autowired
    private ProApprovalFlowInstanceDomainService instanceService;

    @Autowired
    private ProApprovalFlowNodeDomainService nodeService;

    /**
     * 发布事件
     *
     * @param event 事件
     */
    public void publishEvent(BaseEvent event) {
        ProApprovalFlowInstanceDto flowInfo = event.getFlowInfo();
        List nodeHandlerList =
            nodeHandlerService.loadByInstanceAndNodeId(flowInfo.getFlowInstanceId(), flowInfo.getCurrentNode());
        event.setCurHandlers(nodeHandlerList);
        log.info("bizId : {} instance : {} preNode: {} CurNode: {}", flowInfo.getBizDataId(),
            flowInfo.getFlowInstanceId(), flowInfo.getPreNodeCode(), flowInfo.getCurrentNodeCode());
        publisher.publishEvent(event);
    }
}
@Data
public abstract class BaseEvent {
    private ProApprovalFlowInstanceDto flowInfo;

    private List curHandlers;

    /**
     * BaseEvent构造器
     *
     * @param flowInfo 流程信息
     */
    public BaseEvent(ProApprovalFlowInstanceDto flowInfo) {
        this.flowInfo = flowInfo;
    }
}
public class FinishedEvent extends BaseEvent {
    /**
     * BaseEvent构造器
     *
     * @param flowInfo 流程信息
     */
    public FinishedEvent(ProApprovalFlowInstanceDto flowInfo) {
        super(flowInfo);
    }
}
public class NodeFinishedEvent extends BaseEvent {
    /**
     * BaseEvent构造器
     *
     * @param flowInfo 流程信息
     */
    public NodeFinishedEvent(ProApprovalFlowInstanceDto flowInfo) {
        super(flowInfo);
    }
}
public class PendingEvent extends BaseEvent {
    /**
     * BaseEvent构造器
     *
     * @param flowInfo 流程信息
     */
    public PendingEvent(ProApprovalFlowInstanceDto flowInfo) {
        super(flowInfo);
    }
}
@Getter
@Setter
public class ReferralEvent extends BaseEvent {
    /** 转后审批人W3账号,当待办结果为转审时必填 */
    private String forwardUser;

    /** 转后审批人名称,当待办结果为转审时必填 */
    private String forwardUserName;

    /**
     * BaseEvent构造器
     *
     * @param flowInfo 流程信息
     */
    public ReferralEvent(ProApprovalFlowInstanceDto flowInfo) {
        super(flowInfo);
    }
}
public class RejectEvent extends BaseEvent {
    /**
     * BaseEvent构造器
     *
     * @param flowInfo 流程信息
     */
    public RejectEvent(ProApprovalFlowInstanceDto flowInfo) {
        super(flowInfo);
    }
}
public class RevokeEvent extends BaseEvent {
    /**
     * BaseEvent构造器
     *
     * @param flowInfo 流程信息
     */
    public RevokeEvent(ProApprovalFlowInstanceDto flowInfo) {
        super(flowInfo);
    }
}

你可能感兴趣的:(java)