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/pojoRm/RmTimingReportHistory.java
@@ -1,6 +1,14 @@ 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 io.swagger.v3.oas.annotations.media.Schema; import lombok.*; @@ -23,82 +31,99 @@ @NoArgsConstructor @AllArgsConstructor @Schema(name = "定时报历史数据表") public class RmTimingReportHistory { public class RmTimingReportHistory implements BaseEntity { public static final long serialVersionUID = 202406111447001L; /** * 主键 */ private Long id; @JSONField(serializeUsing= ObjectWriterImplToString.class) @TableId(type = IdType.INPUT) public Long id; /** * 控制器实体ID(外键) */ private Long controllerId; @JSONField(serializeUsing= ObjectWriterImplToString.class) public Long controllerId; /** * 取水口实体ID(外键) */ private Long intakeId; @JSONField(serializeUsing= ObjectWriterImplToString.class) public Long intakeId; /** * 控制器地址 */ private String rtuAddr; public String rtuAddr; /** * 数据接收日期时间 */ private Date dt; public Date dt; /** * 控制器时钟 */ private Date rtuDt; public Date rtuDt; /** * 数据时间 */ private Date dataDt; public Date dataDt; /** * 本年累计流量 */ private Double waterTotalAmountYear; public Double waterTotalAmountYear; /** * 水表累计流量 */ private Double waterTotalAmountMeter; public Double waterTotalAmountMeter; /** * 本年累计电量 */ private Double eleTotalAmountYear; public Double eleTotalAmountYear; /** * 电表累计电量 */ private Double eleTotalAmountMeter; public Double eleTotalAmountMeter; /** * 当日水表净流量 */ private Double waterTotalAmountDay; public Double waterTotalAmountDay; /** * 当日用户用水量 */ private Double waterUserTotalAmountDay; public Double waterUserTotalAmountDay; /** * 漏损水量 */ private Double lossTotalAmountDay; public Double lossTotalAmountDay; /** * 后备电池电压 */ private Double batteryVolt; 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,129 @@ 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 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; /** * 数据接收日期时间 */ public Date dt; /** * 控制器时钟 */ public Date rtuDt; /** * 数据时间 */ 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/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-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java
@@ -47,6 +47,11 @@ @Autowired private SeVirtualCardMapper seVirtualCardDao ;//虚拟卡相关 @Autowired private RmTimingReportHistoryMapper rmTimingReportHistoryDao; // 定点上报历史数据DAO @Autowired private RmTimingReportLastMapper rmTimingReportLastDao; // 定点上报最新数据DAO //@Autowired //@Lazy //private DbSv sv ; @@ -156,6 +161,47 @@ // //////////////////////////////////////////////// /** * 保存控制器定点上报历史数据 * @param po */ @Transactional(rollbackFor = Exception.class) public void saveRmTimingReportHistory(RmTimingReportHistory po){ this.rmTimingReportHistoryDao.insert(po); } /** * 根据阀控器地址获取定点上报最新数据 * @param rtuAddr * @return */ @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 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/p206V202404/TkDealTimingReportV202404.java
@@ -2,10 +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.RmWorkReportHistory; import com.dy.pipIrrGlobal.pojoRm.RmWorkReportLast; 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; @@ -69,19 +69,19 @@ * @param cdData 功能数据 */ private void saveOrUpdateLast(DbSv sv, PrController controller, String rtuAddr, DataV202404 dataV202404, DataCd83Vo cdData)throws Exception { RmWorkReportLast po = sv.getRmWorkReportLast(rtuAddr) ; RmTimingReportLast po = sv.getRmTimingReportLast(rtuAddr) ; if(po == null){ po = new RmWorkReportLast(); 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.saveRmWorkReportLast(po) ; sv.saveRmTimingReportLast(po) ; }else{ po.controllerId = controller==null?null:controller.getId(); po.intakeId = controller==null?null:controller.getIntakeId(); po.valueFrom(dataV202404, cdData); sv.updateRmWorkReportLast(po); sv.updateRmTimingReportLast(po); } } @@ -94,12 +94,11 @@ * @param cdData 功能数据 */ private void saveHistory(DbSv sv, PrController controller, String rtuAddr, DataV202404 dataV202404, DataCd83Vo cdData)throws Exception { RmWorkReportHistory po = new RmWorkReportHistory(); 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.saveRmWorkReportHistory(po); ; sv.saveRmTimingReportHistory(po); ; } } }