package com.tofly.xrtygis.custom.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tofly.xrtygis.custom.entity.dto.QualityDto;
import com.tofly.xrtygis.custom.entity.gs.NoteSearch;
import com.tofly.xrtygis.entity.Rxgdbzinfo;
import com.tofly.xrtygis.entity.Rxgdzjlr;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * @author 泡泡
 */
public interface NewHotlineService {

    /**
     * 获取联系人消息
     *
     * @param dto  查询条件 为0：编码、姓名、地址、电话  为1：部门、姓名、电话
     * @param code 0：客户消息   1：员工信息
     * @return page
     */
    Page<Map> getContactsInfo(Page page, String dto, String code);

    /**
     * 呼叫转移-信息查询
     *
     * @param dept 部门
     * @param dto  人员名字/电话
     * @return list
     */
    List<Map> callShiftQuery(String dept, String dto);

    /**
     * 获取工单登记人员信息
     *
     * @return list
     */
    List<Map> getCrewInfo();

    /**
     * 获取工单类型信息
     *
     * @return list
     */
    List<Map> getworkOrderType();

    /**
     * 录音评分统计
     *
     * @param page  page
     * @param crew  人员
     * @param start 开始时间
     * @param end   结束时间
     * @return page
     */
    Page<Map> recordingStatistics(HttpServletResponse response, Page page, String crew, String start, String end, Long dept);

    /**
     * 坐席人员详细信息
     *
     * @param page  page
     * @param crew  人员
     * @param start 开始时间
     * @param end   结束时间
     * @param code  0：不导出  1：导出
     * @return page
     */
    Page getRecordInfo(HttpServletResponse response, Page page, String crew, String start, String end, String code);

    /**
     * 工单统计
     *
     * @param page  page
     * @param end   结束时间
     * @param start 开始时间
     * @return page
     */
    Page workOrderStatistics(Page page, String start, String end, String gdlx, String gdzt, String djry);

    /**
     * 查询数据统计工单详情
     *
     * @param page  page
     * @param gdlx  工单类型
     * @param start 开始时间
     * @param end   结束时间
     * @param type  0：接单/派单 1：已处理  2：终止  3：超时  4：未处理
     * @param code  0：不导出  1：导出
     * @return page
     */
    Page workOrderInfo(HttpServletResponse response, Page page, String gdlx, String start, String end, String type, String code, String gdzt, String djry);

    /**
     * 查询回访工单详情
     *
     * @param page  page
     * @param gdlx  工单类型
     * @param start 开始时间
     * @param end   结束时间
     * @param code  0：不导出  1：导出
     * @return page
     */
    Page returnVisitInfo(HttpServletResponse response, Page page, String gdlx, String start, String end, String code, String pass, String gdzt, String djry, String state);

    /**
     * 回访统计
     *
     * @param page  page
     * @param end   结束时间
     * @param start 开始时间
     * @return page
     */
    Page returnVisitCount(Page page, String start, String end, String gdlx, String gdzt, String djry, String state);

    /**
     * 客户查询
     *
     * @param dto 查询条件 编号、姓名、地址、电话
     * @return list
     */
    Page<Map> selectClientInfo(Page page, String dto);

    /**
     * 热线工单质检
     *
     * @param page  page
     * @param start 开始时间
     * @param end   结束时间
     * @return page
     */
    Page<Map> orderQualityCount(Page page, String start, String end, String gdlx, String gdzt, String djry);

    /**
     * 未质检工单详情
     *
     * @param page  page
     * @param type  工单类型
     * @param start 开始时间
     * @param end   结束时间
     * @return page
     */
    Page<Map> notTheQualityInfo(Page page, String type, String start, String end, String gdzt, String djry, String code);

    /**
     * 热线工单质检录入
     *
     * @param rxgdzjlr entity
     * @return boolean
     */
    boolean theQuality(Rxgdzjlr rxgdzjlr);

    /**
     * 添加热线工单备注
     *
     * @param rxgdbzinfo rxgdbzinfo
     * @return boolean
     */
    boolean insertOrderNote(Rxgdbzinfo rxgdbzinfo);

    /**
     * 获取班长角色的信息
     *
     * @return list
     */
    List<Map<String, Object>> getRoleInfo();

    /**
     * 通过电话获取客户信息
     *
     * @param tel 电话
     * @return list
     */
    List<Map> telGetInfo(String tel);

    Page<Map> allocation(Page page, String str, String qybm, String qydbm);

    String getDeptNameById(Long deptId);

    String getRealNameById(String empcode);

    List<Map> getHisTable();

    /**
     * 统计报表-获取工单质检统计
     */
    Page<Map> getQualityInfo(Page page, Long gdlx, String start, String end, String gdbh);

    List<Map> qualityCount(HttpServletResponse response, QualityDto dto);

    Page<Map> qualityInfo(HttpServletResponse response, Page page, QualityDto dto);

    /**
     * 查询低压用户信息
     * @param input 姓名、地址、电话、编号模糊查询
     * @param start 开始时间
     * @param end 结束数据
     * @return lsit
     */
    Page getDyYh(Page page,String input, String start, String end);

    /**
     * 发送短信给低压用户
     * @param noteSearch noteSearch
     * @return Boolean
     */
    boolean sendNodeDyYh(NoteSearch noteSearch);

    /**
     * 查询停水通知
     * @return object
     */
    Map<String, Object> queryNoticeInfo(Long code);

    /**
     * 查询用户信息
     * @param code code
     * @return map
     */
    Map<String,Object> queryUserBalance(String code);
}
