package com.chinaweal.aiccs.aiccs.market.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.chinaweal.aiccs.aiccs.abnormal.entity.EBaseinfo;
import com.chinaweal.aiccs.aiccs.market.entity.BizOwnerAssign;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.chinaweal.aiccs.aiccs.market.entity.dto.EBaseInfoAssignDto;
import com.chinaweal.aiccs.aiccs.market.entity.dto.SliceAssignLogDto;
import org.apache.ibatis.annotations.Param;

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

/**
 * <p>
 * 业户管理业务记录表 Mapper 接口
 * </p>
 *
 * @author <a href="https://blog.lroyia.top">lroyia</a>
 * @since 2021-05-05
 */
public interface BizOwnerAssignMapper extends BaseMapper<BizOwnerAssign> {

    List<Map<String, String>> countAssign(@Param("org") String org, @Param("psid") String psid, @Param("param") Map<String, Object> param);

    /**
     * 业户认领记录分页
     * @param page   分页参数
     * @param params    查询参数
     * @return  分页结果
     * @author lroyia
     * @since  2021年5月5日 11:38:07
     */
    IPage<EBaseInfoAssignDto> ownerAssignPage(IPage<EBaseinfo> page, @Param("params") Map<String, Object> params);

    /**
     * 业户认领记录（导出使用）
     * @param params    查询参数
     * @return  结果
     * @author ymc
     * @since  2022年5月23日 16:06
     */
    List<EBaseInfoAssignDto> ownerAssign(@Param("params") Map<String, Object> params);

    /**
     * 待认领记录id分页
     * @param beginId   分页起始id
     * @param limitSize 分页大小
     * @return  分页结果
     * @author lroyia
     * @since  2022年1月14日 09:43:56
     */
    List<EBaseInfoAssignDto> selectWaitAssignPage(@Param("beginId") String beginId, @Param("limitSize") int limitSize);

    /**
     * 通过pripid查询主体认领记录（加悲观锁）
     * @param pripid    主体pripid
     * @return  查询结果
     * @author lroyia
     * @since  2021年5月21日 17:10:44
     */
    List<BizOwnerAssign> selectBizRecordForUpdate(@Param("pripid") String pripid);

    /**
     * 列出带片区信息的列入记录
     * @param sliceId   片区id
     * @param pripid    主体pripid
     * @return  查询结果
     * @author lroyia
     * @since  2021年12月11日 15:12:16
     */
    List<SliceAssignLogDto> listBySliceInfo(@Param("sliceId") String sliceId, @Param("pripid") String pripid);

    /**
     * 查询最新的认领记录
     * @param pripid    主体id
     * @return  查询结果
     * @author lroyia
     * @since  2022年1月5日 14:20:35
     */
    BizOwnerAssign selectLatestAssignLog(@Param("pripid") String pripid);

    /**
     * 查询没有认领记录，但已经认领的主体信息
     * @param beginId   主体id
     * @param limitSize 分页大小
     * @param supOrg  认领区域
     * @return  查询结果
     * @author lroyia
     * @since  2022年1月14日 10:39:01
     */
    List<EBaseinfo> selectNoAssignRecordInfo(@Param("beginId") String beginId, @Param("limitSize") int limitSize, @Param("supOrg") String supOrg);
}
