wuzeyu
2024-06-17 5c1a8a48f73591002189a99db030440208f056b5
Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV
42个文件已修改
6个文件已删除
9个文件已添加
3641 ■■■■■ 已修改文件
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataV1_0_1.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlParse.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataAlarmVo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataStateVo.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/DataV202404.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAlarmStateHistoryMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAutoReportHistoryMapper.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAutoReportLastMapper.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveLastMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmTimingReportHistoryMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmTimingReportLastMapper.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmWorkReportHistoryMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmWorkReportLastMapper.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateHistory.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateLast.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAutoReportHistory.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAutoReportLast.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmCommandHistory.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmTimingReportHistory.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmTimingReportLast.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmWorkReportHistory.java 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmWorkReportLast.java 215 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/application-database-pj.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/application-database-ym.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAutoReportHistoryMapper.xml 197 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAutoReportLastMapper.xml 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmTimingReportHistoryMapper.xml 222 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmTimingReportLastMapper.xml 230 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmWorkReportHistoryMapper.xml 328 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmWorkReportLastMapper.xml 335 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/ServerProperties.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSession.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealAlarmStatus.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealAutoReport.java 85 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealLoss.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealWorkReport.java 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkFindReport.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealAlarmStatusV202404.java 67 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealTimingReportV202404.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealWorkReportV202404.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealWorkingReportV202404.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkFindReportV202404.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/ToRtuConstantTask.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/RtuDataDealTree.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/application-database.yml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-demo/pipIrr-web-demo.iml 219 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/pom.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/ClientCtrl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/ClientSv.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/wechatpay/PayInfo.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/wechatpay/PaymentCtrl.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/wechatpay/dto/Code2Session.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataV1_0_1.java
@@ -11,7 +11,7 @@
    public Object subData ;
    public String dt ;//通信中间件产生收报时间(yyyy-MM-dd hh:mm:ss)
    public String dt ;//通信中间件产生的收报时间(yyyy-MM-dd hh:mm:ss)
    public String toString(){
        StringBuffer sb = new StringBuffer() ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlParse.java
@@ -11,25 +11,31 @@
    private static final Logger log = LogManager.getLogger(GlParse.class);
    public static DataAlarmVo parseAlarm(byte[] bs, short index){
        /*
        11011111 (DF)  +  11111001 (F9)
        报警:
        蓄电池电压:报警
        漏损:报警
        仪表:报警
        阀门:报警
        */
        DataAlarmVo avo = new DataAlarmVo() ;
        byte b = bs[index] ;
        index++ ;
        avo.batteryVolt = (byte)(b & 0x2 >> 1) ;
        avo.loss = (byte)(b & 0x8 >> 3) ;
        avo.meter = (byte)(b & 0x20 >> 5) ;
        byte b = bs[index + 1] ;
        avo.batteryVolt = (byte)((b & 0x2) >> 1) ;
        avo.meter = (byte)((b & 0x20) >> 5) ;
        b = bs[index] ;
        avo.valve = (byte)(b & 0x20 >> 5) ;
        avo.loss = (byte)((b & 0x2) >> 1) ;
        avo.valve = (byte)((b & 0x4) >> 2) ;
        return avo ;
    }
    public static DataStateVo parseState(byte[] bs, short index){
        DataStateVo avo = new DataStateVo() ;
        byte b = bs[index] ;
        index++ ;
        avo.icCard = (byte)(b & 0x4 >> 2) ;
        avo.working = (byte)(b & 0x8 >> 3) ;
        avo.valve = (byte)(b & 0x20 >> 5) ;
        byte b = bs[index + 1] ;
        avo.icCard = (byte)((b & 0x4) >> 2) ;
        avo.working = (byte)((b & 0x10) >> 4) ;
        avo.powerType = (byte)((b & 0x40) >> 6) ;
        return avo ;
    }
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataAlarmVo.java
@@ -6,7 +6,7 @@
public class DataAlarmVo {
    public Byte batteryVolt ;// 蓄电池电压
    public Byte loss ;//漏损
    public Byte meter ;//仪表
    public Byte meter ;//流量计故障
    public Byte valve ;//阀门
    public String toString(){
@@ -18,7 +18,7 @@
        str.append("         漏损:");
        str.append(loss==null?"":(loss==1?"报警":"正常"));
        str.append("\n");
        str.append("         仪表:");
        str.append("         流量计故障:");
        str.append(meter==null?"":(meter==1?"报警":"正常"));
        str.append("\n");
        str.append("         阀门:");
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataStateVo.java
@@ -6,7 +6,7 @@
public class DataStateVo  {
    public Byte icCard;// IC卡功能
    public Byte working;//工作状态
    public Byte valve ;//阀门
    public Byte powerType ;//电源状态(0:220V供电,1:畜电池供电)
    public String toString(){
        StringBuilder str = new StringBuilder() ;
@@ -17,8 +17,8 @@
        str.append("         工作状态:");
        str.append(working ==null?"":(working ==1?"启动":"停止"));
        str.append("\n");
        str.append("         阀门状态:");
        str.append(valve==null?"":(valve==1?"打开":"关闭"));
        str.append("         电源状态:");
        str.append(powerType==null?"":(powerType==1?"畜电池供电":"220V供电"));
        return str.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/DataV202404.java
@@ -11,7 +11,7 @@
    public Object subData ;
    public String dt ;//通信中间件产生收报时间(yyyy-MM-dd hh:mm:ss)
    public String dt ;//通信中间件产生的收报时间(yyyy-MM-dd hh:mm:ss)
    public String toString(){
        StringBuffer sb = new StringBuffer() ;
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAlarmStateHistoryMapper.java
@@ -1,5 +1,6 @@
package com.dy.pipIrrGlobal.daoRm;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.pojoRm.RmAlarmStateHistory;
import org.apache.ibatis.annotations.Mapper;
@@ -9,7 +10,7 @@
 * @Description
 */
@Mapper
public interface RmAlarmStateHistoryMapper {
public interface RmAlarmStateHistoryMapper extends BaseMapper<RmAlarmStateHistory> {
    /**
     * delete by primary key
     *
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAutoReportHistoryMapper.java
File was deleted
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAutoReportLastMapper.java
File was deleted
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveLastMapper.java
@@ -1,6 +1,5 @@
package com.dy.pipIrrGlobal.daoRm;
import com.dy.pipIrrGlobal.pojoRm.RmAutoReportLast;
import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast;
import org.apache.ibatis.annotations.Mapper;
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmTimingReportHistoryMapper.java
New file
@@ -0,0 +1,27 @@
package com.dy.pipIrrGlobal.daoRm;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.pojoRm.RmTimingReportHistory;
import org.apache.ibatis.annotations.Mapper;
/**
 * @author ZhuBaoMin
 * @date 2024-06-14 14:43
 * @LastEditTime 2024-06-14 14:43
 * @Description
 */
@Mapper
public interface RmTimingReportHistoryMapper extends BaseMapper<RmTimingReportHistory> {
    int deleteByPrimaryKey(Long id);
    int insert(RmTimingReportHistory record);
    int insertSelective(RmTimingReportHistory record);
    RmTimingReportHistory selectByPrimaryKey(Long id);
    int updateByPrimaryKeySelective(RmTimingReportHistory record);
    int updateByPrimaryKey(RmTimingReportHistory record);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmTimingReportLastMapper.java
New file
@@ -0,0 +1,36 @@
package com.dy.pipIrrGlobal.daoRm;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.pojoRm.RmTimingReportLast;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
 * @author ZhuBaoMin
 * @date 2024-06-14 15:17
 * @LastEditTime 2024-06-14 15:17
 * @Description
 */
@Mapper
public interface RmTimingReportLastMapper extends BaseMapper<RmTimingReportLast> {
    int deleteByPrimaryKey(Long id);
    int insert(RmTimingReportLast record);
    int insertSelective(RmTimingReportLast record);
    RmTimingReportLast selectByPrimaryKey(Long id);
    int updateByPrimaryKeySelective(RmTimingReportLast record);
    int updateByPrimaryKey(RmTimingReportLast record);
    /**
     * 根据阀控器地址获取定点上报最新数据
     * @param rtuAddr
     * @return
     */
    List<RmTimingReportLast> getRmTimingReportLast(String rtuAddr);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmWorkReportHistoryMapper.java
@@ -4,15 +4,15 @@
import org.apache.ibatis.annotations.Mapper;
/**
 * @Author liurunyu
 * @Date 2024/2/28 8:52
 * @LastEditTime 2024/2/28 8:52
 * @Author: liurunyu
 * @Date: 2024/6/14 10:58
 * @Description
 */
 */
@Mapper
public interface RmWorkReportHistoryMapper {
    /**
     * delete by primary key
     *
     * @param id primaryKey
     * @return deleteCount
     */
@@ -20,6 +20,7 @@
    /**
     * insert record to table
     *
     * @param record the record
     * @return insert count
     */
@@ -27,6 +28,7 @@
    /**
     * insert record to table selective
     *
     * @param record the record
     * @return insert count
     */
@@ -34,6 +36,7 @@
    /**
     * select by primary key
     *
     * @param id primary key
     * @return object by primary key
     */
@@ -41,6 +44,7 @@
    /**
     * update record selective
     *
     * @param record the updated record
     * @return update count
     */
@@ -48,6 +52,7 @@
    /**
     * update record
     *
     * @param record the updated record
     * @return update count
     */
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmWorkReportLastMapper.java
@@ -6,15 +6,15 @@
import java.util.List;
/**
 * @Author liurunyu
 * @Date 2024/2/28 8:52
 * @LastEditTime 2024/2/28 8:52
 * @Author: liurunyu
 * @Date: 2024/6/14 10:11
 * @Description
 */
 */
@Mapper
public interface RmWorkReportLastMapper {
    /**
     * delete by primary key
     *
     * @param id primaryKey
     * @return deleteCount
     */
@@ -22,6 +22,7 @@
    /**
     * insert record to table
     *
     * @param record the record
     * @return insert count
     */
@@ -29,6 +30,7 @@
    /**
     * insert record to table selective
     *
     * @param record the record
     * @return insert count
     */
@@ -36,20 +38,15 @@
    /**
     * select by primary key
     *
     * @param id primary key
     * @return object by primary key
     */
    RmWorkReportLast selectByPrimaryKey(Long id);
    /**
     * select by primary key
     * @param rtuAddr 控制器地址
     * @return object by rtuAddr
     */
    List<RmWorkReportLast> selectByRtuAddr(String rtuAddr);
    /**
     * update record selective
     *
     * @param record the updated record
     * @return update count
     */
@@ -57,8 +54,17 @@
    /**
     * update record
     *
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKey(RmWorkReportLast record);
    /**
     * select by primary key
     *
     * @param rtuAddr 控制器地址
     * @return object by rtuAddr
     */
    List<RmWorkReportLast> selectByRtuAddr(String rtuAddr);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateHistory.java
@@ -1,7 +1,12 @@
package com.dy.pipIrrGlobal.pojoRm;
import com.alibaba.fastjson2.annotation.JSONField;
import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dy.common.po.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
@@ -28,16 +33,20 @@
    /**
     * 主键
     */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    @TableId(type = IdType.INPUT)
    public Long id;
    /**
     * 控制器实体ID(外键)
     */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    public Long controllerId;
    /**
     * 取水口ID(外键)
     */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    public Long intakeId;
    /**
@@ -48,11 +57,13 @@
    /**
     * 上报日期时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date dt;
    /**
     * 控制器时钟
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date rtuDt;
    /**
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateLast.java
@@ -1,7 +1,12 @@
package com.dy.pipIrrGlobal.pojoRm;
import com.alibaba.fastjson2.annotation.JSONField;
import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dy.common.po.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
@@ -28,16 +33,20 @@
    /**
     * 主键
     */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    @TableId(type = IdType.INPUT)
    public Long id;
    /**
     * 控制器实体ID(外键)
     */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    public Long controllerId;
    /**
     * 取水口ID(外键)
     */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    public Long intakeId;
    /**
@@ -48,11 +57,13 @@
    /**
     * 上报日期时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date dt;
    /**
     * 控制器时钟
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date rtuDt;
    /**
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAutoReportHistory.java
File was deleted
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAutoReportLast.java
File was deleted
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmCommandHistory.java
@@ -15,6 +15,7 @@
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.*;
@@ -55,6 +56,7 @@
    /**
     * 取水口ID
     */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    @NotNull(message = "取水口ID不能为空")
    private Long intakeId;
@@ -80,6 +82,7 @@
     * 发送命令时间
     */
    @NotNull(message = "发送命令时间不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date sendTime;
    /**
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmTimingReportHistory.java
New file
@@ -0,0 +1,133 @@
package com.dy.pipIrrGlobal.pojoRm;
import com.alibaba.fastjson2.annotation.JSONField;
import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dy.common.mw.protocol.p206V202404.DataV202404;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd83Vo;
import com.dy.common.po.BaseEntity;
import com.dy.common.util.DateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.Date;
/**
 * @author ZhuBaoMin
 * @date 2024-06-14 14:43
 * @LastEditTime 2024-06-14 14:43
 * @Description
 */
/**
 * 定时报历史数据表
 */
@TableName(value="rm_timing_report_history", autoResultMap = true)
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "定时报历史数据表")
public class RmTimingReportHistory implements BaseEntity {
    public static final long serialVersionUID = 202406111447001L;
    /**
    * 主键
    */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    @TableId(type = IdType.INPUT)
    public Long id;
    /**
    * 控制器实体ID(外键)
    */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    public Long controllerId;
    /**
    * 取水口实体ID(外键)
    */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    public Long intakeId;
    /**
    * 控制器地址
    */
    public String rtuAddr;
    /**
    * 数据接收日期时间
    */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date dt;
    /**
    * 控制器时钟
    */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date rtuDt;
    /**
    * 数据时间
    */
    @JsonFormat(pattern = "yyyy-MM-dd")
    public Date dataDt;
    /**
    * 本年累计流量
    */
    public Double waterTotalAmountYear;
    /**
    * 水表累计流量
    */
    public Double waterTotalAmountMeter;
    /**
    * 本年累计电量
    */
    public Double eleTotalAmountYear;
    /**
    * 电表累计电量
    */
    public Double eleTotalAmountMeter;
    /**
    * 当日水表净流量
    */
    public Double waterTotalAmountDay;
    /**
    * 当日用户用水量
    */
    public Double waterUserTotalAmountDay;
    /**
    * 漏损水量
    */
    public Double lossTotalAmountDay;
    /**
    * 后备电池电压
    */
    public Double batteryVolt;
    public void valueFrom(DataV202404 dataV202404, DataCd83Vo cdData) throws Exception{
        this.dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataV202404.dt);
        this.rtuDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt);
        this.dataDt = DateTime.dateFrom_yyyy_MM_dd(cdData.dataDt) ; //
        this.waterTotalAmountYear = cdData.waterTotalAmountYear; //本年累计流量
        this.waterTotalAmountMeter = cdData.waterTotalAmountMeter ;//水表累计流量
        this.eleTotalAmountYear = cdData.eleTotalAmountYear ;// 本年累计电量
        this.eleTotalAmountMeter = cdData.eleTotalAmountMeter ;// 电表累计电量
        this.waterTotalAmountDay = cdData.waterTotalAmountDay ;// 当日水表净流量
        this.waterUserTotalAmountDay = cdData.waterUserTotalAmountDay ;//  当日用户用水量
        this.lossTotalAmountDay = cdData.lossTotalAmountDay ;//  漏损水量
        this.batteryVolt = cdData.batteryVolt ;// 后备电池电压
    }
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmTimingReportLast.java
New file
@@ -0,0 +1,133 @@
package com.dy.pipIrrGlobal.pojoRm;
import com.alibaba.fastjson2.annotation.JSONField;
import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dy.common.mw.protocol.p206V202404.DataV202404;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd83Vo;
import com.dy.common.po.BaseEntity;
import com.dy.common.util.DateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.Date;
/**
 * @author ZhuBaoMin
 * @date 2024-06-14 15:17
 * @LastEditTime 2024-06-14 15:17
 * @Description
 */
/**
 * 定时报最新数据表
 */
@TableName(value="rm_timing_report_last", autoResultMap = true)
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "定时报最新数据表")
public class RmTimingReportLast implements BaseEntity {
    public static final long serialVersionUID = 202406111519001L;
    /**
    * 主键
    */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    @TableId(type = IdType.INPUT)
    public Long id;
    /**
    * 控制器实体ID(外键)
    */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    public Long controllerId;
    /**
    * 取水口实体ID(外键)
    */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    public Long intakeId;
    /**
    * 控制器地址
    */
    public String rtuAddr;
    /**
    * 数据接收日期时间
    */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date dt;
    /**
    * 控制器时钟
    */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date rtuDt;
    /**
    * 数据时间
    */
    @JsonFormat(pattern = "yyyy-MM-dd")
    public Date dataDt;
    /**
    * 本年累计流量
    */
    public Double waterTotalAmountYear;
    /**
    * 水表累计流量
    */
    public Double waterTotalAmountMeter;
    /**
    * 本年累计电量
    */
    public Double eleTotalAmountYear;
    /**
    * 电表累计电量
    */
    public Double eleTotalAmountMeter;
    /**
    * 当日水表净流量
    */
    public Double waterTotalAmountDay;
    /**
    * 当日用户用水量
    */
    public Double waterUserTotalAmountDay;
    /**
    * 漏损水量
    */
    public Double lossTotalAmountDay;
    /**
    * 后备电池电压
    */
    public Double batteryVolt;
    public void valueFrom(DataV202404 dataV202404, DataCd83Vo cdData) throws Exception{
        this.dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataV202404.dt);
        this.rtuDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt);
        this.dataDt = DateTime.dateFrom_yyyy_MM_dd(cdData.dataDt) ; //
        this.waterTotalAmountYear = cdData.waterTotalAmountYear; //本年累计流量
        this.waterTotalAmountMeter = cdData.waterTotalAmountMeter ;//水表累计流量
        this.eleTotalAmountYear = cdData.eleTotalAmountYear ;// 本年累计电量
        this.eleTotalAmountMeter = cdData.eleTotalAmountMeter ;// 电表累计电量
        this.waterTotalAmountDay = cdData.waterTotalAmountDay ;// 当日水表净流量
        this.waterUserTotalAmountDay = cdData.waterUserTotalAmountDay ;//  当日用户用水量
        this.lossTotalAmountDay = cdData.lossTotalAmountDay ;//  漏损水量
        this.batteryVolt = cdData.batteryVolt ;// 后备电池电压
    }
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmWorkReportHistory.java
@@ -5,7 +5,10 @@
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dy.common.mw.protocol.p206V202404.DataV202404;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd80_5BVo;
import com.dy.common.po.BaseEntity;
import com.dy.common.util.DateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
@@ -13,20 +16,19 @@
import java.util.Date;
/**
 * @Author liurunyu
 * @Date 2024/2/28 8:52
 * @LastEditTime 2024/2/28 8:52
 * @Description 终端工作报历史数据
 * @Author: liurunyu
 * @Date: 2024/6/14 10:58
 * @Description 终端阀开工作报历史数据
 */
@TableName(value="rm_work_report_history", autoResultMap = true)
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "终端工作报历史数据")
public class RmWorkReportHistory  implements BaseEntity {
@Schema(name = "终端阀开工作报历史数据")
public class RmWorkReportHistory implements BaseEntity {
    public static final long serialVersionUID = 202402280859001L;
    /**
     * 主键
@@ -71,28 +73,183 @@
    public Date rtuDt;
    /**
     * 订单号(16位数字)
     */
    @Schema(hidden=true)
    @JSONField(serialize = false)
    public String orderNo;
    /**
     * IC卡地址(远程开泵/阀时全为0)
     */
    @Schema(description = "IC卡地址", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public String icCardAddr;
    /**
     * IC卡编号
     */
    @Schema(description = "IC卡编号", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public String icCardNo;
    /**
     * 累计流量
     * 水位(单位0.001米)
     */
    @Schema(description = "累计流量(m3)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double totalAmount;
    @Schema(description = "水位(单位0.001米)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double waterLevel;
    /**
     * 瞬时流量
     * 水压(单位0.01千帕)
     */
    @Schema(description = "瞬时流量(m3/h)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double instantAmount;
    @Schema(description = "水压(单位0.01千帕)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double waterPress;
    /**
     * 剩余金额
     * 瞬时流量(单位0.01m3/小时)
     */
    @Schema(description = "剩余蒂金额(元)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double remainMoney;
    @Schema(description = "瞬时流量(单位0.01m3/小时)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double waterInstant;
    /**
     * 水表累计流量(单位0.01m3)
     */
    @Schema(description = "水表累计流量(单位0.01m3)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double waterTotal;
    /**
     * 电表累计电量(单位0.01度)
     */
    @Schema(description = "电表累计电量(单位0.01度)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double eleTotal;
    /**
     * 用户剩余金额(单位0.01元)
     */
    @Schema(description = "用户剩余金额(单位0.01元)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double moneyRemain;
    /**
     * 用户剩余水量(单位0.01m3)
     */
    @Schema(description = "用户剩余水量(单位0.01m3)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double waterRemain;
    /**
     * 本次使用电量(单位0.01度)
     */
    @Schema(description = "本次使用电量(单位0.01度)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double thisEle;
    /**
     * 本次使用水量(单位0.01m3)
     */
    @Schema(description = "本次使用水量(单位0.01m3)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double thisWater;
    /**
     * 本次使用金额(单位0.01元)
     */
    @Schema(description = "本次使用金额(单位0.01元)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double thisMoney;
    /**
     * 本次使用时长(单位:分钟  最大9999分钟)
     */
    @Schema(description = "本次使用时长(单位:分钟  最大9999分钟)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Integer thisDuration;
    /**
     * 当前水量单价(单位0.01元 最大99.99元)
     */
    @Schema(description = "当前水量单价(单位0.01元 最大99.99元)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double waterPrice;
    /**
     * 当前电量单价(单位0.01元 最大99.99元)
     */
    @Schema(description = "当前电量单价(单位0.01元 最大99.99元)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double elePrice;
    /**
     * 交流A相电压(单位0.1伏特)
     */
    @Schema(description = "交流A相电压(单位0.1伏特)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double aVolt;
    /**
     * 交流B相电压(单位0.1伏特)
     */
    @Schema(description = "交流B相电压(单位0.1伏特)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double bVolt;
    /**
     * 交流C相电压(单位0.1伏特)
     */
    @Schema(description = "交流C相电压(单位0.1伏特)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double cVolt;
    /**
     * 交流A相电流(单位0.1安培)
     */
    @Schema(description = "交流A相电流(单位0.1安培)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double aCurrent;
    /**
     * 交流B相电流数据(单位0.1安培)
     */
    @Schema(description = "交流B相电流数据(单位0.1安培)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double bCurrent;
    /**
     * 交流C相电流(单位0.1安培)
     */
    @Schema(description = "交流C相电流(单位0.1安培)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double cCurrent;
    /**
     * 后备电池电压(单位0.01伏特)
     */
    @Schema(description = "后备电池电压(单位0.01伏特)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double batteryVolt;
    /**
     * 水表远传电压(单位0.01伏特)
     */
    @Schema(description = "水表远传电压(单位0.01伏特)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double waterMeterTransVolt;
    /**
     * 水表工作电压(单位0.01伏特)
     */
    @Schema(description = "水表工作电压(单位0.01伏特)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double waterMeterWorkVolt;
    public void valueFrom(DataV202404 dataV202404, DataCd80_5BVo cdData) throws Exception{
        this.dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataV202404.dt);
        this.rtuDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt);
        this.orderNo = cdData.orderNo ;
        this.icCardAddr = cdData.icCardAddr ;
        this.icCardNo = cdData.icCardNo ;
        this.waterLevel = cdData.waterLevel ;
        this.waterPress = cdData.waterPress ;
        this.waterInstant = cdData.waterInstant ;
        this.waterTotal = cdData.waterTotal ;
        this.eleTotal = cdData.eleTotal ;
        this.moneyRemain = cdData.moneyRemain ;
        this.waterRemain = cdData.waterRemain ;
        this.thisEle = cdData.thisEle ;
        this.thisWater = cdData.thisWater ;
        this.thisMoney = cdData.thisMoney ;
        this.thisDuration = cdData.thisDuration ;
        this.waterPrice = cdData.waterPrice ;
        this.elePrice = cdData.elePrice ;
        this.aVolt = cdData.aVolt ;
        this.bVolt = cdData.bVolt ;
        this.cVolt = cdData.cVolt ;
        this.aCurrent = cdData.aCurrent ;
        this.bCurrent = cdData.bCurrent ;
        this.cCurrent = cdData.cCurrent ;
        this.batteryVolt = cdData.batteryVolt ;
        this.waterMeterTransVolt = cdData.waterMeterTransVolt ;
        this.waterMeterWorkVolt = cdData.waterMeterWorkVolt ;
    }
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmWorkReportLast.java
@@ -5,7 +5,10 @@
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dy.common.mw.protocol.p206V202404.DataV202404;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd80_5BVo;
import com.dy.common.po.BaseEntity;
import com.dy.common.util.DateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
@@ -13,21 +16,18 @@
import java.util.Date;
/**
 * @Author liurunyu
 * @Date 2024/2/28 8:52
 * @LastEditTime 2024/2/28 8:52
 * @Description 终端最新工作报
 * @Author: liurunyu
 * @Date: 2024/6/14 10:11
 * @Description 控制器阀开工作报最新数据
 */
@TableName(value="rm_work_report_last", autoResultMap = true)
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "终端最新工作报")
public class RmWorkReportLast implements BaseEntity {
@Schema(name = "终端阀开工作报最新数据")
public class RmWorkReportLast  implements BaseEntity {
    public static final long serialVersionUID = 202402280855001L;
    /**
     * 主键
@@ -38,28 +38,28 @@
    public Long id;
    /**
    * 控制器实体ID(外键)
    */
     * 控制器实体ID(外键)
     */
    @Schema(description = "控制器实体外键", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    public Long controllerId;
    /**
    * 取水口实体ID(外键)
    */
     * 取水口实体ID(外键)
     */
    @Schema(description = "取水口实体外键", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    public Long intakeId;
    /**
    * 控制器地址
    */
     * 控制器地址
     */
    @Schema(description = "控制器地址", requiredMode = Schema.RequiredMode.REQUIRED)
    public String rtuAddr;
    /**
    * 数据接收日期时间
    */
     * 数据接收日期时间
     */
    @Schema(description = "上报日期时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date dt;
@@ -72,28 +72,183 @@
    public Date rtuDt;
    /**
    * IC卡编号
    */
     * 订单号(16位数字)
     */
    @Schema(hidden=true)
    @JSONField(serialize = false)
    public String orderNo;
    /**
     * IC卡地址(远程开泵/阀时全为0)
     */
    @Schema(description = "IC卡地址", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public String icCardAddr;
    /**
     * IC卡编号
     */
    @Schema(description = "IC卡编号", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public String icCardNo;
    /**
    * 累计流量
    */
    @Schema(description = "累计流量(m3)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double totalAmount;
     * 水位(单位0.001米)
     */
    @Schema(description = "水位(单位0.001米)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double waterLevel;
    /**
    * 瞬时流量
    */
    @Schema(description = "瞬时流量(m3/h)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double instantAmount;
     * 水压(单位0.01千帕)
     */
    @Schema(description = "水压(单位0.01千帕)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double waterPress;
    /**
    * 剩余金额
    */
    @Schema(description = "剩余蒂金额(元)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double remainMoney;
     * 瞬时流量(单位0.01m3/小时)
     */
    @Schema(description = "瞬时流量(单位0.01m3/小时)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double waterInstant;
    /**
     * 水表累计流量(单位0.01m3)
     */
    @Schema(description = "水表累计流量(单位0.01m3)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double waterTotal;
    /**
     * 电表累计电量(单位0.01度)
     */
    @Schema(description = "电表累计电量(单位0.01度)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double eleTotal;
    /**
     * 用户剩余金额(单位0.01元)
     */
    @Schema(description = "用户剩余金额(单位0.01元)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double moneyRemain;
    /**
     * 用户剩余水量(单位0.01m3)
     */
    @Schema(description = "用户剩余水量(单位0.01m3)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double waterRemain;
    /**
     * 本次使用电量(单位0.01度)
     */
    @Schema(description = "本次使用电量(单位0.01度)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double thisEle;
    /**
     * 本次使用水量(单位0.01m3)
     */
    @Schema(description = "本次使用水量(单位0.01m3)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double thisWater;
    /**
     * 本次使用金额(单位0.01元)
     */
    @Schema(description = "本次使用金额(单位0.01元)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double thisMoney;
    /**
     * 本次使用时长(单位:分钟  最大9999分钟)
     */
    @Schema(description = "本次使用时长(单位:分钟  最大9999分钟)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Integer thisDuration;
    /**
     * 当前水量单价(单位0.01元 最大99.99元)
     */
    @Schema(description = "当前水量单价(单位0.01元 最大99.99元)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double waterPrice;
    /**
     * 当前电量单价(单位0.01元 最大99.99元)
     */
    @Schema(description = "当前电量单价(单位0.01元 最大99.99元)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double elePrice;
    /**
     * 交流A相电压(单位0.1伏特)
     */
    @Schema(description = "交流A相电压(单位0.1伏特)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double aVolt;
    /**
     * 交流B相电压(单位0.1伏特)
     */
    @Schema(description = "交流B相电压(单位0.1伏特)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double bVolt;
    /**
     * 交流C相电压(单位0.1伏特)
     */
    @Schema(description = "交流C相电压(单位0.1伏特)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double cVolt;
    /**
     * 交流A相电流(单位0.1安培)
     */
    @Schema(description = "交流A相电流(单位0.1安培)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double aCurrent;
    /**
     * 交流B相电流数据(单位0.1安培)
     */
    @Schema(description = "交流B相电流数据(单位0.1安培)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double bCurrent;
    /**
     * 交流C相电流(单位0.1安培)
     */
    @Schema(description = "交流C相电流(单位0.1安培)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double cCurrent;
    /**
     * 后备电池电压(单位0.01伏特)
     */
    @Schema(description = "后备电池电压(单位0.01伏特)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double batteryVolt;
    /**
     * 水表远传电压(单位0.01伏特)
     */
    @Schema(description = "水表远传电压(单位0.01伏特)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double waterMeterTransVolt;
    /**
     * 水表工作电压(单位0.01伏特)
     */
    @Schema(description = "水表工作电压(单位0.01伏特)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double waterMeterWorkVolt;
    public void valueFrom(DataV202404 dataV202404, DataCd80_5BVo cdData) throws Exception{
         this.dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataV202404.dt);
         this.rtuDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt);
         this.orderNo = cdData.orderNo ;
         this.icCardAddr = cdData.icCardAddr ;
         this.icCardNo = cdData.icCardNo ;
         this.waterLevel = cdData.waterLevel ;
         this.waterPress = cdData.waterPress ;
         this.waterInstant = cdData.waterInstant ;
         this.waterTotal = cdData.waterTotal ;
         this.eleTotal = cdData.eleTotal ;
         this.moneyRemain = cdData.moneyRemain ;
         this.waterRemain = cdData.waterRemain ;
         this.thisEle = cdData.thisEle ;
         this.thisWater = cdData.thisWater ;
         this.thisMoney = cdData.thisMoney ;
         this.thisDuration = cdData.thisDuration ;
         this.waterPrice = cdData.waterPrice ;
         this.elePrice = cdData.elePrice ;
         this.aVolt = cdData.aVolt ;
         this.bVolt = cdData.bVolt ;
         this.cVolt = cdData.cVolt ;
         this.aCurrent = cdData.aCurrent ;
         this.bCurrent = cdData.bCurrent ;
         this.cCurrent = cdData.cCurrent ;
         this.batteryVolt = cdData.batteryVolt ;
         this.waterMeterTransVolt = cdData.waterMeterTransVolt ;
         this.waterMeterWorkVolt = cdData.waterMeterWorkVolt ;
    }
}
pipIrr-platform/pipIrr-global/src/main/resources/application-database-pj.yml
@@ -6,7 +6,7 @@
            type: com.alibaba.druid.pool.DruidDataSource
            driverClassName: com.mysql.cj.jdbc.Driver
#            url: jdbc:mysql://192.168.91.73:3306/pipIrr_pj?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
            url: jdbc:mysql://127.0.0.1:3306/pipIrr_pj?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
            url: jdbc:mysql://192.168.40.166:3306/pipIrr_pj?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
            username: root
            password: dysql,;.abc!@#
            druid:
pipIrr-platform/pipIrr-global/src/main/resources/application-database-ym.yml
@@ -5,8 +5,8 @@
            #name: ym
            type: com.alibaba.druid.pool.DruidDataSource
            driverClassName: com.mysql.cj.jdbc.Driver
#            url: jdbc:mysql://192.168.40.166:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
            url: jdbc:mysql://127.0.0.1:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
            url: jdbc:mysql://192.168.40.166:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
#            url: jdbc:mysql://127.0.0.1:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
            username: root
            password: dysql,;.abc!@#
            druid:
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAutoReportHistoryMapper.xml
File was deleted
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAutoReportLastMapper.xml
File was deleted
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmTimingReportHistoryMapper.xml
New file
@@ -0,0 +1,222 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dy.pipIrrGlobal.daoRm.RmTimingReportHistoryMapper">
  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoRm.RmTimingReportHistory">
    <!--@mbg.generated-->
    <!--@Table rm_timing_report_history-->
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="controller_id" jdbcType="BIGINT" property="controllerId" />
    <result column="intake_id" jdbcType="BIGINT" property="intakeId" />
    <result column="rtu_addr" jdbcType="VARCHAR" property="rtuAddr" />
    <result column="dt" jdbcType="TIMESTAMP" property="dt" />
    <result column="rtu_dt" jdbcType="TIMESTAMP" property="rtuDt" />
    <result column="data_dt" jdbcType="DATE" property="dataDt" />
    <result column="water_total_amount_year" jdbcType="FLOAT" property="waterTotalAmountYear" />
    <result column="water_total_amount_meter" jdbcType="FLOAT" property="waterTotalAmountMeter" />
    <result column="ele_total_amount_year" jdbcType="FLOAT" property="eleTotalAmountYear" />
    <result column="ele_total_amount_meter" jdbcType="FLOAT" property="eleTotalAmountMeter" />
    <result column="water_total_amount_day" jdbcType="FLOAT" property="waterTotalAmountDay" />
    <result column="water_user_total_amount_day" jdbcType="FLOAT" property="waterUserTotalAmountDay" />
    <result column="loss_total_amount_day" jdbcType="FLOAT" property="lossTotalAmountDay" />
    <result column="battery_volt" jdbcType="FLOAT" property="batteryVolt" />
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, controller_id, intake_id, rtu_addr, dt, rtu_dt, data_dt, water_total_amount_year,
    water_total_amount_meter, ele_total_amount_year, ele_total_amount_meter, water_total_amount_day,
    water_user_total_amount_day, loss_total_amount_day, battery_volt
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
    select
    <include refid="Base_Column_List" />
    from rm_timing_report_history
    where id = #{id,jdbcType=BIGINT}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    <!--@mbg.generated-->
    delete from rm_timing_report_history
    where id = #{id,jdbcType=BIGINT}
  </delete>
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmTimingReportHistory">
    <!--@mbg.generated-->
    insert into rm_timing_report_history (id, controller_id, intake_id,
      rtu_addr, dt, rtu_dt,
      data_dt, water_total_amount_year, water_total_amount_meter,
      ele_total_amount_year, ele_total_amount_meter, water_total_amount_day,
      water_user_total_amount_day, loss_total_amount_day,
      battery_volt)
    values (#{id,jdbcType=BIGINT}, #{controllerId,jdbcType=BIGINT}, #{intakeId,jdbcType=BIGINT},
      #{rtuAddr,jdbcType=VARCHAR}, #{dt,jdbcType=TIMESTAMP}, #{rtuDt,jdbcType=TIMESTAMP},
      #{dataDt,jdbcType=DATE}, #{waterTotalAmountYear,jdbcType=FLOAT}, #{waterTotalAmountMeter,jdbcType=FLOAT},
      #{eleTotalAmountYear,jdbcType=FLOAT}, #{eleTotalAmountMeter,jdbcType=FLOAT}, #{waterTotalAmountDay,jdbcType=FLOAT},
      #{waterUserTotalAmountDay,jdbcType=FLOAT}, #{lossTotalAmountDay,jdbcType=FLOAT},
      #{batteryVolt,jdbcType=FLOAT})
  </insert>
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmTimingReportHistory">
    <!--@mbg.generated-->
    insert into rm_timing_report_history
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
        id,
      </if>
      <if test="controllerId != null">
        controller_id,
      </if>
      <if test="intakeId != null">
        intake_id,
      </if>
      <if test="rtuAddr != null">
        rtu_addr,
      </if>
      <if test="dt != null">
        dt,
      </if>
      <if test="rtuDt != null">
        rtu_dt,
      </if>
      <if test="dataDt != null">
        data_dt,
      </if>
      <if test="waterTotalAmountYear != null">
        water_total_amount_year,
      </if>
      <if test="waterTotalAmountMeter != null">
        water_total_amount_meter,
      </if>
      <if test="eleTotalAmountYear != null">
        ele_total_amount_year,
      </if>
      <if test="eleTotalAmountMeter != null">
        ele_total_amount_meter,
      </if>
      <if test="waterTotalAmountDay != null">
        water_total_amount_day,
      </if>
      <if test="waterUserTotalAmountDay != null">
        water_user_total_amount_day,
      </if>
      <if test="lossTotalAmountDay != null">
        loss_total_amount_day,
      </if>
      <if test="batteryVolt != null">
        battery_volt,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
        #{id,jdbcType=BIGINT},
      </if>
      <if test="controllerId != null">
        #{controllerId,jdbcType=BIGINT},
      </if>
      <if test="intakeId != null">
        #{intakeId,jdbcType=BIGINT},
      </if>
      <if test="rtuAddr != null">
        #{rtuAddr,jdbcType=VARCHAR},
      </if>
      <if test="dt != null">
        #{dt,jdbcType=TIMESTAMP},
      </if>
      <if test="rtuDt != null">
        #{rtuDt,jdbcType=TIMESTAMP},
      </if>
      <if test="dataDt != null">
        #{dataDt,jdbcType=DATE},
      </if>
      <if test="waterTotalAmountYear != null">
        #{waterTotalAmountYear,jdbcType=FLOAT},
      </if>
      <if test="waterTotalAmountMeter != null">
        #{waterTotalAmountMeter,jdbcType=FLOAT},
      </if>
      <if test="eleTotalAmountYear != null">
        #{eleTotalAmountYear,jdbcType=FLOAT},
      </if>
      <if test="eleTotalAmountMeter != null">
        #{eleTotalAmountMeter,jdbcType=FLOAT},
      </if>
      <if test="waterTotalAmountDay != null">
        #{waterTotalAmountDay,jdbcType=FLOAT},
      </if>
      <if test="waterUserTotalAmountDay != null">
        #{waterUserTotalAmountDay,jdbcType=FLOAT},
      </if>
      <if test="lossTotalAmountDay != null">
        #{lossTotalAmountDay,jdbcType=FLOAT},
      </if>
      <if test="batteryVolt != null">
        #{batteryVolt,jdbcType=FLOAT},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmTimingReportHistory">
    <!--@mbg.generated-->
    update rm_timing_report_history
    <set>
      <if test="controllerId != null">
        controller_id = #{controllerId,jdbcType=BIGINT},
      </if>
      <if test="intakeId != null">
        intake_id = #{intakeId,jdbcType=BIGINT},
      </if>
      <if test="rtuAddr != null">
        rtu_addr = #{rtuAddr,jdbcType=VARCHAR},
      </if>
      <if test="dt != null">
        dt = #{dt,jdbcType=TIMESTAMP},
      </if>
      <if test="rtuDt != null">
        rtu_dt = #{rtuDt,jdbcType=TIMESTAMP},
      </if>
      <if test="dataDt != null">
        data_dt = #{dataDt,jdbcType=DATE},
      </if>
      <if test="waterTotalAmountYear != null">
        water_total_amount_year = #{waterTotalAmountYear,jdbcType=FLOAT},
      </if>
      <if test="waterTotalAmountMeter != null">
        water_total_amount_meter = #{waterTotalAmountMeter,jdbcType=FLOAT},
      </if>
      <if test="eleTotalAmountYear != null">
        ele_total_amount_year = #{eleTotalAmountYear,jdbcType=FLOAT},
      </if>
      <if test="eleTotalAmountMeter != null">
        ele_total_amount_meter = #{eleTotalAmountMeter,jdbcType=FLOAT},
      </if>
      <if test="waterTotalAmountDay != null">
        water_total_amount_day = #{waterTotalAmountDay,jdbcType=FLOAT},
      </if>
      <if test="waterUserTotalAmountDay != null">
        water_user_total_amount_day = #{waterUserTotalAmountDay,jdbcType=FLOAT},
      </if>
      <if test="lossTotalAmountDay != null">
        loss_total_amount_day = #{lossTotalAmountDay,jdbcType=FLOAT},
      </if>
      <if test="batteryVolt != null">
        battery_volt = #{batteryVolt,jdbcType=FLOAT},
      </if>
    </set>
    where id = #{id,jdbcType=BIGINT}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmTimingReportHistory">
    <!--@mbg.generated-->
    update rm_timing_report_history
    set controller_id = #{controllerId,jdbcType=BIGINT},
      intake_id = #{intakeId,jdbcType=BIGINT},
      rtu_addr = #{rtuAddr,jdbcType=VARCHAR},
      dt = #{dt,jdbcType=TIMESTAMP},
      rtu_dt = #{rtuDt,jdbcType=TIMESTAMP},
      data_dt = #{dataDt,jdbcType=DATE},
      water_total_amount_year = #{waterTotalAmountYear,jdbcType=FLOAT},
      water_total_amount_meter = #{waterTotalAmountMeter,jdbcType=FLOAT},
      ele_total_amount_year = #{eleTotalAmountYear,jdbcType=FLOAT},
      ele_total_amount_meter = #{eleTotalAmountMeter,jdbcType=FLOAT},
      water_total_amount_day = #{waterTotalAmountDay,jdbcType=FLOAT},
      water_user_total_amount_day = #{waterUserTotalAmountDay,jdbcType=FLOAT},
      loss_total_amount_day = #{lossTotalAmountDay,jdbcType=FLOAT},
      battery_volt = #{batteryVolt,jdbcType=FLOAT}
    where id = #{id,jdbcType=BIGINT}
  </update>
</mapper>
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmTimingReportLastMapper.xml
New file
@@ -0,0 +1,230 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dy.pipIrrGlobal.daoRm.RmTimingReportLastMapper">
  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoRm.RmTimingReportLast">
    <!--@mbg.generated-->
    <!--@Table rm_timing_report_last-->
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="controller_id" jdbcType="BIGINT" property="controllerId" />
    <result column="intake_id" jdbcType="BIGINT" property="intakeId" />
    <result column="rtu_addr" jdbcType="VARCHAR" property="rtuAddr" />
    <result column="dt" jdbcType="TIMESTAMP" property="dt" />
    <result column="rtu_dt" jdbcType="TIMESTAMP" property="rtuDt" />
    <result column="data_dt" jdbcType="DATE" property="dataDt" />
    <result column="water_total_amount_year" jdbcType="FLOAT" property="waterTotalAmountYear" />
    <result column="water_total_amount_meter" jdbcType="FLOAT" property="waterTotalAmountMeter" />
    <result column="ele_total_amount_year" jdbcType="FLOAT" property="eleTotalAmountYear" />
    <result column="ele_total_amount_meter" jdbcType="FLOAT" property="eleTotalAmountMeter" />
    <result column="water_total_amount_day" jdbcType="FLOAT" property="waterTotalAmountDay" />
    <result column="water_user_total_amount_day" jdbcType="FLOAT" property="waterUserTotalAmountDay" />
    <result column="loss_total_amount_day" jdbcType="FLOAT" property="lossTotalAmountDay" />
    <result column="battery_volt" jdbcType="FLOAT" property="batteryVolt" />
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, controller_id, intake_id, rtu_addr, dt, rtu_dt, data_dt, water_total_amount_year,
    water_total_amount_meter, ele_total_amount_year, ele_total_amount_meter, water_total_amount_day,
    water_user_total_amount_day, loss_total_amount_day, battery_volt
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
    select
    <include refid="Base_Column_List" />
    from rm_timing_report_last
    where id = #{id,jdbcType=BIGINT}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    <!--@mbg.generated-->
    delete from rm_timing_report_last
    where id = #{id,jdbcType=BIGINT}
  </delete>
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmTimingReportLast">
    <!--@mbg.generated-->
    insert into rm_timing_report_last (id, controller_id, intake_id,
      rtu_addr, dt, rtu_dt,
      data_dt, water_total_amount_year, water_total_amount_meter,
      ele_total_amount_year, ele_total_amount_meter, water_total_amount_day,
      water_user_total_amount_day, loss_total_amount_day,
      battery_volt)
    values (#{id,jdbcType=BIGINT}, #{controllerId,jdbcType=BIGINT}, #{intakeId,jdbcType=BIGINT},
      #{rtuAddr,jdbcType=VARCHAR}, #{dt,jdbcType=TIMESTAMP}, #{rtuDt,jdbcType=TIMESTAMP},
      #{dataDt,jdbcType=DATE}, #{waterTotalAmountYear,jdbcType=FLOAT}, #{waterTotalAmountMeter,jdbcType=FLOAT},
      #{eleTotalAmountYear,jdbcType=FLOAT}, #{eleTotalAmountMeter,jdbcType=FLOAT}, #{waterTotalAmountDay,jdbcType=FLOAT},
      #{waterUserTotalAmountDay,jdbcType=FLOAT}, #{lossTotalAmountDay,jdbcType=FLOAT},
      #{batteryVolt,jdbcType=FLOAT})
  </insert>
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmTimingReportLast">
    <!--@mbg.generated-->
    insert into rm_timing_report_last
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
        id,
      </if>
      <if test="controllerId != null">
        controller_id,
      </if>
      <if test="intakeId != null">
        intake_id,
      </if>
      <if test="rtuAddr != null">
        rtu_addr,
      </if>
      <if test="dt != null">
        dt,
      </if>
      <if test="rtuDt != null">
        rtu_dt,
      </if>
      <if test="dataDt != null">
        data_dt,
      </if>
      <if test="waterTotalAmountYear != null">
        water_total_amount_year,
      </if>
      <if test="waterTotalAmountMeter != null">
        water_total_amount_meter,
      </if>
      <if test="eleTotalAmountYear != null">
        ele_total_amount_year,
      </if>
      <if test="eleTotalAmountMeter != null">
        ele_total_amount_meter,
      </if>
      <if test="waterTotalAmountDay != null">
        water_total_amount_day,
      </if>
      <if test="waterUserTotalAmountDay != null">
        water_user_total_amount_day,
      </if>
      <if test="lossTotalAmountDay != null">
        loss_total_amount_day,
      </if>
      <if test="batteryVolt != null">
        battery_volt,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
        #{id,jdbcType=BIGINT},
      </if>
      <if test="controllerId != null">
        #{controllerId,jdbcType=BIGINT},
      </if>
      <if test="intakeId != null">
        #{intakeId,jdbcType=BIGINT},
      </if>
      <if test="rtuAddr != null">
        #{rtuAddr,jdbcType=VARCHAR},
      </if>
      <if test="dt != null">
        #{dt,jdbcType=TIMESTAMP},
      </if>
      <if test="rtuDt != null">
        #{rtuDt,jdbcType=TIMESTAMP},
      </if>
      <if test="dataDt != null">
        #{dataDt,jdbcType=DATE},
      </if>
      <if test="waterTotalAmountYear != null">
        #{waterTotalAmountYear,jdbcType=FLOAT},
      </if>
      <if test="waterTotalAmountMeter != null">
        #{waterTotalAmountMeter,jdbcType=FLOAT},
      </if>
      <if test="eleTotalAmountYear != null">
        #{eleTotalAmountYear,jdbcType=FLOAT},
      </if>
      <if test="eleTotalAmountMeter != null">
        #{eleTotalAmountMeter,jdbcType=FLOAT},
      </if>
      <if test="waterTotalAmountDay != null">
        #{waterTotalAmountDay,jdbcType=FLOAT},
      </if>
      <if test="waterUserTotalAmountDay != null">
        #{waterUserTotalAmountDay,jdbcType=FLOAT},
      </if>
      <if test="lossTotalAmountDay != null">
        #{lossTotalAmountDay,jdbcType=FLOAT},
      </if>
      <if test="batteryVolt != null">
        #{batteryVolt,jdbcType=FLOAT},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmTimingReportLast">
    <!--@mbg.generated-->
    update rm_timing_report_last
    <set>
      <if test="controllerId != null">
        controller_id = #{controllerId,jdbcType=BIGINT},
      </if>
      <if test="intakeId != null">
        intake_id = #{intakeId,jdbcType=BIGINT},
      </if>
      <if test="rtuAddr != null">
        rtu_addr = #{rtuAddr,jdbcType=VARCHAR},
      </if>
      <if test="dt != null">
        dt = #{dt,jdbcType=TIMESTAMP},
      </if>
      <if test="rtuDt != null">
        rtu_dt = #{rtuDt,jdbcType=TIMESTAMP},
      </if>
      <if test="dataDt != null">
        data_dt = #{dataDt,jdbcType=DATE},
      </if>
      <if test="waterTotalAmountYear != null">
        water_total_amount_year = #{waterTotalAmountYear,jdbcType=FLOAT},
      </if>
      <if test="waterTotalAmountMeter != null">
        water_total_amount_meter = #{waterTotalAmountMeter,jdbcType=FLOAT},
      </if>
      <if test="eleTotalAmountYear != null">
        ele_total_amount_year = #{eleTotalAmountYear,jdbcType=FLOAT},
      </if>
      <if test="eleTotalAmountMeter != null">
        ele_total_amount_meter = #{eleTotalAmountMeter,jdbcType=FLOAT},
      </if>
      <if test="waterTotalAmountDay != null">
        water_total_amount_day = #{waterTotalAmountDay,jdbcType=FLOAT},
      </if>
      <if test="waterUserTotalAmountDay != null">
        water_user_total_amount_day = #{waterUserTotalAmountDay,jdbcType=FLOAT},
      </if>
      <if test="lossTotalAmountDay != null">
        loss_total_amount_day = #{lossTotalAmountDay,jdbcType=FLOAT},
      </if>
      <if test="batteryVolt != null">
        battery_volt = #{batteryVolt,jdbcType=FLOAT},
      </if>
    </set>
    where id = #{id,jdbcType=BIGINT}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmTimingReportLast">
    <!--@mbg.generated-->
    update rm_timing_report_last
    set controller_id = #{controllerId,jdbcType=BIGINT},
      intake_id = #{intakeId,jdbcType=BIGINT},
      rtu_addr = #{rtuAddr,jdbcType=VARCHAR},
      dt = #{dt,jdbcType=TIMESTAMP},
      rtu_dt = #{rtuDt,jdbcType=TIMESTAMP},
      data_dt = #{dataDt,jdbcType=DATE},
      water_total_amount_year = #{waterTotalAmountYear,jdbcType=FLOAT},
      water_total_amount_meter = #{waterTotalAmountMeter,jdbcType=FLOAT},
      ele_total_amount_year = #{eleTotalAmountYear,jdbcType=FLOAT},
      ele_total_amount_meter = #{eleTotalAmountMeter,jdbcType=FLOAT},
      water_total_amount_day = #{waterTotalAmountDay,jdbcType=FLOAT},
      water_user_total_amount_day = #{waterUserTotalAmountDay,jdbcType=FLOAT},
      loss_total_amount_day = #{lossTotalAmountDay,jdbcType=FLOAT},
      battery_volt = #{batteryVolt,jdbcType=FLOAT}
    where id = #{id,jdbcType=BIGINT}
  </update>
  <!--根据阀控器地址获取定点上报最新数据-->
  <select id="getRmTimingReportLast" resultType="com.dy.pipIrrGlobal.pojoRm.RmTimingReportLast">
    select
    <include refid="Base_Column_List" />
    from rm_timing_report_last
    where rtu_addr = #{rtuAddr}
  </select>
</mapper>
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmWorkReportHistoryMapper.xml
@@ -9,16 +9,40 @@
    <result column="intake_id" jdbcType="BIGINT" property="intakeId" />
    <result column="rtu_addr" jdbcType="VARCHAR" property="rtuAddr" />
    <result column="dt" jdbcType="TIMESTAMP" property="dt" />
    <result column="ic_card_no" jdbcType="VARCHAR" property="icCardNo" />
    <result column="total_amount" jdbcType="DOUBLE" property="totalAmount" />
    <result column="instant_amount" jdbcType="DOUBLE" property="instantAmount" />
    <result column="remain_money" jdbcType="DOUBLE" property="remainMoney" />
    <result column="rtu_dt" jdbcType="TIMESTAMP" property="rtuDt" />
    <result column="order_no" jdbcType="VARCHAR" property="orderNo" />
    <result column="ic_card_addr" jdbcType="VARCHAR" property="icCardAddr" />
    <result column="ic_card_no" jdbcType="VARCHAR" property="icCardNo" />
    <result column="water_level" jdbcType="FLOAT" property="waterLevel" />
    <result column="water_press" jdbcType="FLOAT" property="waterPress" />
    <result column="water_instant" jdbcType="FLOAT" property="waterInstant" />
    <result column="water_total" jdbcType="FLOAT" property="waterTotal" />
    <result column="ele_total" jdbcType="FLOAT" property="eleTotal" />
    <result column="money_remain" jdbcType="FLOAT" property="moneyRemain" />
    <result column="water_remain" jdbcType="FLOAT" property="waterRemain" />
    <result column="this_ele" jdbcType="FLOAT" property="thisEle" />
    <result column="this_water" jdbcType="FLOAT" property="thisWater" />
    <result column="this_money" jdbcType="FLOAT" property="thisMoney" />
    <result column="this_duration" jdbcType="INTEGER" property="thisDuration" />
    <result column="water_price" jdbcType="FLOAT" property="waterPrice" />
    <result column="ele_price" jdbcType="FLOAT" property="elePrice" />
    <result column="a_volt" jdbcType="FLOAT" property="aVolt" />
    <result column="b_volt" jdbcType="FLOAT" property="bVolt" />
    <result column="c_volt" jdbcType="FLOAT" property="cVolt" />
    <result column="a_current" jdbcType="FLOAT" property="aCurrent" />
    <result column="b_current" jdbcType="FLOAT" property="bCurrent" />
    <result column="c_current" jdbcType="FLOAT" property="cCurrent" />
    <result column="battery_volt" jdbcType="FLOAT" property="batteryVolt" />
    <result column="water_meter_trans_volt" jdbcType="FLOAT" property="waterMeterTransVolt" />
    <result column="water_meter_work_volt" jdbcType="FLOAT" property="waterMeterWorkVolt" />
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, controller_id, intake_id, rtu_addr, dt, ic_card_no, total_amount, instant_amount,
    remain_money, rtu_dt
    id, controller_id, intake_id, rtu_addr, dt, rtu_dt, order_no, ic_card_addr, ic_card_no,
    water_level, water_press, water_instant, water_total, ele_total, money_remain, water_remain,
    this_ele, this_water, this_money, this_duration, water_price, ele_price, a_volt,
    b_volt, c_volt, a_current, b_current, c_current, battery_volt, water_meter_trans_volt,
    water_meter_work_volt
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
@@ -35,13 +59,27 @@
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmWorkReportHistory">
    <!--@mbg.generated-->
    insert into rm_work_report_history (id, controller_id, intake_id, 
      rtu_addr, dt, ic_card_no,
      total_amount, instant_amount, remain_money,
      rtu_dt)
      rtu_addr, dt, rtu_dt,
      order_no, ic_card_addr, ic_card_no,
      water_level, water_press, water_instant,
      water_total, ele_total, money_remain,
      water_remain, this_ele, this_water,
      this_money, this_duration, water_price,
      ele_price, a_volt, b_volt, c_volt,
      a_current, b_current, c_current,
      battery_volt, water_meter_trans_volt, water_meter_work_volt
      )
    values (#{id,jdbcType=BIGINT}, #{controllerId,jdbcType=BIGINT}, #{intakeId,jdbcType=BIGINT}, 
      #{rtuAddr,jdbcType=VARCHAR}, #{dt,jdbcType=TIMESTAMP}, #{icCardNo,jdbcType=VARCHAR},
      #{totalAmount,jdbcType=DOUBLE}, #{instantAmount,jdbcType=DOUBLE}, #{remainMoney,jdbcType=DOUBLE},
      #{rtuDt,jdbcType=TIMESTAMP})
      #{rtuAddr,jdbcType=VARCHAR}, #{dt,jdbcType=TIMESTAMP}, #{rtuDt,jdbcType=TIMESTAMP},
      #{orderNo,jdbcType=VARCHAR}, #{icCardAddr,jdbcType=VARCHAR}, #{icCardNo,jdbcType=VARCHAR},
      #{waterLevel,jdbcType=FLOAT}, #{waterPress,jdbcType=FLOAT}, #{waterInstant,jdbcType=FLOAT},
      #{waterTotal,jdbcType=FLOAT}, #{eleTotal,jdbcType=FLOAT}, #{moneyRemain,jdbcType=FLOAT},
      #{waterRemain,jdbcType=FLOAT}, #{thisEle,jdbcType=FLOAT}, #{thisWater,jdbcType=FLOAT},
      #{thisMoney,jdbcType=FLOAT}, #{thisDuration,jdbcType=INTEGER}, #{waterPrice,jdbcType=FLOAT},
      #{elePrice,jdbcType=FLOAT}, #{aVolt,jdbcType=FLOAT}, #{bVolt,jdbcType=FLOAT}, #{cVolt,jdbcType=FLOAT},
      #{aCurrent,jdbcType=FLOAT}, #{bCurrent,jdbcType=FLOAT}, #{cCurrent,jdbcType=FLOAT},
      #{batteryVolt,jdbcType=FLOAT}, #{waterMeterTransVolt,jdbcType=FLOAT}, #{waterMeterWorkVolt,jdbcType=FLOAT}
      )
  </insert>
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmWorkReportHistory">
    <!--@mbg.generated-->
@@ -62,20 +100,83 @@
      <if test="dt != null">
        dt,
      </if>
      <if test="rtuDt != null">
        rtu_dt,
      </if>
      <if test="orderNo != null">
        order_no,
      </if>
      <if test="icCardAddr != null">
        ic_card_addr,
      </if>
      <if test="icCardNo != null">
        ic_card_no,
      </if>
      <if test="totalAmount != null">
        total_amount,
      <if test="waterLevel != null">
        water_level,
      </if>
      <if test="instantAmount != null">
        instant_amount,
      <if test="waterPress != null">
        water_press,
      </if>
      <if test="remainMoney != null">
        remain_money,
      <if test="waterInstant != null">
        water_instant,
      </if>
      <if test="rtuDt != null">
        rtu_dt,
      <if test="waterTotal != null">
        water_total,
      </if>
      <if test="eleTotal != null">
        ele_total,
      </if>
      <if test="moneyRemain != null">
        money_remain,
      </if>
      <if test="waterRemain != null">
        water_remain,
      </if>
      <if test="thisEle != null">
        this_ele,
      </if>
      <if test="thisWater != null">
        this_water,
      </if>
      <if test="thisMoney != null">
        this_money,
      </if>
      <if test="thisDuration != null">
        this_duration,
      </if>
      <if test="waterPrice != null">
        water_price,
      </if>
      <if test="elePrice != null">
        ele_price,
      </if>
      <if test="aVolt != null">
        a_volt,
      </if>
      <if test="bVolt != null">
        b_volt,
      </if>
      <if test="cVolt != null">
        c_volt,
      </if>
      <if test="aCurrent != null">
        a_current,
      </if>
      <if test="bCurrent != null">
        b_current,
      </if>
      <if test="cCurrent != null">
        c_current,
      </if>
      <if test="batteryVolt != null">
        battery_volt,
      </if>
      <if test="waterMeterTransVolt != null">
        water_meter_trans_volt,
      </if>
      <if test="waterMeterWorkVolt != null">
        water_meter_work_volt,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
@@ -94,20 +195,83 @@
      <if test="dt != null">
        #{dt,jdbcType=TIMESTAMP},
      </if>
      <if test="rtuDt != null">
        #{rtuDt,jdbcType=TIMESTAMP},
      </if>
      <if test="orderNo != null">
        #{orderNo,jdbcType=VARCHAR},
      </if>
      <if test="icCardAddr != null">
        #{icCardAddr,jdbcType=VARCHAR},
      </if>
      <if test="icCardNo != null">
        #{icCardNo,jdbcType=VARCHAR},
      </if>
      <if test="totalAmount != null">
        #{totalAmount,jdbcType=DOUBLE},
      <if test="waterLevel != null">
        #{waterLevel,jdbcType=FLOAT},
      </if>
      <if test="instantAmount != null">
        #{instantAmount,jdbcType=DOUBLE},
      <if test="waterPress != null">
        #{waterPress,jdbcType=FLOAT},
      </if>
      <if test="remainMoney != null">
        #{remainMoney,jdbcType=DOUBLE},
      <if test="waterInstant != null">
        #{waterInstant,jdbcType=FLOAT},
      </if>
      <if test="rtuDt != null">
        #{rtuDt,jdbcType=TIMESTAMP},
      <if test="waterTotal != null">
        #{waterTotal,jdbcType=FLOAT},
      </if>
      <if test="eleTotal != null">
        #{eleTotal,jdbcType=FLOAT},
      </if>
      <if test="moneyRemain != null">
        #{moneyRemain,jdbcType=FLOAT},
      </if>
      <if test="waterRemain != null">
        #{waterRemain,jdbcType=FLOAT},
      </if>
      <if test="thisEle != null">
        #{thisEle,jdbcType=FLOAT},
      </if>
      <if test="thisWater != null">
        #{thisWater,jdbcType=FLOAT},
      </if>
      <if test="thisMoney != null">
        #{thisMoney,jdbcType=FLOAT},
      </if>
      <if test="thisDuration != null">
        #{thisDuration,jdbcType=INTEGER},
      </if>
      <if test="waterPrice != null">
        #{waterPrice,jdbcType=FLOAT},
      </if>
      <if test="elePrice != null">
        #{elePrice,jdbcType=FLOAT},
      </if>
      <if test="aVolt != null">
        #{aVolt,jdbcType=FLOAT},
      </if>
      <if test="bVolt != null">
        #{bVolt,jdbcType=FLOAT},
      </if>
      <if test="cVolt != null">
        #{cVolt,jdbcType=FLOAT},
      </if>
      <if test="aCurrent != null">
        #{aCurrent,jdbcType=FLOAT},
      </if>
      <if test="bCurrent != null">
        #{bCurrent,jdbcType=FLOAT},
      </if>
      <if test="cCurrent != null">
        #{cCurrent,jdbcType=FLOAT},
      </if>
      <if test="batteryVolt != null">
        #{batteryVolt,jdbcType=FLOAT},
      </if>
      <if test="waterMeterTransVolt != null">
        #{waterMeterTransVolt,jdbcType=FLOAT},
      </if>
      <if test="waterMeterWorkVolt != null">
        #{waterMeterWorkVolt,jdbcType=FLOAT},
      </if>
    </trim>
  </insert>
@@ -127,20 +291,83 @@
      <if test="dt != null">
        dt = #{dt,jdbcType=TIMESTAMP},
      </if>
      <if test="rtuDt != null">
        rtu_dt = #{rtuDt,jdbcType=TIMESTAMP},
      </if>
      <if test="orderNo != null">
        order_no = #{orderNo,jdbcType=VARCHAR},
      </if>
      <if test="icCardAddr != null">
        ic_card_addr = #{icCardAddr,jdbcType=VARCHAR},
      </if>
      <if test="icCardNo != null">
        ic_card_no = #{icCardNo,jdbcType=VARCHAR},
      </if>
      <if test="totalAmount != null">
        total_amount = #{totalAmount,jdbcType=DOUBLE},
      <if test="waterLevel != null">
        water_level = #{waterLevel,jdbcType=FLOAT},
      </if>
      <if test="instantAmount != null">
        instant_amount = #{instantAmount,jdbcType=DOUBLE},
      <if test="waterPress != null">
        water_press = #{waterPress,jdbcType=FLOAT},
      </if>
      <if test="remainMoney != null">
        remain_money = #{remainMoney,jdbcType=DOUBLE},
      <if test="waterInstant != null">
        water_instant = #{waterInstant,jdbcType=FLOAT},
      </if>
      <if test="rtuDt != null">
        rtu_dt = #{rtuDt,jdbcType=TIMESTAMP},
      <if test="waterTotal != null">
        water_total = #{waterTotal,jdbcType=FLOAT},
      </if>
      <if test="eleTotal != null">
        ele_total = #{eleTotal,jdbcType=FLOAT},
      </if>
      <if test="moneyRemain != null">
        money_remain = #{moneyRemain,jdbcType=FLOAT},
      </if>
      <if test="waterRemain != null">
        water_remain = #{waterRemain,jdbcType=FLOAT},
      </if>
      <if test="thisEle != null">
        this_ele = #{thisEle,jdbcType=FLOAT},
      </if>
      <if test="thisWater != null">
        this_water = #{thisWater,jdbcType=FLOAT},
      </if>
      <if test="thisMoney != null">
        this_money = #{thisMoney,jdbcType=FLOAT},
      </if>
      <if test="thisDuration != null">
        this_duration = #{thisDuration,jdbcType=INTEGER},
      </if>
      <if test="waterPrice != null">
        water_price = #{waterPrice,jdbcType=FLOAT},
      </if>
      <if test="elePrice != null">
        ele_price = #{elePrice,jdbcType=FLOAT},
      </if>
      <if test="aVolt != null">
        a_volt = #{aVolt,jdbcType=FLOAT},
      </if>
      <if test="bVolt != null">
        b_volt = #{bVolt,jdbcType=FLOAT},
      </if>
      <if test="cVolt != null">
        c_volt = #{cVolt,jdbcType=FLOAT},
      </if>
      <if test="aCurrent != null">
        a_current = #{aCurrent,jdbcType=FLOAT},
      </if>
      <if test="bCurrent != null">
        b_current = #{bCurrent,jdbcType=FLOAT},
      </if>
      <if test="cCurrent != null">
        c_current = #{cCurrent,jdbcType=FLOAT},
      </if>
      <if test="batteryVolt != null">
        battery_volt = #{batteryVolt,jdbcType=FLOAT},
      </if>
      <if test="waterMeterTransVolt != null">
        water_meter_trans_volt = #{waterMeterTransVolt,jdbcType=FLOAT},
      </if>
      <if test="waterMeterWorkVolt != null">
        water_meter_work_volt = #{waterMeterWorkVolt,jdbcType=FLOAT},
      </if>
    </set>
    where id = #{id,jdbcType=BIGINT}
@@ -152,11 +379,32 @@
      intake_id = #{intakeId,jdbcType=BIGINT},
      rtu_addr = #{rtuAddr,jdbcType=VARCHAR},
      dt = #{dt,jdbcType=TIMESTAMP},
      rtu_dt = #{rtuDt,jdbcType=TIMESTAMP},
      order_no = #{orderNo,jdbcType=VARCHAR},
      ic_card_addr = #{icCardAddr,jdbcType=VARCHAR},
      ic_card_no = #{icCardNo,jdbcType=VARCHAR},
      total_amount = #{totalAmount,jdbcType=DOUBLE},
      instant_amount = #{instantAmount,jdbcType=DOUBLE},
      remain_money = #{remainMoney,jdbcType=DOUBLE},
      rtu_dt = #{rtuDt,jdbcType=TIMESTAMP}
      water_level = #{waterLevel,jdbcType=FLOAT},
      water_press = #{waterPress,jdbcType=FLOAT},
      water_instant = #{waterInstant,jdbcType=FLOAT},
      water_total = #{waterTotal,jdbcType=FLOAT},
      ele_total = #{eleTotal,jdbcType=FLOAT},
      money_remain = #{moneyRemain,jdbcType=FLOAT},
      water_remain = #{waterRemain,jdbcType=FLOAT},
      this_ele = #{thisEle,jdbcType=FLOAT},
      this_water = #{thisWater,jdbcType=FLOAT},
      this_money = #{thisMoney,jdbcType=FLOAT},
      this_duration = #{thisDuration,jdbcType=INTEGER},
      water_price = #{waterPrice,jdbcType=FLOAT},
      ele_price = #{elePrice,jdbcType=FLOAT},
      a_volt = #{aVolt,jdbcType=FLOAT},
      b_volt = #{bVolt,jdbcType=FLOAT},
      c_volt = #{cVolt,jdbcType=FLOAT},
      a_current = #{aCurrent,jdbcType=FLOAT},
      b_current = #{bCurrent,jdbcType=FLOAT},
      c_current = #{cCurrent,jdbcType=FLOAT},
      battery_volt = #{batteryVolt,jdbcType=FLOAT},
      water_meter_trans_volt = #{waterMeterTransVolt,jdbcType=FLOAT},
      water_meter_work_volt = #{waterMeterWorkVolt,jdbcType=FLOAT}
    where id = #{id,jdbcType=BIGINT}
  </update>
</mapper>
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmWorkReportLastMapper.xml
@@ -9,16 +9,40 @@
    <result column="intake_id" jdbcType="BIGINT" property="intakeId" />
    <result column="rtu_addr" jdbcType="VARCHAR" property="rtuAddr" />
    <result column="dt" jdbcType="TIMESTAMP" property="dt" />
    <result column="ic_card_no" jdbcType="VARCHAR" property="icCardNo" />
    <result column="total_amount" jdbcType="DOUBLE" property="totalAmount" />
    <result column="instant_amount" jdbcType="DOUBLE" property="instantAmount" />
    <result column="remain_money" jdbcType="DOUBLE" property="remainMoney" />
    <result column="rtu_dt" jdbcType="TIMESTAMP" property="rtuDt" />
    <result column="order_no" jdbcType="VARCHAR" property="orderNo" />
    <result column="ic_card_addr" jdbcType="VARCHAR" property="icCardAddr" />
    <result column="ic_card_no" jdbcType="VARCHAR" property="icCardNo" />
    <result column="water_level" jdbcType="FLOAT" property="waterLevel" />
    <result column="water_press" jdbcType="FLOAT" property="waterPress" />
    <result column="water_instant" jdbcType="FLOAT" property="waterInstant" />
    <result column="water_total" jdbcType="FLOAT" property="waterTotal" />
    <result column="ele_total" jdbcType="FLOAT" property="eleTotal" />
    <result column="money_remain" jdbcType="FLOAT" property="moneyRemain" />
    <result column="water_remain" jdbcType="FLOAT" property="waterRemain" />
    <result column="this_ele" jdbcType="FLOAT" property="thisEle" />
    <result column="this_water" jdbcType="FLOAT" property="thisWater" />
    <result column="this_money" jdbcType="FLOAT" property="thisMoney" />
    <result column="this_duration" jdbcType="INTEGER" property="thisDuration" />
    <result column="water_price" jdbcType="FLOAT" property="waterPrice" />
    <result column="ele_price" jdbcType="FLOAT" property="elePrice" />
    <result column="a_volt" jdbcType="FLOAT" property="aVolt" />
    <result column="b_volt" jdbcType="FLOAT" property="bVolt" />
    <result column="c_volt" jdbcType="FLOAT" property="cVolt" />
    <result column="a_current" jdbcType="FLOAT" property="aCurrent" />
    <result column="b_current" jdbcType="FLOAT" property="bCurrent" />
    <result column="c_current" jdbcType="FLOAT" property="cCurrent" />
    <result column="battery_volt" jdbcType="FLOAT" property="batteryVolt" />
    <result column="water_meter_trans_volt" jdbcType="FLOAT" property="waterMeterTransVolt" />
    <result column="water_meter_work_volt" jdbcType="FLOAT" property="waterMeterWorkVolt" />
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, controller_id, intake_id, rtu_addr, dt, ic_card_no, total_amount, instant_amount,
    remain_money, rtu_dt
    id, controller_id, intake_id, rtu_addr, dt, rtu_dt, order_no, ic_card_addr, ic_card_no,
    water_level, water_press, water_instant, water_total, ele_total, money_remain, water_remain,
    this_ele, this_water, this_money, this_duration, water_price, ele_price, a_volt,
    b_volt, c_volt, a_current, b_current, c_current, battery_volt, water_meter_trans_volt,
    water_meter_work_volt
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
@@ -26,13 +50,6 @@
    <include refid="Base_Column_List" />
    from rm_work_report_last
    where id = #{id,jdbcType=BIGINT}
  </select>
  <select id="selectByRtuAddr" parameterType="java.lang.String" resultMap="BaseResultMap">
    <!--@mbg.generated-->
    select
    <include refid="Base_Column_List" />
    from rm_work_report_last
    where rtu_addr = #{rtuAddr,jdbcType=VARCHAR}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    <!--@mbg.generated-->
@@ -42,13 +59,27 @@
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmWorkReportLast">
    <!--@mbg.generated-->
    insert into rm_work_report_last (id, controller_id, intake_id, 
      rtu_addr, dt, ic_card_no,
      total_amount, instant_amount, remain_money,
      rtu_dt)
      rtu_addr, dt, rtu_dt,
      order_no, ic_card_addr, ic_card_no,
      water_level, water_press, water_instant,
      water_total, ele_total, money_remain,
      water_remain, this_ele, this_water,
      this_money, this_duration, water_price,
      ele_price, a_volt, b_volt, c_volt,
      a_current, b_current, c_current,
      battery_volt, water_meter_trans_volt, water_meter_work_volt
      )
    values (#{id,jdbcType=BIGINT}, #{controllerId,jdbcType=BIGINT}, #{intakeId,jdbcType=BIGINT}, 
      #{rtuAddr,jdbcType=VARCHAR}, #{dt,jdbcType=TIMESTAMP}, #{icCardNo,jdbcType=VARCHAR},
      #{totalAmount,jdbcType=DOUBLE}, #{instantAmount,jdbcType=DOUBLE}, #{remainMoney,jdbcType=DOUBLE},
      #{rtuDt,jdbcType=TIMESTAMP})
      #{rtuAddr,jdbcType=VARCHAR}, #{dt,jdbcType=TIMESTAMP}, #{rtuDt,jdbcType=TIMESTAMP},
      #{orderNo,jdbcType=VARCHAR}, #{icCardAddr,jdbcType=VARCHAR}, #{icCardNo,jdbcType=VARCHAR},
      #{waterLevel,jdbcType=FLOAT}, #{waterPress,jdbcType=FLOAT}, #{waterInstant,jdbcType=FLOAT},
      #{waterTotal,jdbcType=FLOAT}, #{eleTotal,jdbcType=FLOAT}, #{moneyRemain,jdbcType=FLOAT},
      #{waterRemain,jdbcType=FLOAT}, #{thisEle,jdbcType=FLOAT}, #{thisWater,jdbcType=FLOAT},
      #{thisMoney,jdbcType=FLOAT}, #{thisDuration,jdbcType=INTEGER}, #{waterPrice,jdbcType=FLOAT},
      #{elePrice,jdbcType=FLOAT}, #{aVolt,jdbcType=FLOAT}, #{bVolt,jdbcType=FLOAT}, #{cVolt,jdbcType=FLOAT},
      #{aCurrent,jdbcType=FLOAT}, #{bCurrent,jdbcType=FLOAT}, #{cCurrent,jdbcType=FLOAT},
      #{batteryVolt,jdbcType=FLOAT}, #{waterMeterTransVolt,jdbcType=FLOAT}, #{waterMeterWorkVolt,jdbcType=FLOAT}
      )
  </insert>
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmWorkReportLast">
    <!--@mbg.generated-->
@@ -69,20 +100,83 @@
      <if test="dt != null">
        dt,
      </if>
      <if test="rtuDt != null">
        rtu_dt,
      </if>
      <if test="orderNo != null">
        order_no,
      </if>
      <if test="icCardAddr != null">
        ic_card_addr,
      </if>
      <if test="icCardNo != null">
        ic_card_no,
      </if>
      <if test="totalAmount != null">
        total_amount,
      <if test="waterLevel != null">
        water_level,
      </if>
      <if test="instantAmount != null">
        instant_amount,
      <if test="waterPress != null">
        water_press,
      </if>
      <if test="remainMoney != null">
        remain_money,
      <if test="waterInstant != null">
        water_instant,
      </if>
      <if test="rtuDt != null">
        rtu_dt,
      <if test="waterTotal != null">
        water_total,
      </if>
      <if test="eleTotal != null">
        ele_total,
      </if>
      <if test="moneyRemain != null">
        money_remain,
      </if>
      <if test="waterRemain != null">
        water_remain,
      </if>
      <if test="thisEle != null">
        this_ele,
      </if>
      <if test="thisWater != null">
        this_water,
      </if>
      <if test="thisMoney != null">
        this_money,
      </if>
      <if test="thisDuration != null">
        this_duration,
      </if>
      <if test="waterPrice != null">
        water_price,
      </if>
      <if test="elePrice != null">
        ele_price,
      </if>
      <if test="aVolt != null">
        a_volt,
      </if>
      <if test="bVolt != null">
        b_volt,
      </if>
      <if test="cVolt != null">
        c_volt,
      </if>
      <if test="aCurrent != null">
        a_current,
      </if>
      <if test="bCurrent != null">
        b_current,
      </if>
      <if test="cCurrent != null">
        c_current,
      </if>
      <if test="batteryVolt != null">
        battery_volt,
      </if>
      <if test="waterMeterTransVolt != null">
        water_meter_trans_volt,
      </if>
      <if test="waterMeterWorkVolt != null">
        water_meter_work_volt,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
@@ -101,20 +195,83 @@
      <if test="dt != null">
        #{dt,jdbcType=TIMESTAMP},
      </if>
      <if test="rtuDt != null">
        #{rtuDt,jdbcType=TIMESTAMP},
      </if>
      <if test="orderNo != null">
        #{orderNo,jdbcType=VARCHAR},
      </if>
      <if test="icCardAddr != null">
        #{icCardAddr,jdbcType=VARCHAR},
      </if>
      <if test="icCardNo != null">
        #{icCardNo,jdbcType=VARCHAR},
      </if>
      <if test="totalAmount != null">
        #{totalAmount,jdbcType=DOUBLE},
      <if test="waterLevel != null">
        #{waterLevel,jdbcType=FLOAT},
      </if>
      <if test="instantAmount != null">
        #{instantAmount,jdbcType=DOUBLE},
      <if test="waterPress != null">
        #{waterPress,jdbcType=FLOAT},
      </if>
      <if test="remainMoney != null">
        #{remainMoney,jdbcType=DOUBLE},
      <if test="waterInstant != null">
        #{waterInstant,jdbcType=FLOAT},
      </if>
      <if test="rtuDt != null">
        #{rtuDt,jdbcType=TIMESTAMP},
      <if test="waterTotal != null">
        #{waterTotal,jdbcType=FLOAT},
      </if>
      <if test="eleTotal != null">
        #{eleTotal,jdbcType=FLOAT},
      </if>
      <if test="moneyRemain != null">
        #{moneyRemain,jdbcType=FLOAT},
      </if>
      <if test="waterRemain != null">
        #{waterRemain,jdbcType=FLOAT},
      </if>
      <if test="thisEle != null">
        #{thisEle,jdbcType=FLOAT},
      </if>
      <if test="thisWater != null">
        #{thisWater,jdbcType=FLOAT},
      </if>
      <if test="thisMoney != null">
        #{thisMoney,jdbcType=FLOAT},
      </if>
      <if test="thisDuration != null">
        #{thisDuration,jdbcType=INTEGER},
      </if>
      <if test="waterPrice != null">
        #{waterPrice,jdbcType=FLOAT},
      </if>
      <if test="elePrice != null">
        #{elePrice,jdbcType=FLOAT},
      </if>
      <if test="aVolt != null">
        #{aVolt,jdbcType=FLOAT},
      </if>
      <if test="bVolt != null">
        #{bVolt,jdbcType=FLOAT},
      </if>
      <if test="cVolt != null">
        #{cVolt,jdbcType=FLOAT},
      </if>
      <if test="aCurrent != null">
        #{aCurrent,jdbcType=FLOAT},
      </if>
      <if test="bCurrent != null">
        #{bCurrent,jdbcType=FLOAT},
      </if>
      <if test="cCurrent != null">
        #{cCurrent,jdbcType=FLOAT},
      </if>
      <if test="batteryVolt != null">
        #{batteryVolt,jdbcType=FLOAT},
      </if>
      <if test="waterMeterTransVolt != null">
        #{waterMeterTransVolt,jdbcType=FLOAT},
      </if>
      <if test="waterMeterWorkVolt != null">
        #{waterMeterWorkVolt,jdbcType=FLOAT},
      </if>
    </trim>
  </insert>
@@ -134,20 +291,83 @@
      <if test="dt != null">
        dt = #{dt,jdbcType=TIMESTAMP},
      </if>
      <if test="rtuDt != null">
        rtu_dt = #{rtuDt,jdbcType=TIMESTAMP},
      </if>
      <if test="orderNo != null">
        order_no = #{orderNo,jdbcType=VARCHAR},
      </if>
      <if test="icCardAddr != null">
        ic_card_addr = #{icCardAddr,jdbcType=VARCHAR},
      </if>
      <if test="icCardNo != null">
        ic_card_no = #{icCardNo,jdbcType=VARCHAR},
      </if>
      <if test="totalAmount != null">
        total_amount = #{totalAmount,jdbcType=DOUBLE},
      <if test="waterLevel != null">
        water_level = #{waterLevel,jdbcType=FLOAT},
      </if>
      <if test="instantAmount != null">
        instant_amount = #{instantAmount,jdbcType=DOUBLE},
      <if test="waterPress != null">
        water_press = #{waterPress,jdbcType=FLOAT},
      </if>
      <if test="remainMoney != null">
        remain_money = #{remainMoney,jdbcType=DOUBLE},
      <if test="waterInstant != null">
        water_instant = #{waterInstant,jdbcType=FLOAT},
      </if>
      <if test="rtuDt != null">
        rtu_dt = #{rtuDt,jdbcType=TIMESTAMP},
      <if test="waterTotal != null">
        water_total = #{waterTotal,jdbcType=FLOAT},
      </if>
      <if test="eleTotal != null">
        ele_total = #{eleTotal,jdbcType=FLOAT},
      </if>
      <if test="moneyRemain != null">
        money_remain = #{moneyRemain,jdbcType=FLOAT},
      </if>
      <if test="waterRemain != null">
        water_remain = #{waterRemain,jdbcType=FLOAT},
      </if>
      <if test="thisEle != null">
        this_ele = #{thisEle,jdbcType=FLOAT},
      </if>
      <if test="thisWater != null">
        this_water = #{thisWater,jdbcType=FLOAT},
      </if>
      <if test="thisMoney != null">
        this_money = #{thisMoney,jdbcType=FLOAT},
      </if>
      <if test="thisDuration != null">
        this_duration = #{thisDuration,jdbcType=INTEGER},
      </if>
      <if test="waterPrice != null">
        water_price = #{waterPrice,jdbcType=FLOAT},
      </if>
      <if test="elePrice != null">
        ele_price = #{elePrice,jdbcType=FLOAT},
      </if>
      <if test="aVolt != null">
        a_volt = #{aVolt,jdbcType=FLOAT},
      </if>
      <if test="bVolt != null">
        b_volt = #{bVolt,jdbcType=FLOAT},
      </if>
      <if test="cVolt != null">
        c_volt = #{cVolt,jdbcType=FLOAT},
      </if>
      <if test="aCurrent != null">
        a_current = #{aCurrent,jdbcType=FLOAT},
      </if>
      <if test="bCurrent != null">
        b_current = #{bCurrent,jdbcType=FLOAT},
      </if>
      <if test="cCurrent != null">
        c_current = #{cCurrent,jdbcType=FLOAT},
      </if>
      <if test="batteryVolt != null">
        battery_volt = #{batteryVolt,jdbcType=FLOAT},
      </if>
      <if test="waterMeterTransVolt != null">
        water_meter_trans_volt = #{waterMeterTransVolt,jdbcType=FLOAT},
      </if>
      <if test="waterMeterWorkVolt != null">
        water_meter_work_volt = #{waterMeterWorkVolt,jdbcType=FLOAT},
      </if>
    </set>
    where id = #{id,jdbcType=BIGINT}
@@ -159,11 +379,32 @@
      intake_id = #{intakeId,jdbcType=BIGINT},
      rtu_addr = #{rtuAddr,jdbcType=VARCHAR},
      dt = #{dt,jdbcType=TIMESTAMP},
      rtu_dt = #{rtuDt,jdbcType=TIMESTAMP},
      order_no = #{orderNo,jdbcType=VARCHAR},
      ic_card_addr = #{icCardAddr,jdbcType=VARCHAR},
      ic_card_no = #{icCardNo,jdbcType=VARCHAR},
      total_amount = #{totalAmount,jdbcType=DOUBLE},
      instant_amount = #{instantAmount,jdbcType=DOUBLE},
      remain_money = #{remainMoney,jdbcType=DOUBLE},
      rtu_dt = #{rtuDt,jdbcType=TIMESTAMP}
      water_level = #{waterLevel,jdbcType=FLOAT},
      water_press = #{waterPress,jdbcType=FLOAT},
      water_instant = #{waterInstant,jdbcType=FLOAT},
      water_total = #{waterTotal,jdbcType=FLOAT},
      ele_total = #{eleTotal,jdbcType=FLOAT},
      money_remain = #{moneyRemain,jdbcType=FLOAT},
      water_remain = #{waterRemain,jdbcType=FLOAT},
      this_ele = #{thisEle,jdbcType=FLOAT},
      this_water = #{thisWater,jdbcType=FLOAT},
      this_money = #{thisMoney,jdbcType=FLOAT},
      this_duration = #{thisDuration,jdbcType=INTEGER},
      water_price = #{waterPrice,jdbcType=FLOAT},
      ele_price = #{elePrice,jdbcType=FLOAT},
      a_volt = #{aVolt,jdbcType=FLOAT},
      b_volt = #{bVolt,jdbcType=FLOAT},
      c_volt = #{cVolt,jdbcType=FLOAT},
      a_current = #{aCurrent,jdbcType=FLOAT},
      b_current = #{bCurrent,jdbcType=FLOAT},
      c_current = #{cCurrent,jdbcType=FLOAT},
      battery_volt = #{batteryVolt,jdbcType=FLOAT},
      water_meter_trans_volt = #{waterMeterTransVolt,jdbcType=FLOAT},
      water_meter_work_volt = #{waterMeterWorkVolt,jdbcType=FLOAT}
    where id = #{id,jdbcType=BIGINT}
  </update>
</mapper>
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml
@@ -21,7 +21,8 @@
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
    select 
    <include refid="Base_Column_List" />
<!--    <include refid="Base_Column_List" />-->
    *
    from se_virtual_card
    where id = #{id,jdbcType=BIGINT}
  </select>
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java
@@ -161,6 +161,12 @@
            if(ServerProperties.cacheUpDownDataMaxCount <= ServerProperties.cacheUpDownDataWarnCount){
                throw new Exception("cacheUpDownDataMaxCount必须大于cacheUpDownDataWarnCount") ;
            }
            //没有上行数据的分钟数,达到这个分钟数,认为RTU断网了,取值范围是2_100
            ServerProperties.disconnectedByNoUpDataMinutes =  0L + conf.getSetAttrPlusInt(doc, "config.base", "disconnectedByNoUpDataMinutes", null, 1, 100, null) ;
            if(ServerProperties.disconnectedByNoUpDataMinutes < 1 || ServerProperties.disconnectedByNoUpDataMinutes > 100){
                throw new Exception("disconnectedByNoUpDataMinutes取值必须是1~100") ;
            }
            ServerProperties.disconnectedByNoUpDataMinutes = ServerProperties.disconnectedByNoUpDataMinutes * 60 * 1000 ;
            //设置ID生成器的后缀
            IDLongGenerator.setSuffix(ServerProperties.dbDataIdSuffix.intValue());
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/ServerProperties.java
@@ -33,4 +33,7 @@
    //上下行数据缓存队列中缓存数据个数的最大值,这个与实体项目所接水表数相关
    public static Integer cacheUpDownDataMaxCount = 1100000 ;
    //没有上行数据的分钟数,达到这个分钟数,认为RTU断网了,取值范围是2000_100000
    public static Long disconnectedByNoUpDataMinutes = 3000L ;
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSession.java
@@ -9,4 +9,5 @@
    public String protocolName ;//通信协议名称
    public Long lastDownComTime ;//上次下发命令时刻(毫秒时刻 System.currentTimeMillis())
    public Long lastUpDataTime ;//上次收到上行数据时刻(毫秒时刻 System.currentTimeMillis())
    public Long lastUpDataTimeForOnlineCtrl ;//上次收到上行数据时刻(毫秒时刻 System.currentTimeMillis()),用于上线情况控制
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java
@@ -2,12 +2,10 @@
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.*;
import java.util.Map.Entry;
import com.dy.common.util.DateTime;
import org.apache.mina.core.session.IoSession;
import com.dy.rtuMw.server.ServerProperties;
@@ -189,27 +187,54 @@
        TcpSession tcpSe = sessionTable.get(rtuAddr) ;
        if(tcpSe != null){
            tcpSe.lastUpDataTime = System.currentTimeMillis() ;
            tcpSe.lastUpDataTimeForOnlineCtrl = System.currentTimeMillis() ;
        }
    }
    
    /**
     * 更新上行数据时刻
     * 当上行数据时刻已经过去一定时长,上行数据时刻清空
     * 当一定时间内没有上行数据,则认为RTU离线
     */
    public static void updateUpDataTime(Long now){
    public static void updateRtuStatus(Long now){
        synchronized (sessionTable){
            Iterator<TcpSession> it = sessionTable.values().iterator() ;
            Set<Map.Entry<String, TcpSession>> entrySet = sessionTable.entrySet() ;
            Iterator<Map.Entry<String, TcpSession>> it = entrySet.iterator() ;
            Map.Entry<String, TcpSession> entry ;
            TcpSession tcpSe ;
            while(it.hasNext()){
                tcpSe = it.next() ;
                entry = it.next() ;
                tcpSe = entry.getValue();
                if(tcpSe.lastUpDataTime != null){
                    if(now - tcpSe.lastUpDataTime > ServerProperties.lastUpDataTimeLive){
                        tcpSe.lastUpDataTime = null ;
                    }
                }
                if(tcpSe.lastUpDataTimeForOnlineCtrl != null){
                    if(tcpSe.ioSession != null && tcpSe.ioSession.isConnected()){
                        if(now - tcpSe.lastUpDataTimeForOnlineCtrl > ServerProperties.disconnectedByNoUpDataMinutes){
                            tcpSe.ioSession.closeNow() ;
                        }
                    }
                }
            }
        }
    }
//    public static void updateRtuStatus(Long now){
//        synchronized (sessionTable){
//            Iterator<TcpSession> it = sessionTable.values().iterator() ;
//            TcpSession tcpSe ;
//            while(it.hasNext()){
//                tcpSe = it.next() ;
//                if(tcpSe.lastUpDataTime != null){
//                    if(now - tcpSe.lastUpDataTime > ServerProperties.lastUpDataTimeLive){
//                        tcpSe.lastUpDataTime = null ;
//                    }
//                }
//            }
//        }
//    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java
@@ -31,10 +31,6 @@
    @Autowired
    private RmAlarmStateHistoryMapper rmAlarmStateHistoryMapperDao ;//控制器历史报警和状态DAO
    @Autowired
    private RmAutoReportLastMapper rmAutoReportLastMapperDao ;//控制器最新上报数据DAO
    @Autowired
    private RmAutoReportHistoryMapper rmAutoReportHistoryMapperDao ;//控制器历史上报数据DAO
    @Autowired
    private RmOpenCloseValveLastMapper rmOpenCloseValveLastMapperDao ;//控制器最新开关阀上报数据DAO
    @Autowired
    private RmOpenCloseValveHistoryMapper rmOpenCloseValveHistoryMapperDao ;//控制器历史开关阀上报数据DAO
@@ -50,6 +46,11 @@
    private RmCommandHistoryMapper rmCommandHistoryDao ;//远程命令日志相关
    @Autowired
    private SeVirtualCardMapper seVirtualCardDao ;//虚拟卡相关
    @Autowired
    private RmTimingReportHistoryMapper rmTimingReportHistoryDao; // 定点上报历史数据DAO
    @Autowired
    private RmTimingReportLastMapper rmTimingReportLastDao; // 定点上报最新数据DAO
    //@Autowired
    //@Lazy
@@ -156,47 +157,50 @@
    /////////////////////////////////////////////////
    //
    // 主动上报数据功能
    // 定点报数据功能
    //
    ////////////////////////////////////////////////
    /**
     * 得到控制器上报数据最新记录
     * 保存控制器定点上报历史数据
     * @param po
     */
    @Transactional(rollbackFor = Exception.class)
    public void saveRmTimingReportHistory(RmTimingReportHistory po){
        this.rmTimingReportHistoryDao.insert(po);
    }
    /**
     * 根据阀控器地址获取定点上报最新数据
     * @param rtuAddr
     * @return
     */
    public RmAutoReportLast getRmAutoReportLast(String rtuAddr){
        List<RmAutoReportLast> list = rmAutoReportLastMapperDao.selectByRtuAddr(rtuAddr) ;
    @Transactional(rollbackFor = Exception.class)
    public RmTimingReportLast getRmTimingReportLast(String rtuAddr) {
        List<RmTimingReportLast> list = this.rmTimingReportLastDao.getRmTimingReportLast(rtuAddr) ;
        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) ;
    }
    /**
     * 保存控制器上报数据最新记录
     * @param po
     */
    @Transactional(rollbackFor = Exception.class)
    public void updateRmAutoReportLast(RmAutoReportLast po){
        this.rmAutoReportLastMapperDao.updateByPrimaryKeySelective(po) ;
    }
    /**
     * 保存控制器上报数据历史记录
     * @param po
     */
    @Transactional(rollbackFor = Exception.class)
    public void saveRmAutoReportHistory(RmAutoReportHistory po){
        this.rmAutoReportHistoryMapperDao.insert(po) ;
    public void saveRmTimingReportLast(RmTimingReportLast po) {
        this.rmTimingReportLastDao.insert(po);
    }
    /**
     * 保存控制器定点上报罪行数据
     * @param po
     */
    @Transactional(rollbackFor = Exception.class)
    public void updateRmTimingReportLast(RmTimingReportLast po) {
        this.rmTimingReportLastDao.updateByPrimaryKeySelective(po);
    }
    /////////////////////////////////////////////////
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealAlarmStatus.java
@@ -46,6 +46,7 @@
                            PrController controller = (PrController) objs[1];
                            this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dataCd81Vo.rtuDt, dV1_0_1, dataCd81Vo.alarmVo, dataCd81Vo.stateVo);
                            this.saveHistory(sv, controller, d.getRtuAddr(), dataCd81Vo.rtuDt, dV1_0_1, dataCd81Vo.alarmVo, dataCd81Vo.stateVo);
                            this.updateVirCardNoUseState(sv, controller, dataCd81Vo.stateVo) ;
                        }
                    } else if (cdObj instanceof DataCd84Vo) {
                        DataCd84Vo dataCd84Vo = (DataCd84Vo)cdObj ;
@@ -55,6 +56,7 @@
                            PrController controller = (PrController) objs[1];
                            this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dataCd84Vo.rtuDt, dV1_0_1, dataCd84Vo.alarmVo, dataCd84Vo.stateVo);
                            this.saveHistory(sv, controller, d.getRtuAddr(), dataCd84Vo.rtuDt, dV1_0_1, dataCd84Vo.alarmVo, dataCd84Vo.stateVo);
                            this.updateVirCardNoUseState(sv, controller, dataCd84Vo.stateVo) ;
                        }
                    } else if (cdObj instanceof DataCdC0Vo) {
                        DataCdC0Vo dataCdC0Vo = (DataCdC0Vo)cdObj ;
@@ -64,6 +66,7 @@
                            PrController controller = (PrController) objs[1];
                            this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dataCdC0Vo.rtuDt, dV1_0_1, dataCdC0Vo.alarmVo, dataCdC0Vo.stateVo);
                            this.saveHistory(sv, controller, d.getRtuAddr(), dataCdC0Vo.rtuDt, dV1_0_1, dataCdC0Vo.alarmVo, dataCdC0Vo.stateVo);
                            this.updateVirCardNoUseState(sv, controller, dataCdC0Vo.stateVo) ;
                        }
                    }
                } catch (Exception e) {
@@ -109,7 +112,6 @@
            sv.saveRmAlarmStateLast(po) ;
        }else{
            po = this.update(controller, po, rtuDt, dV1_0_1, alarmVo, stateVo) ;
            this.updateVirCardNoUseState(sv, controller, stateVo) ;
            sv.updateRmAlarmStateLast(po);
        }
    }
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealAutoReport.java
@@ -1,14 +1,11 @@
package com.dy.rtuMw.server.rtuData.p206V1_0_0;
import com.dy.common.mw.protocol.Data;
import com.dy.common.mw.protocol.p206V1_0_0.DataV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCdC0Vo;
import com.dy.pipIrrGlobal.pojoPr.PrController;
import com.dy.rtuMw.server.rtuData.TaskSurpport;
import com.dy.rtuMw.server.rtuData.dbSv.DbSv;
import com.dy.common.mw.protocol.Data;
import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCdC0Vo;
import com.dy.common.mw.protocol.p206V1_0_0.DataV1_0_1;
import com.dy.common.util.DateTime;
import com.dy.pipIrrGlobal.pojoPr.PrController;
import com.dy.pipIrrGlobal.pojoRm.RmAutoReportHistory;
import com.dy.pipIrrGlobal.pojoRm.RmAutoReportLast;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -56,19 +53,19 @@
     * @param dataCdC0Vo 自报数据对象
     */
    private void saveOrUpdateLast(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCdC0Vo dataCdC0Vo) throws Exception {
        RmAutoReportLast po = sv.getRmAutoReportLast(rtuAddr) ;
        if(po == null){
            po = new RmAutoReportLast(null, controller==null?null:controller.getId(), controller==null?null:controller.getId(),
                    rtuAddr,
                    DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
                    DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCdC0Vo.rtuDt),
                    dataCdC0Vo.instantAmount, dataCdC0Vo.totalAmount, dataCdC0Vo.lossAmount,
                    dataCdC0Vo.waterPress, dataCdC0Vo.batteryVolt, dataCdC0Vo.sunVolt, dataCdC0Vo.signalValue) ;
            sv.saveRmAutoReportLast(po) ;
        }else{
            po = this.update(controller, po, dV1_0_1, dataCdC0Vo) ;
            sv.updateRmAutoReportLast(po);
        }
        //RmAutoReportLast po = sv.getRmAutoReportLast(rtuAddr) ;
        //if(po == null){
        //    po = new RmAutoReportLast(null, controller==null?null:controller.getId(), controller==null?null:controller.getId(),
        //            rtuAddr,
        //            DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
        //            DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCdC0Vo.rtuDt),
        //            dataCdC0Vo.instantAmount, dataCdC0Vo.totalAmount, dataCdC0Vo.lossAmount,
        //            dataCdC0Vo.waterPress, dataCdC0Vo.batteryVolt, dataCdC0Vo.sunVolt, dataCdC0Vo.signalValue) ;
        //    sv.saveRmAutoReportLast(po) ;
        //}else{
        //    po = this.update(controller, po, dV1_0_1, dataCdC0Vo) ;
        //    sv.updateRmAutoReportLast(po);
        //}
    }
    /**
@@ -78,31 +75,31 @@
     * @param rtuAddr 控制器地址
     * @param dataCdC0Vo 自报数据对象
     */
    private void saveHistory(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCdC0Vo dataCdC0Vo) throws Exception {
        RmAutoReportHistory po = new RmAutoReportHistory(null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(),
                rtuAddr,
                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCdC0Vo.rtuDt),
                dataCdC0Vo.instantAmount, dataCdC0Vo.totalAmount, dataCdC0Vo.lossAmount,
                dataCdC0Vo.waterPress, dataCdC0Vo.batteryVolt, dataCdC0Vo.sunVolt, dataCdC0Vo.signalValue) ;
        sv.saveRmAutoReportHistory(po) ;
    }
    //private void saveHistory(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCdC0Vo dataCdC0Vo) throws Exception {
    //    RmAutoReportHistory po = new RmAutoReportHistory(null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(),
    //            rtuAddr,
    //            DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
    //            DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCdC0Vo.rtuDt),
    //            dataCdC0Vo.instantAmount, dataCdC0Vo.totalAmount, dataCdC0Vo.lossAmount,
    //            dataCdC0Vo.waterPress, dataCdC0Vo.batteryVolt, dataCdC0Vo.sunVolt, dataCdC0Vo.signalValue) ;
    //    sv.saveRmAutoReportHistory(po) ;
    //}
    private RmAutoReportLast update(PrController controller, RmAutoReportLast po, DataV1_0_1 dV1_0_1, DataCdC0Vo dataCdC0Vo) throws Exception {
        po.controllerid = controller==null?null:controller.getId();
        po.intakeid = controller==null?null:controller.getIntakeId();
        po.dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt);
        po.rtudt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCdC0Vo.rtuDt) ;
        po.instantamount = dataCdC0Vo.instantAmount;
        po.totalamount = dataCdC0Vo.totalAmount;
        po.lossamount = dataCdC0Vo.lossAmount;
        po.waterpress = dataCdC0Vo.waterPress;
        po.batteryvolt = dataCdC0Vo.batteryVolt;
        po.sunvolt = dataCdC0Vo.sunVolt;
        po.signalvalue = dataCdC0Vo.signalValue;
        return po ;
    }
    //private RmAutoReportLast update(PrController controller, RmAutoReportLast po, DataV1_0_1 dV1_0_1, DataCdC0Vo dataCdC0Vo) throws Exception {
    //    po.controllerid = controller==null?null:controller.getId();
    //    po.intakeid = controller==null?null:controller.getIntakeId();
    //
    //    po.dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt);
    //    po.rtudt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCdC0Vo.rtuDt) ;
    //    po.instantamount = dataCdC0Vo.instantAmount;
    //    po.totalamount = dataCdC0Vo.totalAmount;
    //    po.lossamount = dataCdC0Vo.lossAmount;
    //    po.waterpress = dataCdC0Vo.waterPress;
    //    po.batteryvolt = dataCdC0Vo.batteryVolt;
    //    po.sunvolt = dataCdC0Vo.sunVolt;
    //    po.signalvalue = dataCdC0Vo.signalValue;
    //    return po ;
    //}
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealLoss.java
@@ -36,16 +36,16 @@
        Object subD = d.getSubData();
        if (subD != null) {
            DataV1_0_1 dV1_0_1 = (DataV1_0_1) subD;
//            if (dV1_0_1 != null && dV1_0_1.dataCdC0Vo != null) {
//                Object[] objs = this.getTaskResults(TkPreGenObjs.taskId);
//                DbSv sv = (DbSv) objs[0];
//                PrController controller = (PrController) objs[1];
//                try {
//                    this.doDeal(sv, controller, d.getRtuAddr(), dV1_0_1, dV1_0_1.dataCdC0Vo);
//                } catch (Exception e) {
//                    log.error("保存控制器开阀上报时发生异常", e);
//                }
//            }
            if (dV1_0_1 != null && dV1_0_1.subData != null && dV1_0_1.subData instanceof DataCdC0Vo) {
                Object[] objs = this.getTaskResults(TkPreGenObjs.taskId);
                DbSv sv = (DbSv) objs[0];
                PrController controller = (PrController) objs[1];
                try {
                    this.doDeal(sv, controller, d.getRtuAddr(), dV1_0_1, (DataCdC0Vo)dV1_0_1.subData);
                } catch (Exception e) {
                    log.error("保存遥测站自报实时数据中的漏损数据时发生异常", e);
                }
            }
        }
    }
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealWorkReport.java
@@ -55,7 +55,7 @@
     * @param dataCd84Vo 工作报数据对象
     */
    private void doDeal(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd84Vo dataCd84Vo) throws Exception {
        this.saveLast(sv, controller, rtuAddr, dV1_0_1, dataCd84Vo);
        this.saveOrUpdateLast(sv, controller, rtuAddr, dV1_0_1, dataCd84Vo);
        this.saveHistory(sv, controller, rtuAddr, dV1_0_1, dataCd84Vo);
    }
@@ -67,30 +67,30 @@
     * @param dV1_0_1
     * @param dataCd84Vo
     */
    private void saveLast(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd84Vo dataCd84Vo) throws Exception {
        RmWorkReportLast po = sv.getRmWorkReportLast(rtuAddr) ;
        if(po == null){
            po = new RmWorkReportLast(null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(),
                    rtuAddr,
                    DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
                    DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd84Vo.rtuDt),
                    dataCd84Vo.cardNo,
                    dataCd84Vo.totalAmount,
                    dataCd84Vo.instantAmount,
                    dataCd84Vo.remainMoney) ;
            sv.saveRmWorkReportLast(po) ;
        }else{
            po.controllerId = controller==null?null:controller.getId();
            po.intakeId = controller==null?null:controller.getIntakeId();
            po.dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt);
            po.rtuDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd84Vo.rtuDt);
            po.icCardNo = dataCd84Vo.cardNo;
            po.totalAmount = dataCd84Vo.totalAmount;
            po.instantAmount = dataCd84Vo.instantAmount;
            po.remainMoney = dataCd84Vo.remainMoney;
            sv.updateRmWorkReportLast(po);
        }
    private void saveOrUpdateLast(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd84Vo dataCd84Vo) throws Exception {
//        RmWorkReportLast po = sv.getRmWorkReportLast(rtuAddr) ;
//        if(po == null){
//            po = new RmWorkReportLast(null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(),
//                    rtuAddr,
//                    DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
//                    DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd84Vo.rtuDt),
//                    dataCd84Vo.cardNo,
//                    dataCd84Vo.totalAmount,
//                    dataCd84Vo.instantAmount,
//                    dataCd84Vo.remainMoney) ;
//            sv.saveRmWorkReportLast(po) ;
//        }else{
//            po.controllerId = controller==null?null:controller.getId();
//            po.intakeId = controller==null?null:controller.getIntakeId();
//
//            po.dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt);
//            po.rtuDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd84Vo.rtuDt);
//            po.icCardNo = dataCd84Vo.cardNo;
//            po.totalAmount = dataCd84Vo.totalAmount;
//            po.instantAmount = dataCd84Vo.instantAmount;
//            po.remainMoney = dataCd84Vo.remainMoney;
//            sv.updateRmWorkReportLast(po);
//        }
    }
    /**
     * 保存阀开工作报历史数据
@@ -101,15 +101,15 @@
     * @param dataCd84Vo
     */
    private void saveHistory(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd84Vo dataCd84Vo) throws Exception {
        RmWorkReportHistory po = new RmWorkReportHistory(null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(),
                rtuAddr,
                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd84Vo.rtuDt),
                dataCd84Vo.cardNo,
                dataCd84Vo.totalAmount,
                dataCd84Vo.instantAmount,
                dataCd84Vo.remainMoney) ;
        sv.saveRmWorkReportHistory(po) ;
//        RmWorkReportHistory po = new RmWorkReportHistory(null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(),
//                rtuAddr,
//                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
//                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd84Vo.rtuDt),
//                dataCd84Vo.cardNo,
//                dataCd84Vo.totalAmount,
//                dataCd84Vo.instantAmount,
//                dataCd84Vo.remainMoney) ;
//        sv.saveRmWorkReportHistory(po) ;
    }
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkFindReport.java
@@ -31,7 +31,10 @@
        Data d = (Data)data ;
        if(d.getCommandId() == null || d.getCommandId().trim().equals("")){
            //无命令ID
            this.toNextTasks(data);
            Object dataP206V1_0_0 = d.getSubData() ;
            if(dataP206V1_0_0 != null) {
                this.toNextTasks(data);
            }
        }
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealAlarmStatusV202404.java
@@ -30,42 +30,41 @@
    @Override
    public void execute(Object data) {
        Data d = (Data)data ;
        DataV202404 dV202404 = (DataV202404)d.getSubData()  ;//前面任务已经判断不为null
        DataV202404 dV202404 = (DataV202404)d.getSubData() ;
        Object cdObj = dV202404.subData ;
        if(cdObj != null){
            try{
                Object[] objs = this.getTaskResults(TkPreGenObjsV202404.taskId) ;
                DbSv sv = (DbSv)objs[0] ;
                PrController controller = (PrController)objs[1] ;
                if(cdObj instanceof DataCd81Vo){
                    //设备终端随机自报
                    DataCd81Vo cdData = (DataCd81Vo)(cdObj) ;
                    this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
                    this.saveHistory(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
                }else if(cdObj instanceof DataCd80_5BVo){
                    //设备终端工作上报 + 查询设备终端实时值
                    DataCd80_5BVo cdData = (DataCd80_5BVo)(cdObj) ;
                    this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
                    this.saveHistory(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
                }else if(cdObj instanceof DataCd93_A3Vo){
                    //平台/APP远程关闭水泵/阀门   +  刷卡关泵/阀上报
                    DataCd93_A3Vo cdData = (DataCd93_A3Vo)(cdObj) ;
                    this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.endDt, cdData, dV202404.dt) ;
                    this.saveHistory(sv, controller, d.getRtuAddr(), cdData.endDt, cdData, dV202404.dt) ;
                }else if(cdObj instanceof DataCd84Vo){
                    //设备终端随机自报
                    DataCd84Vo cdData = (DataCd84Vo)(cdObj) ;
                    this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.opDt, cdData, dV202404.dt) ;
                    this.saveHistory(sv, controller, d.getRtuAddr(), cdData.opDt, cdData, dV202404.dt) ;
                }else if(cdObj instanceof DataCdC2Vo){
                    //设备终端随机自报
                    DataCdC2Vo cdData = (DataCdC2Vo)(cdObj) ;
                    this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
                    this.saveHistory(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
                }
            }catch (Exception e){
                log.error("保存控制器报警和状态数据时发生异常", e);
        //前面任务已经判断cdObj不为null
        try{
            Object[] objs = this.getTaskResults(TkPreGenObjsV202404.taskId) ;
            DbSv sv = (DbSv)objs[0] ;
            PrController controller = (PrController)objs[1] ;
            if(cdObj instanceof DataCd81Vo){
                //设备终端随机自报
                DataCd81Vo cdData = (DataCd81Vo)(cdObj) ;
                this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
                this.saveHistory(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
            }else if(cdObj instanceof DataCd80_5BVo){
                //设备终端工作上报 + 查询设备终端实时值
                DataCd80_5BVo cdData = (DataCd80_5BVo)(cdObj) ;
                this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
                this.saveHistory(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
            }else if(cdObj instanceof DataCd93_A3Vo){
                //平台/APP远程关闭水泵/阀门   +  刷卡关泵/阀上报
                DataCd93_A3Vo cdData = (DataCd93_A3Vo)(cdObj) ;
                this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.endDt, cdData, dV202404.dt) ;
                this.saveHistory(sv, controller, d.getRtuAddr(), cdData.endDt, cdData, dV202404.dt) ;
            }else if(cdObj instanceof DataCd84Vo){
                //设备终端刷卡开泵/阀上报
                DataCd84Vo cdData = (DataCd84Vo)(cdObj) ;
                this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.opDt, cdData, dV202404.dt) ;
                this.saveHistory(sv, controller, d.getRtuAddr(), cdData.opDt, cdData, dV202404.dt) ;
            }else if(cdObj instanceof DataCdC2Vo){
                //设备终端开关水泵/阀门成功/失败上报
                DataCdC2Vo cdData = (DataCdC2Vo)(cdObj) ;
                this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
                this.saveHistory(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
            }
        }catch (Exception e){
            log.error("保存控制器报警和状态数据时发生异常", e);
        }
    }
    /**
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealTimingReportV202404.java
@@ -2,8 +2,10 @@
import com.dy.common.mw.protocol.Data;
import com.dy.common.mw.protocol.p206V202404.DataV202404;
import com.dy.common.mw.protocol.p206V202404.upVos.*;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd83Vo;
import com.dy.pipIrrGlobal.pojoPr.PrController;
import com.dy.pipIrrGlobal.pojoRm.RmTimingReportHistory;
import com.dy.pipIrrGlobal.pojoRm.RmTimingReportLast;
import com.dy.rtuMw.server.rtuData.TaskSurpport;
import com.dy.rtuMw.server.rtuData.dbSv.DbSv;
import org.apache.logging.log4j.LogManager;
@@ -12,7 +14,7 @@
/**
 * @Author: liurunyu
 * @Date: 2024/5/20 20:29
 * @Description
 * @Description 控制器定时上报(功能码83)
 */
public class TkDealTimingReportV202404  extends TaskSurpport {
@@ -37,14 +39,66 @@
                DbSv sv = (DbSv) objs[0];
                PrController controller = (PrController) objs[1];
                if (cdObj instanceof DataCd83Vo) {
                    //设备终端定点上报, 每天12点上报数据
                    DataCd83Vo cdData = (DataCd83Vo) (cdObj);
                    //this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt);
                    //this.saveHistory(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt);
                    this.doDeal(sv, controller, d.getRtuAddr(), dV202404, (DataCd83Vo)cdObj);
                }
            } catch (Exception e) {
                log.error("保存控制器报警和状态数据时发生异常", e);
                log.error("保存控制器控制器定时报数据时发生异常", e);
            }
        }
    }
    /**
     * 处理阀开工作报数据
     * @param sv 服务
     * @param controller 控制器对象
     * @param rtuAddr 控制器地址
     * @param dataV202404 协议数据
     * @param cdData 功能数据
     */
    private void doDeal(DbSv sv, PrController controller, String rtuAddr, DataV202404 dataV202404, DataCd83Vo cdData) throws Exception {
        this.saveOrUpdateLast(sv, controller, rtuAddr, dataV202404, cdData);
        this.saveHistory(sv, controller, rtuAddr, dataV202404, cdData);
    }
    /**
     * 保存或更新控制器工作报最新数据
     * @param sv 服务bean
     * @param controller 控制器对象
     * @param rtuAddr 控制器地址
     * @param dataV202404 协议数据
     * @param cdData 功能数据
     */
    private void saveOrUpdateLast(DbSv sv, PrController controller, String rtuAddr, DataV202404 dataV202404, DataCd83Vo cdData)throws Exception {
        RmTimingReportLast po = sv.getRmTimingReportLast(rtuAddr) ;
        if(po == null){
            po = new RmTimingReportLast();
            po.controllerId = controller==null?null:controller.getId();
            po.intakeId = controller==null?null:controller.getIntakeId();
            po.rtuAddr = rtuAddr;
            po.valueFrom(dataV202404, cdData);
            sv.saveRmTimingReportLast(po) ;
        }else{
            po.controllerId = controller==null?null:controller.getId();
            po.intakeId = controller==null?null:controller.getIntakeId();
            po.valueFrom(dataV202404, cdData);
            sv.updateRmTimingReportLast(po);
        }
    }
    /**
     * 保存控制器工作报历史数据
     * @param sv 服务bean
     * @param controller 控制器对象
     * @param rtuAddr 控制器地址
     * @param dataV202404 协议数据
     * @param cdData 功能数据
     */
    private void saveHistory(DbSv sv, PrController controller, String rtuAddr, DataV202404 dataV202404, DataCd83Vo cdData)throws Exception {
        RmTimingReportHistory po = new RmTimingReportHistory();
        po.controllerId = controller==null?null:controller.getId();
        po.intakeId = controller==null?null:controller.getIntakeId();
        po.rtuAddr = rtuAddr;
        po.valueFrom(dataV202404, cdData);
        sv.saveRmTimingReportHistory(po); ;
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealWorkReportV202404.java
New file
@@ -0,0 +1,62 @@
package com.dy.rtuMw.server.rtuData.p206V202404;
import com.dy.common.mw.protocol.Data;
import com.dy.common.mw.protocol.p206V202404.DataV202404;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd80_5BVo;
import com.dy.pipIrrGlobal.pojoPr.PrController;
import com.dy.rtuMw.server.rtuData.TaskSurpport;
import com.dy.rtuMw.server.rtuData.dbSv.DbSv;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
 * @author ZhuBaoMin
 * @date 2024-06-14 11:23
 * @LastEditTime 2024-06-14 11:23
 * @Description 控制器阀开工作上报数据
 */
public class TkDealWorkReportV202404 extends TaskSurpport {
    private static final Logger log = LogManager.getLogger(TkDealTimingReportV202404.class.getName());
    //类ID,一定与Tree.xml配置文件中配置一致
    public static final String taskId = "TkDealWorkReportV202404";
    /**
     * 执行节点任务:处理阀控器阀开工作上报数据
     * @param data 需要处理的数据
     */
    @Override
    public void execute(Object data) {
        Data d = (Data) data;
        DataV202404 dV202404 = (DataV202404) d.getSubData();//前面任务已经判断不为null
        //Object cdObj = dV202404.subData;
        //if (cdObj != null) {
        //    try {
        //        Object[] objs = this.getTaskResults(TkPreGenObjsV202404.taskId);
        //        DbSv sv = (DbSv) objs[0];
        //        PrController controller = (PrController) objs[1];
        //        if (cdObj instanceof DataCd83Vo) {
        //            //设备终端定点上报, 每天12点上报数据
        //            DataCd83Vo cdData = (DataCd83Vo) (cdObj);
        //            //this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt);
        //            //this.saveHistory(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt);
        //        }
        //    } catch (Exception e) {
        //        log.error("保存控制器报警和状态数据时发生异常", e);
        //    }
        //}
    }
    /**
     * 保存阀开工作报历史数据
     * @param sv
     * @param controller
     * @param rtuAddr
     * @param dV202404
     * @param dataCd80_5BVo
     */
    private void saveHistory(DbSv sv, PrController controller, String rtuAddr, DataV202404 dV202404, DataCd80_5BVo dataCd80_5BVo) {
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealWorkingReportV202404.java
New file
@@ -0,0 +1,103 @@
package com.dy.rtuMw.server.rtuData.p206V202404;
import com.dy.common.mw.protocol.Data;
import com.dy.common.mw.protocol.p206V202404.DataV202404;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd80_5BVo;
import com.dy.pipIrrGlobal.pojoPr.PrController;
import com.dy.pipIrrGlobal.pojoRm.RmWorkReportHistory;
import com.dy.pipIrrGlobal.pojoRm.RmWorkReportLast;
import com.dy.rtuMw.server.rtuData.TaskSurpport;
import com.dy.rtuMw.server.rtuData.dbSv.DbSv;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
 * @Author: liurunyu
 * @Date: 2024/6/14 9:19
 * @Description 处理控制器工作报(功能码80)
 */
public class TkDealWorkingReportV202404 extends TaskSurpport {
    private static final Logger log = LogManager.getLogger(TkDealWorkingReportV202404.class.getName());
    //类ID,一定与Tree.xml配置文件中配置一致
    public static final String taskId = "TkDealWorkingReportV202404";
    /**
     * 执行节点任务:报警及状态
     *
     * @param data 需要处理的数据
     */
    @Override
    public void execute(Object data) {
        Data d = (Data)data ;
        DataV202404 dV202404 = (DataV202404)d.getSubData() ;
        Object cdObj = dV202404.subData ;
        //前面任务已经判断cdObj不为null
        try {
            Object[] objs = this.getTaskResults(TkPreGenObjsV202404.taskId);
            DbSv sv = (DbSv) objs[0];
            PrController controller = (PrController) objs[1];
            if (cdObj instanceof DataCd80_5BVo) {
                DataCd80_5BVo cdData = (DataCd80_5BVo) (cdObj);
                this.doDeal(sv, controller, d.getRtuAddr(), dV202404, (DataCd80_5BVo)cdObj);
            }
        } catch (Exception e) {
            log.error("保存处理控制器工作报数据时发生异常", e);
        }
    }
    /**
     * 处理阀开工作报数据
     * @param sv 服务
     * @param controller 控制器对象
     * @param rtuAddr 控制器地址
     * @param dataV202404 协议数据
     * @param cdData 功能数据
     */
    private void doDeal(DbSv sv, PrController controller, String rtuAddr, DataV202404 dataV202404, DataCd80_5BVo cdData) throws Exception {
        this.saveOrUpdateLast(sv, controller, rtuAddr, dataV202404, cdData);
        this.saveHistory(sv, controller, rtuAddr, dataV202404, cdData);
    }
    /**
     * 保存或更新控制器工作报最新数据
     * @param sv 服务bean
     * @param controller 控制器对象
     * @param rtuAddr 控制器地址
     * @param dataV202404 协议数据
     * @param cdData 功能数据
     */
    private void saveOrUpdateLast(DbSv sv, PrController controller, String rtuAddr, DataV202404 dataV202404, DataCd80_5BVo cdData)throws Exception {
        RmWorkReportLast po = sv.getRmWorkReportLast(rtuAddr) ;
        if(po == null){
            po = new RmWorkReportLast();
            po.controllerId = controller==null?null:controller.getId();
            po.intakeId = controller==null?null:controller.getIntakeId();
            po.rtuAddr = rtuAddr;
            po.valueFrom(dataV202404, cdData);
            sv.saveRmWorkReportLast(po) ;
        }else{
            po.controllerId = controller==null?null:controller.getId();
            po.intakeId = controller==null?null:controller.getIntakeId();
            po.valueFrom(dataV202404, cdData);
            sv.updateRmWorkReportLast(po);
        }
    }
    /**
     * 保存控制器工作报历史数据
     * @param sv 服务bean
     * @param controller 控制器对象
     * @param rtuAddr 控制器地址
     * @param dataV202404 协议数据
     * @param cdData 功能数据
     */
    private void saveHistory(DbSv sv, PrController controller, String rtuAddr, DataV202404 dataV202404, DataCd80_5BVo cdData)throws Exception {
        RmWorkReportHistory po = new RmWorkReportHistory();
        po.controllerId = controller==null?null:controller.getId();
        po.intakeId = controller==null?null:controller.getIntakeId();
        po.rtuAddr = rtuAddr;
        po.valueFrom(dataV202404, cdData);
        sv.saveRmWorkReportHistory(po); ;
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkFindReportV202404.java
@@ -29,8 +29,8 @@
        Data d = (Data)data ;
        if(d.getCommandId() == null || d.getCommandId().trim().equals("")){
            //无命令ID
            Object protocolData = d.getSubData() ;
            if(protocolData != null) {
            DataV202404 dataP206V202404 = (DataV202404)d.getSubData() ;
            if(dataP206V202404 != null && dataP206V202404.subData != null) {
                this.toNextTasks(data);
            }
        }
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/ToRtuConstantTask.java
@@ -37,7 +37,7 @@
     * 处理TCP缓存中的各个TCP Session的上行数据时刻
     */
    private void dealTcpSession(){
        TcpSessionCache.updateUpDataTime(System.currentTimeMillis() ) ;
        TcpSessionCache.updateRtuStatus(System.currentTimeMillis() ) ;
    }
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/RtuDataDealTree.xml
@@ -38,8 +38,9 @@
                    <task id="TkDealControllerNoTrampV202404" name="非流浪者RTU" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealControllerNoTrampV202404">
                        <!-- 识别非命令应答上行数据 -->
                        <task id="TkFindReportV202404" name="识别非命令应答上行数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkFindReportV202404">
                            <task id="TkDealAlarmStatusV202404" name="控制器报警与状态数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealAlarmStatusV202404" />
                            <task id="TkDealTimingReportV202404" name="控制器定时上报数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealTimingReportV202404" />
                            <task id="TkDealAlarmStatusV202404" name="控制器报警与状态" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealAlarmStatusV202404" />
                            <task id="TkDealWorkingReportV202404" name="控制器工作报(功能码80)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealWorkingReportV202404" />
                            <task id="TkDealTimingReportV202404" name="控制器定时上报(功能码83)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealTimingReportV202404" />
                        </task>
                        <!-- 识别命令响应数据 -->
                        <task id="TkFindComResponseV202404" name="识别响应命令数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkFindComResponseV202404">
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/application-database.yml
@@ -4,6 +4,7 @@
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://192.168.91.73:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
#        url: jdbc:mysql://127.0.0.1:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
        username: root
        password: dysql,;.abc!@#
        druid:
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml
@@ -16,6 +16,7 @@
        dbDataIdSuffix:数据库数据id生成器的id后缀,0是默认的后缀,一般web系统应用,数据中间件id后缀大于等于1 
        cacheUpDownDataWarnCount:上下行数据缓存队列中缓存数据个数的报警量,这个与现实项目所接水表数相关
        cacheUpDownDataMaxCount:上下行数据缓存队列中缓存数据个数的最大值,这个与现实项目所接水表数相关
        disconnectedByNoUpDataMinutes:没有上行数据的分钟数,达到这个分钟数,认为RTU断网了,取值范围是2_100
         -->
        <base 
            isLowPower="false"
@@ -28,6 +29,7 @@
            dbDataIdSuffix="0"
            cacheUpDownDataWarnCount="100000"
            cacheUpDownDataMaxCount="110000"
            disconnectedByNoUpDataMinutes="3"
        />
        
        <!-- 
pipIrr-platform/pipIrr-web/pipIrr-web-demo/pipIrr-web-demo.iml
New file
@@ -0,0 +1,219 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
  <component name="FacetManager">
    <facet type="web" name="Web">
      <configuration>
        <webroots />
        <sourceRoots>
          <root url="file://$MODULE_DIR$/src/main/java" />
          <root url="file://$MODULE_DIR$/src/main/resources" />
          <root url="file://$MODULE_DIR$/target/generated-sources/annotations" />
        </sourceRoots>
      </configuration>
    </facet>
    <facet type="Spring" name="Spring">
      <configuration />
    </facet>
  </component>
  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_16">
    <output url="file://$MODULE_DIR$/target/classes" />
    <output-test url="file://$MODULE_DIR$/target/test-classes" />
    <content url="file://$MODULE_DIR$">
      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/target/generated-sources/annotations" isTestSource="false" generated="true" />
      <excludeFolder url="file://$MODULE_DIR$/${project.build.directory}/classes" />
      <excludeFolder url="file://$MODULE_DIR$/${project.build.directory}/test-classes" />
      <excludeFolder url="file://$MODULE_DIR$/target" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="module" module-name="pipIrr-common" />
    <orderEntry type="library" name="Maven: org.apache.mina:mina-core:2.2.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.9" level="project" />
    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.16" level="project" />
    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.15" level="project" />
    <orderEntry type="library" name="Maven: org.quartz-scheduler:quartz:2.3.2" level="project" />
    <orderEntry type="library" name="Maven: com.mchange:mchange-commons-java:0.2.15" level="project" />
    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-slf4j-impl:2.20.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.20.0" level="project" />
    <orderEntry type="module" module-name="pipIrr-global" />
    <orderEntry type="library" name="Maven: com.alibaba:easyexcel:3.1.0" level="project" />
    <orderEntry type="library" name="Maven: com.alibaba:easyexcel-core:3.1.0" level="project" />
    <orderEntry type="library" name="Maven: com.alibaba:easyexcel-support:3.1.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.poi:poi:4.1.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.4" level="project" />
    <orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.6.1" level="project" />
    <orderEntry type="library" name="Maven: com.zaxxer:SparseBitSet:1.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:4.1.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.19" level="project" />
    <orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.06" level="project" />
    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:4.1.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:3.1.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.commons:commons-csv:1.8" level="project" />
    <orderEntry type="library" name="Maven: org.ehcache:ehcache:3.2.3" level="project" />
    <orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:4.10.0" level="project" />
    <orderEntry type="library" name="Maven: com.squareup.okio:okio-jvm:3.0.0" level="project" />
    <orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22" level="project" />
    <orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.22" level="project" />
    <orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib-common:1.8.22" level="project" />
    <orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib:1.8.22" level="project" />
    <orderEntry type="library" name="Maven: org.jetbrains:annotations:13.0" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:3.1.3" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:3.1.3" level="project" />
    <orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:2.1.1" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:3.1.3" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:10.1.12" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:10.1.12" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-web:6.0.11" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-beans:6.0.11" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:6.0.11" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-aop:6.0.11" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-expression:6.0.11" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-validation:3.1.3" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:10.1.12" level="project" />
    <orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:8.0.1.Final" level="project" />
    <orderEntry type="library" name="Maven: jakarta.validation:jakarta.validation-api:3.0.2" level="project" />
    <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.5.3.Final" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.5.1" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.springframework.boot:spring-boot-devtools:3.1.3" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:3.1.3" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:3.1.3" level="project" />
    <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.28" level="project" />
    <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.20" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-log4j2:3.1.3" level="project" />
    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-slf4j2-impl:2.20.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-core:2.20.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-jul:2.20.0" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.15.2" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-actuator:3.1.3" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-actuator-autoconfigure:3.1.3" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-actuator:3.1.3" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.15.2" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.15.2" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.15.2" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.15.2" level="project" />
    <orderEntry type="library" name="Maven: io.micrometer:micrometer-observation:1.11.2" level="project" />
    <orderEntry type="library" name="Maven: io.micrometer:micrometer-commons:1.11.2" level="project" />
    <orderEntry type="library" name="Maven: io.micrometer:micrometer-core:1.11.2" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.hdrhistogram:HdrHistogram:2.1.12" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.latencyutils:LatencyUtils:2.0.3" level="project" />
    <orderEntry type="library" name="Maven: org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0" level="project" />
    <orderEntry type="library" name="Maven: org.webjars:swagger-ui:5.2.0" level="project" />
    <orderEntry type="library" name="Maven: org.springdoc:springdoc-openapi-starter-webmvc-api:2.2.0" level="project" />
    <orderEntry type="library" name="Maven: org.springdoc:springdoc-openapi-starter-common:2.2.0" level="project" />
    <orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-core-jakarta:2.2.15" level="project" />
    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.12.0" level="project" />
    <orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-annotations-jakarta:2.2.15" level="project" />
    <orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-models-jakarta:2.2.15" level="project" />
    <orderEntry type="library" name="Maven: org.springdoc:springdoc-openapi-security:1.7.0" level="project" />
    <orderEntry type="library" name="Maven: org.springdoc:springdoc-openapi-common:1.7.0" level="project" />
    <orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-core:2.2.9" level="project" />
    <orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-annotations:2.2.9" level="project" />
    <orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-models:2.2.9" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-core:6.1.2" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-crypto:6.1.2" level="project" />
    <orderEntry type="library" name="Maven: com.mysql:mysql-connector-j:8.0.33" level="project" />
    <orderEntry type="library" name="Maven: com.alibaba:druid-spring-boot-starter:1.2.20" level="project" />
    <orderEntry type="library" name="Maven: com.alibaba:druid:1.2.20" level="project" />
    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:2.0.7" level="project" />
    <orderEntry type="library" name="Maven: org.glassfish.jaxb:jaxb-runtime:4.0.3" level="project" />
    <orderEntry type="library" name="Maven: org.glassfish.jaxb:jaxb-core:4.0.3" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.eclipse.angus:angus-activation:2.0.1" level="project" />
    <orderEntry type="library" name="Maven: org.glassfish.jaxb:txw2:4.0.3" level="project" />
    <orderEntry type="library" name="Maven: com.sun.istack:istack-commons-runtime:4.1.2" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.5.3.2" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.5.3.2" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.5.3.2" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.5.3.2" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.5.3.2" level="project" />
    <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:4.6" level="project" />
    <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.13" level="project" />
    <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.1.1" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:3.1.3" level="project" />
    <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:5.0.1" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:6.0.11" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-tx:6.0.11" level="project" />
    <orderEntry type="library" name="Maven: cglib:cglib:3.3.0" level="project" />
    <orderEntry type="library" name="Maven: org.ow2.asm:asm:7.1" level="project" />
    <orderEntry type="library" name="Maven: com.alibaba.fastjson2:fastjson2:2.0.40" level="project" />
    <orderEntry type="library" name="Maven: com.alibaba.fastjson2:fastjson2-extension-spring6:2.0.40" level="project" />
    <orderEntry type="library" name="Maven: com.alibaba.fastjson2:fastjson2-extension:2.0.40" level="project" />
    <orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.5.5.Final" level="project" />
    <orderEntry type="library" name="Maven: org.mapstruct:mapstruct-processor:1.5.5.Final" level="project" />
    <orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.8.21" level="project" />
    <orderEntry type="library" name="Maven: org.jdom:jdom2:2.0.6.1" level="project" />
    <orderEntry type="library" name="Maven: org.apache.dubbo:dubbo:3.2.7" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-context:6.0.11" level="project" />
    <orderEntry type="library" name="Maven: com.alibaba.spring:spring-context-support:1.0.11" level="project" />
    <orderEntry type="library" name="Maven: org.javassist:javassist:3.21.0-GA" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-all:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-codec-dns:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-codec-haproxy:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-codec-http:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-codec-http2:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-codec-memcache:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-codec-mqtt:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-codec-redis:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-codec-smtp:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-codec-socks:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-codec-stomp:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-codec-xml:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-transport-native-unix-common:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-handler-proxy:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-handler-ssl-ocsp:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-resolver-dns:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-transport-rxtx:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-transport-sctp:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-transport-udt:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-transport-classes-epoll:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-transport-classes-kqueue:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: io.netty:netty-resolver-dns-classes-macos:4.1.94.Final" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-epoll:linux-x86_64:4.1.94.Final" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-epoll:linux-aarch_64:4.1.94.Final" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-kqueue:osx-x86_64:4.1.94.Final" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-kqueue:osx-aarch_64:4.1.94.Final" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-resolver-dns-native-macos:osx-x86_64:4.1.94.Final" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-resolver-dns-native-macos:osx-aarch_64:4.1.94.Final" level="project" />
    <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.33" level="project" />
    <orderEntry type="library" name="Maven: com.alibaba:hessian-lite:3.2.13" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:3.1.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:3.1.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:3.1.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.8.0" level="project" />
    <orderEntry type="library" name="Maven: jakarta.xml.bind:jakarta.xml.bind-api:4.0.0" level="project" />
    <orderEntry type="library" name="Maven: jakarta.activation:jakarta.activation-api:2.1.2" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.4.11" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:2.4.11" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.24.2" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy:1.14.6" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest:2.2" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter:5.9.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-api:5.9.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.opentest4j:opentest4j:1.2.0" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-commons:1.9.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.apiguardian:apiguardian-api:1.1.2" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-params:5.9.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-engine:5.9.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-engine:1.9.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:5.3.1" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.14.6" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:3.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-junit-jupiter:5.3.1" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.5.1" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-core:6.0.11" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:6.0.11" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:6.0.11" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.9.1" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.13.2" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:2.2" level="project" />
  </component>
</module>
pipIrr-platform/pipIrr-web/pipIrr-web-sell/pom.xml
@@ -40,6 +40,12 @@
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.1</version>
        </dependency>
        <!--OkHttp-->
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/ClientCtrl.java
@@ -513,6 +513,7 @@
        String sessionKey = job.getString("session_key");
        Long clientId = clientSv.getClientIdByPhone(phoneNumber);
        String SessionId = "";
        if(clientId != null) {
            // 添加微信用户账户记录
            SeOpenId seOpenId = new SeOpenId();
@@ -520,7 +521,11 @@
            seOpenId.setOpenId(openid);
            seOpenId.setSessionKey(sessionKey);
            seOpenId.setCreateTime(new Date());
            Long SessionId = clientSv.addOpenId(seOpenId);
            //Long SessionId = clientSv.addOpenId(seOpenId);
            Long rec = clientSv.addOpenId(seOpenId);
            if(rec != null) {
                SessionId = String.valueOf(rec);
            }
            return BaseResponseUtils.buildSuccess(SessionId);
        } else {
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/ClientSv.java
@@ -174,7 +174,8 @@
     */
    public Long addOpenId(SeOpenId po) {
        seOpenIdMapper.insert(po);
        return po.getClientId();
        //return po.getClientId();
        return po.getId();
    }
    /**
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/wechatpay/PayInfo.java
@@ -41,7 +41,6 @@
    /*
     * 支付结果通知API
     */
    //public static String notifyUrl = "https://www.muxiaobao.com/api/Payment/OrderNotify";
    public static String notifyUrl = "https://44978f7456.imdo.co/sell/payment/orderNotify";
    /*
@@ -67,12 +66,14 @@
    /*
     * 小程序唯一标识
     */
    public static String appid = "wxbc2b6a00dd904ead";
    //public static String appid = "wxbc2b6a00dd904ead";
    public static String appid = "wxf773810cd5643196";
    /*
     * 小程序的 app secret
     */
    public static String secret = "796ffe3e9921f756db0499e80d6ed0cd";
    //public static String secret = "796ffe3e9921f756db0499e80d6ed0cd";
    public static String secret = "080d4f947095551e988cfe9338e27f15";
    /*
     * 小程序的授权类型,登录凭证校验使用
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/wechatpay/PaymentCtrl.java
@@ -18,6 +18,7 @@
import com.dy.pipIrrSell.virtualCard.enums.LastOperateENUM;
import com.dy.pipIrrSell.virtualCard.enums.RefundItemStateENUM;
import com.dy.pipIrrSell.wallet.enums.RefundStatusENUM;
import com.dy.pipIrrSell.wechatpay.dto.Code2Session;
import com.dy.pipIrrSell.wechatpay.dto.DtoOrder;
import com.dy.pipIrrSell.wechatpay.dto.NotifyResource;
import com.dy.pipIrrSell.wechatpay.dto.OrderNotify;
@@ -73,6 +74,7 @@
    private final String privateCertFileName = PayInfo.privateCertFileName;
    private final String appid = PayInfo.appid;
    private final String secret = PayInfo.secret;
    private final String mchid = PayInfo.mchid;
    private final String schema = PayInfo.schema;
    private final String signType = PayInfo.signType;
@@ -83,6 +85,68 @@
    // 平台证书公钥
    private final Map CERTIFICATE_MAP = new HashMap();
    /**
     * 登录凭证校验,农户绑定账号逻辑包含登录凭证校验,此接口作废
     * @param code2Session 登录凭证校验传入对象
     * @param bindingResult
     * @return
     * @throws Exception
     */
    @Operation(summary = "登录凭证校验", description = "登录凭证校验")
    @ApiResponses(value = {
            @ApiResponse(
                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
                    description = "操作结果:true:成功,false:失败(BaseResponse.content)",
                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                            schema = @Schema(implementation = Boolean.class))}
            )
    })
    @PostMapping(path = "getSessionId")
    @Transactional(rollbackFor = Exception.class)
    @SsoAop()
    public BaseResponse<Boolean> getSessionId(@RequestBody @Valid Code2Session code2Session, BindingResult bindingResult) throws Exception {
        if(bindingResult != null && bindingResult.hasErrors()){
            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        }
        String phoneNumber = code2Session.getPhoneNumber();
        String jsCode = code2Session.getJs_code();
        Map<String, Object> queryParams = new HashMap<>();
        queryParams.put("appid", appid);
        queryParams.put("secret", secret);
        queryParams.put("js_code", jsCode);
        queryParams.put("grant_type", grantType);
        Map<String, String> headerParams = new HashMap<>();
        JSONObject job = restTemplateUtil.get(loginUrl, queryParams, headerParams);
        if(job.getLong("errcode") != null && job.getLong("errcode") >= -1) {
            return BaseResponseUtils.buildFail("登录凭证校验失败");
        }
        String openid = job.getString("openid");
        String sessionKey = job.getString("session_key");
        Long clientId = clientSv.getClientIdByPhone(phoneNumber);
        String SessionId = "";
        if(clientId != null) {
            // 添加微信用户账户记录
            SeOpenId seOpenId = new SeOpenId();
            seOpenId.setClientId(clientId);
            seOpenId.setOpenId(openid);
            seOpenId.setSessionKey(sessionKey);
            seOpenId.setCreateTime(new Date());
            Long rec = clientSv.addOpenId(seOpenId);
            if(rec != null) {
                SessionId = String.valueOf(rec);
            }
            return BaseResponseUtils.buildSuccess(SessionId);
        } else {
            return BaseResponseUtils.buildError(SellResultCode.PHONE_NUMBER_IS_ERROR.getMessage());
        }
    }
    /**
     * 下载微信支付平台证书 测试完废除
@@ -221,6 +285,7 @@
        if(job_result == null) {
            return BaseResponseUtils.buildFail(SellResultCode.RECHARGE_ADD_FAIL.getMessage());
        }
        return BaseResponseUtils.buildSuccess(job_result) ;
    }
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/wechatpay/dto/Code2Session.java
@@ -36,4 +36,10 @@
    @Schema(description = "js_code", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @NotBlank(message = "js_code不能为空")
    private String js_code;
    /**
     * 手机号
     */
    @NotBlank(message = "手机号不能为空")
    private String phoneNumber;
}