package com.yeejoin.amos.boot.module.common.api.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.yeejoin.amos.boot.module.common.api.dto.FailureDetailsDto;
import com.yeejoin.amos.boot.module.common.api.dto.OrgUsrDto;
import com.yeejoin.amos.boot.module.common.api.dto.StatusDto;
import com.yeejoin.amos.boot.module.common.api.entity.FailureDetails;
import org.apache.ibatis.annotations.Param;

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

/**
 * Mapper 接口
 *
 * @author system_generator
 * @date 2021-08-04
 */
public interface FailureDetailsMapper extends BaseMapper<FailureDetails> {

    /**
     * 查询全部 分页
     *
     * @param currentStatus 当前任务状态
     *                      * @param  startTime 起始时间
     *                      * @param endTime 结束时间
     *                      * @param submissionPid 报送人
     * @param current       当前页
     * @return
     */

    List<FailureDetails> selectAllPage(Long current, Long size, Long currentStatus,
                                       String startTime, String endTime, Integer submissionPid);

    List<FailureDetailsDto> selectWebPage(Long current, Long size,Long currentStatus,
                                       String startTime, String endTime, String submissionName, Long submissionBranchId,
                                       Long sequenceNbr);

    /**
     * 查询我发起的 分页
     * current 当前页
     * size 条数
     *
     * @param currentStatus 当前任务状态
     *                      * @param  startTime 起始时间
     *                      * @param endTime 结束时间
     *                      * @param submissionPid 报送人
     * @return
     */
    List<FailureDetails> selectISubPage(Long current, Long size, Long currentStatus,
                                        String startTime, String endTime, Integer submissionPid);

    /**
     * 查询待处理 分页
     *
     * @param currentStatus 当前任务状态
     *                      * @param  startTime 起始时间
     *                      * @param endTime 结束时间
     *                      * @param submissionPid 报送人
     * @param
     * @return
     */
    List<FailureDetails> selectInProcessing(Long current, Long size, Long currentStatus,
                                            String startTime, String endTime, Integer submissionPid);

    /**
     * 查询待处理  应急指挥科人员分页
     *
     * @param
     * @return
     */
    List<FailureDetails> selectStatusWaitTj(Long current, Long size, Long currentStatus,
                                            String startTime, String endTime, Integer submissionPid);

    /**
     * 查询待处理  维修人员分页
     *
     * @param currentStatus 当前任务状态
     *                      * @param  startTime 起始时间
     *                      * @param endTime 结束时间
     *                      * @param submissionPid 报送人
     * @param
     * @return
     */
    List<FailureDetails> selectStatusWaitWx(Long current, Long size, Long currentStatus,
                                            String startTime, String endTime, Integer submissionPid);


    /**
     * 统计  全部
     *
     * @param currentStatus 状态
     * @param startTime     起始时间
     * @param endTime       结束时间
     * @param submissionPid 报送人
     * @return
     */
    List<StatusDto> selectStatusCount(Long currentStatus, String startTime, String endTime, Integer submissionPid);


    /**
     * 统计  维修人员
     *
     * @param currentStatus 状态
     * @param startTime     起始时间
     * @param endTime       结束时间
     * @param submissionPid 报送人
     * @return
     */
    List<StatusDto> selectStatusWx(Long currentStatus, String startTime, String endTime, Integer submissionPid);

    /**
     * 统计  应急指挥科人员
     *
     * @param currentStatus 状态
     * @param startTime     起始时间
     * @param endTime       结束时间
     * @param submissionPid 报送人
     * @return
     */
    List<StatusDto> selectStatusFq(Long currentStatus, String startTime, String endTime, Integer submissionPid);

    /**
     * 统计  我发起
     *
     * @param currentStatus 状态
     * @param startTime     起始时间
     * @param endTime       结束时间
     * @param submissionPid 报送人
     * @return
     */
    List<StatusDto> selectStatusFqp(Long currentStatus, String startTime, String endTime, Integer submissionPid);

    /**
     * 统计  领导
     *
     * @param currentStatus 状态
     * @param startTime     起始时间
     * @param endTime       结束时间
     * @param submissionPid 报送人
     * @return
     */
    List<StatusDto> selectStatusLeader(Long currentStatus, String startTime, String endTime, Integer submissionPid);


    List<StatusDto> selectAudit(Long currentStatus, String startTime, String endTime, Integer submissionPid, String userId);

    List<StatusDto> selectMaintain(Long currentStatus, String startTime, String endTime, Integer submissionPid, String userId);

    List<StatusDto> selectUserId(Long currentStatus, String startTime, String endTime,  String userId);

    List<FailureDetails> selectYJ(Long currentStatus, String startTime, String endTime,  String userId,Long current, Long size);

    List<FailureDetails> selectForAudit(Long currentStatus, String startTime, String endTime,Integer submissionPid,  String userId,Long current, Long size);


    List<FailureDetails> selectForMaintain(Long currentStatus, String startTime, String endTime, Integer submissionPid, String userId,Long current, Long size);


}
