package com.tofly.xrtygis.custom.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tofly.xrtygis.custom.entity.dto.RelationshipCostDto;
import com.tofly.xrtygis.custom.entity.dto.WisdomDisplayDto;
import com.tofly.xrtygis.custom.entity.vo.WaterCruxIndexVo;
import com.tofly.xrtygis.entity.Densityconfig;
import com.tofly.xrtygis.entity.Layerfield;

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

public interface CustomDisplayService {


    /**
     * 添加动态标注
     *
     * @param layerfield 动态标注
     * @return true or false
     */
    boolean insertDynamicLogo(Layerfield layerfield);

    /**
     * 删除动态标注
     *
     * @param id 动态标识id
     * @return true or false
     */
    boolean deleteDynamicLogo(Long id);

    /**
     * 查看自己创建动态标识
     *
     * @param page page
     * @return page
     */
    Page viewDynamicLogo(Page page);


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

    /**
     * 进取趋势查询
     *
     * @param page      page
     * @param scid      测站id
     * @param code      0：按日查看  1：按月查看
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return page
     */
    Page waterVolumeTrend(Page page, Long scid, String code, String startTime, String endTime);


    /**
     * 获取监控视频分组分类名称
     *
     * @return list
     */
    List getGroupName();

    /**
     * 获取表位
     * @param khbh 客户编号
     * @return
     */
    /*List getGauge(String khbh);*/

    /**
     * 获取视频监控信息
     *
     * @return list
     */
    List getAllVideo();

    /**
     * 模糊查询视频地址
     *
     * @param add 地址
     * @return list
     */
    List likeVideo(String add);

    /**
     * 修改多个视频是否在大屏显示
     *
     * @param viedoId 视频监控id
     * @return true
     */
    boolean updateVideo(String viedoId);

    /**
     * 停水区域查询
     *
     * @param fmbh 阀门编号
     * @return
     */
    Page waterStopArea(Page page, String valve);

    /**
     * 营销信息-获取客户用水量
     *
     * @param page        page
     * @param customerNum 客户编码
     * @return page
     */
    Page getUseWater(Page page, String customerNum);

    /**
     * 营销信息-查看客户历史用水量
     *
     * @param page
     * @param khbh
     * @param strTime
     * @param endTime
     * @return
     */
    Page getUserHistroy(Page page, String khbh, String strTime, String endTime);

    /**
     * 营销信息-客户用水量监控
     *
     * @param page
     * @return page
     */
    Page waterMonitoring(Page page);

    /**
     * 营销信息-获取区域用水量
     *
     * @param page    page
     * @param lon     区域各顶点的横坐标数组
     * @param lat     区域各顶点的纵坐标数组
     * @param strTime 开始时间
     * @param endTime 结束时间
     * @param code    0:查看全部   1：同期比对
     * @return map
     */
    Map<String, Object> getTableInArea(Page page, Double[] lon, Double[] lat, String strTime, String endTime, String code);

    /**
     * 通过管线编号查询客户信息
     *
     * @param page  page
     * @param pipes 管线编号
     * @return page
     */
    Page pipeToCustomers(Page page, String pipes);

    /**
     * 多因子关系成本图
     *
     * @param dto
     * @return
     */
    Map<String, Object> relationshipCost(RelationshipCostDto dto);

    /**
     * 多因子浓度配置
     *
     * @param config config
     * @return boolean
     */
    boolean concentrationConfig(Densityconfig config);

    /**
     * 查看配置信息
     * @return Densityconfig
     */
    Densityconfig viewConfig();

    /**
     * 水表关联查询
     * @param page page
     * @param khbh 客户编号
     * @return page
     */
    Page<Map> viewTable(Page page, String khbh,String khxm,String khdz);

    /**
     * 获得编码表详细消息
     * @param pcid pcid
     * @return list
     */
    List<Map<String,Object>> getCodeInfo(String pcid);

    /**
     * 供水关键指标展示
     * @param
     * @return
     */
    WaterCruxIndexVo viewWaterCruxIndex(WisdomDisplayDto wisdomDisplayDto, List<String> codes);

    /**
     * 报表统计（1年;2月;3日）
     * @param
     * @return
     */
    Page<Map<String, Object>> reportFormCensus(Page page, WisdomDisplayDto wisdomDisplayDto);

    List<Map<String, Object>> getDmaStatisticalList(String startDate, String endDate, List<Long> dmaIdList, Integer statisticsType);
}
