package com.brilliance.isc.mda.dao;

import com.brilliance.isc.bo.Trn;
import com.brilliance.isc.vo.report.*;
import com.brilliance.isc.vo.component.trn.TrnInfoVo;
import com.brilliance.isc.vo.component.trn.TrnParamVo;
import com.brilliance.isc.vo.component.trn.TrnrelResponseVo;
import com.brilliance.isc.vo.lg.*;
import com.brilliance.isc.vo.manager.TrnTVo;
import com.brilliance.isc.vo.manager.TrnVo;
import com.brilliance.isc.vo.manager.WfeVo;
import com.brilliance.isc.vo.report.TrnDetailVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Collection;
import java.util.List;
import java.util.Map;

@Mapper
public interface TrnMapper {
    int insert(Trn record);

    int insertSelective(Trn record);

    int updateByPrimaryKeySelective(Trn record);

    int updateByPrimaryKey(Trn record);

    int deleteByPrimaryKey(Trn record);

    int deleteByIds(Collection<Object> collection);

    Trn selectByPrimaryKey(Trn record);

    TrnInfoVo selectByPrimaryKeyInfo(@Param("inr") String inr);

    int dyncDelete(Map<String, Object> dyncMap);

    List<Trn> dyncRead(Map<String, Object> dyncMap);

    List<Trn> selectByVo(Trn trn);

    List<TrnrelResponseVo> getTenrelList(@Param("item") TrnParamVo queryVo, @Param("extkey") String extkey, @Param("list") List<String> list);

    Trn getDetailDataByInr(@Param("inr") String inr, @Param("extkey") String extkey, @Param("list") List<String> list);

    String selectRefByTrninr(@Param("trninr") String trninr);

    String selectRefByPrvinr(@Param("trninr") String trninr);

    int updateTrnXreflag(@Param("inr") String inr, @Param("xreflg") String xreflg);

    int updateTrnRelflag(@Param("inr") String inr, @Param("relflg") String relflg);

    List<Trn> getDetailByOwnref(@Param("ownref") String ownref);

    /**
     * 查询指定行数据
     *
     * @param inr 查询条件
     * @return 对象列表
     */
    TrnVo queryByTrnId(String inr);

    List<WfeVo> queryById(String inr);

    List<TrnVo> queryAllByLimit(TrnVo trnVo);

    int update(WfeVo wfeVo);

    Trn selectByCondition(Trn trn);

    List<Trn> selectByConditionList(Trn trn);

    List<TrnTVo> queryAllLimit(TrnTVo trnTVo);

    List<Trn> selectByConditionListBchkeyinr(@Param("trn") Trn trn, @Param("list") List<String> list);

    List<TrnInfoVo> selectByInidattim(@Param("param") TrnParamVo param, @Param("list") List<String> list);

    List<TrnInfoVo> selectUnByInidattim(@Param("param") TrnParamVo param, @Param("list") List<String> list);

    Trn selectByTrninr(@Param("trninr") String trninr);

    Trn selectByOwnrefAndInifrmAndRelflg(@Param("ownref") String ownref, @Param("inifrm") String inifrm, @Param("relflg") String relflg);

    Trn selectByOrdinrAndRelflg(@Param("ordinr") String ordinr, @Param("relflg") String relflg);

    List<Trn> selectListByOrdinrAndRelflg(@Param("ordinr") String ordinr, @Param("relflg") String relflg);

    Trn getSdhTrnInfo(@Param("ordinr") String ordinr);

    Trn selectByTrninrAndRelflg(@Param("trninr") String trninr, @Param("relflg") String relflg);

    List<Trn> selectByOrdinr(@Param("ordinr") String ordinr);

    List<TrnInfoVo> selectByOwnref(@Param("ownref") String ownref);

    List<TrnInfoVo> getByOwnref(@Param("ownref") String ownref);

    List<TrnInfoVo> getByOwnrefs(@Param("ownref") String ownref,@Param("shgref") String shgref);

    List<TrnInfoVo> selectOthByTrninr(@Param("trninr") String trninr);

    List<Trn> selectTrnByObjtypAndObjinr(@Param("objtyp") String objtyp, @Param("objinr") String objinr);

    List<GidopnamtVo> getGidopnamt(RptselRequestVo rptselRequestVo);

    List<GidopnamtVo> getNidopnamt(RptselRequestVo rptselRequestVo);

    List<GidSignFilReportVo> getGidSignFilReport(RptselRequestVo rptselRequestVo);

    List<GidSignFilReportVo> getNidSignFilReport(RptselRequestVo rptselRequestVo);

    List<GidFinguaOpnamtVo> getGidFinguaOpnamt(RptselRequestVo rptselRequestVo);

    List<GidFinguaOpnamtVo> getNidFinguaOpnamt(RptselRequestVo rptselRequestVo);

    List<GidFinguaCbeVo> getGidFinguaCbe(RptselRequestVo rptselRequestVo);

    List<GidFinguaCbeVo> getNidFinguaCbe(RptselRequestVo rptselRequestVo);

    List<GidCcvOpnamtVo> getGidCcvOpnamt(RptselRequestVo rptselRequestVo);

    List<GidCcvOpnamtVo> getNidCcvOpnamt(RptselRequestVo rptselRequestVo);

    List<AcquireRptVo> getAcquirerpt(RptselRequestVo rptselRequestVo);

    List<GidDomesticFinguaRptVo> getGidDomesticFinguaRpt(RptselRequestVo rptselRequestVo);

    List<GidDomesticFinguaRptVo> getNidDomesticFinguaRpt(RptselRequestVo rptselRequestVo);

    List<GidLimitVo> gidLimit1(BcrincRequestVo bcrincRequestVo);

    List<GidLimitVo> gidLimit2(BcrincRequestVo bcrincRequestVo);

    List<GidLimitVo> nidLimit1(BcrincRequestVo bcrincRequestVo);

    List<GidLimitVo> nidLimit2(BcrincRequestVo bcrincRequestVo);

    List<GidIncomeVo> gidIncome(BcrincRequestVo bcrincRequestVo);

    List<GidIncomeVo> nidIncome(BcrincRequestVo bcrincRequestVo);

    List<BusDetailRptVo> getBusDetailRpt(RptselRequestVo rptselRequestVo);
    List<BusDetailRptVo> getBusDetailReport(RptselRequestVo rptselRequestVo);

    List<Trn> getSdhDealPrevTrnInfo(@Param("objtyp") String objtyp,
                                    @Param("objinr") String objinr,
                                    @Param("inidattim") String inidattim);

    List<Trn> getSdhRepairNextTrnInfo(@Param("objtyp") String objtyp,
                                      @Param("objinr") String objinr,
                                      @Param("inidattim") String inidattim);

    List<Trn> selectBySubObjtypAndObjinr(@Param("subobjtyp") String subobjtyp, @Param("objinr") String objinr);

    Trn selectOneByOwnref(@Param("ownref") String ownref);

    Trn selectOtherByOrdinr(@Param("ordinr") String ordinr);

    List<TrnBcrincVo> getusrandfrmA(BcrincRequestVo bcrincRequestVo);

    List<TrnBcrincVo> getusrandfrmB(BcrincRequestVo bcrincRequestVo);

    List<TrnBcrincVo> getusrandfrmC(BcrincRequestVo bcrincRequestVo);

    List<TrnBcrincVo> getfhyeA(BcrincRequestVo bcrincRequestVo);

    List<TrnBcrincVo> getfhyeB(BcrincRequestVo bcrincRequestVo);

    List<TrnBcrincVo> getfhyeC(BcrincRequestVo bcrincRequestVo);

    List<Trn> getTrnByInrList(@Param("list") List<String> list);

    int getCountByRef(String ref);

    List<TrnBcrincVo> getfenpanelA(BcrincRequestVo bcrincRequestVo);

    List<TrnBcrincVo> getfenpanelB(BcrincRequestVo bcrincRequestVo);

    List<TrnBcrincVo> getSdgenA(BcrincRequestVo bcrincRequestVo);

    String getSdgenB(BcrincRequestVo bcrincRequestVo);

    List<TrnDetailVo> getTrnDetail(RptselRequestVo rptselRequestVo);

    List<TrnDetailVo> getTrnDetailInfo(@Param("trnInrs") List<String> trnInrs);

    List<UserDetailVo> getUserDetail(RptselRequestVo rptselRequestVo);

    List<UserDetailVo> getUserDetailInfo(RptselRequestVo rptselRequestVo);

    Trn getRelTrnByObjinrTypAndTrnName(@Param("objtyp") String objtyp,
                                       @Param("objinr") String objinr,
                                       @Param("trnnam") String trnnam);

    int getCountBrdByInrTrans(@Param("objinr") String objinr, @Param("inifrm") String inifrm);

    int getCountLedByObjInr(@Param("objinr") String objinr, @Param("inifrm") String inifrm);

    String selectTrninrByKzref(@Param("kzref") String kzref);

    String selectInrByObjtypAndInifrmAndObjinr(@Param("objtyp") String objtyp, @Param("inifrm") String inifrm, @Param("objinr") String objinr);

    List<String> selectInrByObjtypAndObjinr(@Param("objtyp") String objtyp, @Param("objinr") String objinr);

    String selectByObjinr(@Param("objinr") String objinr);

    Trn selectByOwnrefAndObjinr(Trn trn);

    List<Trn> queryTrn(@Param("objtyp") String objtyp, @Param("objinr") String objinr,@Param("subobjtyp") String subobjtyp,@Param("chksubcon") String chksubcon,@Param("chktrnsta") String chktrnsta);

    Trn selectByObjinrTrn(@Param("objtyp") String objtyp, @Param("objinr") String objinr,@Param("inifrm") String inifrm);

    Trn selectByBsnSrlNo(@Param("bsnSrlNo") String bsnSrlNo);

    Trn selectByBsnSrlNoFromTxpreg(@Param("bsnSrlNo") String bsnSrlNo);

    List<Trn> selectByObjinrs(@Param("trnInrs") List<String> trnInrs);

    String selectObjtypByTrninr(@Param("inr")String inr);

    Trn selectByObjinrAndObjtyp(@Param("objtyp") String objtyp, @Param("objinr") String objinr, @Param("inifrm") String inifrm);

    /**
     * 远期信用证未到单报表
     */
    List<BusDetailRptVo> reportsForB(RptselRequestVo rptselRequestVo);
    /**
     * 远期信用证到单未承兑报表
     */
    List<BusDetailRptVo> reportsForC(RptselRequestVo rptselRequestVo);
    /**
     * 远期信用证到单已承兑报表
     */
    List<BusDetailRptVo> reportsForD(RptselRequestVo rptselRequestVo);

    String selectRelflgByInr(String inr);
    /**
     * 远期信用证承兑交易明细报表
     */
    List<BusDetailRptVo> reportsForW(RptselRequestVo rptselRequestVo);

    /**
     * 信用证保证金账号及余额报表
     */
    List<GidCcvOpnamtVo> getLidCcvOpnamt(RptselRequestVo rptselRequestVo);
    /**
     * 结/售日汇报表
     */
    List<SettleDateReportVo> reportsForEF(RptselRequestVo rptselRequestVo);

    /**
     * 融资类余额报表
     */
    List<GidopnamtVo> getOpnamt(RptselRequestVo rptselRequestVo);
    /**
     * 贸易单证审核清单
     */
    List<FinChkReportVo> reportsForZ(RptselRequestVo rptselRequestVo);

    /**
     * 按收益汇总报表
     */
    List<GidIncomeVo> getIncomeReports(BcrincRequestVo bcrincRequestVo);

    /**
     * 进口/国内信用证保证金及额度报表
     * @param bcrincRequestVo
     * @return
     */
    List<GidLimitVo> getCcvAndLimReports(BcrincRequestVo bcrincRequestVo);

    /**
     * 进口/国内信用证承兑余额报表1
     */
    List<UdpOpnamtReportVo> getUdpOpnamtReportsA(BcrincRequestVo bcrincRequestVo);

    /**
     * 进口/国内信用证承兑余额报表2
     */
    List<UdpOpnamtReportVo> getUdpOpnamtReportsB(BcrincRequestVo bcrincRequestVo);

    /**
     * 国内信用证余额报表
     */
    List<GidopnamtVo> getOpnamtReports(BcrincRequestVo bcrincRequestVo);

    List<Trn> selectByTrninrs(@Param("trnInrs") List<String> trnInrs);

    List<Trn> selectByownrefs(@Param("ownref") String ownref,@Param("objtyp") String objtyp,@Param("bchinr") String bchinr,@Param("branch") String branch);

    /**
     * 远期信用证承兑付款报表
     */
    List<FinReportAVo> finReportA(FinselRequestVo finselRequestVo);

    /**
     * 融资业务（出口融资）
     */
    List<FinReportBVo> finReportB(FinselRequestVo finselRequestVo);

    /**
     * 进口/出口信用证/托收/代收/收汇/付款交易
     */
    List<FinReportCDEFGHVo> finReportCDEF(FinselRequestVo finselRequestVo);

    /**
     * 汇入/出汇款报表
     */
    List<FinReportCDEFGHVo> finReportGH(FinselRequestVo finselRequestVo);

    /**
     * 汇出汇款报表
     */
    List<FinReportZQVo> finReportZQ(FinselRequestVo finselRequestVo);

    /**
     * 信用证导数报表
     */
    List<ReportForLidVo> reportForLid(FinselRequestVo finselRequestVo);
    /**
     * 获取承兑金额
     */
    List<ReportForLidVo> getAmtByObjinr(@Param("inrs") List<String> inis);

    /**
     * 保函数据统计
     */
    List<ReportForLidVo> reportForGid(FinselRequestVo finselRequestVo);

    /**
     * 汇出汇款数据统计
     */
    List<ReportForLidVo> reportForCpd(FinselRequestVo finselRequestVo);

    /**
     * 远期信用证承兑付款报表
     */
    List<ReportForUdpSetVo> reportForUdpSet(FinselRequestVo finselRequestVo);

    /**
     * 即远期信用证单据逾期承兑付款报表
     */
    List<ReportFGHVo> reportForFGH(FinselRequestVo finselRequestVo);

    /**
     * 外汇期权业务报表
     */
    List<WidReportVo> reportForWid(RptqueRequestVo rptqueRequestVo);

    /**
     *买断出口票据、单证业务F01报表_01
     */
    List<ReportF01Vo> reportF01_01();

    /**
     *买断出口票据、单证业务F01报表_02
     */
    List<ReportF01Vo> reportF01_02(@Param("clsdat")String clsdat,@Param("content3")String content3);

    /**
     * 贷款（含银行同业和联行拆借）（负债）D06-1报表
     */
    List<ReportD06Vo> reportD06_01(@Param("content3")String content3);


    /**
     * 贷款（含银行同业和联行拆借）（负债）D06-1报表
     */
    List<ReportD06Vo> reportD06_02(@Param("content3")String content3);
    /**
     * 月末批量远期信用证到单已承兑报表
     */
    List<BusDetailRptVo> reportsForLidD();

    /**
     * 取经办柜员
     */
    Trn getTrnByObj(@Param("objtyp")String objtyp,@Param("objinr")String objinr,@Param("inifrms") List<String> inifrms );


}