package com.tofly.xrtygis.custom.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tofly.xrtygis.custom.entity.vo.IndexInfoVo;
import com.tofly.xrtygis.entity.Warnhistory;
import org.apache.ibatis.annotations.Select;
import org.springframework.data.repository.query.Param;

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

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


    /**
     * 获取耗量
     *
     * @return ConsumptionDto
     */
    Map getValue();

    @Select("  select sum(GSL_TOTAL) gslTotal, sum(SSL_TOTAL) sslTotal\n" +
            "        from TF_YWPN_COSTRLWATER_W\n" +
            "        where mark = 0 and to_char(UP_DATE,'yyyy') = extract(year from sysdate)")
    Map<String, Object> viewWaterVolume();

    Map getHourWater(@Param("qsId") Long qsId, @Param("list") List<Long> list);

    Page<Map> waterVolume(Page page,String start,String end,String code);

    /**
     * 供水量历史
     */
    Page<Map> hourGslHistory(Page page, @Param("start") String start, @Param("end") String end, @Param("list") List<Long> list);

    Page<Map> hourQslHistory(Page page, @Param("start") String start, @Param("end") String end, @Param("qsId") Long qsId);

    /**
     * 获取厂前一天取水供水量
     *
     * @param scid 水厂id
     * @return watertrend
     */
    Map getwaterVolume(@Param("scid") Long scid);

    /**
     * 获取加压站电耗历史信息
     *
     * @param page  page
     * @param start 开始时间
     * @param end   结束时间
     * @return list
     */
    Page<Map> getStationHistory(Page page, @Param("start") String start, @Param("end") String end);

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

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

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

    /**
     * 实时指标详细-电耗历史
     *
     * @param start 开始时间
     * @param end   结束时间
     * @param param 参数
     * @return page
     */
    List<Map> getPowerHistory(@Param("start") String start, @Param("end") String end, @Param("param") String param);


    /**
     * 获取加压站前一天总电耗
     *
     * @return long
     */
    Long getStationPower();


    List<Map> getRealVal(@Param("itcdList") List itcdList);

    /**
     * 今年每个月份产销差
     *
     * @return list
     */
    List<Map> monthNrw();

    /**
     * 年预算产销差
     *
     * @return double
     */
    Double yearNrwPlan();

    /**
     * 年实际产销差
     *
     * @return double
     */
    Double yearNrw();

    /**
     * 每月漏损率
     *
     * @return list
     */
    List<Map> monthLeakage();

    /**
     * 年漏损率
     *
     * @return double
     */
    Double yearLeakage();

    /**
     * 年预算漏损率
     *
     * @return double
     */
    Double yearLeakagePlan();

    /**
     * 本年每月售水量供水量
     *
     * @return list
     */
    List<Map> monSupSellWater();

    /**
     * 本年每月计划售水量供水量
     *
     * @return list
     */
    List<Map> monSupSellWaterPlan();

    /**
     * 本年售水量供水量
     *
     * @return list
     */
    List<Map> yearSupSellWater();

    /**
     * 本年预算售水量供水量
     *
     * @return list
     */
    List<Map> yearSupSellWaterPlan();

    /**
     * 今年月度单变
     *
     * @return list
     */
    List<Map> monthFixed();

    /**
     * 年度单变
     *
     * @return double
     */
    Double yearFixed();

    /**
     * 年度预算单变
     *
     * @return double
     */
    Double yearFixedPlan();

    /**
     * 获取今天8:00后第一条水量
     *
     * @param itcd 指标编号
     * @return double
     */
    Double getTodayWater(@Param("itcd") String itcd);

    /**
     * 获取昨天8:00后第一条水量
     *
     * @param itcd 指标编号
     * @return double
     */
    Double getYesterday(@Param("itcd") String itcd);

    /**
     * 前一天耗药量
     *
     * @return double
     */
    Map<String, Double> medicine();

    /**
     * 前一天耗电量
     *
     * @return double
     */
    Map<String, Double> power();

    /**
     * 按月查询产销差
     *
     * @param year 年份
     * @return list
     */
    List<Map> nrwByMonth(@Param("year") String year, @Param("code") Integer code);

    List<Map> nrwByCodePlan(@Param("year") String year, @Param("code") Integer code);

    /**
     * 季度查询产销差
     *
     * @param year 年份
     * @return list
     */
    List<Map> nrwByQuarterly(@Param("year") String year);

    /**
     * 季度查询产销差
     *
     * @param year 年份
     * @return list
     */
    List<Map> nrwByQuarterlyPlan(@Param("year") String year);

    /**
     * 按月按年查询漏损率
     *
     * @param year 年份
     * @return list
     */
    List<Map> leakageByMonth(@Param("year") String year, @Param("code") Integer code);

    /**
     * 按月按年查询预算漏损率
     *
     * @param year 年份
     * @return list
     */
    List<Map> leakageByCodePlan(@Param("year") String year, @Param("code") Integer code);

    /**
     * 季度查询漏损率
     *
     * @param year 年份
     * @return list
     */
    List<Map> leakageByQuarterly(@Param("year") String year);

    /**
     * 季度查询预算漏损率
     *
     * @param year 年份
     * @return list
     */
    List<Map> leakageByQuarterlyPlan(@Param("year") String year);

    /**
     * 条件查询累计供水售水量
     *
     * @param year 年份
     * @param code code
     * @return list
     */
    List<Map> supSellMore(@Param("year") String year, @Param("code") Integer code);

    /**
     * 季度查询供售水
     *
     * @param year 年份
     * @return list
     */
    List<Map> supSellMoreQuarterly(@Param("year") String year);

    /**
     * 查询预算供水
     *
     * @param year 年份
     * @param code code
     * @return list
     */
    List<Map> supSellMorePlan(@Param("year") String year, @Param("code") Integer code);

    /**
     * 季度预算供水
     *
     * @param year 年份
     * @return list
     */
    List<Map> supSellMoreQuarterlyPlan(@Param("year") String year);

    /**
     * 一厂累计单变
     *
     * @param year 年份
     * @param code code
     * @return list
     */
    List<Map> firstPlantFixed(@Param("year") String year, @Param("code") Integer code);

    List<Map<String, Object>> firstPlantFixedYear(@Param("year")String year);

    /**
     * 二厂累计单变
     *
     * @param year 年份
     * @param code code
     * @return list
     */
    List<Map> secondPlantFixed(@Param("year") String year, @Param("code") Integer code);

    List<Map> secondPlantFixedYear(@Param("year") String year);



    /**
     * 一厂预算单变
     *
     * @param year 年份
     * @param code code
     * @return list
     */
    List<Map> firstPlantFixedPlan(@Param("year") String year, @Param("code") Integer code);

    List<Map> firstPlantFixedPlanYear(@Param("year") String year);

    /**
     * 二厂预算单变
     *
     * @param year 年份
     * @param code code
     * @return list
     */
    List<Map> secondPlantFixedPlan(@Param("year") String year, @Param("code") Integer code);

    List<Map> secondPlantFixedPlanYear(@Param("year") String year);

    /**
     * 一厂季度累计单变
     *
     * @param year 年份
     * @return list
     */
    List<Map> firstPlantQue(@Param("year") String year);

    /**
     * 二厂季度累计单变
     *
     * @param year 年份
     * @return list
     */
    List<Map> secondPlantQue(@Param("year") String year);

    /**
     * 一厂季度预算单变
     *
     * @param year 年份
     * @return list
     */
    List<Map> firstPlantQuePlan(@Param("year") String year);

    /**
     * 二厂季度预算单变
     *
     * @param year 年份
     * @return list
     */
    List<Map> secondPlantQuePlan(@Param("year") String year);

    /**
     * 获取实时报警信息
     */
    List<Map> getWarn(@Param("code") String code);

    /**
     * 获取监控历史
     *
     * @param page  page
     * @param type  报警类型
     * @param start 开始时间
     * @param end   结束时间
     * @return page
     */
    Page<Map> getWarHistory(Page page, @Param("type") String type, @Param("start") String start, @Param("end") String end, @Param("isclear") String isclear, @Param("isconfirm") String isconfirm);

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

    List<IndexInfoVo> getRealIndexInfo(@Param("itcdList") List itcdList);

    List<Map> existWarn(@Param("itcd") String itcd);

    List<Map> getWarnType();

    /**
     * 一厂各项材料成本单变
     *
     * @param year 年份
     * @return map
     */
    Map<String, Object> getEveryCostOne(@Param("year") String year);

    /**
     * 一厂每月各项材料成本单变
     *
     * @param year 年份
     * @return list
     */
    List<Map> getEveryCostOneMonth(@Param("year") String year);

    List<Map> getEveryCostOneQue(@Param("year") String year);

    /**
     * 二厂各项材料成本单变
     *
     * @param year 年份
     * @return map
     */
    Map<String, Object> getEveryCostTwo(@Param("year") String year);

    List<Map> getEveryCostTwoMonth(@Param("year") String year);

    List<Map> getEveryCostTwoQue(@Param("year") String year);

    /**
     * 各项材料成本单变
     *
     * @param year 年份
     * @return map
     */
    Map<String, Object> getEveryCostAll(@Param("year") String year);

    List<Map> getEveryCostAllMonth(@Param("year") String year);

    Warnhistory viewWarnInfo(@Param("id") String id);

    List<Map> getEveryCostAllQue(@Param("year") String year);

    /**
     * 获取实际每月单变总和
     *
     * @param year 年份
     * @param code code
     * @return list
     */
    List<Map> allFixed(@Param("year") String year, @Param("code") Integer code);

    List<Map> allFixedYear(@Param("year") String year);

    /**
     * 获取预算每月单变总和
     *
     * @param year 年份
     * @param code code
     * @return list
     */
    List<Map> allFixedPlan(@Param("year") String year, @Param("code") Integer code);

    List<Map> allFixedPlanYear(@Param("year") String year);

    List<Map> allFixedQue(@Param("year") String year);

    List<Map> allFixedQuePlan(@Param("year") String year);


    /**
     * 修改历史报警信息
     *
     * @param table table
     * @param id    id
     * @return boolean
     */
    boolean changeHistory(@Param("table") String table, @Param("id") String id, @Param("userId") Long userId, @Param("close") String close);

    Date viewWarnHistory(@Param("id") String id);

    Double getSumIndexInfo(@Param("indexes") List<String> indexes);

    /**
     * 产销差实际年合计年
     * @param year 年份
     * @return list
     */
    Map<String,Double> getNrwByYear(@Param("year") String year);

    Map<String,Double> getNrwPlanByYear(@Param("year") String year);

    Map<String,Object> getLeakageByYear(@Param("year") String year);

    Map<String, Object> getLeakagePlanByYear(@Param("year") String year);

    Map<String, Object> getSupSellByYear(@Param("year") String year);

    Map<String, Object> getSupSellPlanByYear(@Param("year") String year);

    Page<Map> getWarnInfo(Page page,@Param("type") String type,@Param("start") String start,@Param("end") String end);
}

