package com.brilliance.isc.common.register.lim;

import com.brilliance.isc.common.limmod.vo.LimmodVo;

public interface ILimRegister {

    /**
     * 融资类保函类型
     * G
     * S
     * H
     * T
     * W
     */
    public static final String RONGZ_GUA = "G,H,S,T,W";
    /**
     * 融资类额度
     */
    public static final String RONGZ_LIM = "051401";

    /**
     * 业务交易初始化
     *
     * @param limmodVo
     */
    void initBussinessLim(LimmodVo limmodVo);

    /**
     * 额度查询注册
     *
     * @param limmodVo
     */
    default void limQureyRegister(LimmodVo limmodVo) {
    }

    ;

    /**
     * 额度试算注册
     *
     * @param limmodVo
     */
    default void limPreCalRegister(LimmodVo limmodVo) {
    }

    ;

    /**
     * 额度占用注册
     *
     * @param limmodVo
     */
    default void limOccRegister(LimmodVo limmodVo) {
    }

    ;

    /**
     * 额度释放注册
     *
     * @param limmodVo
     */
    default void limReleaseRegister(LimmodVo limmodVo) {
    }

    ;

    /**
     * 额度抹帐注册
     *
     * @param limmodVo
     */
    default void limRepireRegister(LimmodVo limmodVo) {
    }

    ;

    /**
     * 用户信息同步注册
     *
     * @param limmodVo
     */
    default void limShareRegister(LimmodVo limmodVo) {

    }

    /**
     * 业务交易对返回处理
     *
     * @param limmodVo
     */
    default void resPonseMapping(LimmodVo limmodVo) {

    }

    ;

    /**
     * 判断当前交易是否需要重算额度
     *
     * @param limmodVo
     * @return
     */
    boolean needRecalcLimits(LimmodVo limmodVo);

    /**
     * 判断是否占用
     *
     * @param limmodVo
     * @return
     */
    boolean isLimitLma(LimmodVo limmodVo);

    /**
     * 判断是否释放
     *
     * @param limmodVo
     * @return
     */
    boolean isLimitLmo(LimmodVo limmodVo);

    /**
     * 转授权的情况
     *
     * @param limmodVo
     * @return
     */
    boolean isLimitLma_1(LimmodVo limmodVo);

    /**
     * limtrn占用判断
     */
    boolean isLimitLmt(LimmodVo limmodVo);

    /**
     * 注册释放工作流
     */
    void wfeAddClmRelease(LimmodVo limmodVo);

    /**
     * 注册同步额度信息工作流
     */
    void wfeAddClmShare(LimmodVo limmodVo);

    /**
     * 给额度主体赋值
     */
    void limObtainWrkPts(LimmodVo limmodVo);

    /**
     * showCLmLim 调用接口返回组数
     */
    default void fillLimGrdNew(LimmodVo limmodVo) {
    }

    /**
     * showCLmLim 调用接口返回组数
     */
    default void fillClmCbeNew(LimmodVo limmodVo) {
    }

    /**
     * showCLmLim 调用接口返回组数
     */
    default void fillClmCbbNew(LimmodVo limmodVo) {
    }

    /**
     * showCLmLim 调用接口返回组数
     */
    default void fillClmPtyNew(LimmodVo limmodVo) {
    }

    /**
     * 试算时获取角色
     *
     * @param limmodVo
     * @return
     */
    String getptyrol(LimmodVo limmodVo);

    /**
     * 额度存表只用于转授权
     *
     * @param limmodVo
     */
    void limLmeSave(LimmodVo limmodVo);

    /**
     * 额度存表
     *
     * @param limmodVo
     */
    void limLmeSave2(LimmodVo limmodVo);

    /**
     * 单占保存lme
     */
    void limLmeWRK(LimmodVo limmodVo, Integer lmecode);

    /**
     * 双占保存lme同业部分
     */
    void limLmeOTH(LimmodVo limmodVo);

    /**
     * limtrn保存
     *
     * @param limmodVo
     */
    void limTrnSave(LimmodVo limmodVo);

    /**
     * 交易下简单校验
     *
     * @param limmodVo
     */
    default void simpleCheck(LimmodVo limmodVo) {

    }

    /**
     * 初始化后补充的一些逻辑
     * @param limmodVo
     */
    default void afterInit(LimmodVo limmodVo) {

    }

    /**
     * cecm报送数据采集
     * @param limmodVo
     */
    default void cecmBuildData(LimmodVo limmodVo) {

    }
}
