package com.brilliance.isc.common.limmod.service;


import com.brilliance.isc.common.limmod.vo.LimmodVo;
import com.brilliance.isc.common.register.lim.ILimRegister;
import com.brilliance.isc.common.vo.PtsptaVo;

import java.math.BigDecimal;
import java.util.List;

public interface LimmodService {

    String CreateLimitExtidNew(LimmodVo limmodVo, String flg1, String flg2, BigDecimal partcon);

    String CreateLimitExtidNew2(LimmodVo limmodVo);

    String getidtypeinr(String inr, String ptytyp);

    PtsptaVo getPtsptaFromPtslist(List<PtsptaVo> ptsptaVoList, String rol);

    /**
     * 额度公共数据初始化
     *
     * @param limmodVo
     */
    void LimRegParstm(LimmodVo limmodVo);


    /**
     * 初始化的时候清除列表
     *
     * @param limmodVo
     */
    void clearLimgrd(LimmodVo limmodVo);

    /**
     * 根据汇率计算ccvamt
     *
     * @param limmodVo
     * @param ptyinr
     * @return
     */
    BigDecimal GEToldCCVAMT(LimmodVo limmodVo, String ptyinr);

    /**
     * 额度信息同步、占用释放存表
     *
     * @param limmodVo
     */
    void limSav3000(LimmodVo limmodVo);

    /**
     * 后手交易获取额度的业务编号
     *
     * @param ownref
     * @return
     */
    String getFxfl(String ownref);

    /**
     * 额度占用组数
     *
     * @param limmodVo
     */
    void genCL43Data(LimmodVo limmodVo);

    /**
     * 是否收单行
     *
     * @return
     */
    boolean isOrderBranch();

    ILimRegister limRegister();

    void limRePair(String trninr);

    boolean isLmaStart(String transname);

    boolean isLmaStart(String transname, String sdhflg);

    void checkData(LimmodVo limmodVo);

    void ordBchDeal(LimmodVo limmodVo, String srv);

    void rootBchDeal(LimmodVo limmodVo);

    boolean cL43oPn(LimmodVo limmodVo);

    boolean RW02oPn();

    <T> T createCopyObject(Object object, com.fasterxml.jackson.core.type.TypeReference<T> type);

    public void clearOth(LimmodVo limmodVo);

    /**
     * 通过交易码和机构判断是否是起头交易
     * @param transname
     * @param branch
     * @return
     */
    boolean isLimStart(String transname, String branch);

    List<PtsptaVo> collectPtsptaListFromObj(String objtyp, String objinr);

    PtsptaVo huoquRol(PtsptaVo pts);

    String getGidTrnCodeOwnref(String gartyp);
}
