package com.steerinfo.ems.trmcalpointvalue.service;

import com.steerinfo.framework.service.IBaseService;
import com.steerinfo.framework.service.pagehelper.PageList;

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

import com.steerinfo.ems.trmcalpoint.model.TRmCalpoint;
import com.steerinfo.ems.trmcalpointvalue.model.TRmCalpointValue;

/**
 * TRmCalpointValue服务接口：
 * @author generator
 * @version 1.0-SNAPSHORT 2019-10-17 03:55
 * 类描述
 * 修订历史：
 * 日期：2019-10-17
 * 作者：generator
 * 参考：
 * 描述：TRmCalpointValue服务接口
 * @see null
 * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
 */
public interface ITRmCalpointValueService extends IBaseService<TRmCalpointValue, HashMap<String, Object>>{
	
	/**
	 * 计量点数据定时统计（将小时表中昨天的数据进行处理，将数据累加计算保存至T_RM_CALPOINT_VALUE）
	 *  统计日粒度以上的数据
	 *  
	 * @param date 统计时间
	 */
    void statData(Date date);
    
    /**
     * 修改计量值，并且重新计算影响的相关数据
     * 
     * @param tRmCalpointValue
     * @return
     */
    TRmCalpointValue modifyAndCompute(TRmCalpointValue tRmCalpointValue);
    
    /**
     * 计量点数据定时统计班数据（目前只有电数据需要统计）
     * 
     * @param date 统计时间
     */
    void statDataShift(Date date);
    
    /**
     * 重新计算所有计量点数据
     * @param clock 起始时间
     * @param timegranid 时间粒度
     * @return
     */
    String restatAllData(String clock, String timegranid);
    
    /**
     * 更新单个计量点数据(新增或者更新)
     * 
     * @param tRmCalpoint 计量点
     * @param clock	时间
     * @param timegranid 时间粒度
     * @param updateUser 操作人
     * @return
     */
    String restatCalData(TRmCalpoint tRmCalpoint, String clock, String timegranid, String updateUser);
    
    /**
     * 重新计算单个计量点数据(新增或者更新)
     * 
     * @param itemid 计量点编号
     * @param clock	时间
     * @param timegranid 时间粒度
     * @param opuser 操作人
     * @return
     */
    String restatCalpData(String itemid, String clock, String timegranid, String opuser);

    /**
     * 获得计量点时间段数据,期初、期末、计算值
     * 
     * @param parmas
     * @return
     */
	List<Map<String, Object>> getCalpointValue(HashMap<String, Object> parmas);
	
	/**
     * 计算累计值(用于计算月、年数据等)
     * @param params <br/>
     *  itemid 项目ID <br/>
     *  clock 时间头(like clock%)<br/>
     *  timegranid 时间粒度
     * @return
     */
    Double getSumvalue(HashMap<String,Object> params);
}