package com.brilliance.isc.mda.dao;

import com.brilliance.isc.common.oit.vo.NoticeVo;
import com.brilliance.isc.vo.lg.RptselRequestVo;
import com.brilliance.isc.vo.manager.OitManageVo;
import com.brilliance.isc.vo.manager.OitTableVo;
import org.apache.ibatis.annotations.Mapper;
import com.brilliance.isc.bo.Oit;
import org.apache.ibatis.annotations.Param;

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

@Mapper
public interface OitMapper {

    int insert(Oit record);

    int insertSelective(Oit record);

    int updateByPrimaryKeySelective(Oit record);

    int updateByPrimaryKey(Oit record);

    int deleteByPrimaryKey(Oit record);

    int deleteByIds(Collection<Object> collection);

    Oit selectByPrimaryKey(Oit record);

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

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

    int selectCountByPtyinr(String objinr);

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

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

    List<Oit> selectByObjWithBatch(List<NoticeVo> noticeVos);

    List<Oit> selectByExtkeyWithBatch(List<NoticeVo> noticeVos);
    /**
     * 通过ID查询单条数据
     *
     * @param
     * @return 实例对象
     */
    Oit queryById(@Param("inr") String inr);

    /**
     * 查询指定行数据
     *
     * @param oit 查询条件
     * @param pageable         分页对象
     * @return 对象列表
     */
    //List<Oit> queryAllByLimit(Oit oit, @Param("pageable") Pageable pageable);

    /**
     * 统计总行数
     *
     * @param oit 查询条件
     * @return 总行数
     */
    long count(Oit oit);

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

    /**
     * 批量新增数据（MyBatis原生foreach方法）
     *
     * @param entities List<Oit> 实例对象列表
     * @return 影响行数
     */
    int insertBatch(List<Oit> entities);

    /**
     * 批量新增或按主键更新数据（MyBatis原生foreach方法）
     *
     * @param entities List<Oit> 实例对象列表
     * @return 影响行数
     * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常，请自行校验入参
     */
    int insertOrUpdateBatch(List<Oit> entities);

    /**
     * 修改数据
     *
     * @param oit 实例对象
     * @return 影响行数
     */
    /**
     * TODO
     * 自动增长序列(cnt)
     * @param oit
     * @return
     */
    int update(Oit oit);

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


    List<Oit> queryAllByLimit(Oit oit);

    List<OitManageVo> queryAllByLimitRelPty(OitManageVo oitManageVo);

    List<OitManageVo> queryAllByLimitRelPta(OitManageVo oitManageVo);

    List<OitManageVo> queryAllByLimitRelAct(OitManageVo oitManageVo);

    List<OitManageVo> queryAllByLimitRelGid(OitManageVo oitManageVo);

    List<OitManageVo> queryAllByLimitRelNid(OitManageVo oitManageVo);

    List<OitManageVo> queryAllByLimitRelCty(OitManageVo oitManageVo);

    List<OitManageVo> queryAllByLimitRelFec(OitManageVo oitManageVo);

    List<OitManageVo> queryfield(Oit oit);

    List<Oit> queryByPtyinr(String ptyinr);

    Oit queryByAdrinr(String adrinr);

    List<Oit> queryByCondition(Oit oit);

    int updateByAdrsign(Oit oit);

    int insertAdrOit(Oit oit);

    OitManageVo queryObjByObjextkeyPty(String objextkey);

    OitManageVo queryObjByObjextkeyPta(String objextkey);

    OitManageVo queryObjByObjextkeyAct(String objextkey);

    OitManageVo queryObjByObjextkeyCty(String objextkey);

    OitManageVo queryObjByObjextkeyGid(String objextkey);

    OitManageVo getObjByPty(String objinr);

    OitManageVo getObjByPta(String objinr);

    OitManageVo getObjByAct(String objinr);

    OitManageVo getObjByCty(String objinr);

    OitManageVo getObjByGid(String objinr);

    OitManageVo getObjByNid(String objinr);

    OitManageVo getObjByFec(String objinr);

    List<Oit> queryByRecord(Oit oit);

    List<OitTableVo> queryActList(OitTableVo oitTableVo);

    List<OitTableVo> queryFecList(OitTableVo oitTableVo);

    List<OitTableVo> queryGidList(OitTableVo oitTableVo);

    List<OitTableVo> queryNidList(OitTableVo oitTableVo);

    List<OitTableVo> queryPtyList(OitTableVo oitTableVo);

    List<OitTableVo> queryPtaList(OitTableVo oitTableVo);

    /*
    查询停用客户
     */
    List<String> getStopPtyList(RptselRequestVo rptselRequestVo);

}