/*
 * Author: wangjian
 * 生成mapper
 */
package com.tofly.xrtymis.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.tofly.xrtymis.custom.dto.DateTimeDTO;
import com.tofly.xrtymis.custom.dto.GdInfoQueryDto;
import com.tofly.xrtymis.custom.dto.GdglinfoDTO;
import com.tofly.xrtymis.custom.dto.GdglinfoTjDTO;
import com.tofly.xrtymis.custom.entity.ReadEntity;
import com.tofly.xrtymis.custom.vo.ClassificationStatisticsVO;
import com.tofly.xrtymis.custom.vo.GdAbnormalPercentStatic;
import com.tofly.xrtymis.custom.vo.GdPercentStatic;
import com.tofly.xrtymis.custom.vo.OrderUserDealNumVo;
import com.tofly.xrtymis.entity.Gdglinfo;
import org.apache.ibatis.annotations.Param;

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

/**
 * 业务工单详情表
 *
 * @author fu
 * @date Fri Mar 19 00:00:00 CST 2021
 */
public interface GdglinfoMapper extends BaseMapper<Gdglinfo> {
    List<String> getUserByIds(@Param("userIds") String userIds);

    List<Map> orderMonitoring(Page page,  @Param("map")Map map);

    List<Map> summarizeNumber(Page page, Gdglinfo gdglinfo);

    List<Map> orderAnalysis(Page page,  @Param("map")Map map);

    Object orderAnalysisDetails(@Param("map")Map map);

    List<Map> orderAnalysisByTimeAndType(Page page, @Param("map")Map map);

    List<Map> collectionManagementTwo(Page page, @Param("map")Map map);

    List<Map> collectionManagementThree(Page page, @Param("map")Map map);

    Map monthCount();

    int count(@Param("deta") String deta);

    List<GdPercentStatic> collectGDCompleteInfo(@Param("model") GdglinfoTjDTO model);

    List<GdPercentStatic> collectDeptGDCompleteInfo(@Param("model") GdglinfoTjDTO model);

    List<GdPercentStatic> collectGDCompleteDetailsInfo(@Param("model") GdglinfoTjDTO model);

    /**
     * 工单汇总数据
     * @param model
     * @return
     */
    List<Map> collectGdIndex( @Param("model") GdglinfoTjDTO model , @Param("userId") Long userId);

    /**
     * 总报单数
     * @param userId
     * @param gdglinfoDTO
     * @return
     */
    IPage<Gdglinfo> collectGdAll(Page page , @Param("userId")Long userId, @Param("gdglinfoDTO") GdglinfoDTO gdglinfoDTO);
    IPage<Gdglinfo> collectGdAllBygddj(Page page, @Param("userId")Long userId, @Param("gdglinfoDTO") GdglinfoDTO gdglinfoDTO);
    IPage<Gdglinfo> collectGdAllByRzcz(Page page, @Param("userId")Long userId, @Param("gdglinfoDTO") GdglinfoDTO gdglinfoDTO);
    IPage<Gdglinfo> collectGdAllByRzsh(Page page, @Param("userId")Long userId, @Param("gdglinfoDTO") GdglinfoDTO gdglinfoDTO);
    IPage<Gdglinfo> collectGdAllByRzzj(Page page, @Param("userId")Long userId, @Param("gdglinfoDTO") GdglinfoDTO gdglinfoDTO);
    IPage<Gdglinfo> collectGdAllByJgcz(Page page, @Param("userId")Long userId, @Param("gdglinfoDTO") GdglinfoDTO gdglinfoDTO);
    IPage<Gdglinfo> collectGdAllByJgsh(Page page, @Param("userId")Long userId, @Param("gdglinfoDTO") GdglinfoDTO gdglinfoDTO);

    /**
     * 工单汇总详情汇总数据
     * @param gdglinfoDTO
     * @return
     */
    List<Map> collectGdInfoDetail(@Param("gdglinfoDTO") GdglinfoDTO gdglinfoDTO , @Param("ratio") Integer ratio,@Param("userId") Long userId);
    List<Map> collectGdInfoDetailByGddj(@Param("gdglinfoDTO") GdglinfoDTO gdglinfoDTO , @Param("ratio") Integer ratio,@Param("userId") Long userId);
    List<Map> collectGdInfoDetailByRzcz(@Param("gdglinfoDTO") GdglinfoDTO gdglinfoDTO , @Param("ratio") Integer ratio,@Param("userId") Long userId);
    List<Map> collectGdInfoDetailByRzsh(@Param("gdglinfoDTO") GdglinfoDTO gdglinfoDTO , @Param("ratio") Integer ratio,@Param("userId") Long userId);
    List<Map> collectGdInfoDetailByRzzj(@Param("gdglinfoDTO") GdglinfoDTO gdglinfoDTO , @Param("ratio") Integer ratio,@Param("userId") Long userId);
    List<Map> collectInfoByJgcz(@Param("gdglinfoDTO") GdglinfoDTO gdglinfoDTO , @Param("ratio") Integer ratio,@Param("userId") Long userId);
    List<Map> collectInfoByJgsh(@Param("gdglinfoDTO") GdglinfoDTO gdglinfoDTO , @Param("userId") Long userId);

    /**
     * 获取工单详情--驳回
     * @param page
     * @param gdglinfoDTO
     * @return
     */
    IPage<Gdglinfo> getCollectDetailsByBh(Page page , @Param("gdglinfoDTO") GdglinfoDTO gdglinfoDTO,@Param("userId") Long userId);

    /**
     * 获取工单详情--转派
     * @param page
     * @param gdglinfoDTO
     * @return
     */
    IPage<Gdglinfo> getCollectDetailsByZp(Page page , @Param("gdglinfoDTO") GdglinfoDTO gdglinfoDTO,@Param("userId") Long userId);

    List<GdAbnormalPercentStatic> collectGDCompleteErrorInfo(@Param("model")GdglinfoTjDTO model);

    List<GdAbnormalPercentStatic> collectDeptGDCompleteErrorInfo(@Param("model")GdglinfoTjDTO model);

    List<GdAbnormalPercentStatic> collectGDCompleteErrorDetailsInfo(@Param("model")GdglinfoTjDTO model);

    Page<Gdglinfo> selectSpotCheckInfo(Page page,@Param("model")DateTimeDTO timeDTO, @Param("number")Integer number,@Param("isRxlx")Integer isRxlx);

    /**
     * 热线工单统计
     * @param model
     * @return
     */
    List<Map> collectRXGDCompleteErrorInfo(@Param("model") GdglinfoTjDTO model);

    List<Gdglinfo> loadTabTypeInfo(Page page, @Param("map") Map<String, Long> map, @Param("status")String status,@Param("stTime") Date stTime,@Param("enTime") Date enTime);

//    Page<Map> gdInfoQuery(Page page, @Param("dto") GdInfoQueryDto dto);
    List<Map> getUserByRole(@Param("roleId") List<String> roleId);
    Page<Map> gdInfoQuery(Page page,@Param("dto")GdInfoQueryDto dto);

    List<Map> gdInfoQuery(@Param("dto")GdInfoQueryDto dto);

    /**
     * 获取工单信息中(除了结果处置多人,结果审核多人,归档) 当前工单状态中 处理人处理部门信息
     * @return
     */
    List<OrderUserDealNumVo> getOrderUserDealNum();

    /**
     * 统计未处理数量工单(39,40,41,42,结果处置)
     * @param userId
     * @return
     */
    ClassificationStatisticsVO getClassificationStatisticsVO(@Param("userId") Long userId);

    ReadEntity getReadYhbh(@Param("yhbh") String yhbh, @Param("yearMonth") String yearMonth);

    boolean updateRead(@Param("yhbh") String yhbh, @Param("yearMonth")String yearMonth, @Param("orderIds") String orderIds);

    boolean updateRewardWater(@Param("rewardWaterValue") String rewardWaterValue, @Param("isRewardWater")String isRewardWater, @Param("orderId") String orderId);
}
