package com.hzs.system.sys.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.system.sys.SysApprovalBusiness;
import com.hzs.common.domain.system.sys.ext.SysApprovalBusinessExt;
import com.hzs.system.index.param.CompleteApprovalParam;
import com.hzs.system.sys.param.ApprovalCustomQueryParam;

import java.util.List;

/**
 * 审批业务表 服务类
 *
 * @author hzs
 * @since 2022-09-21
 */
public interface ISysApprovalBusinessService extends IService<SysApprovalBusiness> {

    /**
     * 业务审批是否进行中
     *
     * @param approvalBusinessList 审批业务类型（EApprovalBusiness）
     * @param businessCodeList     审批业务单号
     * @param pkCountry            国家ID
     * @return
     */
    int checkBusinessExist(List<Integer> approvalBusinessList, List<String> businessCodeList, Integer pkCountry);


    /**
     * 根据审批单号查询审批以及明细
     *
     * @param approvalCode 审批单号
     * @return
     */
    SysApprovalBusinessExt queryByApprovalCode(String approvalCode);

    /**
     * 待审批业务数据
     *
     * @param userId    用户ID
     * @param pkCountry 国家ID
     * @return
     */
    int waitApprovalNum(Long userId, Integer pkCountry);

    /**
     * 待审批业务数据
     *
     * @param param     查询参数
     * @param userId    用户ID
     * @param pkCountry 国家ID
     * @return
     */
    List<SysApprovalBusinessExt> waitApproval(CompleteApprovalParam param, Long userId, Integer pkCountry);

    /**
     * 已完成审批业务数据
     *
     * @param param     查询参数
     * @param userId    用户ID
     * @param pkCountry 国家ID
     * @return
     */
    List<SysApprovalBusinessExt> completeApproval(CompleteApprovalParam param, Long userId, Integer pkCountry);

    /**
     * 查询最新的编号
     *
     * @return
     */
    String queryLastCode();

    /**
     * 自定义签呈列表
     *
     * @param param     查询参数
     * @param userId    用户ID
     * @param pkCountry 国家ID
     * @return
     */
    List<SysApprovalBusiness> customList(ApprovalCustomQueryParam param, Long userId, Integer pkCountry);

}
