From 9c0d574df29258bed16ae02344d652e385f0ab4d Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期三, 31 七月 2024 16:15:17 +0800 Subject: [PATCH] 通信中间件对报警的取水口间隔发送消息实现 --- pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java | 6 +- pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml | 2 + pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateLast.java | 5 ++ pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateLastMapper.xml | 20 ++++++++-- pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/ServerProperties.java | 3 + pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkFindP206V1_0_0.java | 2 - pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealAlarmStatus.java | 22 ++++++++++ pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataAlarmVo.java | 28 ++++++++++++++ 8 files changed, 78 insertions(+), 10 deletions(-) diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataAlarmVo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataAlarmVo.java index fcae238..86c3e72 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataAlarmVo.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataAlarmVo.java @@ -9,6 +9,34 @@ public Byte meter ;//娴侀噺璁℃晠闅� public Byte valve ;//闃�闂� + public boolean hasAlarm(){ + boolean flag = false ; + if((batteryVolt != null && batteryVolt == 1) || + (loss != null && loss == 1) || + (meter != null && meter == 1) || + (valve != null && valve == 1)){ + flag = true ; + } + return flag ; + } + + public String alarmContent(){ + String txt = "" ; + if(batteryVolt != null && batteryVolt == 1){ + txt += "钃勭數姹犵數鍘嬫姤璀�" ; + } + if(meter != null && meter == 1){ + txt += "锛屾祦閲忚鏁呴殰鎶ヨ" ; + } + if(valve != null && valve == 1){ + txt += "锛岄榾闂ㄦ晠闅滄姤璀�" ; + } + if(loss != null && loss == 1){ + txt += "锛屾紡鎹熸姤璀�" ; + } + return txt ; + } + public String toString(){ StringBuilder str = new StringBuilder() ; str.append(" 鎶ヨ:\n"); diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateLast.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateLast.java index fe09f57..3ce7ed9 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateLast.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateLast.java @@ -160,6 +160,11 @@ */ public Byte powerType; + /** + * 鍙戦�佹秷鎭椂鍒� + */ + public Long sendMsTime ; + public void valueFrom(DataV1_0_1 dV1_0_1, String rtuDt, DataAlarmVo alarmVo, DataStateVo stateVo) throws Exception{ this.dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt) ; this.rtuDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(rtuDt) ; diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateLastMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateLastMapper.xml index 187f1e9..738601c 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateLastMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateLastMapper.xml @@ -28,13 +28,14 @@ <result column="alarm_battery_volt" jdbcType="TINYINT" property="alarmBatteryVolt" /> <result column="alarm_valve" jdbcType="TINYINT" property="alarmValve" /> <result column="power_type" jdbcType="TINYINT" property="alarmValve" /> + <result column="send_ms_time" jdbcType="BIGINT" property="sendMsTime" /> </resultMap> <sql id="Base_Column_List"> <!--@mbg.generated--> id, controller_id, intake_id, rtu_addr, dt, rtu_dt, valve_state, alarm_remain_water, alarm0_water_remain, alarm_exceed_year, alarm_water_meter_fault, alarm_loss, alarm_water_meter_break, alarm_ele_meter_fault, alarm0_money_remain, alarm_inner_door, alarm_outer_door, alarm_ele_miss, - alarm_ele_exceed, alarm_ele_low_volt, state_ic_enable,alarm_battery_volt,alarm_valve,power_type + alarm_ele_exceed, alarm_ele_low_volt, state_ic_enable,alarm_battery_volt,alarm_valve,power_type,send_ms_time </sql> <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> <!--@mbg.generated--> @@ -64,7 +65,8 @@ alarm_loss, alarm_water_meter_break, alarm_ele_meter_fault, alarm0_money_remain, alarm_inner_door, alarm_outer_door, alarm_ele_miss, alarm_ele_exceed, alarm_ele_low_volt, - state_ic_enable,alarm_battery_volt,alarm_valve,power_type) + state_ic_enable,alarm_battery_volt,alarm_valve,power_type, + send_ms_time) values (#{id,jdbcType=BIGINT}, #{controllerId,jdbcType=BIGINT}, #{intakeId,jdbcType=BIGINT}, #{rtuAddr,jdbcType=VARCHAR}, #{dt,jdbcType=TIMESTAMP}, #{rtuDt,jdbcType=TIMESTAMP}, #{valveState,jdbcType=TINYINT}, #{alarmRemainWater,jdbcType=TINYINT}, #{alarm0WaterRemain,jdbcType=TINYINT}, @@ -73,7 +75,7 @@ #{alarm0MoneyRemain,jdbcType=TINYINT}, #{alarmInnerDoor,jdbcType=TINYINT}, #{alarmOuterDoor,jdbcType=TINYINT}, #{alarmEleMiss,jdbcType=TINYINT}, #{alarmEleExceed,jdbcType=TINYINT}, #{alarmEleLowVolt,jdbcType=TINYINT}, #{stateIcEnable,jdbcType=TINYINT}, #{alarmBatteryVolt,jdbcType=TINYINT}, #{alarmValve,jdbcType=TINYINT}, - #{powerType,jdbcType=TINYINT}) + #{powerType,jdbcType=TINYINT},#{sendMsTime,jdbcType=BIGINT}) </insert> <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAlarmStateLast"> <!--@mbg.generated--> @@ -151,6 +153,9 @@ <if test="powerType != null"> power_type, </if> + <if test="sendMsTime != null"> + send_ms_time, + </if> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="id != null"> @@ -224,6 +229,9 @@ </if> <if test="powerType != null"> #{powerType,jdbcType=TINYINT}, + </if> + <if test="sendMsTime != null"> + #{sendMsTime,jdbcType=BIGINT}, </if> </trim> </insert> @@ -300,6 +308,9 @@ <if test="powerType != null"> power_type = #{powerType,jdbcType=TINYINT}, </if> + <if test="sendMsTime != null"> + send_ms_time = #{sendMsTime,jdbcType=BIGINT}, + </if> </set> where id = #{id,jdbcType=BIGINT} </update> @@ -328,7 +339,8 @@ state_ic_enable = #{stateIcEnable,jdbcType=TINYINT}, alarm_battery_volt = #{alarmBatteryVolt,jdbcType=TINYINT}, alarm_valve = #{alarmValve,jdbcType=TINYINT}, - power_type = #{powerType,jdbcType=TINYINT} + power_type = #{powerType,jdbcType=TINYINT}, + send_ms_time = #{powerType,jdbcType=BIGINT} where id = #{id,jdbcType=BIGINT} </update> <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇璁板綍鎬绘暟--> diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java index 2dd5d45..7e6e557 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java @@ -189,9 +189,9 @@ //宸ヤ綔鎶ュお棰戠箒锛孨娆′笂鎶ュ鐞�1娆★紝鍙栧�艰寖鍥存槸1-100 ServerProperties.workReportDealOneByTimes = conf.getSetAttrPlusInt(doc, "config.base", "workReportDealOneByTimes", null, 1, 100, null) ; - if(ServerProperties.workReportDealOneByTimes < 1 || ServerProperties.workReportDealOneByTimes > 100){ - throw new Exception("workReportDealOneByTimes鍙栧�煎繀椤绘槸1~100") ; - } + + //鏈夋姤璀﹀彂鐢熸椂锛屽悜閽夐拤鍙戦�佹秷鎭殑闂撮殧鏃堕暱锛堝垎閽燂級 + ServerProperties.sendDingDingAlarmMsInterval = conf.getSetAttrPlusInt(doc, "config.base", "sendDingDingAlarmMsInterval", null, 1, 600, null) ; //璁剧疆ID鐢熸垚鍣ㄧ殑鍚庣紑 IDLongGenerator.setSuffix(ServerProperties.dbDataIdSuffix.intValue()); diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/ServerProperties.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/ServerProperties.java index c68f753..46f9287 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/ServerProperties.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/ServerProperties.java @@ -46,4 +46,7 @@ //宸ヤ綔鎶ュお棰戠箒锛孨娆′笂鎶ュ鐞�1娆� public static Integer workReportDealOneByTimes = 5 ; + //鏈夋姤璀﹀彂鐢熸椂锛屽悜閽夐拤鍙戦�佹秷鎭殑闂撮殧鏃堕暱锛堝垎閽燂級 + public static Integer sendDingDingAlarmMsInterval = 60 ; + } diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealAlarmStatus.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealAlarmStatus.java index a29a46a..5263b6e 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealAlarmStatus.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealAlarmStatus.java @@ -3,6 +3,7 @@ import com.dy.common.mw.protocol.p206V1_0_0.upVos.*; import com.dy.common.util.DateTime; import com.dy.pipIrrGlobal.pojoRm.RmAlarmStateHistory; +import com.dy.rtuMw.server.ServerProperties; import com.dy.rtuMw.server.rtuData.TaskSurpport; import com.dy.rtuMw.server.rtuData.dbSv.DbSv; import com.dy.common.mw.protocol.Data; @@ -92,8 +93,23 @@ po.intakeId = controller==null?null:controller.getIntakeId() ; po.rtuAddr = rtuAddr ; po.valueFrom(dV1_0_1, rtuDt, alarmVo, stateVo); + if(alarmVo.hasAlarm()){ + po.sendMsTime = System.currentTimeMillis() ; + this.sendMessage(controller, alarmVo); + } sv.saveRmAlarmStateLast(po) ; }else{ + if(po.sendMsTime == null){ + po.sendMsTime = System.currentTimeMillis() ; + this.sendMessage(controller, alarmVo); + }else{ + Long now = System.currentTimeMillis() ; + if(((now - po.sendMsTime) / (1000 * 60)) > ServerProperties.sendDingDingAlarmMsInterval){ + //澶т簬瑙勫畾鐨勯棿闅旀椂闂� + po.sendMsTime = System.currentTimeMillis() ; + this.sendMessage(controller, alarmVo); + } + } po = this.update(controller, po, rtuDt, dV1_0_1, alarmVo, stateVo) ; sv.updateRmAlarmStateLast(po); } @@ -129,7 +145,7 @@ /** - * 铏氭嫙鍗″湪鍙栨按涓殑鍗犵敤鐘舵�佹敼涓洪潪搴旂敤鐘舵�� + * 铏氭嫙鍗″湪鍙栨按鍙d笂鐨勫崰鐢ㄧ姸鎬佹敼涓洪潪搴旂敤鐘舵�� */ private void updateVirCardNoUseState(DbSv sv, PrController controller, @@ -146,4 +162,8 @@ } + private void sendMessage(PrController controller, DataAlarmVo alarmVo){ + String ms = "鍙栨按鍙�" + controller.getIntakeName() + "浜х敓鎶ヨ锛�" + alarmVo.alarmContent() ; + } + } diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkFindP206V1_0_0.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkFindP206V1_0_0.java index 4a4e9a4..0783065 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkFindP206V1_0_0.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkFindP206V1_0_0.java @@ -1,8 +1,6 @@ package com.dy.rtuMw.server.rtuData.p206V1_0_0; -import com.dy.common.mw.protocol.p206V1_0_0.DataV1_0_1; -import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCd02Vo; import com.dy.rtuMw.server.rtuData.TaskSurpport; import com.dy.common.mw.protocol.Data; import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml index fe018e1..8eabad2 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml @@ -20,6 +20,7 @@ cacheUpDownDataMaxCount锛氫笂涓嬭鏁版嵁缂撳瓨闃熷垪涓紦瀛樻暟鎹釜鏁扮殑鏈�澶у�硷紝杩欎釜涓庣幇瀹為」鐩墍鎺ユ按琛ㄦ暟鐩稿叧 disconnectedByNoUpDataMinutes锛氭病鏈変笂琛屾暟鎹殑鍒嗛挓鏁帮紝杈惧埌杩欎釜鍒嗛挓鏁帮紝璁や负RTU鏂綉浜嗭紝鍙栧�艰寖鍥存槸2-100 workReportDealOneByTimes: 宸ヤ綔鎶ュお棰戠箒锛孨娆′笂鎶ュ鐞�1娆★紝鍙栧�艰寖鍥存槸1-100 + sendDingDingAlarmMsInterval: 鏈夋姤璀﹀彂鐢熸椂锛屽悜閽夐拤鍙戦�佹秷鎭殑闂撮殧鏃堕暱锛堝垎閽燂級 --> <base orgTag="ym" @@ -36,6 +37,7 @@ cacheUpDownDataMaxCount="110000" disconnectedByNoUpDataMinutes="3" workReportDealOneByTimes="5" + sendDingDingAlarmMsInterval="60" /> <!-- -- Gitblit v1.8.0