From 113e9363391f863d46d5667f8346e3708a6ff3cf Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期三, 31 七月 2024 19:09:49 +0800
Subject: [PATCH] 1、完善代码; 2、通信中间件对报警的取水口间隔发送消息改为独立任务完成。
---
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/pom.xml | 12 +++
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java | 2
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/SendMsConstantTask.java | 81 ++++++++++++++++++++
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/config/DingTalk.java | 20 +++-
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forMs/MsObj4Ding.java | 33 ++++++++
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateLastMapper.xml | 2
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forMs/SendMsCache.java | 68 +++++++++++++++++
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealAlarmStatus.java | 10 +
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/CommandP206V1_0_0Ctrl.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataAlarmVo.java | 8 +-
10 files changed, 223 insertions(+), 15 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 86c3e72..575caae 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
@@ -41,16 +41,16 @@
StringBuilder str = new StringBuilder() ;
str.append(" 鎶ヨ:\n");
str.append(" 钃勭數姹犵數鍘嬶細");
- str.append(batteryVolt==null?"":(batteryVolt==1?"鎶ヨ":"姝e父"));
+ str.append(batteryVolt==null?"":(batteryVolt==1?"鎶ヨ(1)":"姝e父(0)"));
str.append("\n");
str.append(" 婕忔崯锛� ");
- str.append(loss==null?"":(loss==1?"鎶ヨ":"姝e父"));
+ str.append(loss==null?"":(loss==1?"鎶ヨ(1)":"姝e父(0)"));
str.append("\n");
str.append(" 娴侀噺璁℃晠闅滐細");
- str.append(meter==null?"":(meter==1?"鎶ヨ":"姝e父"));
+ str.append(meter==null?"":(meter==1?"鎶ヨ(1)":"姝e父(0)"));
str.append("\n");
str.append(" 闃�闂細 ");
- str.append(valve==null?"":(valve==1?"鎶ヨ":"姝e父"));
+ str.append(valve==null?"":(valve==1?"鎶ヨ(1)":"姝e父(0)"));
return str.toString() ;
}
}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/config/DingTalk.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/config/DingTalk.java
index 67afbfc..e66f22b 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/config/DingTalk.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/config/DingTalk.java
@@ -5,6 +5,7 @@
import com.dingtalk.api.request.OapiRobotSendRequest;
import com.dingtalk.api.response.OapiRobotSendResponse;
import com.taobao.api.ApiException;
+import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@@ -23,7 +24,7 @@
* @LastEditTime 2024-07-31 9:20
* @Description 閽夐拤瀹㈡埛绔伐鍏风被
*/
-
+@Slf4j
@Component
public class DingTalk {
@Value("${dingtalk.robot.url}")
@@ -72,15 +73,22 @@
req.setText(text);
req.setAt(at);
OapiRobotSendResponse rsp = client.execute(req, CUSTOM_ROBOT_TOKEN);
- System.out.println(rsp.getBody());
+ log.info(rsp.getBody());
} catch (ApiException e) {
- e.printStackTrace();
+ log.error("閽夐拤鍙戦�佹秷鎭紓甯�", e);
+ //e.printStackTrace();
} catch (UnsupportedEncodingException e) {
- throw new RuntimeException(e);
+ log.error("閽夐拤鍙戦�佹秷鎭紓甯�", e);
+ //e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
- throw new RuntimeException(e);
+ log.error("閽夐拤鍙戦�佹秷鎭紓甯�", e);
+ //e.printStackTrace();
} catch (InvalidKeyException e) {
- throw new RuntimeException(e);
+ log.error("閽夐拤鍙戦�佹秷鎭紓甯�", e);
+ //e.printStackTrace();
+ } catch (Exception e){
+ log.error("閽夐拤鍙戦�佹秷鎭紓甯�", e);
+ //e.printStackTrace();
}
}
}
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 738601c..884118b 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateLastMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateLastMapper.xml
@@ -340,7 +340,7 @@
alarm_battery_volt = #{alarmBatteryVolt,jdbcType=TINYINT},
alarm_valve = #{alarmValve,jdbcType=TINYINT},
power_type = #{powerType,jdbcType=TINYINT},
- send_ms_time = #{powerType,jdbcType=BIGINT}
+ send_ms_time = #{sendMsTime,jdbcType=BIGINT}
where id = #{id,jdbcType=BIGINT}
</update>
<!--鏍规嵁鎸囧畾鏉′欢鑾峰彇璁板綍鎬绘暟-->
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/pom.xml b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/pom.xml
index 7fd838f..29cb1cb 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/pom.xml
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/pom.xml
@@ -125,6 +125,18 @@
<version>2.0.7</version>
</dependency>
+ <!--閽夐拤娑堟伅鎺ㄩ��-->
+ <dependency>
+ <groupId>com.aliyun</groupId>
+ <artifactId>alibaba-dingtalk-service-sdk</artifactId>
+ <version>2.0.0</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-codec</groupId>
+ <artifactId>commons-codec</artifactId>
+ <version>1.15</version>
+ </dependency>
+
<!-- 娴嬭瘯 -->
<dependency>
<groupId>org.springframework.boot</groupId>
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 7e6e557..3d71ead 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
@@ -19,6 +19,7 @@
import com.dy.common.mw.protocol.ProtocolUnit;
import com.dy.common.mw.support.SupportUnit;
import com.dy.common.mw.support.SupportUnitConfigVo;
+import com.dy.rtuMw.server.tasks.SendMsConstantTask;
import com.dy.rtuMw.server.tasks.ToRtuConstantTask;
import com.dy.rtuMw.resource.ResourceUnit;
import com.dy.rtuMw.resource.ResourceUnitConfigVo;
@@ -340,6 +341,7 @@
CoreUnit.addConstantTask(new ToRtuConstantTask());
CoreUnit.addConstantTask(new FromRtuDataConstantTask());
CoreUnit.addConstantTask(new FromRtuComResultConstantTask());
+ CoreUnit.addConstantTask(new SendMsConstantTask());
coreUnit.start(obj -> {
});
units.add(coreUnit) ;
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forMs/MsObj4Ding.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forMs/MsObj4Ding.java
new file mode 100644
index 0000000..1d267ee
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forMs/MsObj4Ding.java
@@ -0,0 +1,33 @@
+package com.dy.rtuMw.server.forMs;
+
+import com.dy.common.queue.NodeObj;
+import com.dy.common.springUtil.SpringContextUtil;
+import com.dy.pipIrrGlobal.config.DingTalk;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/31 18:50
+ * @Description
+ */
+public class MsObj4Ding implements NodeObj {
+
+ private static Logger log = LogManager.getLogger(MsObj4Ding.class.getName());
+
+ public String ms ;
+
+ public MsObj4Ding(String ms){
+ this.ms = ms ;
+ }
+
+ /**
+ * 鑷繁澶勭悊鑷繁
+ * @return
+ */
+ public boolean dealSelf(){
+ DingTalk dingTalk = SpringContextUtil.getBean(DingTalk.class) ;
+ dingTalk.sendMessage(ms);
+ return true ;
+ }
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forMs/SendMsCache.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forMs/SendMsCache.java
new file mode 100644
index 0000000..9e5b675
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forMs/SendMsCache.java
@@ -0,0 +1,68 @@
+package com.dy.rtuMw.server.forMs;
+
+import com.dy.common.queue.Node;
+import com.dy.common.queue.Queue;
+import com.dy.rtuMw.server.ServerProperties;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/31 18:47
+ * @Description
+ */
+public class SendMsCache {
+
+ //TCP涓嬭鍛戒护缂撳瓨闃熷垪
+ private static Queue cacheQueue = new Queue("SendMsCache") ;
+
+ private static SendMsCache instance = new SendMsCache() ;
+
+ private SendMsCache(){
+ cacheQueue.setLimit(ServerProperties.cacheUpDownDataWarnCount, ServerProperties.cacheUpDownDataMaxCount);
+ }
+
+ public static SendMsCache getInstance(){
+ return instance ;
+ }
+
+ /**
+ * 缂撳瓨鍛戒护
+ * @param ms
+ * @throws Exception
+ */
+ public static void cacheMs(String ms) throws Exception{
+ cacheQueue.pushTail(new MsObj4Ding(ms));
+ }
+
+ /**
+ * 寰楀埌绗竴涓妭鐐�
+ * @return
+ */
+ public static Node getFirstQueueNode(){
+ return cacheQueue.getFirstNode() ;
+ }
+
+ /**
+ * 寰楀埌鏈�鍚庝竴涓妭鐐�
+ * @return
+ */
+ public static Node getLastQueueNode(){
+ return cacheQueue.getLastNode() ;
+ }
+
+ /**
+ * 绉婚櫎鑺傜偣
+ * @param node
+ */
+ public static void removeNode(Node node){
+ cacheQueue.remove(node);
+ }
+
+ /**
+ * 缂撳瓨鐨勮妭鐐规暟
+ * @Return 缂撳瓨鑺傜偣鏁�
+ */
+ public static Integer size(){
+ return cacheQueue.size() ;
+ }
+
+}
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 6e9cbe3..03f1eeb 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
@@ -6,6 +6,7 @@
import com.dy.pipIrrGlobal.config.DingTalk;
import com.dy.pipIrrGlobal.pojoRm.RmAlarmStateHistory;
import com.dy.rtuMw.server.ServerProperties;
+import com.dy.rtuMw.server.forMs.SendMsCache;
import com.dy.rtuMw.server.rtuData.TaskSurpport;
import com.dy.rtuMw.server.rtuData.dbSv.DbSv;
import com.dy.common.mw.protocol.Data;
@@ -170,9 +171,12 @@
* @param alarmVo
*/
private void sendMessage(PrController controller, DataAlarmVo alarmVo){
- String ms = "鍙栨按鍙�" + controller.getIntakeName() + "浜х敓鎶ヨ锛�" + alarmVo.alarmContent() ;
- DingTalk dingTalk = SpringContextUtil.getBean(DingTalk.class) ;
- dingTalk.sendMessage(ms);
+ String ms = "鍙栨按鍙b��" + controller.getIntakeName() + "鈥濅骇鐢熸姤璀︼細" + alarmVo.alarmContent() ;
+ try{
+ SendMsCache.cacheMs(ms);
+ }catch (Exception e){
+ log.error("缂撳瓨閽夐拤娑堟伅寮傚父锛�", e);
+ }
}
}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/SendMsConstantTask.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/SendMsConstantTask.java
new file mode 100644
index 0000000..a57a546
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/SendMsConstantTask.java
@@ -0,0 +1,81 @@
+package com.dy.rtuMw.server.tasks;
+
+import com.dy.common.mw.core.CoreTask;
+import com.dy.common.queue.Node;
+import com.dy.rtuMw.server.forMs.MsObj4Ding;
+import com.dy.rtuMw.server.forMs.SendMsCache;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/31 18:45
+ * @Description
+ */
+public class SendMsConstantTask extends CoreTask {
+
+ private static final Logger log = LogManager.getLogger(SendMsConstantTask.class.getName());
+
+ /**
+ * 鍦ㄥ崟绾跨▼鐜涓繍琛�
+ */
+ @Override
+ public Integer execute() {
+ try{
+ //log.info("褰撳墠娑堟伅闃熷垪涓繕鏈夌粨鐐规暟閲忥細" + SendMsCache.size());
+ dealMs() ;
+ }catch(Exception e){
+ log.error(e);
+ }
+ return SendMsCache.size()>0?0:1 ;
+ }
+
+ /**
+ * 澶勭悊涓嬭鍛戒护
+ */
+ public void dealMs() {
+ Node first = SendMsCache.getFirstQueueNode() ;
+ if(first != null){
+ Node last = SendMsCache.getLastQueueNode() ;
+ while (last != null){
+ last = this.doDealMs(first, last);
+ }
+ }
+ }
+ /**
+ * 澶勭悊缂撳瓨鐨勪笅琛岃妭鐐�
+ * @param first 绗竴涓妭鐐�
+ * @param last 鏈�鍚庝竴涓妭鐐�
+ */
+ private Node doDealMs(Node first, Node last){
+ if(last != null){
+ //鍦╠ealNode鏂规硶涓紝鍙兘瑕佹妸last浠庨槦鍒椾腑绉婚櫎锛岃繖鏃秎ast.pre涓虹┖锛屾墍浠ユ彁鍓嶆妸last.pre鍙栧嚭鏉�
+ Node pre = last.pre ;
+ dealNode(last) ;
+ if(first != last){
+ return pre ;
+ }else{
+ //鍋滄
+ return null ;
+ }
+ }else{
+ return null ;
+ }
+ }
+
+ /**
+ * 澶勭悊涓�涓妭鐐�
+ * @param node 鑺傜偣
+ */
+ private void dealNode(Node node){
+ if(node != null && node.obj != null){
+ MsObj4Ding obj = (MsObj4Ding)node.obj ;
+ boolean removeNode = obj.dealSelf() ;
+ if(removeNode){
+ SendMsCache.removeNode(node);
+ }
+ }
+ }
+
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/CommandP206V1_0_0Ctrl.java b/pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/CommandP206V1_0_0Ctrl.java
index 6f0e02b..707fc58 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/CommandP206V1_0_0Ctrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/CommandP206V1_0_0Ctrl.java
@@ -242,7 +242,7 @@
comVo.moneyRemain = 234.56 ;
comVo.waterPrice = 1.2 ;
comVo.minutes = 3 ;
- String nextDtStr = DateTime.nextXMinute_yyyy_MM_dd_HH_mm_ss(DateTime.yyyy_MM_dd_HH_mm_ss(), 5) ;//灏嗘潵5鍒嗛挓
+ String nextDtStr = DateTime.nextXMinute_yyyy_MM_dd_HH_mm_ss(DateTime.yyyy_MM_dd_HH_mm_ss(), comVo.minutes) ;//灏嗘潵X鍒嗛挓
int[] nextDt = DateTime.yyyy_MM_dd_HH_MM_SS_2_ymdhmsGroup(nextDtStr) ;
comVo.year = nextDt[0] ;
comVo.month = nextDt[1] ;
--
Gitblit v1.8.0