package com.dy.rtuMw.server.rtuData.dbSv; 
 | 
  
 | 
import com.dy.common.util.NumUtil; 
 | 
import com.dy.pipIrrGlobal.daoPr.PrControllerMapper; 
 | 
import com.dy.pipIrrGlobal.daoPr.PrControllerTrampMapper; 
 | 
import com.dy.pipIrrGlobal.daoRm.*; 
 | 
import com.dy.pipIrrGlobal.daoSe.SeClientCardMapper; 
 | 
import com.dy.pipIrrGlobal.daoSe.SeVirtualCardMapper; 
 | 
import com.dy.pipIrrGlobal.pojoPr.PrController; 
 | 
import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp; 
 | 
import com.dy.pipIrrGlobal.pojoRm.*; 
 | 
import com.dy.pipIrrGlobal.pojoSe.SeClient; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.transaction.annotation.Transactional; 
 | 
  
 | 
import java.util.Date; 
 | 
import java.util.List; 
 | 
import java.util.Map; 
 | 
  
 | 
/** 
 | 
 * @Author liurunyu 
 | 
 * @Date 2024/1/13 10:57 
 | 
 * @LastEditTime 2024/1/13 10:57 
 | 
 * @Description 
 | 
 */ 
 | 
@Service() 
 | 
public class DbSv { 
 | 
    @Autowired 
 | 
    private SeClientCardMapper seClientCardMapperDao;//农户水卡DAO 
 | 
    @Autowired 
 | 
    private SeVirtualCardMapper seVirtualCardMapper;//农户虚拟水卡DAO 
 | 
    @Autowired 
 | 
    private PrControllerTrampMapper prControllerTrampMapperDao;//流浪控制器DAO 
 | 
    @Autowired 
 | 
    private PrControllerMapper prControllerMapperDao ;//控制器DAO 
 | 
    @Autowired 
 | 
    private RmAlarmStateLastMapper rmAlarmStateLastMapperDao ;//控制器最新报警和状态DAO 
 | 
    @Autowired 
 | 
    private RmAlarmStateHistoryMapper rmAlarmStateHistoryMapperDao ;//控制器历史报警和状态DAO 
 | 
    @Autowired 
 | 
    private RmOpenCloseValveLastMapper rmOpenCloseValveLastMapperDao ;//控制器最新开关阀上报数据DAO 
 | 
    @Autowired 
 | 
    private RmOpenCloseValveHistoryMapper rmOpenCloseValveHistoryMapperDao ;//控制器历史开关阀上报数据DAO 
 | 
    @Autowired 
 | 
    private RmWorkReportLastMapper rmWorkReportLastMapperDao ;//控制器最新工作报数据DAO 
 | 
    @Autowired 
 | 
    private RmWorkReportHistoryMapper rmWorkReportHistoryMapperDao ;//控制器历史工作报数据DAO 
 | 
    @Autowired 
 | 
    private RmIntakeAmountDayLastMapper rmIntakeAmountDayLastMapperDao ;//取水口取水统计最新数据DAO 
 | 
    @Autowired 
 | 
    private RmIntakeAmountDayMapper rmIntakeAmountDayMapperDao ;//取水口取水和漏损统计DAO 
 | 
    @Autowired 
 | 
    private RmClientAmountDayLastMapper rmClientAmountDayLastMapperDao ;//农户日用水量统计最新数据DAO 
 | 
    @Autowired 
 | 
    private RmClientAmountDayMapper rmClientAmountDayMapperDao ;//农户日用水量统计数据DAO 
 | 
    @Autowired 
 | 
    private RmLossDayLastMapper rmLossLastMapperDao ;//控制器漏损水量统计最新数据DAO 
 | 
    @Autowired 
 | 
    private RmLossDayMapper rmLossHistoryMapperDao ;//控制器漏损水量统计历史数据DAO 
 | 
    @Autowired 
 | 
    private RmCommandHistoryMapper rmCommandHistoryDao ;//远程命令日志相关 
 | 
    @Autowired 
 | 
    private SeVirtualCardMapper seVirtualCardDao ;//虚拟卡相关 
 | 
  
 | 
    @Autowired 
 | 
    private RmTimingReportHistoryMapper rmTimingReportHistoryDao; // 定点上报历史数据DAO 
 | 
    @Autowired 
 | 
    private RmTimingReportLastMapper rmTimingReportLastDao; // 定点上报最新数据DAO 
 | 
  
 | 
    @Autowired 
 | 
    private RmOnHourReportHistoryMapper rmOnHourReportHistoryDao; // 整点上报历史数据DAO 
 | 
    @Autowired 
 | 
    private RmOnHourReportLastMapper rmOnHourReportLastDao; // 整点上报最新数据DAO 
 | 
  
 | 
    //@Autowired 
 | 
    //@Lazy 
 | 
    //private DbSv sv ; 
 | 
  
 | 
    ///////////////////////////////////////////////// 
 | 
    // 
 | 
    // 基础功能 
 | 
    // 
 | 
    //////////////////////////////////////////////// 
 | 
  
 | 
    /** 
 | 
     * 通过物理IC地址及卡号得到农户id和姓名 
 | 
     * @param icCardAddr 
 | 
     * @param icCardNo 
 | 
     * @return 
 | 
     */ 
 | 
    public SeClient getClientIdAndNameByCardAddrAndCardNo(String icCardAddr, String icCardNo){ 
 | 
        SeClient vo = null ; 
 | 
        if(NumUtil.isPlusIntNumber(icCardNo)){ 
 | 
            Long icCardNoLong = Long.parseLong(icCardNo) ; 
 | 
            Map<String, Object> map = seClientCardMapperDao.getClientIdAndNameByCardAddrAndCardNo(icCardAddr, icCardNoLong) ; 
 | 
            if(map != null && map.size() > 0) { 
 | 
                vo = new SeClient() ; 
 | 
                vo.setId(Long.parseLong(map.get("clientId").toString())); 
 | 
                vo.setName(map.get("clientName").toString()); 
 | 
            } 
 | 
        } 
 | 
        return vo ; 
 | 
    } 
 | 
    /** 
 | 
     * 通过虚拟IC卡号得到农户id和姓名 
 | 
     * @param icCardNo 
 | 
     * @return 
 | 
     */ 
 | 
    public SeClient getClientIdAndNameByVsCardNo(String icCardNo){ 
 | 
        SeClient vo = null ; 
 | 
        if(NumUtil.isPlusIntNumber(icCardNo)){ 
 | 
            Long icCardNoLong = Long.parseLong(icCardNo) ; 
 | 
            Map<String, Object> map = seVirtualCardMapper.getClientIdAndNameByVsCardNo(icCardNoLong) ; 
 | 
            if(map != null && map.size() > 0) { 
 | 
                vo = new SeClient() ; 
 | 
                vo.setId(Long.parseLong(map.get("clientId").toString())); 
 | 
                vo.setName(map.get("clientName").toString()); 
 | 
            } 
 | 
        } 
 | 
        return vo ; 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 通过控制器地址从数据库表中查询控制器 
 | 
     * @param rtuAddr 控制器地址 
 | 
     * @return 控制器 
 | 
     */ 
 | 
    public PrController getControllersByRtuAddrAndIntakeNotNull(String rtuAddr){ 
 | 
        List<PrController> list = this.prControllerMapperDao.getControllersByRtuAddrAndIntakeNotNull(rtuAddr) ; 
 | 
        if(list != null && list.size() > 0){ 
 | 
            return list.get(0) ; 
 | 
        } 
 | 
        return null ; 
 | 
    } 
 | 
    /** 
 | 
     * 通过控制器地址从数据库表中查询流浪控制器 
 | 
     * @param rtuAddr 控制器地址 
 | 
     * @return 流浪控制器 
 | 
     */ 
 | 
    public PrControllerTramp getPrControllerTrampByRtuAddr(String rtuAddr){ 
 | 
        List<PrControllerTramp> list = this.prControllerTrampMapperDao.getPrControllerTrampByRtuAddr(rtuAddr) ; 
 | 
        if(list != null && list.size() > 0){ 
 | 
            return list.get(0) ; 
 | 
        } 
 | 
        return null ; 
 | 
    } 
 | 
    /** 
 | 
     * 保存流浪控制器 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void savePrConctrollerTramp(PrControllerTramp po){ 
 | 
        this.prControllerTrampMapperDao.insert(po) ; 
 | 
    } 
 | 
   /** 
 | 
     * 保存流浪控制器 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void updatePrConctrollerTramp(PrControllerTramp po){ 
 | 
        this.prControllerTrampMapperDao.updateByPrimaryKey(po) ; 
 | 
    } 
 | 
  
 | 
  
 | 
    ///////////////////////////////////////////////// 
 | 
    // 
 | 
    // 报警及状态功能 
 | 
    // 
 | 
    //////////////////////////////////////////////// 
 | 
    /** 
 | 
     * 得到控制器报警与状态最新记录 
 | 
     * @param intakeId 
 | 
     * @return 
 | 
     */ 
 | 
    public RmAlarmStateLast getRmAlarmStateLast(Long intakeId){ 
 | 
        List<RmAlarmStateLast> list = rmAlarmStateLastMapperDao.selectByIntakeId(intakeId) ; 
 | 
        if(list != null && list.size() > 0){ 
 | 
            return list.get(0) ; 
 | 
        } 
 | 
        return null ; 
 | 
    } 
 | 
    /** 
 | 
     * 保存控制器报警与状态最新记录 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void saveRmAlarmStateLast(RmAlarmStateLast po){ 
 | 
        this.rmAlarmStateLastMapperDao.insert(po) ; 
 | 
    } 
 | 
   /** 
 | 
     * 保存控制器报警与状态最新记录 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void updateRmAlarmStateLast(RmAlarmStateLast po){ 
 | 
        this.rmAlarmStateLastMapperDao.updateByPrimaryKey(po) ; 
 | 
    } 
 | 
    /** 
 | 
     * 保存控制器报警与状态历史记录 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void saveRmAlarmStateHistory(RmAlarmStateHistory po){ 
 | 
        this.rmAlarmStateHistoryMapperDao.insert(po) ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 变更虚拟卡占用状态 
 | 
     * @param intakeId 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void updateVirCardNoUseState(Long intakeId){ 
 | 
        this.seVirtualCardDao.updateVcCardNoUseStateByIntakeId(intakeId); ; 
 | 
    } 
 | 
  
 | 
  
 | 
    ///////////////////////////////////////////////// 
 | 
    // 
 | 
    // 定点报数据功能(只在王江海的协议有此数据) 
 | 
    // 
 | 
    //////////////////////////////////////////////// 
 | 
  
 | 
    /** 
 | 
     * 保存控制器定点上报历史数据 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void saveRmTimingReportHistory(RmTimingReportHistory po){ 
 | 
        this.rmTimingReportHistoryDao.insert(po); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 根据阀控器地址获取定点上报最新数据 
 | 
     * @param intakeId 
 | 
     * @return 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public RmTimingReportLast getRmTimingReportLast(Long intakeId) { 
 | 
        List<RmTimingReportLast> list = this.rmTimingReportLastDao.getRmTimingReportLast(intakeId) ; 
 | 
        if(list != null && list.size() > 0){ 
 | 
            return list.get(0) ; 
 | 
        } 
 | 
        return null ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 保存控制器定点上报最新数据 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void saveRmTimingReportLast(RmTimingReportLast po) { 
 | 
        this.rmTimingReportLastDao.insert(po); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 保存控制器定点上报罪行数据 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void updateRmTimingReportLast(RmTimingReportLast po) { 
 | 
        this.rmTimingReportLastDao.updateByPrimaryKey(po); 
 | 
    } 
 | 
  
 | 
    ///////////////////////////////////////////////// 
 | 
    // 
 | 
    // 整点上报实时数据功能(只在靳总的协议有此数据) 
 | 
    // 
 | 
    //////////////////////////////////////////////// 
 | 
  
 | 
    /** 
 | 
     * 保存控制器整点上报历史数据 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void saveRmOnHourReportHistory(RmOnHourReportHistory po){ 
 | 
        this.rmOnHourReportHistoryDao.insert(po); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 根据阀控器地址获取整点上报最新数据 
 | 
     * @param intakeId 
 | 
     * @return 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public RmOnHourReportLast getRmOnHourReportLast(Long intakeId) { 
 | 
        List<RmOnHourReportLast> list = this.rmOnHourReportLastDao.getRmOnHourReportLast(intakeId) ; 
 | 
        if(list != null && list.size() > 0){ 
 | 
            return list.get(0) ; 
 | 
        } 
 | 
        return null ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 保存控制器整点上报最新数据 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void saveRmOnHourReportLast(RmOnHourReportLast po) { 
 | 
        this.rmOnHourReportLastDao.insert(po); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 保存控制器整点上报罪行数据 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void updateRmOnHourReportLast(RmOnHourReportLast po) { 
 | 
        this.rmOnHourReportLastDao.updateByPrimaryKey(po); 
 | 
    } 
 | 
  
 | 
    ///////////////////////////////////////////////// 
 | 
    // 
 | 
    // 开关阀上报数据功能 
 | 
    // 
 | 
    //////////////////////////////////////////////// 
 | 
    /** 
 | 
     * 得到控制器开关阀上报数据最新记录 
 | 
     * @param intakeId 
 | 
     * @return 
 | 
     */ 
 | 
    public RmOpenCloseValveLast getRmOpenCloseValveLast(Long intakeId){ 
 | 
        List<RmOpenCloseValveLast> list = rmOpenCloseValveLastMapperDao.selectByIntakeId(intakeId) ; 
 | 
        if(list != null && list.size() > 0){ 
 | 
            return list.get(0) ; 
 | 
        } 
 | 
        return null ; 
 | 
    } 
 | 
    /** 
 | 
     * 保存控制器开关阀上报数据最新记录 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void saveRmOpenCloseValveLast(RmOpenCloseValveLast po){ 
 | 
        this.rmOpenCloseValveLastMapperDao.insert(po) ; 
 | 
    } 
 | 
    /** 
 | 
     * 保存控制器开关阀上报数据最新记录 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void updateRmOpenCloseValveLast(RmOpenCloseValveLast po){ 
 | 
        this.rmOpenCloseValveLastMapperDao.updateByPrimaryKey(po) ; 
 | 
    } 
 | 
    /** 
 | 
     * 得到控制器开关阀上报数据历史数据中的最新记录 
 | 
     * @param id 
 | 
     * @return 
 | 
     */ 
 | 
    public RmOpenCloseValveHistory getRmOpenCloseValveHistory(Long id){ 
 | 
        return rmOpenCloseValveHistoryMapperDao.selectByPrimaryKey(id) ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 保存控制器开关阀上报数据历史记录 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void saveRmOpenCloseValveHistory(RmOpenCloseValveHistory po){ 
 | 
        this.rmOpenCloseValveHistoryMapperDao.insert(po) ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 保存控制器开关阀上报数据历史记录 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void updateRmOpenCloseValveHistory(RmOpenCloseValveHistory po){ 
 | 
        this.rmOpenCloseValveHistoryMapperDao.updateByPrimaryKey(po) ; 
 | 
    } 
 | 
  
 | 
    ///////////////////////////////////////////////// 
 | 
    // 
 | 
    // 工作报数据功能 
 | 
    // 
 | 
    //////////////////////////////////////////////// 
 | 
    /** 
 | 
     * 得到控制器上报数据最新记录 
 | 
     * @param intakeId 
 | 
     * @return 
 | 
     */ 
 | 
    public RmWorkReportLast getRmWorkReportLast(Long intakeId){ 
 | 
        List<RmWorkReportLast> list = rmWorkReportLastMapperDao.selectByIntakeId(intakeId) ; 
 | 
        if(list != null && list.size() > 0){ 
 | 
            return list.get(0) ; 
 | 
        } 
 | 
        return null ; 
 | 
    } 
 | 
    /** 
 | 
     * 保存控制器上报数据最新记录 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void saveRmWorkReportLast(RmWorkReportLast po){ 
 | 
        this.rmWorkReportLastMapperDao.insert(po) ; 
 | 
    } 
 | 
    /** 
 | 
     * 保存控制器上报数据最新记录 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void updateRmWorkReportLast(RmWorkReportLast po){ 
 | 
        this.rmWorkReportLastMapperDao.updateByPrimaryKey(po) ; 
 | 
    } 
 | 
    /** 
 | 
     * 保存控制器上报数据历史记录 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void saveRmWorkReportHistory(RmWorkReportHistory po){ 
 | 
        this.rmWorkReportHistoryMapperDao.insert(po) ; 
 | 
    } 
 | 
  
 | 
    ///////////////////////////////////////////////// 
 | 
    // 
 | 
    // 取水口日取水量统计功能 
 | 
    // 
 | 
    //////////////////////////////////////////////// 
 | 
    /** 
 | 
     * 得到最新记录 
 | 
     * @param intakeId 
 | 
     * @return 
 | 
     */ 
 | 
    public RmIntakeAmountDayLast getRmIntakeAmountLast(Long intakeId){ 
 | 
        List<RmIntakeAmountDayLast> list = rmIntakeAmountDayLastMapperDao.selectByIntakeId(intakeId) ; 
 | 
        if(list != null && list.size() > 0){ 
 | 
            return list.get(0) ; 
 | 
        } 
 | 
        return null ; 
 | 
    } 
 | 
    /** 
 | 
     * 保存最新记录 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void saveRmIntakeAmountLast(RmIntakeAmountDayLast po){ 
 | 
        this.rmIntakeAmountDayLastMapperDao.insert(po) ; 
 | 
    } 
 | 
  /** 
 | 
     * 保存记录 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void saveRmIntakeAmountDay(RmIntakeAmountDay po){ 
 | 
        this.rmIntakeAmountDayMapperDao.insert(po) ; 
 | 
    } 
 | 
    /** 
 | 
     * 保存最新记录 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void updateRmIntakeAmountLast(RmIntakeAmountDayLast po){ 
 | 
        this.rmIntakeAmountDayLastMapperDao.updateByPrimaryKey(po) ; 
 | 
    } 
 | 
    /** 
 | 
     * 保存历史记录 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void updateRmIntakeAmountDay(RmIntakeAmountDay po){ 
 | 
        this.rmIntakeAmountDayMapperDao.updateByPrimaryKey(po) ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 得到符合条件的历史记录 
 | 
     * @param id 
 | 
     * @return 
 | 
     */ 
 | 
    public RmIntakeAmountDay getRmIntakeAmountDay(Long id){ 
 | 
        return rmIntakeAmountDayMapperDao.selectByPrimaryKey(id) ; 
 | 
    } 
 | 
  
 | 
    ///////////////////////////////////////////////// 
 | 
    // 
 | 
    // 农户日用水量及花费统计功能 
 | 
    // 
 | 
    //////////////////////////////////////////////// 
 | 
    /** 
 | 
     * 得到最新记录 
 | 
     * @param clientId 
 | 
     * @return 
 | 
     */ 
 | 
    public RmClientAmountDayLast getRmClientAmountLast(Long clientId){ 
 | 
        List<RmClientAmountDayLast> list = rmClientAmountDayLastMapperDao.selectByClientId(clientId) ; 
 | 
        if(list != null && list.size() > 0){ 
 | 
            return list.get(0) ; 
 | 
        } 
 | 
        return null ; 
 | 
    } 
 | 
    /** 
 | 
     * 保存最新记录 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void saveRmClientAmountLast(RmClientAmountDayLast po){ 
 | 
        this.rmClientAmountDayLastMapperDao.insert(po) ; 
 | 
    } 
 | 
    /** 
 | 
     * 保存记录 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void saveRmClientAmountDay(RmClientAmountDay po){ 
 | 
        this.rmClientAmountDayMapperDao.insert(po) ; 
 | 
    } 
 | 
    /** 
 | 
     * 更新最新记录 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void updateRmClientAmountLast(RmClientAmountDayLast po){ 
 | 
        this.rmClientAmountDayLastMapperDao.updateByPrimaryKey(po) ; 
 | 
    } 
 | 
    /** 
 | 
     * 更新记录 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void updateRmClientAmountDay(RmClientAmountDay po){ 
 | 
        this.rmClientAmountDayMapperDao.updateByPrimaryKey(po) ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 得到符合条件的历史记录 
 | 
     * @param id 
 | 
     * @return 
 | 
     */ 
 | 
    public RmClientAmountDay getRmClientAmountDay(Long id){ 
 | 
        return rmClientAmountDayMapperDao.selectByPrimaryKey(id) ; 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 得到符合条件的历史记录 
 | 
     * @param clientId 
 | 
     * @param dt 
 | 
     * @return 
 | 
     */ 
 | 
    public RmClientAmountDay getRmClientAmountByClientAndDate(Long clientId, Date dt){ 
 | 
        List<RmClientAmountDay> list = rmClientAmountDayMapperDao.selectByClientAndDate(clientId, dt) ; 
 | 
        if(list != null && list.size() > 0){ 
 | 
            return list.get(0) ; 
 | 
        } 
 | 
        return null ; 
 | 
    } 
 | 
  
 | 
  
 | 
    ///////////////////////////////////////////////// 
 | 
    // 
 | 
    // 漏损水量统计功能 
 | 
    // 
 | 
    //////////////////////////////////////////////// 
 | 
    /** 
 | 
     * 得到控制器漏损水量统计最新记录 
 | 
     * @param intakeId 
 | 
     * @return 
 | 
     */ 
 | 
    public RmLossDayLast getRmLossLast(Long intakeId){ 
 | 
        List<RmLossDayLast> list = rmLossLastMapperDao.selectByIntakeId(intakeId) ; 
 | 
        if(list != null && list.size() > 0){ 
 | 
            return list.get(0) ; 
 | 
        } 
 | 
        return null ; 
 | 
    } 
 | 
    /** 
 | 
     * 保存控制器漏损水量统计最新记录 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void saveRmLossLast(RmLossDayLast po){ 
 | 
        this.rmLossLastMapperDao.insert(po) ; 
 | 
    } 
 | 
  /** 
 | 
     * 保存控制器漏损水量统计最新记录 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void saveRmLossHistory(RmLossDay po){ 
 | 
        this.rmLossHistoryMapperDao.insert(po) ; 
 | 
    } 
 | 
    /** 
 | 
     * 保存控制器漏损水量统计最新记录 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void updateRmLossLast(RmLossDayLast po){ 
 | 
        this.rmLossLastMapperDao.updateByPrimaryKey(po) ; 
 | 
    } 
 | 
    /** 
 | 
     * 保存控制器漏损水量统计最新记录 
 | 
     * @param po 
 | 
     */ 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void updateRmLossHistory(RmLossDay po){ 
 | 
        this.rmLossHistoryMapperDao.updateByPrimaryKey(po) ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 得到控制器漏损水量统计历史记录中的最新记录 
 | 
     * @param id 
 | 
     * @return 
 | 
     */ 
 | 
    public RmLossDay getRmLossHistory(Long id){ 
 | 
        return rmLossHistoryMapperDao.selectByPrimaryKey(id) ; 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 得到控制器漏损水量统计最新记录 
 | 
     * @param dt 
 | 
     * @return 
 | 
     */ 
 | 
    public RmLossDayLast getRmLossLastByDate(Date dt){ 
 | 
        List<RmLossDayLast> list = rmLossLastMapperDao.selectByDate(dt) ; 
 | 
        if(list != null && list.size() > 0){ 
 | 
            return list.get(0) ; 
 | 
        } 
 | 
        return null ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 得到控制器漏损水量统计历史记录中的某日记录 
 | 
     * @param dt 
 | 
     * @return 
 | 
     */ 
 | 
    public RmLossDay getRmLossHistoryByDate(Date dt){ 
 | 
        List<RmLossDay> list = rmLossHistoryMapperDao.selectByDate(dt) ; 
 | 
        if(list != null && list.size() > 0){ 
 | 
            return list.get(0) ; 
 | 
        } 
 | 
        return null ; 
 | 
    } 
 | 
  
 | 
    ////////////////////////////////////////////////////// 
 | 
    // 
 | 
    // 命令日志相关 
 | 
    // 
 | 
    ////////////////////////////////////////////////////// 
 | 
    public RmCommandHistory getCommandLog(String commandId){ 
 | 
        return rmCommandHistoryDao.selectByPrimaryKey(Long.parseLong(commandId)) ; 
 | 
    } 
 | 
    public void updateCommandLog(RmCommandHistory po){ 
 | 
        rmCommandHistoryDao.updateByPrimaryKey(po) ; 
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |