package com.steerinfo.ems.trmworkprocproductvalue.mapper;

import com.steerinfo.ems.trmworkprocproductvalue.model.TRmWorkprocProductValue;
import com.steerinfo.framework.mapper.IBaseMapper;
import org.apache.ibatis.annotations.Mapper;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

@Mapper
public interface TRmWorkprocProductValueMapper extends IBaseMapper<TRmWorkprocProductValue, HashMap<String, Object>> {
	/**
	 * 根据联合主键查询对象
	 * 
	 * @param
	 */
	TRmWorkprocProductValue selectByUPrimaryKey(TRmWorkprocProductValue tRmWorkprocProductValue);

    /**
     * 查询时间粒度,时间,产品,工序获取数据(能源计划管理-计划项目数据维护)
     * @param parameters
     * @return
     */
    List<Map<String,Object>> getWorkprocProductValues(Map<String,Object> parameters);

    int updateValue(HashMap<String, Object> m);

	int insertValue(HashMap<String, Object> m);

	int deleteByPrimaryKey(HashMap<String, Object> m);

	TRmWorkprocProductValue selectByPrimaryKey(HashMap<String, Object> m);

	List<Map<String, Object>> getDate53(HashMap<String, Object> parmas);

	/**
     * 计算累计值
     * @param params <br/>
     *  itemid 项目ID <br/>
     *  clock 时间头(like clock%)<br/>
     *  timegranid 时间粒度
     * @return
     */
    Double getSumvalue(HashMap<String,Object> params);
    
    /**
     * 计算累计值2（计算日期小于参数值的累计值）
     * 
     * @param params <br/>
     * 	itemid 项目ID <br/>
     *  clock 小于该时间<br/>
     *  ckhead 时间头<br/>
     *  timegranid 时间粒度
     * @return
     */
    Double getSumvalue2(HashMap<String,Object> params);

    /**
     * 根据联合主键获取
     * @return
     */
    Set<String>getByCompositekeys();

    /**
     * 月粒度 获取计算值
     * @param params
     * @return
     */
    Double getTRmActValue(HashMap<String,Object> params);
    /**
     * 获取实绩产量
     * @param params
     * @return
     */
    Map<String ,BigDecimal> getOutPut(HashMap<String,Object> params);

    /**
     * 获取时间内所有Itemid，用于实绩项目月年粒度统计
     * @param params
     * @return
     */
	List<String> selectItemidByClock(HashMap<String, Object> params);

	/**
     * 获取实绩项目值与数据来源FID（从IF_MES_EMS_SWAPFILE表,status=1的已处理数据）
     * 
     * @param params
     * @return
     */
	Map<String, Object> getItemval(HashMap<String, Object> delObj);

	/**
     * 获取计划项目值与数据来源FID（从IF_MES_EMS_PRODUCTORDER表,status=1的已处理数据）
     * 
     * @param params
     * @return
     */
	Map<String, Object> getItempval(HashMap<String, Object> delObj);
	
	/**
     * 获取实绩项目值与数据来源FID（从IF_MES_EMS_SWAPFILE表）
     * 
     * @param params
     * @return
     */
	Map<String, Object> getAllItemval(HashMap<String, Object> mp);
	
	/**
     * 获取计划项目值与数据来源FID（从IF_MES_EMS_PRODUCTORDER表）
     * 
     * @param params
     * @return
     */
	Map<String, Object> getAllItempval(HashMap<String, Object> mp);

	/**
     * 获取某工序某时间粒度产品产量
     * @param params <br/>
     *  workprocid 工序ID <br/>
     *  clock 时间 <br/>
     *  timegranid 时间粒度
     * @return
     */
	Double getProductvalue(HashMap<String, Object> params);

	/**
	 * 从报表视图(V_INPUTOUTPUT)获取数据
	 *
	 * @param params
	 * @return
	 */
	List<TRmWorkprocProductValue> getReportValue(HashMap<String, Object> params);

}