package com.chinaweal.aiccs.aiccs.business.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.chinaweal.aiccs.aiccs.abnormal.entity.TSAbnList;
import com.chinaweal.aiccs.aiccs.abnormal.entity.excel.AbnListExcel;
import com.chinaweal.aiccs.aiccs.business.entity.TSTaskList;
import com.chinaweal.aiccs.aiccs.business.entity.dto.AbnEntLocStatistic;
import com.chinaweal.aiccs.aiccs.business.entity.dto.RepairTaskListDto;
import com.chinaweal.aiccs.aiccs.business.entity.dto.RepairTaskStatisticDto;
import com.chinaweal.aiccs.aiccs.business.entity.dto.TaskListUnionDto;
import com.chinaweal.aiccs.crgs.system.entity.TaskList;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 待办列表 Mapper 接口
 * </p>
 *
 * @author <a href="https://blog.lroyia.top">lroyia</a>
 * @since 2021-01-22
 */
public interface TSTaskListMapper extends BaseMapper<TSTaskList> {

    /**
     * 通过工作流id查询待办信息
     *
     * @param workflowid 工作流id
     * @return 查询结果
     * @author lroyia
     * @since 2021年1月22日 13:51:12
     */
    TSTaskList selectByWorkflowID(@Param("workflowid") String workflowid);

    /**
     * 通过taskList的id 查询tasklist
     *
     * @param taskListId taskList的id
     * @return 查询结果
     * @author lroyia
     * @since 2021年1月25日 09:32:21
     */
    TSTaskList selectByTasklistID(@Param("tasklistid") String taskListId);

    /**
     * 联查流程分页
     *
     * @param page            分页信息
     * @param tsTaskListModel 分页参数
     * @return 分页结果
     * @author lroyia
     * @since 2021年2月18日 15:48:53
     */
    IPage<TSTaskList> selectPageWithProcess(IPage<TSTaskList> page, @Param("taskList") TSTaskList tsTaskListModel, @Param("customParamMap") Map<String, Object> customParamMap);

    /**
     * 联查流程分页 汇总
     *
     * @param page             分页信息
     * @param taskListUnionDto 分页参数
     * @return 分页结果
     * @author Lee
     * @since 2021年6月1日 11:09:53
     */
    IPage<TaskListUnionDto> selectUnionTaskPage(IPage<TaskListUnionDto> page, @Param("taskList") TaskListUnionDto taskListUnionDto, @Param("customParamMap") Map<String, Object> customParamMap);

    /**
     * 我的待办相关统计
     * @param customParamMap
     * @return
     */
    Map<String,Object> unionTaskPageStatistic(@Param("customParamMap") Map<String, Object> customParamMap);

    /**
     * 待办分页
     *
     * @param page            分页参数
     * @param tsTaskListModel 查询参数
     * @param flag            类型标记
     * @param decorg          作出决定机关
     * @return 查询结果
     * @author lroyia
     * @since 2021年1月26日 15:11:21
     */
    IPage<TSTaskList> searchTstaskByPage(IPage<TSTaskList> page, @Param("tsTaskListModel") TSTaskList tsTaskListModel,
                                         @Param("flag") String flag, @Param("decorg") String decorg);

    /**
     * 已办分页 汇总
     *
     * @param page               分页信息
     * @param taskListUnionParam 分页参数
     * @param customParamMap     查询条件对象
     * @return 分页结果
     * @author Lee
     * @since 2021年6月4日 14点03分
     */
    IPage<TaskListUnionDto> selectFinishUnionTaskPage(IPage<TaskListUnionDto> page, @Param("taskList") TaskListUnionDto taskListUnionParam, @Param("customParamMap") Map<String, Object> customParamMap);

    /**
     * 查询执行中的用户id
     * @param workFlowId    工作流id
     * @return  执行中的用户
     */
    TaskListUnionDto selectCurrentExecUserInfo(@Param("workFlowId") String workFlowId);

    List<TaskListUnionDto> searchUnionTaskList(@Param("bustype") String yclrStr, @Param("userId") String userId);

    List<TaskListUnionDto> searchUnionTaskToday(@Param("userId") String userId);

    int countFinishToday(@Param("userId") String userId);

    int countFinishAll(@Param("userId") String userId);

    int countByBUSTYPE(@Param("bustype") String bustype, @Param("userId") String userId);

    int countByBUSTYPEAndsourceType(@Param("bustype") String bustype, @Param("userId") String userId, @Param("sourceType") String sourceType);

    int countPD(@Param("userId") String userId);

    int countByUserid(@Param("userId") String userId);

    /**
     * 获取信用风险分类监管待办分页
     *
     * @param page
     * @param customParamMap
     * @return
     */
    IPage<TaskList> getCheckPage(IPage<TaskList> page, @Param("customParamMap") Map<String, Object> customParamMap);

    /**
     * 获取信用风险分类监管待办统计数
     * @param customParamMap
     * @return
     */
    int getRiskStatistic(@Param("customParamMap") Map<String, Object> customParamMap);

    List<TaskListUnionDto> searchCheckList(@Param("aicUserId") String aicUserId);

    List<TSTaskList> selectTaskListByBizseqid(@Param("bizseqid") String bizseqid);

    IPage<TaskListUnionDto> queryForComprehensive(IPage<TaskListUnionDto> page, @Param("customParamMap") Map<String, Object> customParamMap);

    List<TSTaskList> selectByBIZSEQIDANDSIGNUSERID(@Param("BIZSEQID") String BIZSEQID, @Param("SIGNUSERID") String SIGNUSERID);

    IPage<TaskListUnionDto> listTaskAndToincludeabn(Page<TaskListUnionDto> taskListUnionDtoPag, @Param("customParamMap") Map<String, Object> customParamMap);

    List<String> getBusQueryConditionBySearchName(@Param("searchName") String searchName);

    List<String> getBusQueryConditionByPripid(@Param("pripid") String pripid);

    IPage<TaskListUnionDto> comprehensiveOptimizeQuery(Page<TaskListUnionDto> page,@Param("customParamMap") Map<String, Object> customParamMap);

    List<TSTaskList> queryForNoTswrit(@Param("date")String date);

    TSTaskList tolockDetail(@Param("entname") String entname,@Param("locktime") String locktime);

    TSTaskList tounlockDetail(@Param("entname") String entname,@Param("unlocktime") String unlocktime);

    IPage<TaskListUnionDto> queryOldeBusness(Page<TaskListUnionDto> page,@Param("customParamMap") Map<String, Object> customParamMap);

    IPage<TSAbnList> queryAbnList(Page<TSAbnList> page, @Param("customParamMap") Map<String, Object> customParamMap);

    List<AbnListExcel> exportAbnList(@Param("customParamMap") Map<String, Object> customParamMap);

    IPage<RepairTaskListDto> repairTaskQuery(Page<RepairTaskListDto> page, @Param("customParamMap") Map<String, Object> paramMap);

    List<RepairTaskStatisticDto> repairTaskStatistic(@Param("customParamMap") Map<String, Object> paramMap);

    Map<String,Object> indexPageRepairStatistic(@Param("customParamMap") Map<String, Object> customParamMap);

    Map<String,Object> tsAbnEntTypeStatistic();

    List<AbnEntLocStatistic> tsAbnEntLocStatistic(@Param("customParamMap") Map<String, Object> customParamMap);

}
