package com.iamberry.rent.service.machine.mapper;

import java.util.List;

import com.iamberry.wechat.core.entity.rent.*;

/**
 * 机器Mapper
 * @company	深圳爱贝源科技有限公司
 * @website www.iamberry.com
 * @author 	献
 * @tel		18271840547
 * @date	2017年3月10日
 */
public interface MachineMapper {

	/**
	 * 添加机器，注意：只能初始化机器信息
	 * @param info
	 * @return
	 * @author 献
	 * @Time   2017年3月10日
	 */
	Integer add(MachineInfo info);

	/**
	 * 修改机器,根据machineId和deviceid修改，其他不能为空的机器信息
	 * @param info
	 * @return
	 * @author 献
	 * @Time   2017年3月10日
	 */
	Integer update(MachineInfo info);
	
	/**
	 * 查询机器信息,如果deviceid不能为空，那么查询为单条数据
	 * @param info
	 * @return
	 * @author 献
	 * @Time   2017年3月10日
	 */
	List<MachineInfo> list(MachineInfo info);
	
	/**
	 * 添加充值续费记录
	 * @param recharge
	 * @return
	 * @author 献
	 * @Time   2017年3月13日
	 */
	Integer addRecharge(MachineRecharge recharge);
	
	/**
	 * 查询充值记录
	 * @param machineRecharge
	 * @return
	 * @author 献
	 * @Time   2017年3月13日
	 */
	List<MachineRecharge> listRecharge(MachineRecharge machineRecharge);
	
	/**
	 * 修改充值记录信息
	 * @param machineRecharge
	 * @return
	 * @author 献
	 * @Time   2017年3月13日
	 */
	Integer updateRecharge(MachineRecharge machineRecharge);
	
	/**
	 * 后台机器信息列表
	 * @param machineInfo
	 * @return
	 */
	List<MachineInfo> selectEquipmentList(MachineInfo machineInfo);
	
	/**
	 * 后台机器信息总数
	 * @param machineInfo
	 * @return
	 */
	Integer selectEquipmentCount(MachineInfo machineInfo);
	
	/**
	 * 根据 id 或 orderid 查询单个充值记录
	 * @date 2017年3月22日
	 * @author muzx
	 * @param recharge
	 * @return
	 */
	MachineRecharge getRechargeByIdOrOrderId(MachineRecharge recharge);
	
	/**
     * 添加分享机器记录
     * 2017年3月17日
     * @author muzx
     * @param machineShare
     * @return
     */
    Integer insertMachineShare(MachineShare machineShare);
    
    /**
     * 根据shareId查询一个机器分享记录
     * 2017年3月17日
     * @author muzx
     * @param shareId
     * @return
     */
    MachineShare getMachineShareById(String shareId);
    /**
     * 根据shareid 修改机器分享记录
     * 2017年3月17日
     * @author muzx
     * @param machineShare
     * @return
     */
    Integer updateMachineShare(MachineShare machineShare);
    
    /**
     * 根据设备id查询单个设备
     * @param machineInfo
     * @return
     */
    MachineInfo selectMachineById(MachineInfo machineInfo);
    /**
     * 分页查询所有分享机器记录<后台>
     * 2017年3月20日
     * @author muzx
     * @param machineShare
     * @return
     */
    List<MachineShare> listMachineShareAdmin(MachineShare machineShare);
    
    /**
     * 查询所有分享机器记录总数<后台>
     * 2017年3月20日
     * @author muzx
     * @return
     */
    Integer countMachineShare(MachineShare machineShare);
    
    /**
     * 查询需要下发命令的机器
     * @return
     * @author 献
     * @Time   2017年4月8日
     */
    List<MachineInfo> listNextCommandMachine();
    
    /**
     * 根据条件查询滤芯更换记录
     * @param rentChangeLogs
     * @return
     */
    List<RentChangeLogs> listSelectChangeLogs(RentChangeLogs rentChangeLogs);
    
    /**
     * 批量添加滤芯更换记录
     * @param list
     * @return
     */
    Integer saveChangeLogs(List<RentChangeLogs> list);

	/**
	 * 单个添加滤芯更换记录，并返回id
	 * @param rentChangeLogs
	 * @return
	 */
	Integer insertFilterLogs(RentChangeLogs rentChangeLogs);
    
    /**
     * 查询更换滤芯集合
     * @param rentChangeLogs
     * @return
     */
    List<RentChangeLogs> listChangeFilterLogs(RentChangeLogs rentChangeLogs);
    
    /**
     * 根据条件查询更换滤芯数量
     * @param rentChangeLogs
     * @return
     */
    Integer getChangeFilterCount(RentChangeLogs rentChangeLogs);

	/**
	 * 新增比拼水质记录
	 * @param competeWaterInfo
	 * @return
	 */
	Integer addCompeteWater(CompeteWaterInfo competeWaterInfo);

	/**
	 * 查询比拼水质记录
	 * @param shareId
	 * @return
	 */
	CompeteWaterInfo selectCompeteWater(String shareId);

	/**
	 * 修改滤芯更换记录表
	 * @param rentChangeLogs
	 * @return
	 */
	Integer updateChangeLogsById(RentChangeLogs rentChangeLogs);
}
