zhubaomin
2024-10-31 007bb91e70a5129304de1837f60161c6f5f3ad4f
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java
@@ -1,17 +1,23 @@
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 com.dy.pipIrrGlobal.voSe.VoCardInfo1;
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
@@ -22,6 +28,10 @@
@Service()
public class DbSv {
    @Autowired
    private SeClientCardMapper seClientCardDao;//农户水卡DAO
    @Autowired
    private SeVirtualCardMapper seVirtualCardDao ;//虚拟卡相关DAO
    @Autowired
    private PrControllerTrampMapper prControllerTrampMapperDao;//流浪控制器DAO
    @Autowired
    private PrControllerMapper prControllerMapperDao ;//控制器DAO
@@ -29,10 +39,6 @@
    private RmAlarmStateLastMapper rmAlarmStateLastMapperDao ;//控制器最新报警和状态DAO
    @Autowired
    private RmAlarmStateHistoryMapper rmAlarmStateHistoryMapperDao ;//控制器历史报警和状态DAO
    @Autowired
    private RmAutoReportLastMapper rmAutoReportLastMapperDao ;//控制器最新上报数据DAO
    @Autowired
    private RmAutoReportHistoryMapper rmAutoReportHistoryMapperDao ;//控制器历史上报数据DAO
    @Autowired
    private RmOpenCloseValveLastMapper rmOpenCloseValveLastMapperDao ;//控制器最新开关阀上报数据DAO
    @Autowired
@@ -42,9 +48,30 @@
    @Autowired
    private RmWorkReportHistoryMapper rmWorkReportHistoryMapperDao ;//控制器历史工作报数据DAO
    @Autowired
    private RmLossLastMapper rmLossLastMapperDao ;//控制器漏损水量统计最新数据DAO
    private RmIntakeAmountDayLastMapper rmIntakeAmountDayLastMapperDao ;//取水口取水统计最新数据DAO
    @Autowired
    private RmLossHistoryMapper rmLossHistoryMapperDao ;//控制器漏损水量统计历史数据DAO
    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 RmTimingReportHistoryMapper rmTimingReportHistoryDao; // 定点上报历史数据DAO
    @Autowired
    private RmTimingReportLastMapper rmTimingReportLastDao; // 定点上报最新数据DAO
    @Autowired
    private RmOnHourReportHistoryMapper rmOnHourReportHistoryDao; // 定点上报历史数据DAO
    @Autowired
    private RmOnHourReportLastMapper rmOnHourReportLastDao; // 定点上报最新数据DAO
    //@Autowired
    //@Lazy
@@ -55,6 +82,46 @@
    // 基础功能
    //
    ////////////////////////////////////////////////
    /**
     * 通过物理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 = seClientCardDao.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 = seVirtualCardDao.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 控制器地址
@@ -85,7 +152,18 @@
     */
    @Transactional(rollbackFor = Exception.class)
    public void savePrConctrollerTramp(PrControllerTramp po){
        if(po.getOrgTag().trim().length() > 2) {
            po.setOrgTag("DY");
        }
        this.prControllerTrampMapperDao.insert(po) ;
    }
   /**
     * 保存流浪控制器
     * @param po
     */
    @Transactional(rollbackFor = Exception.class)
    public void updatePrConctrollerTramp(PrControllerTramp po){
        this.prControllerTrampMapperDao.updateByPrimaryKey(po) ;
    }
@@ -96,11 +174,11 @@
    ////////////////////////////////////////////////
    /**
     * 得到控制器报警与状态最新记录
     * @param rtuAddr
     * @param intakeId
     * @return
     */
    public RmAlarmStateLast getRmAlarmStateLast(String rtuAddr){
        List<RmAlarmStateLast> list = rmAlarmStateLastMapperDao.selectByRtuAddr(rtuAddr) ;
    public RmAlarmStateLast getRmAlarmStateLast(Long intakeId){
        List<RmAlarmStateLast> list = rmAlarmStateLastMapperDao.selectByIntakeId(intakeId) ;
        if(list != null && list.size() > 0){
            return list.get(0) ;
        }
@@ -120,7 +198,7 @@
     */
    @Transactional(rollbackFor = Exception.class)
    public void updateRmAlarmStateLast(RmAlarmStateLast po){
        this.rmAlarmStateLastMapperDao.updateByPrimaryKeySelective(po) ;
        this.rmAlarmStateLastMapperDao.updateByPrimaryKey(po) ;
    }
    /**
     * 保存控制器报警与状态历史记录
@@ -131,52 +209,109 @@
        this.rmAlarmStateHistoryMapperDao.insert(po) ;
    }
    /**
     * 变更虚拟卡占用状态
     * @param intakeId
     */
    @Transactional(rollbackFor = Exception.class)
    public void updateVirCardNoUseState(Long intakeId){
        this.seVirtualCardDao.updateVcCardNoUseStateByIntakeId(intakeId); ;
    }
    /////////////////////////////////////////////////
    //
    // 主动上报数据功能
    // 定点报数据功能(只在王江海的协议有此数据)
    //
    ////////////////////////////////////////////////
    /**
     * 得到控制器上报数据最新记录
     * @param rtuAddr
     * 保存控制器定点上报历史数据
     * @param po
     */
    @Transactional(rollbackFor = Exception.class)
    public void saveRmTimingReportHistory(RmTimingReportHistory po){
        this.rmTimingReportHistoryDao.insert(po);
    }
    /**
     * 根据阀控器地址获取定点上报最新数据
     * @param intakeId
     * @return
     */
    public RmAutoReportLast getRmAutoReportLast(String rtuAddr){
        List<RmAutoReportLast> list = rmAutoReportLastMapperDao.selectByRtuAddr(rtuAddr) ;
    @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 saveRmAutoReportLast(RmAutoReportLast po){
        this.rmAutoReportLastMapperDao.insert(po) ;
    public void saveRmTimingReportLast(RmTimingReportLast po) {
        this.rmTimingReportLastDao.insert(po);
    }
    /**
     * 保存控制器上报数据最新记录
     * 保存控制器定点上报罪行数据
     * @param po
     */
    @Transactional(rollbackFor = Exception.class)
    public void updateRmAutoReportLast(RmAutoReportLast po){
        this.rmAutoReportLastMapperDao.updateByPrimaryKeySelective(po) ;
    public void updateRmTimingReportLast(RmTimingReportLast po) {
        this.rmTimingReportLastDao.updateByPrimaryKey(po);
    }
    /////////////////////////////////////////////////
    //
    // 定点上报实时数据功能(只在靳总的协议有此数据)
    //
    ////////////////////////////////////////////////
    /**
     * 保存控制器上报数据历史记录
     * 保存控制器定点上报历史数据
     * @param po
     */
    @Transactional(rollbackFor = Exception.class)
    public void saveRmAutoReportHistory(RmAutoReportHistory po){
        this.rmAutoReportHistoryMapperDao.insert(po) ;
    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);
    }
    /////////////////////////////////////////////////
    //
@@ -185,11 +320,11 @@
    ////////////////////////////////////////////////
    /**
     * 得到控制器开关阀上报数据最新记录
     * @param rtuAddr
     * @param intakeId
     * @return
     */
    public RmOpenCloseValveLast getRmOpenCloseValveLast(String rtuAddr){
        List<RmOpenCloseValveLast> list = rmOpenCloseValveLastMapperDao.selectByRtuAddr(rtuAddr) ;
    public RmOpenCloseValveLast getRmOpenCloseValveLast(Long intakeId){
        List<RmOpenCloseValveLast> list = rmOpenCloseValveLastMapperDao.selectByIntakeId(intakeId) ;
        if(list != null && list.size() > 0){
            return list.get(0) ;
        }
@@ -209,7 +344,7 @@
     */
    @Transactional(rollbackFor = Exception.class)
    public void updateRmOpenCloseValveLast(RmOpenCloseValveLast po){
        this.rmOpenCloseValveLastMapperDao.updateByPrimaryKeySelective(po) ;
        this.rmOpenCloseValveLastMapperDao.updateByPrimaryKey(po) ;
    }
    /**
     * 得到控制器开关阀上报数据历史数据中的最新记录
@@ -235,10 +370,8 @@
     */
    @Transactional(rollbackFor = Exception.class)
    public void updateRmOpenCloseValveHistory(RmOpenCloseValveHistory po){
        this.rmOpenCloseValveHistoryMapperDao.updateByPrimaryKeySelective(po) ;
        this.rmOpenCloseValveHistoryMapperDao.updateByPrimaryKey(po) ;
    }
    /////////////////////////////////////////////////
    //
@@ -247,11 +380,11 @@
    ////////////////////////////////////////////////
    /**
     * 得到控制器上报数据最新记录
     * @param rtuAddr
     * @param intakeId
     * @return
     */
    public RmWorkReportLast getRmWorkReportLast(String rtuAddr){
        List<RmWorkReportLast> list = rmWorkReportLastMapperDao.selectByRtuAddr(rtuAddr) ;
    public RmWorkReportLast getRmWorkReportLast(Long intakeId){
        List<RmWorkReportLast> list = rmWorkReportLastMapperDao.selectByIntakeId(intakeId) ;
        if(list != null && list.size() > 0){
            return list.get(0) ;
        }
@@ -271,7 +404,7 @@
     */
    @Transactional(rollbackFor = Exception.class)
    public void updateRmWorkReportLast(RmWorkReportLast po){
        this.rmWorkReportLastMapperDao.updateByPrimaryKeySelective(po) ;
        this.rmWorkReportLastMapperDao.updateByPrimaryKey(po) ;
    }
    /**
     * 保存控制器上报数据历史记录
@@ -282,6 +415,139 @@
        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 ;
    }
    /////////////////////////////////////////////////
    //
@@ -290,11 +556,11 @@
    ////////////////////////////////////////////////
    /**
     * 得到控制器漏损水量统计最新记录
     * @param rtuAddr
     * @param intakeId
     * @return
     */
    public RmLossLast getRmLossLast(String rtuAddr){
        List<RmLossLast> list = rmLossLastMapperDao.selectByRtuAddr(rtuAddr) ;
    public RmLossDayLast getRmLossLast(Long intakeId){
        List<RmLossDayLast> list = rmLossLastMapperDao.selectByIntakeId(intakeId) ;
        if(list != null && list.size() > 0){
            return list.get(0) ;
        }
@@ -305,7 +571,7 @@
     * @param po
     */
    @Transactional(rollbackFor = Exception.class)
    public void saveRmLossLast(RmLossLast po){
    public void saveRmLossLast(RmLossDayLast po){
        this.rmLossLastMapperDao.insert(po) ;
    }
  /**
@@ -313,7 +579,7 @@
     * @param po
     */
    @Transactional(rollbackFor = Exception.class)
    public void saveRmLossHistory(RmLossHistory po){
    public void saveRmLossHistory(RmLossDay po){
        this.rmLossHistoryMapperDao.insert(po) ;
    }
    /**
@@ -321,16 +587,16 @@
     * @param po
     */
    @Transactional(rollbackFor = Exception.class)
    public void updateRmLossLast(RmLossLast po){
        this.rmLossLastMapperDao.updateByPrimaryKeySelective(po) ;
    public void updateRmLossLast(RmLossDayLast po){
        this.rmLossLastMapperDao.updateByPrimaryKey(po) ;
    }
    /**
     * 保存控制器漏损水量统计最新记录
     * @param po
     */
    @Transactional(rollbackFor = Exception.class)
    public void updateRmLossHistory(RmLossHistory po){
        this.rmLossHistoryMapperDao.updateByPrimaryKeySelective(po) ;
    public void updateRmLossHistory(RmLossDay po){
        this.rmLossHistoryMapperDao.updateByPrimaryKey(po) ;
    }
    /**
@@ -338,7 +604,7 @@
     * @param id
     * @return
     */
    public RmLossHistory getRmLossHistory(Long id){
    public RmLossDay getRmLossHistory(Long id){
        return rmLossHistoryMapperDao.selectByPrimaryKey(id) ;
    }
@@ -348,8 +614,8 @@
     * @param dt
     * @return
     */
    public RmLossLast getRmLossLastByDate(Date dt){
        List<RmLossLast> list = rmLossLastMapperDao.selectByDate(dt) ;
    public RmLossDayLast getRmLossLastByDate(Date dt){
        List<RmLossDayLast> list = rmLossLastMapperDao.selectByDate(dt) ;
        if(list != null && list.size() > 0){
            return list.get(0) ;
        }
@@ -361,13 +627,83 @@
     * @param dt
     * @return
     */
    public RmLossHistory getRmLossHistoryByDate(Date dt){
        List<RmLossHistory> list = rmLossHistoryMapperDao.selectByDate(dt) ;
    public RmLossDay getRmLossHistoryByDate(Date dt){
        List<RmLossDay> list = rmLossHistoryMapperDao.selectByDate(dt) ;
        if(list != null && list.size() > 0){
            return list.get(0) ;
        }
        return null ;
    }
    //////////////////////////////////////////////////////
    //
    // IC卡相关
    //
    //////////////////////////////////////////////////////
    /**
     * 得到农户卡
     * @param cardAddr
     * @param cardNo
     * @return
     */
    public VoCardInfo1 getIcCard(String cardAddr, String cardNo){
        if(NumUtil.isPlusIntNumber(cardNo)){
            Long icCardNoLong = Long.parseLong(cardNo) ;
            List<VoCardInfo1> list = seClientCardDao.getCardsByAddrAndNum(cardAddr, icCardNoLong) ;
            if(list != null && list.size() > 0){
                return list.get(0) ;
            }
        }
        return null ;
    }
    /**
     * 得到农户虚拟卡
     * @param cardNo
     * @return
     */
    public VoCardInfo1 getVirIcCard(String cardNo){
        if(NumUtil.isPlusIntNumber(cardNo)){
            Long icCardNoLong = Long.parseLong(cardNo) ;
            List<VoCardInfo1> list = seVirtualCardDao.getCardsByNum(icCardNoLong) ;
            if(list != null && list.size() > 0){
                return list.get(0) ;
            }
        }
        return null ;
    }
    /**
     * 更新实体卡剩余金额
     * @param id
     * @param remainMoney
     */
    @Transactional(rollbackFor = Exception.class)
    public void updateIcCardRemainMoney(Long id , Double remainMoney){
        seClientCardDao.updateMoney(id,remainMoney);
    }
    /**
     * 更新虚拟卡剩余金额
     * @param id
     * @param remainMoney
     */
    @Transactional(rollbackFor = Exception.class)
    public void updateVirIcCardRemainMoney(Long id , Double remainMoney){
        seVirtualCardDao.updateMoney(id,remainMoney);
    }
    //////////////////////////////////////////////////////
    //
    // 命令日志相关
    //
    //////////////////////////////////////////////////////
    public RmCommandHistory getCommandLog(String commandId){
        return rmCommandHistoryDao.selectByPrimaryKey(Long.parseLong(commandId)) ;
    }
    @Transactional(rollbackFor = Exception.class)
    public void updateCommandLog(RmCommandHistory po){
        rmCommandHistoryDao.updateByPrimaryKey(po) ;
    }
}