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

import com.brilliance.isc.bo.Pty;
import com.brilliance.isc.bo.model.Cfagit;
import com.brilliance.isc.bo.model.Eblmod;
import com.brilliance.isc.common.vo.PtsptaVo;

import java.util.Date;
import java.util.List;

/**
 * @author yangxd
 * @version 1.0
 * @description:
 * @data 2023/6/8 14:53
 */
public interface EblmodService {

    /**
      * 设置EBL控制表数据
      */
    public void setEblData(Cfagit cfagit,String typeOfCfa, Date relDate);

    /**
     * 二期 重载 ebl赋值方法 用于公共
     * @param eblmod
     * @param typeOfCfa
     * @param relDate
     */
    public void setEblData(Eblmod eblmod, String typeOfCfa, Date relDate);

    /**
     * 记录申报审计信息
     */
    public void setRecordSig(Cfagit cfagit, String iRec);

    /**
     * 二期 重载 审计信息保存方法，用于公共
     */
    public void setRecordSig(Eblmod eblmod, String iRec);

    /**
     * 存申报数据表 CFAMAP.CFAStoreContractV
     */
//    public void storeCfaContractForGI();

    /**
     * @description 给数据检核用，判断当前状态下是否需要进行数据域的检核
     * @param accept  用户已确认
     * @param typ  当前交易类型 A新增 C修改 D删除
     * @return ture   需要检核;false  不需要检核
     * @date 2023/7/13 16:20
     */
    public boolean isCheckField(String accept,String typ);

    /**
      * @description 查询是否是待报送数据
      * @author yangxd
      * @param trninr inr
      * @return 
      * @date 2023/7/19 9:40
      */
    public boolean checknoWaitingStaCFA(String trninr);

    /**
     *二期  通过机构编号获取金融机构标识码
     * @param bchcod
     * @return
     */
    public String getDecnum(String bchcod);

    /**
     * 二期  通过角色获取 pty 数据
     * @param rol
     * @param ptsList
     * @return
     */
    public Pty getPtyFieldsCFA(String frmname,String rol, List<PtsptaVo> ptsList);

    /**
     * 二期  更新 cfaerr表状态
     */
    void setCFAERRSta(String objTyp,String instyp,String rptno,String changeno);

    /**
     * 二期  获取代理总行所在国家地区代码
     */
    String getHeqBankCountry(String ptyinr);

    /**
     * 二期  生成资本项目变动编号
     * @param rptno
     * @return
     */
    String getChangeNo(String rptno);


    /**
     * 二期  通过 cfacou 产生序号
     * @param counam
     * @param dat
     * @return
     */
    int dbcounterCFACou(String counam,Date dat);

    /**
     *二期  通过业务类型生成申报号码
     * @param dat 生成流水号的日期
     * @param typ 业务类型
     * @param decnum 地区机构号
     * @param valid  验证编号标志
     * @param validref 待验证编号
     * @return
     */
    String getCFARef(Date dat, String typ, String decnum, boolean valid, String validref);

    /**
     * 二期 生成资本项目申报号码后 6位
     * @param bnno
     * @param typ
     * @param valid
     * @return
     */
    String cfaMapNumber(String bnno,String typ,boolean valid);

    /**
     * 二期  组织机构代码校验 使用申报子系统的规则
     * @param code 组织机构代码
     * @return
     */
    boolean isValidEntpCode(String code);

    /**
     * 二期维护交易使用 保存或更新dbl  保存 cfasig表
     * @param eblmod
     * @param transName
     * @return
     */
    boolean cfaStoreEBL(Eblmod eblmod, String transName);





}
