package com.tofly.xrtygis.custom.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tofly.common.core.entity.ResultRespone;
import com.tofly.pojo.Department;
import com.tofly.xrtygis.custom.entity.dto.BigScreeRealIndexDto;
import org.springframework.web.bind.annotation.GetMapping;

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

/**
 * 大屏相关
 *
 * @author 陈浩
 * @date 2021/4/19
 */
public interface BigScreenService {

    /**
     * 获取水质参数配置全部信息
     *
     * @return list
     */
    List getInfo();


    /**
     * 根据父级多个ID查看所有子级
     *
     * @return ResultRespone
     */
    @GetMapping("/syscommoncode/getByfjId")
    ResultRespone getBylistPcid(String pid);

    /**
     * 获取全部部门信息
     *
     * @return ResultRespone
     */
    ResultRespone<List<Department>> departmentListAll();

    /**
     * 获取部门用户
     *
     * @param depts
     * @return ResultRespone
     */
    ResultRespone<List<Map<String, Object>>> getUserByDepts(String depts);


    /**
     * 查看测站信息
     *
     * @param stnm 测站名称
     * @param stid 测站编号
     * @return page
     */
    List selectStation(Long id, String stnm, String stid, String categoryName);


    /**
     * 查看对应测站指标
     *
     * @param ids 测站id
     * @return list
     */
    List selectIndex(String ids);

    /**
     * 大屏-实时指标信息
     *
     * @return map
     */
    Map<String, Object> realTimeIndexInfo(BigScreeRealIndexDto dto);

    /**
     * 查询供售水历史
     *
     * @param page  page
     * @param start 开始时间
     * @param end   结束时间
     * @param code  0：供水量 1 售水量
     * @return
     */
    Page waterVolume(Page page, String start, String end, String code);

    /**
     * 查看小时去供水历史
     *
     * @param code  0：一厂  1：二厂
     * @param param 0：取水量  1：供水量
     * @param start 开始时间
     * @param end   结束时间
     * @return page
     */
    Page hourWaterHistory(Page page, String code, String param, String start, String end);

    /**
     * 实时指标信息-加压站电耗历史信息
     *
     * @param start 开始时间
     * @param end   结束时间
     * @return page
     */
    Page getStationHistory(Page page, String start, String end);

    /**
     * 实时指标信息-获取水量历史
     *
     * @param start 开始时间
     * @param end   结束时间
     * @param param gsl/qsl  供水量/取水量
     * @param itid  水厂id
     * @return page
     */
    List<Map> getWaterValHistory(String start, String end, String param, Long itid);

    /**
     * 实时指标信息-获取药耗历史
     *
     * @param start 开始时间
     * @param end   结束时间
     * @param param param
     * @return page
     */
    List<Map> getConsumeHistory(String start, String end, String param);

    /**
     * 实时指标信息-获取瞬时指标历史
     *
     * @param page  page
     * @param start 开始时间
     * @param end   结束时间
     * @param param param
     * @return page
     */
    Page getIndexHistory(Page page, String start, String end, String param);

    /**
     * 实时指标详细-电耗历史
     *
     * @param start 开始时间
     * @param end   结束时间
     * @param code  0,一厂  1 二厂
     * @return page
     */
    List<Map> getPowerHistory(String start, String end, String code);

    /**
     * 获取报警实时信息
     *
     * @return list
     */
    List getWarn(String code);

    /**
     * 获取历史信息
     *
     * @param page  page
     * @param type  报警类型类型
     * @param start 开始时间
     * @param end   结束时间
     * @return page
     */
    Page getWarnHistory(Page page, String type, String start, String end, String isclear, String isconfirm);

    /**
     * 查看报警详情
     *
     * @return list
     */
    Page<Map> getWarnInfo(Page page,String type,String start,String end);

    /**
     * 统计报警类型
     *
     * @return map
     */
    List<Map> countWarnType();

    /**
     * 获取产销差
     *
     * @return map
     */
    Map<String, Object> getNrw();

    /**
     * 查看更多产销差信息
     *
     * @param year 年份
     * @param code 0，按月查看   1，季度查看  2 近三年查看
     * @return map
     */
    Map<String, Object> nrwMore(String year, Integer code);

    /**
     * 获取漏损率
     *
     * @return map
     */
    Map<String, Object> getLeakage();

    /**
     * 查看更多漏损率信息
     *
     * @param year 年份
     * @param code 0，按月查看   1，季度查看  2 近三年查看
     * @return map
     */
    Map<String, Object> leakageMore(String year, Integer code);

    /**
     * 获取供水量和售水量
     *
     * @return map
     */
    Map<String, Object> getSupSellWater();

    /**
     * 查看供水量和售水量更多信息
     *
     * @param year 年份
     * @param code 0，按月查看   1，季度查看  2 近三年查看
     * @return map
     */
    Map<String, Object> supSellWaterMore(String year, Integer code);

    /**
     * 获取制水单变
     *
     * @return map
     */
    Map<String, Object> getFixed();

    /**
     * 获取更多单变信息
     *
     * @param year 年份
     * @param code
     * @param type
     * @return
     */
    Map<String, Object> newfixedMore(String year, Integer code, String type);

    /**
     * 获取多个测站指标
     *
     * @param stids 测站id集合
     * @return map
     */
    Map<Long, Map<Long, Object>> getSiteInfos(String stids);

    /**
     * 获取水量
     *
     * @param itcds 指标编号
     * @return double
     */
    Double getWaterVolume(String itcds);

    /**
     * 获取耗量
     *
     * @return map
     */
    List<Map> getConsumption();

    /**
     * 获取指标实时信息
     *
     * @param itcds 指标信息
     * @return list
     */
    List getRealTimeItVal(String itcds);

    /**
     * 获取指标信息
     *
     * @param page      page
     * @param stid      测站id
     * @param itnm      指标项
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return page
     */
    Page getIndexInfo(Page page, Long stid, String itnm, String startTime, String endTime);

    List getIndexInfo(Long stid, String itnm, String startTime, String endTime);

    /**
     * 大屏视频监控
     *
     * @return list
     */
    List getVideoInfo();

    /**
     * 获取测站指标实时信息
     *
     * @param dto 测站和指标集合
     * @return map
     */
    Map<String, Object> artwork(Map<String, String> dto);

    /**
     * 获取全部实时指标信息
     *
     * @param scids 站点id
     * @return map
     */
    Map<String, Object> getAllRealIndex(String scids);

    /**
     * 实时表确认报警信息
     *
     * @param wanrId 信息id
     * @param userId 确认人id
     * @return true
     */
    boolean handleWarn(String wanrId, Long userId);

    /**
     * 历史表确认报警信息
     *
     * @param wanrId 报价id
     * @param userId 用户id
     * @return boolean
     */
    boolean handleWarnHistory(String wanrId, Long userId);

    /**
     * 获取报警类型
     *
     * @return list
     */
    List<Map> getWarnType();

    /**
     * 获取部分指标的合计值
     *
     * @param index 指标
     * @return Double
     */
    Double getSumIndexInfo(String index);

}
