package com.brilliance.isc.mda.dao;

import com.brilliance.isc.bo.Smh;
import com.brilliance.isc.vo.lg.SmhInfoVo;
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 SmhMapper {

    int insert(Smh record);

    int insertSelective(Smh record);

    int updateByPrimaryKeySelective(Smh record);

    int updateByPrimaryKey(Smh record);

    int deleteByPrimaryKey(Smh record);


    int deleteByIds(Collection<Object> collection);

    Smh selectByPrimaryKey(Smh record);

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

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

    Smh getSmhByTrntypAndTrninrAndDir(@Param("trntyp") String trntyp, @Param("trninr") String trninr, @Param("dir") String dir);

    List<Smh> getSmhByCortypAndTrninrAndDirList(@Param("trninr") String trninr, @Param("cortyp") String cortyp, @Param("dir") String dir);

    List<Smh> getSmhByTrntypAndTrninrAndDirList(@Param("trntyp") String trntyp, @Param("trninr") String trninr, @Param("dir") String dir);

    List<Smh> selectByWhere(Smh record);

    Smh selectRelationSmh(@Param("inr") String inr, @Param("dir") String dir, @Param("msgtyp") String msgtyp);

    Smh selectByGrpinrAndDirAndCortypAndMsgtyp(@Param("grpinr") String grpinr, @Param("dir") String dir, @Param("msgtyp") String msgtyp, @Param("cortyp") String cortyp);

    /**
     * 查询待发送的ero报文
     *
     * @param smh 入参
     * @return List 查询结果
     */
    List<Smh> selectEroSmh(@Param("vo") Smh smh);

    /**
     * 查询未拆分文件
     *
     * @param smh 入参
     * @return List 查询结果
     */
    List<Smh> selectNoSplit(@Param("vo") Smh smh);

    /**
     * 查询count
     *
     * @param smh 入参
     * @return int 查询结果
     */
    int selectCount(@Param("vo") Smh smh);

    /**
     * 查询swift报文
     *
     * @param smh 入参
     * @return List 查询结果
     */
    List<Smh> selectSwiftSmh(@Param("vo") Smh smh);

    /**
     * 删除已存在的拆分数据
     *
     * @param smh 入参
     * @return int 删除结果
     */
    int deleteExist(@Param("vo") Smh smh);

    int updateInr(@Param("oldInr") String oldInr, @Param("newInr") String newInr);

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

    Smh getSmhByCortypAndMsgtypAndDir(@Param("cortyp") String cortyp, @Param("dir") String dir, @Param("trntyp") String trntyp, @Param("trninr") String trninr);

    /**
     * 查询来报smh信息
     * <p>
     * smhinr spt.smhinr
     *
     * @return Smh 返回结果
     */
    Smh getSmhInfoBySptSmhinr(String smhinr);

    List<Smh> selectByExtkeyAndDir(@Param("extkey") String extkey, @Param("dir") String dir);

    List<Smh> selectByTrninr(@Param("trninr") String trninr);

    List<SmhInfoVo> querySmh(@Param("objtyp") String objtyp, @Param("objinr") String objinr, @Param("cortyp") String cortyp, @Param("datfrom") String datfrom, @Param("datto") String datto, @Param("dir") String dir, @Param("chktrn") String chktrn);

    List<Smh> selectByDocfil(@Param("dir") String dir, @Param("docfil") String docfil);

    List<Smh> selectByCortypAndDocfil(@Param("cortyp") String cortyp, @Param("dir") String dir, @Param("docfil") String docfil);

    List<Smh> selectByGrpinr(@Param("grpinr") String grpinr);

    List<Smh> selectOthByGrpinr(@Param("grpinr") String grpinr);

    List<Smh> selectByObjtypAndObjinrAndDir(@Param("objtyp") String objtyp, @Param("objinr") String objinr, @Param("dir") String dir);

    Smh selectByCortypAndTrninrAndNam(@Param("cortyp") String cortyp, @Param("trninr") String trninr, @Param("nam") String nam);

    Smh selectByCortyp2AndTrninrAndNam(@Param("cortyp") String cortyp, @Param("cortyp2") String cortyp2, @Param("trninr") String trninr, @Param("nam") String nam);

    Smh selectByCortypAndTrninr(@Param("cortyp") String cortyp, @Param("trninr") String trninr);

    Smh selectByCortypAndTrninrAndMsgtyp(@Param("cortyp") String cortyp, @Param("trninr") String trninr, @Param("msgtyp") String msgtyp);

    Smh selectByCortypAndTrninrAndMsgtypAndDir(@Param("cortyp") String cortyp, @Param("trninr") String trninr, @Param("msgtyp") String msgtyp, @Param("dir") String dir);

    Smh selectQinOutByTrninr(@Param("trninr") String trninr);

    List<Smh> selectByTrninrAndMsgtyp(@Param("trninr") String trninr, @Param("msgtyp") String msgtyp);

    Smh getSmhByTrninr(@Param("trninr") String trninr);

    String dbcount();

    String getSmhInrByMsgInfo(@Param("dir") String dir, @Param("msgid") String msgid, @Param("msgtyp") String msgtyp, @Param("cortyp") String cortyp, @Param("sender") String sender);

    String getValdat(@Param("msgtyp") String msgtyp, @Param("etyextkey") String etyextkey, @Param("msgid") String msgid);

    /**
     * 云平台国内证发报相关
     */
    Smh selectYptSmhByTrntypAndTrninr(@Param("trntyp") String trntyp, @Param("trninr") String trninr);

    String getF20ByMsgid(@Param("msgid") String msgid);

    String getObjinrByMsgidAndDir(@Param("msgid")String msgid,@Param("dir")String dir);

    Smh getSmhByOrimsgidDirEtyextkey(@Param("msgid")String msgid,@Param("dir")String dir,@Param("etyextkey")String etyextkey);

    int updateStaflgByinr(@Param("staflg")String staflg,@Param("inr")String inr);

    Smh selectByObjtypAndTrninrAndDirAndCortyp(@Param("objtyp") String objtyp, @Param("trninr") String trninr, @Param("dir") String dir, @Param("cortyp") String cortyp);

    Smh selectByCortypAndTrninrForCpd(@Param("dir") String dir,@Param("trninr") String trninr);

    Smh selectByCortypAndDirAndMsgtypForCpd(@Param("dir") String dir, @Param("trninr") String trninr);

    List<Smh> selectSmhByExtkey(@Param("ownref") String ownref, @Param("imfref") String imfref);

    List<Smh> selectBySmhinrList(@Param("smhinrList") List<String> smhinrList);

    Smh selectByObjtypAndObjinrAndCortyp(@Param("objtyp") String objtyp, @Param("objinr") String objinr,@Param("cortyp") String cortyp);

    Smh getSmhByApfcnt(@Param("apfcnt")String apfcnt);

}