package com.iamberry.app.mapper;

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

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.InsertProvider;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectKey;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;

import com.iamberry.app.core.dto.MilkInfoDTO;
import com.iamberry.app.core.dto.RecordCountInfoDTO;
import com.iamberry.app.core.entity.MilkImages;
import com.iamberry.app.core.entity.MilkMakingRecord;
import com.iamberry.app.core.entity.MilkPowderInfo;
import com.iamberry.app.sqlprovider.DMLProvider;

public interface MilkMapper {

	/**
	 * 添加信息到milk_making_record表中
	 *
	 * @param entity
	 * @return void
	 */
	public void insertMilkMakingRecord(MilkMakingRecord entity);

	/**
	 * 根据id修改MILK_MAKING_RECORD的start和comments属性
	 *
	 * @param stars
	 * @param comments
	 * @param id
	 */
	public void updateMilkMakingRecord(int stars, String comments, Long id);

	/**
	 * 查询冲奶机冲奶时间和冲奶量
	 *
	 * @param start
	 * @param end
	 * @param controller
	 * @param dateType
	 * @param formatter
	 * @param userId
	 * @return
	 */
	public List<Map<String, Object>> selectMilkMakingRecords(Date start, Date end,
			String controller, String dateType,
			String formatter, Long userId, String devId);

	/**
	 * 查询冲奶机冲奶时间和冲奶量
	 *
	 * @param start
	 * @param end
	 * @param controller
	 * @param dateType
	 * @param formatter
	 * @param devids
	 * @return
	 */
	public List<Map<String, Object>> selectMachineMilkMakingRecords(Date start, Date end,
			String controller, String dateType,
			String formatter, String devids);

	/**
	 * 根据id查询MILK_MAKING_RECORD所有信息
	 *
	 * @author Moon Cheng
	 * @param id
	 * @return
	 */
	public MilkMakingRecord selectMilkMakingRecord(Long id);

	/**
	 * 根据user查询所有冲奶信息
	 *
	 * @author Moon Cheng
	 * @param user
	 * @return
	 */
	public List<MilkMakingRecord> getMilkPowderByUser(Long user);
	
	
	
	/**
	 * 根据user查询总冲奶量和次数
	 * @param user
	 * @return
	 */
	public RecordCountInfoDTO getMilkPowderSumByUser(Long user);
	
	/**
	 * 将奶粉信息插入到奶粉信息表中
	 *
	 * @param entity
	 * @return void
	 */
	public void insertMilkPowderInfo(MilkPowderInfo entity);

	/**
	 * 通过条形码查询奶粉信息
	 *
	 * @author Moon Cheng
	 * @param barCode
	 * @return
	 */
	public MilkPowderInfo selectMilkPowderInfo(String barcode);

	/**
	 * 根据品牌查询奶粉信息的系列
	 *
	 * @param brand
	 * @return
	 */
	public List<String> selectSeries(String brand);

	/**
	 * 根据系列查询奶粉信息的段数
	 *
	 * @param series
	 * @return
	 */
	public List<String> selectLevel(String series);

	
	/**
	 * 根据奶粉品牌获取奶粉，详细信息
	 * @param brand 奶粉品牌
	 * @return 详细信息
	 */
	public List<MilkInfoDTO> selectMilkInfoBybrand(String brand);
	
	
	/**
	 * 根据系列查询奶粉信息
	 *
	 * @param series
	 * @return
	 */
	public List<MilkInfoDTO> selectMilkInfo( String series);

	

	/**
	 * 根据系列查询奶粉类型
	 *
	 * @param series
	 * @return
	 */
	public List<String> selectMilkType(String series);

	/**
	 * 根据奶粉系列查询奶粉密度
	 *
	 * @param series
	 * @return
	 */
	public List<String> selectMilkDensity(String series);

	/**
	 * 根据系列查询奶粉比例
	 *
	 * @param series
	 * @return
	 */
	public List<String> selectMilkRatio(String series);

	/**
	 * 根据系列查询奶粉id
	 *
	 * @param series
	 * @return
	 */
	public List<Long> selectMilkId(String series);

	/**
	 * 根据系列查询奶粉的重量
	 * @param series
	 * @return
	 */
	public List<String> selectMilkWeightPerSpoon(String series);

	/**
	 * 查询奶粉品牌
	 *
	 * @return
	 */
	public List<String> selectMilkPowderBrand();

	/**
	 * 根据系列段数品牌获取奶粉信息
	 *
	 * @param brand
	 * @param series
	 * @param level
	 * @return
	 */
	public MilkPowderInfo selectMilkInfoByBrandSeriesLevel(String brand, String series, String level);

	/**
	 * 查询冲奶记录的冲奶时间
	 *
	 * @return
	 */
	public Date selectLastRecordDate();

	/**
	 * 将信息插入到冲奶记录表中
	 *
	 * @param devId
	 * @param value
	 * @param time
	 */
	public void insertRecordData(MilkMakingRecord milkMakingRecord);

	/**
	 * 根据用户id查询冲奶机机器码
	 *
	 * @param userId
	 * @return
	 */
	public List<String> getMyMachines(Long userId);

	/**
	 * milk_images表中添加数据
	 * @param entity
	 */
	public void insertMilkImages(MilkImages entity);
	
	/**
	 * 通过barcode查询奶粉信息
	 *
	 * @author Moon Cheng
	 * @param barCode
	 * @return
	 */
	public MilkPowderInfo selectMilkPowderByBar(String barcode);
	
	/**
	 * 根据设备id查询最新一条冲奶记录
	 * @param machine
	 * @return
	 */
	public Date selectMakingRecordAndmachine(String machine);
	
}
