package com.chinaitop.depot.intelligent.energyMonitor.service;

import com.chinaitop.depot.intelligent.energyMonitor.model.TEnergyHistory;
import com.chinaitop.depot.intelligent.energyMonitor.model.TEnergyInfo;

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

/**
 * @author hf
 * @description: 能耗检测
 * @create 2018-12-11 11:00
 */
public interface EnergyDetectionService {

    /**
     * 列表
     * @param map
     * @return
     */
    List<TEnergyHistory> getList(Map<String,Object> map);
    
    /**
     * 能耗电表查询
     * @param map
     * @return
     */
    List<TEnergyInfo> queryMeter(Map<String,Object> map);
    
    /**
     * 获取设备编号列表
     * @param map
     * @return
     */
    List<TEnergyInfo> queryDeviceList(Map<String,Object> map);
    
    /**
     * 能耗趋势
     * @param map
     * @return
     */
    List<Map<String, Object>> getTrendThreePage(Map<String,Object> map);
    
    /**
     * 能耗时间点对比
     * @param map
     * @return
     */
    List<Map<String, Object>> getTimePointThreePage(Map<String,Object> map);
    
    /**
     * 能耗时间段对比
     * @param map
     * @return
     */
    List<Map<String, Object>> getTimeThreePage(Map<String,Object> map);

    /**
     * 按时段统计能耗列表
     * @param map
     * @return
     */
    List<TEnergyHistory> getDailyConsumptionList(Map<String,Object> map);
    
    /**
     * 按作业统计能耗列表
     * @param map
     * @return
     */
    List<TEnergyHistory> getTaskConsumptionList(Map<String,Object> map);
    
    /**
     * 电表列表
     * @param vhhtype
     * @param vnhcode
     * @return
     */
    List<TEnergyInfo> getAmmeterPageInfo(Map<String,Object> map);
    
    /**
     * 根据id删除
     * @param id
     * @return
     */
    int deleteById(String id, String ammeterJson);
    
    /**
     * 根据id查询
     * @param id
     * @return
     */
    TEnergyInfo getById(String id);
    
    /**
     * 验证编码是否重复
     * @param map
     * @return
     */
    TEnergyInfo validCode(Map<String,Object> map);
    
    /**
     * 新增数据
     * @param tEnergyInfo
     * @return
     */
    void add(TEnergyInfo tEnergyInfo);
    
    /**
     * 更新数据
     * @param tEnergyInfo
     * @return
     */
    void update(TEnergyInfo tEnergyInfo);
    
    /**
     * 添加能耗监测数据
     * @return
     */
    void addHistoryData();

    /**
     * 根据条件查询数据
     * @param map
     * @return
     */
    TEnergyInfo getTEnergyInfo(Map<String,Object> map);

    /**
     * 新增数据
     * @param tEnergyHistory
     * @return
     */
    void addTEnergyHistory(TEnergyHistory tEnergyHistory);

    void insertBatch(List<TEnergyHistory> tEnergyInfos);

    List<TEnergyHistory> getByCodeAndTimes(List<String> cDcsCodes,List<Date> cTimes);

    List<TEnergyInfo> getEnergyInfo(List<String> vNhCodes);

    List<TEnergyInfo> getByNhCode(String vnhCode);

    String synchronizationAll(String orgId);
}
