package com.brilliance.isc.mda.dao;

import com.brilliance.isc.bo.Bch;
import com.brilliance.isc.bo.Pty;
import com.brilliance.isc.vo.manager.PtyManageVo;
import com.brilliance.isc.vo.manager.PtyTVo;
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 PtyMapper {

    int insert(Pty record);

    int insertSelective(Pty record);

    int updateByPrimaryKeySelective(Pty record);

    int updateByPrimaryKey(Pty record);

    int deleteByPrimaryKey(Pty record);

    int deleteByIds(Collection<Object> collection);

    Pty selectByPrimaryKey(Pty record);

    Pty queryDetailByExtkey(String extkey);

    Pty queryDetailByEcifno(String ecifno);

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

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

    List<String> selectInrListByExtkey(String extkey);

    String selectInrByExtkey(String extkey);

    String selectExtkeyByInr(String inr);

    /**
     * 通过ID查询单条数据
     *
     * @param inr
     * @return 实例对象
     */
    Pty queryById(@Param("inr") String inr);

    /**
     * 查询指定行数据
     *
     * @param ptyManageVo 查询条件
     * @return 对象列表
     */
//    List<ActPageVo> queryAllByLimit(@Param("entity") QueryConditionInfo queryConditionInfo);
    List<PtyManageVo> queryAllByLimit(PtyManageVo ptyManageVo);

    // 非对公
    List<PtyManageVo> queryAllNByLimit(PtyManageVo ptyManageVo);

    /**
     * 查询指定对公客户号客户
     */
    List<PtyManageVo> queryByExtkey(String extkey);

    List<PtyManageVo> queryByExtkeyWithoutStop(String extkey);

    List<PtyManageVo> queryPtyNByExtkeyWithoutStop(String extkey);

    /**
     * 查询指定非对公客户号
     */
    List<PtyManageVo> queryPtyNByExtkey(String extkey);

    /**
     * 新增数据
     *
     * @param pty 实例对象
     * @return 影响行数
     */
//    int insert(Pty pty);

    /**
     * 修改数据
     *
     * @param pty 实例对象
     * @return 影响行数
     */
    int update(@Param("module") Pty pty);

    /**
     * 通过主键删除数据
     *
     * @param inr
     * @return 影响行数
     */
    int deleteById(String inr);

    /**
     * 通过PTY的主键查询pta数据
     *
     * @param inr
     * @return 影响行数
     */
//    List<Pta> queryDetailById(@Param("inr") String inr);

    /**
     * 通过PTY的数据插入adr数据
     *
     * @param pta 实力对象
     * @return 影响行数
     */
//    void insertAdrFromPty(@Param("entity") Pta pta);

    /**
     * 通过PTY的数据插入pta数据
     *
     * @param list       实例对象
     * @param primaryKey 主键值
     * @param pty        实例对象
     * @return 影响行数
     */
//    void insertPtaFromPty(@Param("item") Pty pty, @Param("list") List<Pta> list, @Param("primaryKey") int primaryKey);

    /**
     * 修改数据
     *
     * @param pta 实例对象
     * @return 影响行数
     */
//    int updateAdrFromPty(@Param("item") Pta pta);

    /**
     * 修改数据
     *
     * @param pta 实例对象
     * @return 影响行数
     */
//    int updatePtaFromPty(@Param("item") Pta pta);

    /**
     * 删除adr中的数据
     *
     * @param list 实例对象
     * @return 影响行数
     */
//    int deleteAdrById(@Param("list") List<Pta> list);

    /**
     * 删除pta中的数据
     *
     * @param list 实例对象
     * @return 影响行数
     */
//    int deletePtaById(@Param("list") List<Pta> list);

    /**
     * 从队列中获取主键
     *
     * @return 主键数
     */
//    int queryAdrKey();

    /**
     * 根据PTY主键查询ACT表中数据
     *
     * @param inr 主键
     * @return 结果
     */
//    List<Act> queryActDetailById(@Param("inr") String inr);


    /**
     * 根据PTY主键查询PTC表中数据
     *
     * @param inr 主键
     * @return 结果
     */
//    List<Ptc> queryPtcDetailById(@Param("inr") String inr);

    /**
     * 根据PTY主键查询FEC,FEE表中数据
     *
     * @param inr 主键
     * @return 结果
     */
//    List<Fec> queryFecDetailById(@Param("inr") String inr);

    /**
     * 根据PTY主键查询PTYRAT表中数据
     *
     * @param inr 主键
     * @return 结果
     */
//    List<Ptyrat> queryPtyratDetailById(@Param("inr") String inr);

    /**
     * 根据ADR主键查询Pta中数据
     *
     * @param adrInr 主键
     * @return 结果
     */
//    String queryPatInrFromAdrKey(@Param("adrInr") int adrInr);

    /**
     * 根据PTY主键查询Pty中ver数据
     *
     * @param inr 主键
     * @return 结果
     */
    String getPtyVerFromInr(@Param("inr") String inr);

    /**
     * 根据PTA主键查询Pty中ver数据
     *
     * @param inr 主键
     * @return 结果
     */
//    String getPtaVerFromInr(@Param("inr") String inr);

    /**
     * 根据ADR主键查询Pty中ver数据
     *
     * @param inr 主键
     * @return 结果
     */
//    String getAdrVerFromInr(@Param("inr") String inr);

    /**
     * 根据ADR主键查询Pty中inr数据
     *
     * @return 结果
     */
//    List<String> queryPtaInrByAdr(@Param("list") List<Pta> list);

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

    List<PtyManageVo> selectUpdptsInfo(PtyManageVo ptyVo);

    boolean updateUpdpts(PtyManageVo ptyVo);

    boolean batchUpdateUpdpts(PtyManageVo ptyVo);

    String selectPtytypFromInr(String inr);

    List<Pty> getPtyDataByPtytyp();

    List<String> queryPtaObjkeyByExtkey(String extkey);

    String selectPtyNameByInr(String inr);

    String selectIdtyp(String inr);

    String selectIdcode(String inr);

    String selectIdtypeInr(@Param("inr") String inr, @Param("ptytyp") String ptytyp);

    List<Pty> getHaiGuanData(@Param("name") String name);

    String getExtkeyByHeqInr(String inr);

    List<PtyTVo> queryAllLimit(PtyTVo ptyTVo);

    String getPtainrByExtkey();

    List<Pty> selectEcifnoByExtkey(String extkey);

    Pty selectByPtyinr(@Param("ptyinr") String ptyinr);

    Pty selectByExtkey(@Param("extkey") String extkey);


    List<Pty> listByExtkey(@Param("module") Pty pty, @Param("bchkeyinrlist") List bchkeyinrlist, @Param("branchinrlist") List branchinrlist);

    String selectEcifnoByInr(String inr);

    List<Pty> selectHggqList();

    int selectM01advbicCount(@Param("extkey") String extkey, @Param("aplextkey") String aplextkey);

    List<Map> selectM01advbicList(@Param("extkey") String extkey, @Param("aplextkey") String aplextkey);

    List<Map> selectYptAplList(@Param("extkey") String extkey, @Param("branch") String branch);

    /**
     * 根据统一社会信用代码查询数据
     *
     * @param idCode 统一社会信用代码
     * @return List
     */
    List<Pty> queryByIdCode(@Param("idCode") String idCode);

    String selectNam1ByPtytypAndExtkey(@Param("extkey") String extkey);

    String selectNamByPtytypAndExtkey(@Param("extkey") String extkey);

    //查询pts记录数
    int selectPtsCntByPtyinr(String ptyinr);

    int selectPtsCntByPtainr(String ptainr);

    int selectPtsCntByPtyPtainr(String ptyinr, String ptainr);

    Pty selectByJuscod(String juscod);

    /**
     * 通过ptyinr查询 代理行信息
     */
    Pty selectHeqBankByPTyinr(String ptyinr);


    /**
     * 通过 ptyinr 查询 pty，ecfpty 获取对公客户国别
     *
     * @param ptyinr 客户inr
     * @return 对公客户国别
     */
    String selectEcifCountryByPtyinr(@Param("ptyinr") String ptyinr);

    Pty selectByPtyinrAndEtgextkey(@Param("ptyinr") String ptyinr, @Param("etgextkey") String etgextkey);

    Pty getExtkeyByHeqExtkey(@Param("extkey") String extkey);

    List<Pty> getPtyByExtkeyAndNam1AndNam(@Param("extkey") String extkey,@Param("nam1") String nam1,@Param("nam") String nam);

    String selectInrByExtkeyAndSigflg(String extkey);

    List<Pty> listByExtkeyOrName(@Param("extkey") String extkey);

    int updatePtySigflg(@Param("sigflg") String sigflg, @Param("inr") String inr);

        List<Pty> selectInfoByExtkeyOrNamOrNam1(@Param("extkey") String extkey,@Param("nam1") String nam1,@Param("nam") String nam);
}