package com.tofly.xrtygis.custom.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tofly.xrtygis.custom.entity.dto.StanderdDto;
import com.tofly.xrtygis.entity.Scadastaitem;
import com.tofly.xrtygis.entity.Scadastation;

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

/**
 * @author 陈浩
 * @date 2021-4-1
 */
public interface CustomScadaAboutService {

    /**
     * 模糊查询站点名称
     *
     * @param stnm 站点名称
     * @return Scadastation
     */
    List likeStnm(String stnm);

    /**
     * 监测指标历史记录
     *
     * @param page      page
     * @param stid      站点id
     * @param itnm      指标项
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return page
     */
    Page viewHistory(Page page, Long stid, String itnm, String startTime, String endTime);

    List<Map> viewHistory(Long stid, String itnm, String startTime, String endTime);

    /**
     * 计算合格率
     *
     * @param itcd      itcd
     * @param startTime 开始时间
     * @param endDate   结束时间
     * @param time      超时时间
     * @return map
     */
    Map calItemValue(String itcd, String startTime, String endDate, Double time);

    /**
     * 添加测站信息
     *
     * @param scadastation 测站信息表
     * @return true of false
     */
    boolean insertStation(Scadastation scadastation);

    /**
     * 修改测站信息
     *
     * @param scadastation 测站信息
     * @return true or false
     */
    boolean updateStation(Scadastation scadastation);

    /**
     * 删除测站信息
     *
     * @param id 测站id
     * @return true of false
     */
    boolean deleteStation(String id);

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

    Page selectStation(Page page, Long id, String czmc, String czbh,String categoryName);

    /**
     * 添加指标配置
     *
     * @param item 指标配置信息
     * @return true or false
     */
    boolean insertIndex(Scadastaitem item);

    /**
     * 修改测站指标
     *
     * @param item 测站信息
     * @return true or false
     */
    boolean updateIndex(Scadastaitem item);

    /**
     * 查询未关联指标
     *
     * @param itcd 指标编号
     * @return list
     */
    List viewIndex(String itcd);

    /**
     * 删除指标
     *
     * @param ids 指标id
     * @return true or false
     */
    boolean deleteIndex(String ids);

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

    /**
     * 获取测站名称
     *
     * @return list
     */
    List getStnm();

    /**
     * 获取指标名
     *
     * @param stnm 测站名
     * @return list
     */
    List getItnm(String stnm);

    /**
     * 计算超标次数
     *
     * @param statiem      指标编号
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param time      超时时间
     * @return Integer
     */
    Double getOverStandardNum(Scadastaitem statiem, String startTime, String endTime, Double time);

    /**
     * 测站指标上传
     *
     * @param dto dto
     * @return boolean
     */
    boolean stationExport(String dto);

    /**
     * 获取指标类别
     * @return list
     */
    List<Map> getIndexType();

    /**
     * 批量配置测站指标标准
     * @return boolean
     */
    boolean insertStandard(StanderdDto dto);

    /**
     * 获取已配置合格率/优质率的测站与指标信息
     * @return map
     */
    Map<Object,List<Map>> getStationItemInfo();

    /**
     * 趋势分析
     * @param itcd 指标编号
     * @param start 开始时间
     * @param end 结束时间
     * @param time 超时时间
     * @param itid 需排除id
     * @return map
     */
    Map<String,Double> trendAnalys(String itcd,String start,String end,Double time,String itid);

    /**
     * 获取指标历史
     * @param itcd 指标编号
     * @param start 开始时间
     * @param end 结束时间
     * @return map
     */
    Map<Object, List<Map<String, Object>>> getValHistory(String itcd,String start,String end);

    /**
     * 获取指标历史
     * @param page page
     * @param itcd 指标编号
     * @param start 开始时间
     * @param end 结束时间
     * @return map
     */
    Map<Object,Page> getValHistory(Page page,String itcd,String start,String end);

    /**
     * 单个指标历史分页查询
     */
    Page<Map> itvalPageQuery(Page page,String itcd,String start,String end);

    /**
     *指标历史导出
     *
     * @param itcd 指标编号
     * @param start 开始时间
     * @param end 结束时间
     */
    Object itemValExport(HttpServletResponse response, String itcd, String start, String end);
}
