package com.brilliance.isc.mda.dao;

import com.brilliance.isc.bo.Ack;
import com.brilliance.isc.bo.Chlrpt;
import com.brilliance.isc.bo.Gts;
import com.brilliance.isc.vo.lg.RptselRequestVo;
import com.brilliance.isc.vo.manager.ChlrptVo;
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 ChlrptMapper {

    int insert(Chlrpt record);

    int insertSelective(Chlrpt record);

    int updateByPrimaryKeySelective(Chlrpt record);

    int updateByPrimaryKey(Chlrpt record);

    int deleteByPrimaryKey(Chlrpt record);

    int deleteByIds(Collection<Object> collection);

    Chlrpt selectByPrimaryKey(Chlrpt record);

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

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

    /**
     * 查询countAus
     *
     * @param smhInr smhInr
     * @param sndKey sndKey
     * @return int 查询结果
     */
    int selectCountAus(@Param("smhInr") String smhInr, @Param("sndKey") String sndKey);

    /**
     * 查询countAusE
     *
     * @param smhInr smhInr
     * @param sndKey sndKey
     * @return int 查询结果
     */
    int selectCountAusE(@Param("smhInr") String smhInr, @Param("sndKey") String sndKey);

    int selectCountAusGfix(@Param("smhInr") String smhinr,@Param("sndKey") String sndKey);

    int selectCountAuseGfix(@Param("smhInr") String smhinr,@Param("sndKey") String sndkey);
    /**
     * 通过vo查询数据
     *
     * @param vo 入参
     * @return Chlrpt 查询结果
     */
    Chlrpt selectByVo(@Param("vo") Chlrpt vo);

    /**
     * 更新smhsubinr字段
     *
     * @param newInr 更新值
     * @param inr 更新条件
     * @return int 返回结果
     */
    int updateSmhSubInr(@Param("newInr") String newInr, @Param("inr") String inr);

    /**
     * 查询countS
     *
     * @param oriInr 查询条件
     * @return int 返回结果
     */
    int selectCountS(@Param("oriInr") String oriInr);

    /**
     * 查询G和S成功个数
     * @param oriInr
     * @return
     */
    int selectCountSG(@Param("oriInr") String oriInr);

    /**
     * 更新sucFlg字段
     *
     * @param oriInr 更新条件
     * @param sta 更新值
     * @return int 更新结果
     */
    int updateSucFlg(@Param("oriInr") String oriInr, @Param("sta") String sta);

    /**
     * 查询指定行数据
     *
     * @return 对象列表
     */
    List<ChlrptVo> queryAllByLimitS(@Param("entity") ChlrptVo chlrptVo);

    /**
     * 查询指定行数据
     *
     * @return 对象列表
     */
    List<ChlrptVo> queryAllByLimitM(@Param("entity") ChlrptVo chlrptVo);

    /**
     * 查询指定行数据
     *
     * @return 对象列表
     */
    List<ChlrptVo> queryAllByLimitD(@Param("entity") ChlrptVo chlrptVo);

    /**
     * 通过ID查询单条数据
     *
     * @return 实例对象
     */
    ChlrptVo queryById(ChlrptVo chlrptVo);

    /**
     * 查询指定行数据
     *
     * @return 对象列表
     */
    List<ChlrptVo> queryByMsgSnd(ChlrptVo chlrptVo);

    /**
     * 插入gts表
     *
     * @return 对象列表
     */
    int insertGts(Gts gts);

    /**
     * 插入gts表
     *
     * @return 对象列表
     */
    int insertGts2(Gts gts);

    /**
     * 检验是否合格
     *
     * @return 对象列表
     */
    String checkSwift(String inr);

    /**
     * 检验sndref的数量
     *
     * @return 对象列表
     */
    int countSndref(String inr);

    /**
     * 更新SMH的CHLFLG
     *
     * @return 对象列表
     */
    int updateSmh(String inr);

    /**
     * 发送过s通道的swift报文
     *
     * @return 查询数量
     */
    int selTrnSelctionS(Ack ack);
    /**
     * 发送过g通道的swift报文
     *
     * @return 查询数量
     */
    int selTrnSelctionG(Ack ack);

    List<Chlrpt> getGsmhrpt(RptselRequestVo rptselRequestVo);

    List<Chlrpt> getFsmhrpt(RptselRequestVo rptselRequestVo);

    int selChlCount(@Param("chl") String chl,@Param("oriinr") String oriinr);
}
