package com.brilliance.isc.mda.dao;
import com.brilliance.isc.vo.lg.BchlistVo;
import org.apache.ibatis.annotations.Param;

import com.brilliance.isc.bo.Bch;
import org.apache.ibatis.annotations.Mapper;

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

@Mapper
public interface BchMapper {

    int insert(Bch record);

    int insertSelective(Bch record);

    int updateByPrimaryKeySelective(Bch record);

    int updateByPrimaryKey(Bch record);

    int deleteByPrimaryKey(Bch record);

    Bch selectByPrimaryKey(Bch record);

    List<Bch> listByUpbranch(Bch record);

    List<Bch> selectByRecord(Bch record);

    List<Bch> selectByActBranch(String branch);

    // 根据 branch 查询
    Bch selectByBranch(String branch);

    // 查询所有的下级机构（包含本身）
    List<Bch> selectChildBchListByBranch(String branch);

    // 查询全辖下的记账机构列表
    List<Bch> selectAccBchListByBranch(String branch);

    List<Bch> selectAccBchListByBranchAndIt(@Param("branch") String branch);

    // 查询所有的分行、支行（用于返回机构列表）
    List<Bch> selectAllBchList();

    // 查询所有经办机构（经办行和收单行）（用于返回机构列表）
    List<Bch> selectAllAccBchList();

    //根据机构查询所有经办机构（经办行和收单行）（用于返回机构列表），包含总行
    List<Bch> selectAccBchList(String branch);

    // 动态读取，待删除
    List<Bch> dyncRead(Map<String,Object> dyncMap);

    //查询机构名称
    List<Bch> queryAll(Bch bch);

    //根据 bchname 查询 inr
    Bch queryByNam(String bchname);

    List<Bch> getBchNameandBranchByBchkey(String bchkey);

    List<Bch> getBchnameByBchtyp();

    List<String> selectChildBchInrListByBranch(String branch);

    Bch selectByInr(@Param("inr") String inr);

    Bch selectByUsrExtkey(@Param("usr") String usr);

    int selectByLhanum (String lhanum);

    List<String> selectByUroUserId(@Param("userId") int userId);
    List<Bch> selectAllJurisdictionBranch();
    List<BchlistVo> queryBchlist();

    List<BchlistVo> getBchNameFromYptuid(@Param("branch") String branch);
        
    Map<String, String> selectByPtyinr(@Param("ptyinr") String ptyinr);

    List<Bch> selecetBchInfoByLhanum(@Param("lhanum") String lhanum);

    List<Map<String,Object>> selectCountByBchtypAndDzlhhh(Bch bch);

    int selectCountByWhere(Bch bch);

    List<Bch> selectByBchtypAndDzlhhhAndLev(Bch bch);

    Bch selectByWherer(Bch bch);

    String selectBySwfcod(@Param("swfcod") String swfcod);

    String selectByupbranch(@Param("upbranch") String upbranch);

    List<Bch> selectByLevAndBchFlg();

    List<Bch> selectEInfoByBranch(@Param("branch")String branch);

    List<Bch> selectEInfoByInr(@Param("inr")String inr);

    String selectBchkeyinrByBchinr(@Param("inr") String inr);
}