package com.ruoyi.system.service.loan;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.system.domain.loan.LoanApplication;
import com.ruoyi.system.domain.remind.WaitRemind;
import com.ruoyi.system.domain.review.ReviewComments;

import java.util.List;

/**
 * 贷款申请主Service接口
 * 
 * @author boman
 * @date 2024-04-24
 */
public interface ILoanApplicationService 
{
    /**
     * 查询贷款申请主
     * 
     * @param loanApplicationId 贷款申请主主键
     * @return 贷款申请主
     */
    public AjaxResult selectLoanApplicationByLoanApplicationId(Long loanApplicationId);

    /**
     * 查询贷款申请主列表
     * 
     * @param loanApplication 贷款申请主
     * @return 贷款申请主集合
     */
    public List<LoanApplication> selectLoanApplicationList(LoanApplication loanApplication);
    /**
     * 查询需要保后的数据
     *
     * @param loanApplication
     * @return
     */
    public List<LoanApplication> selectLoanAfterList(LoanApplication loanApplication);
    public List<LoanApplication> listOss(LoanApplication loanApplication);

    /**
     * 新增贷款申请主
     * 
     * @param loanApplication 贷款申请主
     * @return 结果
     */
    public int insertLoanApplication(LoanApplication loanApplication);

    /**
     * 修改贷款申请主
     * 
     * @param loanApplication 贷款申请主
     * @return 结果
     */
    public AjaxResult updateLoanApplication(LoanApplication loanApplication);
    /**
     * 修改贷款申请主新只新增实际放款金额(万元)实际放款时间
     */
    public AjaxResult updateLoanApplicationActually(LoanApplication loanApplication);

    /**
     * 暂存
     * @param loanApplication
     * @return
     */
    public AjaxResult temporary(LoanApplication loanApplication);

    /**
     * 批量删除贷款申请主
     * 
     * @param loanApplicationIds 需要删除的贷款申请主主键集合
     * @return 结果
     */
    public int deleteLoanApplicationByLoanApplicationIds(Long[] loanApplicationIds);

    /**
     * 删除贷款申请主信息
     * 
     * @param loanApplicationId 贷款申请主主键
     * @return 结果
     */
    public int deleteLoanApplicationByLoanApplicationId(Long loanApplicationId);

    /**
     * 审核
     * @param reviewComments
     * @return
     */
    public AjaxResult sh(ReviewComments reviewComments);

    /**
     * 申诉
     * @param loanApplication
     * @return
     */
    public AjaxResult ss(LoanApplication loanApplication);

    /**
     * 管理员同意上会审核按钮
     * @param loanApplication
     * @return
     */
    public AjaxResult review(LoanApplication loanApplication);
    public AjaxResult schedule(LoanApplication loanApplication);

    /**
     * 撤销
     * @param loanApplication
     * @return
     */
    public AjaxResult cx(LoanApplication loanApplication);

    /**
     * 一键归档
     * @param loanApplication
     * @return
     */
    public AjaxResult gd(LoanApplication loanApplication);

    /**
     * 暂缓出具放款合规表-风险使用
     * @param loanApplication
     * @return
     */
    public AjaxResult zanHuan(LoanApplication loanApplication);
    /**
     * 管理员授权A角色开具放款通知书
     */
    public AjaxResult authorize(LoanApplication loanApplication);

    AjaxResult exportMb(LoanApplication loanApplication);

    List<LoanApplication> conferenceList(LoanApplication loanApplication);
}
