package com.chinaweal.aiccs.aiccs.revoke.service;

import com.chinaweal.aiccs.aiccs.revoke.entity.Tsbizrevlist;
import com.chinaweal.aiccs.aiccs.revoke.entity.Tsrevtasklist;
import com.chinaweal.aiccs.aiccs.revoke.entity.dto.RevokeProcessDto;
import com.chinaweal.aicorg.model.AICUser;

/**
 * @author Lee
 * @since 2022-02-16 10:26
 */
public interface IRevokeProcessService {

    void processControl(RevokeProcessDto revokeProcessDto, Tsrevtasklist taskList, Tsbizrevlist tsbizrevlist, AICUser loginUser)throws Exception;

    void toHandleCase(RevokeProcessDto revokeProcessDto, Tsrevtasklist taskList, Tsbizrevlist tsbizrevlist, AICUser loginUser);

    void backCaseEnter(RevokeProcessDto revokeProcessDto, Tsrevtasklist taskList, Tsbizrevlist tsbizrevlist, AICUser loginUser);

    void toApprovalCase(RevokeProcessDto revokeProcessDto, Tsrevtasklist taskList, Tsbizrevlist tsbizrevlist, AICUser loginUser);

    void toInvestigateEnter(RevokeProcessDto revokeProcessDto, Tsrevtasklist taskList, Tsbizrevlist tsbizrevlist, AICUser loginUser)throws Exception;
    void backInvestigateEnter(RevokeProcessDto revokeProcessDto, Tsrevtasklist taskList, Tsbizrevlist tsbizrevlist, AICUser loginUser);
    void toHandleHearing(RevokeProcessDto revokeProcessDto, Tsrevtasklist taskList, Tsbizrevlist tsbizrevlist, AICUser loginUser);
    void toHearingRegDepLeader(RevokeProcessDto revokeProcessDto, Tsrevtasklist taskList, Tsbizrevlist tsbizrevlist, AICUser loginUser);
    void toDecisionEnter(RevokeProcessDto revokeProcessDto, Tsrevtasklist taskList, Tsbizrevlist tsbizrevlist, AICUser loginUser) throws Exception ;
    void toSendEnter(RevokeProcessDto revokeProcessDto, Tsrevtasklist taskList, Tsbizrevlist tsbizrevlist, AICUser loginUser)  throws Exception;
    void toHandleDecision(RevokeProcessDto revokeProcessDto, Tsrevtasklist taskList, Tsbizrevlist tsbizrevlist, AICUser loginUser);
    void backHandleDecision(RevokeProcessDto revokeProcessDto, Tsrevtasklist taskList, Tsbizrevlist tsbizrevlist, AICUser loginUser);

    void backLastStep(RevokeProcessDto revokeProcessDto, Tsrevtasklist taskList,String currentNode,String nextNode);

    void processControlZx(RevokeProcessDto revokeProcessDto, Tsrevtasklist taskListModel, Tsbizrevlist tsbizrevlist, AICUser user);
}
