From faf02e3bad9fe25c60acf9a8be7e58122a4cec4a Mon Sep 17 00:00:00 2001
From: Administrator <zhubaomin>
Date: 星期一, 05 八月 2024 15:01:20 +0800
Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV

---
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/MwInfoDeal.java       |   11 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/MwInfoVo.java         |   16 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/SysSysUtil.java                                      |   68 +++
 pipIrr-platform/pipIrr-global/pom.xml                                                                               |    6 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd99Vo.java              |    4 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/SysUtil.java                                         |   64 +++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java                    |   16 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealAlarmStatus.java |   18 
 pipIrr-platform/pipIrr-mw/pom.xml                                                                                   |   16 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/SysMemoryUtil.java                                   |   58 +++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataAlarmVo.java             |   13 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/pom.xml                                                                     |   22 +
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java                                      |    9 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/SysJvmUtil.java                                      |   78 ++++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/SysFileSysUtil.java                                  |  113 +++++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/IPUtils.java                                         |  341 +++++++++++++++++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/DoubleUtil.java                                      |  103 +++++
 pipIrr-platform/pipIrr-common/pom.xml                                                                               |   17 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/SysCpuUtil.java                                      |  110 +++++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdA0Vo.java              |    4 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdA1Vo.java              |    4 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdA2Vo.java              |    4 
 22 files changed, 1,063 insertions(+), 32 deletions(-)

diff --git a/pipIrr-platform/pipIrr-common/pom.xml b/pipIrr-platform/pipIrr-common/pom.xml
index cbb2762..6ec010b 100644
--- a/pipIrr-platform/pipIrr-common/pom.xml
+++ b/pipIrr-platform/pipIrr-common/pom.xml
@@ -132,6 +132,23 @@
             <artifactId>quartz</artifactId>
         </dependency>
 
+        <!-- 鑾峰緱绯荤粺淇℃伅 -->
+        <dependency>
+            <groupId>com.github.oshi</groupId>
+            <artifactId>oshi-core</artifactId>
+            <version>6.6.2</version>
+        </dependency>
+        <dependency>
+            <groupId>net.java.dev.jna</groupId>
+            <artifactId>jna</artifactId>
+            <version>5.12.1</version>
+        </dependency>
+        <dependency>
+            <groupId>net.java.dev.jna</groupId>
+            <artifactId>jna-platform</artifactId>
+            <version>5.12.1</version>
+        </dependency>
+
         <!-- Hutool鏄竴涓皬鑰屽叏鐨凧ava宸ュ叿绫诲簱(https://github.com/dromara/hutool)  -->
         <dependency>
             <groupId>cn.hutool</groupId>
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java
index 9f3b91f..963b2f0 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java
@@ -39,10 +39,10 @@
 	public static final String cd_95 = "95" ;//澶嶄綅缁堢鍙傛暟鍜岀姸鎬侊紙鏈疄鐜帮級
 	public static final String cd_97 = "97" ;//APP杩滅▼寮�闃�
 	public static final String cd_98 = "98" ;//APP杩滅▼鍏抽榾
-	public static final String cd_99 = "99" ;//瀹氭椂鍏抽榾寮�闃�
-	public static final String cd_A0 = "A0" ;//瀹氶噺鍏抽榾寮�闃�
-	public static final String cd_A1 = "A1" ;//瀹氭椂鍏抽榾璁″垝寮�闃�
-	public static final String cd_A2 = "A2" ;//瀹氶噺鍏抽榾璁″垝寮�闃�
+	public static final String cd_99 = "99" ;//瀹氭椂鍏抽榾寮忓紑闃�
+	public static final String cd_A0 = "A0" ;//瀹氶噺鍏抽榾寮忓紑闃�
+	public static final String cd_A1 = "A1" ;//瀹氭椂鍏抽榾寮忚鍒掑紑闃�
+	public static final String cd_A2 = "A2" ;//瀹氶噺鍏抽榾寮忚鍒掑紑闃�
 	public static final String cd_B0 = "B0" ;//鏌ヨ瀹炴椂鏁版嵁锛堟湭瀹炵幇锛�
 	public static final String cd_C0 = "C0" ;//閬ユ祴绔欐暣鐐逛笂鎶ュ疄鏃舵暟鎹� ok
 
@@ -84,10 +84,10 @@
 			(code.equals(cd_95) ? "澶嶄綅缁堢鍙傛暟鍜岀姸鎬�" :
 			(code.equals(cd_97) ? "APP杩滅▼寮�闃�" :
 			(code.equals(cd_98) ? "APP杩滅▼鍏抽榾" :
-			(code.equals(cd_99) ? "瀹氭椂鍏抽榾寮�闃�" :
-			(code.equals(cd_A0) ? "瀹氶噺鍏抽榾寮�闃�" :
-			(code.equals(cd_A1) ? "瀹氭椂鍏抽榾璁″垝寮�闃�" :
-			(code.equals(cd_A2) ? "瀹氶噺鍏抽榾璁″垝寮�闃�" :
+			(code.equals(cd_99) ? "瀹氭椂鍏抽榾寮忓紑闃�" :
+			(code.equals(cd_A0) ? "瀹氶噺鍏抽榾寮忓紑闃�" :
+			(code.equals(cd_A1) ? "瀹氭椂鍏抽榾寮忚鍒掑紑闃�" :
+			(code.equals(cd_A2) ? "瀹氶噺鍏抽榾寮忚鍒掑紑闃�" :
 			(code.equals(cd_B0) ? "鏌ヨ瀹炴椂鏁版嵁" :
 			(code.equals(cd_C0) ? "鑷姤(鏁寸偣)瀹炴椂鏁版嵁" :
 			""))))))))))))))))))))))))))))))))))))))))))) ;
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 575caae..9dbf290 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
@@ -22,17 +22,22 @@
 
     public String alarmContent(){
         String txt = "" ;
+        boolean hasTxt = false ;
         if(batteryVolt != null && batteryVolt == 1){
-            txt += "钃勭數姹犵數鍘嬫姤璀�" ;
+            txt += (hasTxt?"銆�":"") + "钃勭數姹犵數鍘嬫姤璀�" ;
+            hasTxt = true ;
         }
         if(meter != null && meter == 1){
-            txt += "锛屾祦閲忚鏁呴殰鎶ヨ" ;
+            txt += (hasTxt?"銆�":"") + "娴侀噺璁℃晠闅滄姤璀�" ;
+            hasTxt = true ;
         }
         if(valve != null && valve == 1){
-            txt += "锛岄榾闂ㄦ晠闅滄姤璀�" ;
+            txt += (hasTxt?"銆�":"") + "闃�闂ㄦ晠闅滄姤璀�" ;
+            hasTxt = true ;
         }
        if(loss != null && loss == 1){
-            txt += "锛屾紡鎹熸姤璀�" ;
+            txt += (hasTxt?"銆�":"") + "婕忔崯鎶ヨ" ;
+           hasTxt = true ;
         }
         return txt ;
     }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd99Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd99Vo.java
index 1360407..34a546c 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd99Vo.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd99Vo.java
@@ -15,7 +15,7 @@
 
     public String toString(){
         StringBuilder sb = new StringBuilder() ;
-        sb.append("   瀹氭椂鍏抽榾寮�闃�搴旂瓟:\n");
+        sb.append("   瀹氭椂鍏抽榾寮忓紑闃�搴旂瓟:\n");
         sb.append("      铏氭嫙鍗″彿锛�");
         sb.append(cardNo);
         sb.append("\n");
@@ -29,7 +29,7 @@
 
     public String comLog(){
         StringBuilder sb = new StringBuilder() ;
-        sb.append("瀹氭椂鍏抽榾寮�闃�鍛戒护鍥炲:\n");
+        sb.append("瀹氭椂鍏抽榾寮忓紑闃�鍛戒护鍥炲:\n");
         sb.append("   铏氭嫙鍗″彿锛�");
         sb.append(cardNo);
         sb.append("\n");
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdA0Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdA0Vo.java
index cca055f..519fe64 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdA0Vo.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdA0Vo.java
@@ -15,7 +15,7 @@
 
     public String toString(){
         StringBuilder sb = new StringBuilder() ;
-        sb.append("   瀹氶噺鍏抽榾寮�闃�搴旂瓟:\n");
+        sb.append("   瀹氶噺鍏抽榾寮忓紑闃�搴旂瓟:\n");
         sb.append("      铏氭嫙鍗″彿锛�");
         sb.append(cardNo);
         sb.append("\n");
@@ -29,7 +29,7 @@
 
     public String comLog(){
         StringBuilder sb = new StringBuilder() ;
-        sb.append("瀹氶噺鍏抽榾寮�闃�鍛戒护鍥炲:\n");
+        sb.append("瀹氶噺鍏抽榾寮忓紑闃�鍛戒护鍥炲:\n");
         sb.append("   铏氭嫙鍗″彿锛�");
         sb.append(cardNo);
         sb.append("\n");
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdA1Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdA1Vo.java
index 9e682e0..0d7f5e8 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdA1Vo.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdA1Vo.java
@@ -15,7 +15,7 @@
 
     public String toString(){
         StringBuilder sb = new StringBuilder() ;
-        sb.append("   瀹氭椂鍏抽榾寮�闃�搴旂瓟:\n");
+        sb.append("   瀹氭椂鍏抽榾寮忓紑闃�搴旂瓟:\n");
         sb.append("      铏氭嫙鍗″彿锛�");
         sb.append(cardNo);
         sb.append("\n");
@@ -29,7 +29,7 @@
 
     public String comLog(){
         StringBuilder sb = new StringBuilder() ;
-        sb.append("瀹氭椂鍏抽榾寮�闃�鍛戒护鍥炲:\n");
+        sb.append("瀹氭椂鍏抽榾寮忓紑闃�鍛戒护鍥炲:\n");
         sb.append("   铏氭嫙鍗″彿锛�");
         sb.append(cardNo);
         sb.append("\n");
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdA2Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdA2Vo.java
index 8499e77..2134a16 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdA2Vo.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdA2Vo.java
@@ -15,7 +15,7 @@
 
     public String toString(){
         StringBuilder sb = new StringBuilder() ;
-        sb.append("   瀹氶噺鍏抽榾寮�闃�搴旂瓟:\n");
+        sb.append("   瀹氶噺鍏抽榾寮忓紑闃�搴旂瓟:\n");
         sb.append("      铏氭嫙鍗″彿锛�");
         sb.append(cardNo);
         sb.append("\n");
@@ -29,7 +29,7 @@
 
     public String comLog(){
         StringBuilder sb = new StringBuilder() ;
-        sb.append("瀹氶噺鍏抽榾寮�闃�鍛戒护鍥炲:\n");
+        sb.append("瀹氶噺鍏抽榾寮忓紑闃�鍛戒护鍥炲:\n");
         sb.append("   铏氭嫙鍗″彿锛�");
         sb.append(cardNo);
         sb.append("\n");
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/DoubleUtil.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/DoubleUtil.java
new file mode 100644
index 0000000..b40e2dd
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/DoubleUtil.java
@@ -0,0 +1,103 @@
+package com.dy.common.util;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/8/2 13:58
+ * @Description 绮惧噯鐨刣ouble璁$畻
+ */
+public class DoubleUtil {
+    /** 榛樿闄ゆ硶杩愮畻绮惧害 */
+    private static final int DEF_DIV_SCALE = 10;
+
+    /** 杩欎釜绫讳笉鑳藉疄渚嬪寲 */
+    private DoubleUtil() {
+    }
+
+    /**
+     * 鎻愪緵绮剧‘鐨勫姞娉曡繍绠椼��
+     * @param v1 琚姞鏁�
+     * @param v2 鍔犳暟
+     * @return 涓や釜鍙傛暟鐨勫拰
+     */
+    public static double add(double v1, double v2)  {
+        BigDecimal b1 = new BigDecimal(Double.toString(v1));
+        BigDecimal b2 = new BigDecimal(Double.toString(v2));
+        return b1.add(b2).doubleValue();
+    }
+
+    /**
+     * 鎻愪緵绮剧‘鐨勫噺娉曡繍绠椼��
+     * @param v1 琚噺鏁�
+     * @param v2 鍑忔暟
+     * @return 涓や釜鍙傛暟鐨勫樊
+     */
+    public static double sub(double v1, double v2) {
+        BigDecimal b1 = new BigDecimal(Double.toString(v1));
+        BigDecimal b2 = new BigDecimal(Double.toString(v2));
+        return b1.subtract(b2).doubleValue();
+    }
+
+    /**
+     * 鎻愪緵绮剧‘鐨勪箻娉曡繍绠椼��
+     * @param v1 琚箻鏁�
+     * @param v2 涔樻暟
+     * @return 涓や釜鍙傛暟鐨勭Н
+     */
+    public static double mul(double v1, double v2) {
+        BigDecimal b1 = new BigDecimal(Double.toString(v1));
+        BigDecimal b2 = new BigDecimal(Double.toString(v2));
+        return b1.multiply(b2).doubleValue();
+    }
+
+    /**
+     * 鎻愪緵锛堢浉瀵癸級绮剧‘鐨勯櫎娉曡繍绠楋紝褰撳彂鐢熼櫎涓嶅敖鐨勬儏鍐垫椂锛岀簿纭埌
+     * 灏忔暟鐐逛互鍚�10浣嶏紝浠ュ悗鐨勬暟瀛楀洓鑸嶄簲鍏ャ��
+     * @param v1 琚櫎鏁�
+     * @param v2 闄ゆ暟
+     * @return 涓や釜鍙傛暟鐨勫晢
+     */
+    public static double div(double v1, double v2)
+    {
+        return div(v1, v2, DEF_DIV_SCALE);
+    }
+
+    /**
+     * 鎻愪緵锛堢浉瀵癸級绮剧‘鐨勯櫎娉曡繍绠椼�傚綋鍙戠敓闄や笉灏界殑鎯呭喌鏃讹紝鐢眘cale鍙傛暟鎸�
+     * 瀹氱簿搴︼紝浠ュ悗鐨勬暟瀛楀洓鑸嶄簲鍏ャ��
+     * @param v1 琚櫎鏁�
+     * @param v2 闄ゆ暟
+     * @param scale 琛ㄧず琛ㄧず闇�瑕佺簿纭埌灏忔暟鐐逛互鍚庡嚑浣嶃��
+     * @return 涓や釜鍙傛暟鐨勫晢
+     */
+    public static double div(double v1, double v2, int scale) {
+        if (scale < 0) {
+            throw new IllegalArgumentException(
+                    "The scale must be a positive integer or zero");
+        }
+        BigDecimal b1 = new BigDecimal(Double.toString(v1));
+        BigDecimal b2 = new BigDecimal(Double.toString(v2));
+        if (b1.compareTo(BigDecimal.ZERO) == 0) {
+            return BigDecimal.ZERO.doubleValue();
+        }
+        return b1.divide(b2, scale, RoundingMode.HALF_UP).doubleValue();
+    }
+
+    /**
+     * 鎻愪緵绮剧‘鐨勫皬鏁颁綅鍥涜垗浜斿叆澶勭悊銆�
+     * @param v 闇�瑕佸洓鑸嶄簲鍏ョ殑鏁板瓧
+     * @param scale 灏忔暟鐐瑰悗淇濈暀鍑犱綅
+     * @return 鍥涜垗浜斿叆鍚庣殑缁撴灉
+     */
+    public static double round(double v, int scale) {
+        if (scale < 0) {
+            throw new IllegalArgumentException(
+                    "The scale must be a positive integer or zero");
+        }
+        BigDecimal b = new BigDecimal(Double.toString(v));
+        BigDecimal one = BigDecimal.ONE;
+        return b.divide(one, scale, RoundingMode.HALF_UP).doubleValue();
+    }
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/IPUtils.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/IPUtils.java
new file mode 100644
index 0000000..c9fdac3
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/IPUtils.java
@@ -0,0 +1,341 @@
+package com.dy.common.util;
+
+import jakarta.servlet.http.HttpServletRequest;
+
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.UnknownHostException;
+import java.util.Enumeration;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * 鑾峰彇IP鏂规硶
+ *
+ * @author liurunyu
+ */
+public class IPUtils {
+
+    /**
+     * 妫�鏌P鏄惁鍚堟硶
+     *
+     * @param ip
+     * @return
+     */
+    public static boolean ipValid(String ip) {
+        String regex0 = "(2[0-4]\\d)" + "|(25[0-5])";
+        String regex1 = "1\\d{2}";
+        String regex2 = "[1-9]\\d";
+        String regex3 = "\\d";
+        String regex = "(" + regex0 + ")|(" + regex1 + ")|(" + regex2 + ")|(" + regex3 + ")";
+        regex = "(" + regex + ").(" + regex + ").(" + regex + ").(" + regex + ")";
+        Pattern p = Pattern.compile(regex);
+        Matcher m = p.matcher(ip);
+        return m.matches();
+    }
+
+    /**
+     * 鑾峰彇鏈湴ip 閫傚悎windows涓巐inux
+     *
+     * @return
+     */
+    public static String getLocalIP() {
+        String localIP = "127.0.0.1";
+        try {
+            Enumeration netInterfaces = NetworkInterface.getNetworkInterfaces();
+            while (netInterfaces.hasMoreElements()) {
+                NetworkInterface ni = (NetworkInterface) netInterfaces.nextElement();
+                InetAddress ip = ni.getInetAddresses().nextElement();
+                if (!ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1) {
+                    localIP = ip.getHostAddress();
+                    break;
+                }
+            }
+        } catch (Exception e) {
+            try {
+                localIP = InetAddress.getLocalHost().getHostAddress();
+            } catch (UnknownHostException e1) {
+                e1.printStackTrace();
+            }
+        }
+        return localIP;
+    }
+    /**
+     * 鑾峰彇瀹㈡埛绔疘P
+     *
+     * @param request 璇锋眰瀵硅薄
+     * @return IP鍦板潃
+     */
+    public static String getClientIp(HttpServletRequest request)
+    {
+        if (request == null)
+        {
+            return "unknown";
+        }
+        String ip = request.getHeader("x-forwarded-for");
+        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
+        {
+            ip = request.getHeader("Proxy-Client-IP");
+        }
+        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
+        {
+            ip = request.getHeader("X-Forwarded-For");
+        }
+        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
+        {
+            ip = request.getHeader("WL-Proxy-Client-IP");
+        }
+        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
+        {
+            ip = request.getHeader("X-Real-IP");
+        }
+
+        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
+        {
+            ip = request.getRemoteAddr();
+        }
+
+        return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : getMultistageReverseProxyIp(ip);
+    }
+
+    /**
+     * 妫�鏌ユ槸鍚︿负鍐呴儴IP鍦板潃
+     *
+     * @param ip IP鍦板潃
+     * @return 缁撴灉
+     */
+    public static boolean internalIp(String ip)
+    {
+        byte[] addr = textToNumericFormatV4(ip);
+        return internalIp(addr) || "127.0.0.1".equals(ip);
+    }
+
+    /**
+     * 妫�鏌ユ槸鍚︿负鍐呴儴IP鍦板潃
+     *
+     * @param addr byte鍦板潃
+     * @return 缁撴灉
+     */
+    private static boolean internalIp(byte[] addr)
+    {
+        if (addr == null || addr.length < 2)
+        {
+            return true;
+        }
+        final byte b0 = addr[0];
+        final byte b1 = addr[1];
+        // 10.x.x.x/8
+        final byte SECTION_1 = 0x0A;
+        // 172.16.x.x/12
+        final byte SECTION_2 = (byte) 0xAC;
+        final byte SECTION_3 = (byte) 0x10;
+        final byte SECTION_4 = (byte) 0x1F;
+        // 192.168.x.x/16
+        final byte SECTION_5 = (byte) 0xC0;
+        final byte SECTION_6 = (byte) 0xA8;
+        switch (b0)
+        {
+            case SECTION_1:
+                return true;
+            case SECTION_2:
+                if (b1 >= SECTION_3 && b1 <= SECTION_4)
+                {
+                    return true;
+                }
+            case SECTION_5:
+                switch (b1)
+                {
+                    case SECTION_6:
+                        return true;
+                }
+            default:
+                return false;
+        }
+    }
+    /**
+     * 鎶奿p杞寲涓烘暣鏁�
+     *
+     * @param ip
+     * @return
+     */
+    public static long translateIP2Int(String ip) {
+        String[] intArr = ip.split("\\.");
+        int[] ipInt = new int[intArr.length];
+        for (int i = 0; i < intArr.length; i++) {
+            ipInt[i] = Integer.parseInt(intArr[i]) ;
+        }
+        return ipInt[0] * 256 * 256 * 256 + +ipInt[1] * 256 * 256 + ipInt[2] * 256 + ipInt[3];
+    }
+    /**
+     * 灏咺Pv4鍦板潃杞崲鎴愬瓧鑺�
+     *
+     * @param text IPv4鍦板潃
+     * @return byte 瀛楄妭
+     */
+    public static byte[] textToNumericFormatV4(String text)
+    {
+        if (text.length() == 0)
+        {
+            return null;
+        }
+
+        byte[] bytes = new byte[4];
+        String[] elements = text.split("\\.", -1);
+        try
+        {
+            long l;
+            int i;
+            switch (elements.length)
+            {
+                case 1:
+                    l = Long.parseLong(elements[0]);
+                    if ((l < 0L) || (l > 4294967295L))
+                    {
+                        return null;
+                    }
+                    bytes[0] = (byte) (int) (l >> 24 & 0xFF);
+                    bytes[1] = (byte) (int) ((l & 0xFFFFFF) >> 16 & 0xFF);
+                    bytes[2] = (byte) (int) ((l & 0xFFFF) >> 8 & 0xFF);
+                    bytes[3] = (byte) (int) (l & 0xFF);
+                    break;
+                case 2:
+                    l = Integer.parseInt(elements[0]);
+                    if ((l < 0L) || (l > 255L))
+                    {
+                        return null;
+                    }
+                    bytes[0] = (byte) (int) (l & 0xFF);
+                    l = Integer.parseInt(elements[1]);
+                    if ((l < 0L) || (l > 16777215L))
+                    {
+                        return null;
+                    }
+                    bytes[1] = (byte) (int) (l >> 16 & 0xFF);
+                    bytes[2] = (byte) (int) ((l & 0xFFFF) >> 8 & 0xFF);
+                    bytes[3] = (byte) (int) (l & 0xFF);
+                    break;
+                case 3:
+                    for (i = 0; i < 2; ++i)
+                    {
+                        l = Integer.parseInt(elements[i]);
+                        if ((l < 0L) || (l > 255L))
+                        {
+                            return null;
+                        }
+                        bytes[i] = (byte) (int) (l & 0xFF);
+                    }
+                    l = Integer.parseInt(elements[2]);
+                    if ((l < 0L) || (l > 65535L))
+                    {
+                        return null;
+                    }
+                    bytes[2] = (byte) (int) (l >> 8 & 0xFF);
+                    bytes[3] = (byte) (int) (l & 0xFF);
+                    break;
+                case 4:
+                    for (i = 0; i < 4; ++i)
+                    {
+                        l = Integer.parseInt(elements[i]);
+                        if ((l < 0L) || (l > 255L))
+                        {
+                            return null;
+                        }
+                        bytes[i] = (byte) (int) (l & 0xFF);
+                    }
+                    break;
+                default:
+                    return null;
+            }
+        }
+        catch (NumberFormatException e)
+        {
+            return null;
+        }
+        return bytes;
+    }
+
+    /**
+     * 鑾峰彇IP鍦板潃
+     *
+     * @return 鏈湴IP鍦板潃
+     */
+    public static String getHostIp()
+    {
+        try
+        {
+            return InetAddress.getLocalHost().getHostAddress();
+        }
+        catch (UnknownHostException e)
+        {
+        }
+        return "127.0.0.1";
+    }
+
+    /**
+     * 鑾峰彇涓绘満鍚�
+     *
+     * @return 鏈湴涓绘満鍚�
+     */
+    public static String getHostName()
+    {
+        try
+        {
+            return InetAddress.getLocalHost().getHostName();
+        }
+        catch (UnknownHostException e)
+        {
+        }
+        return "鏈煡";
+    }
+
+    /**
+     * 浠庡绾у弽鍚戜唬鐞嗕腑鑾峰緱绗竴涓潪unknown IP鍦板潃
+     *
+     * @param ip 鑾峰緱鐨処P鍦板潃
+     * @return 绗竴涓潪unknown IP鍦板潃
+     */
+    public static String getMultistageReverseProxyIp(String ip)
+    {
+        // 澶氱骇鍙嶅悜浠g悊妫�娴�
+        if (ip != null && ip.indexOf(",") > 0)
+        {
+            final String[] ips = ip.trim().split(",");
+            for (String subIp : ips)
+            {
+                if (false == isUnknown(subIp))
+                {
+                    ip = subIp;
+                    break;
+                }
+            }
+        }
+        return ip;
+    }
+
+    /**
+     * 妫�娴嬬粰瀹氬瓧绗︿覆鏄惁涓烘湭鐭ワ紝澶氱敤浜庢娴婬TTP璇锋眰鐩稿叧
+     *
+     * @param checkString 琚娴嬬殑瀛楃涓�
+     * @return 鏄惁鏈煡
+     */
+    public static boolean isUnknown(String checkString)
+    {
+        return isBlank(checkString) || "unknown".equalsIgnoreCase(checkString);
+    }
+
+    private static boolean isBlank(final CharSequence cs) {
+        final int strLen = length(cs);
+        if (strLen == 0) {
+            return true;
+        }
+        for (int i = 0; i < strLen; i++) {
+            if (!Character.isWhitespace(cs.charAt(i))) {
+                return false;
+            }
+        }
+        return true;
+    }
+    public static int length(final CharSequence cs) {
+        return cs == null ? 0 : cs.length();
+    }
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/SysCpuUtil.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/SysCpuUtil.java
new file mode 100644
index 0000000..5675ae6
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/SysCpuUtil.java
@@ -0,0 +1,110 @@
+package com.dy.common.util;
+
+import lombok.Data;
+import oshi.hardware.CentralProcessor;
+import oshi.util.Util;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/8/2 11:17
+ * @Description
+ */
+public class SysCpuUtil {
+
+    private static final int OSHI_WAIT_SECOND = 1000;
+    /**
+     * 寰楀埌CPU淇℃伅
+     */
+    public static CpuInfoVo info(CentralProcessor processor){
+        /**
+         * 鑾峰彇绯荤粺鑼冨洿鍐呯殑CPU璐熻浇璁℃暟鍣ㄣ�傝繑鍥炰竴涓寘鍚叓涓厓绱犵殑鏁扮粍锛岃〃绀哄湪鐢ㄦ埛锛�0锛夈�佸凹鏂紙1锛夈�佺郴缁燂紙2锛夈�佺┖闂诧紙3锛夈��
+         * IOwait锛�4锛夈�佺‖浠朵腑鏂紙IRQ锛夛紙5锛夈�佽蒋浠朵腑鏂�/DPC锛圫oftIRQ锛夛級锛�6锛夋垨绐冨彇锛�7锛夌姸鎬佷笅鑺辫垂鐨勬绉掓暟銆備娇鐢�
+         * {@link-shi.hardware.TickType#getIndex锛堬級}妫�绱㈢浉搴旂殑绱㈠紩銆傞�氳繃娴嬮噺涓�涓椂闂撮棿
+         * 闅斿唴婊寸瓟澹颁箣闂寸殑宸紓锛屽彲浠ヨ绠楀嚭璇ユ椂闂撮棿闅斿唴鐨凜PU璐熻浇銆�
+         * 鍦ㄦ煇浜涢�昏緫澶勭悊鍣ㄦ暟閲忓彲鍙樼殑鎿嶄綔绯荤粺涓婏紝姝ら樀鍒楃殑澶у皬鍙兘浼氬彂鐢熷彉鍖栵紝骞朵笖鍙兘涓庡叾浠栨瘡澶勭悊鍣ㄦ柟娉曚笉涓�鑷淬��
+         * 璇锋敞鎰忥紝铏界劧婊寸瓟璁℃暟鍣ㄤ互姣涓哄崟浣嶏紝浣嗗畠浠彲鑳戒細闅忕潃锛堜緷璧栦簬骞冲彴鐨勶級鏃堕挓婊寸瓟澹颁互鏇村ぇ鐨勫閲忓墠杩涖�備緥濡傦紝榛樿
+         * 鎯呭喌涓嬶紝Windows鏃堕挓鑺傛媿涓�1/64绉掞紙绾�15鎴�16姣锛夛紝Linux鏃堕挓鑺傛媿鍙栧喅浜庡垎甯冨拰閰嶇疆锛屼絾閫氬父涓�1/100绉掞紙10
+         * 姣锛夈��
+         * Windows涓婃病鏈塏ice鍜孖OWait淇℃伅锛宮acOS涓婃病鏈塈OWait鍜孖RQ淇℃伅锛屽洜姝よ繖浜涙爣璁板皢濮嬬粓涓洪浂銆�
+         * 瑕佷娇鐢ㄦ鏂规硶璁$畻鎬荤┖闂叉椂闂达紝璇峰悓鏃跺寘鎷琁dle鍜孖OWait鏍囪銆傚悓鏍凤紝搴斿皢IRQ銆丼oftIRQ鍜孲teal鏍囪娣诲姞鍒扮郴缁熷��
+         * 涓互鑾峰緱鎬诲拰銆傜郴缁熻鏃惰繕鍖呮嫭鎵ц鍏朵粬铏氭嫙涓绘満锛堢獌鍙栵級鐨勬椂闂淬��
+         * *
+         * @return涓�涓敱8涓暱鍊肩粍鎴愮殑鏁扮粍锛岃〃绀哄湪User銆丯ice銆丼ystem銆両dle銆両Owait銆両RQ銆丼oftIRQ鍜孲teal鐘舵�佷笅鑺辫垂鐨勬椂闂淬��
+         */
+        long[] prevTicks = processor.getSystemCpuLoadTicks();
+        Util.sleep(OSHI_WAIT_SECOND);
+        long[] ticks = processor.getSystemCpuLoadTicks();
+        long nice = ticks[1] - prevTicks[1];
+        long irq = ticks[5] - prevTicks[5];
+        long softIrq = ticks[6] - prevTicks[6];
+        long steal = ticks[7] - prevTicks[7];
+        long cSys = ticks[2] - prevTicks[2];
+        long user = ticks[0] - prevTicks[0];
+        long ioWait = ticks[4] - prevTicks[4];
+        long idle = ticks[3] - prevTicks[3];
+
+        /*
+        long nice = ticks[TickType.NICE.getIndex()] - prevTicks[TickType.NICE.getIndex()];
+        long irq = ticks[TickType.IRQ.getIndex()] - prevTicks[TickType.IRQ.getIndex()];
+        long softIrq = ticks[TickType.SOFTIRQ.getIndex()] - prevTicks[TickType.SOFTIRQ.getIndex()];
+        long steal = ticks[TickType.STEAL.getIndex()] - prevTicks[TickType.STEAL.getIndex()];
+        long cSys = ticks[TickType.SYSTEM.getIndex()] - prevTicks[TickType.SYSTEM.getIndex()];
+        long user = ticks[TickType.USER.getIndex()] - prevTicks[TickType.USER.getIndex()];
+        long ioWait = ticks[TickType.IOWAIT.getIndex()] - prevTicks[TickType.IOWAIT.getIndex()];
+        long idle = ticks[TickType.IDLE.getIndex()] - prevTicks[TickType.IDLE.getIndex()];
+        */
+
+        long totalCpu = user + nice + cSys + idle + ioWait + irq + softIrq + steal;
+
+        CpuInfoVo vo = new CpuInfoVo() ;
+        vo.cores = processor.getLogicalProcessorCount() ;
+        vo.totalRate = totalCpu ;
+        vo.sysRate = cSys ;
+        vo.userRate = user ;
+        vo.waitRate = ioWait ;
+        vo.freeRate = idle ;
+        return vo ;
+    }
+
+    @Data
+    public static class CpuInfoVo{
+        /**
+         * 鏍稿績鏁�
+         */
+        public int cores;
+        /**
+         * CPU鎬荤殑浣跨敤鐜�
+         */
+        public double totalRate;
+        /**
+         * CPU绯荤粺浣跨敤鐜�
+         */
+        public double sysRate;
+        /**
+         * CPU鐢ㄦ埛浣跨敤鐜�
+         */
+        public double userRate;
+        /**
+         * CPU褰撳墠绛夊緟鐜�
+         */
+        public double waitRate;
+        /**
+         * CPU褰撳墠绌洪棽鐜�
+         */
+        public double freeRate;
+
+        public String toString(){
+            StringBuilder sb = new StringBuilder() ;
+            sb.append("   CPU淇℃伅锛歕n");
+            sb.append("      鏍稿績鏁帮細" + cores + "\n");
+            sb.append("      CPU鎬荤殑浣跨敤鐜囷細" + totalRate + "\n");
+            sb.append("      CPU绯荤粺浣跨敤鐜囷細" + sysRate + "\n");
+            sb.append("      CPU鐢ㄦ埛浣跨敤鐜囷細" + userRate + "\n");
+            sb.append("      CPU褰撳墠绛夊緟鐜囷細" + waitRate + "\n");
+            sb.append("      CPU褰撳墠绌洪棽鐜囷細" + freeRate + "\n");
+
+            return sb.toString() ;
+        }
+
+    }
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/SysFileSysUtil.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/SysFileSysUtil.java
new file mode 100644
index 0000000..fc1976a
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/SysFileSysUtil.java
@@ -0,0 +1,113 @@
+package com.dy.common.util;
+
+import lombok.Data;
+import oshi.software.os.FileSystem;
+import oshi.software.os.OSFileStore;
+import oshi.software.os.OperatingSystem;
+
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/8/2 13:54
+ * @Description
+ */
+public class SysFileSysUtil {
+    /**
+     * 纾佺洏淇℃伅
+     */
+    public static LinkedList<SysFile> info(OperatingSystem os)  {
+        LinkedList<SysFile> sysFiles = new LinkedList<SysFile>();
+        FileSystem fileSystem = os.getFileSystem();
+        List<OSFileStore> fsArray = fileSystem.getFileStores();
+        for (OSFileStore fs : fsArray) {
+            long free = fs.getUsableSpace();
+            long total = fs.getTotalSpace();
+            long used = total - free;
+            SysFile sysFile = new SysFile();
+            sysFile.setDirName(fs.getMount());
+            sysFile.setSysTypeName(fs.getType());
+            sysFile.setTypeName(fs.getName());
+            sysFile.setTotal(convertFileSize(total));
+            sysFile.setFree(convertFileSize(free));
+            sysFile.setUsed(convertFileSize(used));
+            sysFile.setUsage(DoubleUtil.mul(DoubleUtil.div(used, total, 4), 100));
+            sysFiles.add(sysFile);
+        }
+        return sysFiles ;
+    }
+
+    /**
+     * 瀛楄妭杞崲
+     *
+     * @param size 瀛楄妭澶у皬
+     * @return 杞崲鍚庡��
+     */
+    public static String convertFileSize(long size) {
+        long kb = 1024;
+        long mb = kb * 1024;
+        long gb = mb * 1024;
+        if (size >= gb) {
+            return String.format("%.1f GB", (float) size / gb);
+        } else if (size >= mb) {
+            float f = (float) size / mb;
+            return String.format(f > 100 ? "%.0f MB" : "%.1f MB", f);
+        } else if (size >= kb) {
+            float f = (float) size / kb;
+            return String.format(f > 100 ? "%.0f KB" : "%.1f KB", f);
+        } else {
+            return String.format("%d B", size);
+        }
+    }
+    @Data
+    public static class SysFile{
+        /**
+         * 鐩樼璺緞
+         */
+        public String dirName;
+
+        /**
+         * 鐩樼绫诲瀷
+         */
+        public String sysTypeName;
+
+        /**
+         * 鏂囦欢绫诲瀷
+         */
+        public String typeName;
+
+        /**
+         * 鎬诲ぇ灏�
+         */
+        public String total;
+
+        /**
+         * 鍓╀綑澶у皬
+         */
+        public String free;
+
+        /**
+         * 宸茬粡浣跨敤閲�
+         */
+        public String used;
+
+        /**
+         * 璧勬簮鐨勪娇鐢ㄧ巼
+         */
+        public double usage;
+
+        public String toString(){
+            StringBuilder sb = new StringBuilder() ;
+            sb.append("   纾佺洏" + dirName + "\n");
+            sb.append("      鐩樼绫诲瀷锛�" + sysTypeName + "\n");
+            sb.append("      鏂囦欢绫诲瀷锛�" + typeName + "\n");
+            sb.append("      鎬诲ぇ灏忥細" + total + "\n");
+            sb.append("      鍓╀綑澶у皬锛�" + free + "\n");
+            sb.append("      宸茬粡浣跨敤閲忥細" + used + "\n");
+            sb.append("      璧勬簮浣跨敤鐜囷細" + usage + "\n");
+
+            return sb.toString() ;
+        }
+    }
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/SysJvmUtil.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/SysJvmUtil.java
new file mode 100644
index 0000000..fa0e1e0
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/SysJvmUtil.java
@@ -0,0 +1,78 @@
+package com.dy.common.util;
+
+import lombok.Data;
+
+import java.net.UnknownHostException;
+import java.text.DecimalFormat;
+import java.util.Properties;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/8/2 13:52
+ * @Description
+ */
+public class SysJvmUtil {
+
+    /**
+Java铏氭嫙鏈轰俊鎭�
+     */
+    public static JvmInfoVo info() throws UnknownHostException {
+        JvmInfoVo vo = new JvmInfoVo() ;
+        Properties props = System.getProperties();
+        vo.setTotal(toMbytes(Runtime.getRuntime().totalMemory()));
+        vo.setMax(toMbytes(Runtime.getRuntime().maxMemory()));
+        vo.setFree(toMbytes(Runtime.getRuntime().freeMemory()));
+        vo.setVersion(props.getProperty("java.version"));
+        vo.setHome(props.getProperty("java.home"));
+        return vo ;
+    }
+
+    private static double toMbytes(double value){
+        return value/1000000.0 ;
+    }
+
+    @Data
+    public static class JvmInfoVo {
+        /**
+    褰撳墠JVM鍗犵敤鐨勫唴瀛樻�绘暟(M)
+         */
+        public double total;
+
+        /**
+    JVM鏈�澶у彲鐢ㄥ唴瀛樻�绘暟(M)
+         */
+        public double max;
+
+        /**
+    JVM绌洪棽鍐呭瓨(M)
+         */
+        public double free;
+
+        /**
+    JDK鐗堟湰
+         */
+        public String version;
+
+        /**
+    JDK璺緞
+         */
+        public String home;
+
+
+        public String toString(){
+            DecimalFormat df = new DecimalFormat("#.####"); // 璁惧畾鏍煎紡
+            StringBuilder sb = new StringBuilder() ;
+            sb.append("   JVM淇℃伅锛歕n");
+            sb.append("      JVM鏈�澶у彲鐢ㄥ唴瀛樻�绘暟(M)锛�" + df.format(max) + "\n");
+            sb.append("      JVM鍗犵敤鐨勫唴瀛樻暟(M)锛�" + df.format(total) + "\n");
+            sb.append("      JVM绌洪棽鍐呭瓨鏁�(M)锛�" + df.format(free) + "\n");
+            sb.append("      JDK鐗堟湰锛�" + version + "\n");
+            sb.append("      JDK璺緞锛�" + home + "\n");
+
+            return sb.toString() ;
+        }
+    }
+
+
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/SysMemoryUtil.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/SysMemoryUtil.java
new file mode 100644
index 0000000..62955bd
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/SysMemoryUtil.java
@@ -0,0 +1,58 @@
+package com.dy.common.util;
+
+import lombok.Data;
+import oshi.hardware.GlobalMemory;
+
+import java.text.DecimalFormat;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/8/2 13:42
+ * @Description
+ */
+public class SysMemoryUtil {
+
+    /**
+     * 鍐呭瓨淇℃伅
+     */
+    public static MemInfoVo info(GlobalMemory memory) {
+        MemInfoVo vo = new MemInfoVo() ;
+        vo.setTotal(toGbytes(memory.getTotal()));
+        vo.setUsed(toGbytes(memory.getTotal() - memory.getAvailable()));
+        vo.setFree(toGbytes(memory.getAvailable()));
+        return vo ;
+    }
+
+    private static double toGbytes(double value){
+        return value/1000000000.0 ;
+    }
+
+    @Data
+    public static class MemInfoVo {
+        /**
+         * 鍐呭瓨鎬婚噺
+         */
+        public double total;
+
+        /**
+         * 宸茬敤鍐呭瓨
+         */
+        public double used;
+
+        /**
+         * 鍓╀綑鍐呭瓨
+         */
+        public double free;
+
+        public String toString(){
+            DecimalFormat df = new DecimalFormat("#.####"); // 璁惧畾鏍煎紡
+            StringBuilder sb = new StringBuilder() ;
+            sb.append("   鍐呭瓨淇℃伅锛歕n");
+            sb.append("      鍐呭瓨鎬婚噺(G)锛�" + df.format(total) + "\n");
+            sb.append("      宸茬敤鍐呭瓨(G)锛�" + df.format(used) + "\n");
+            sb.append("      鍓╀綑鍐呭瓨(G)锛�" + df.format(free) + "\n");
+
+            return sb.toString() ;
+        }
+    }
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/SysSysUtil.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/SysSysUtil.java
new file mode 100644
index 0000000..bbaee01
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/SysSysUtil.java
@@ -0,0 +1,68 @@
+package com.dy.common.util;
+
+import lombok.Data;
+
+import java.util.Properties;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/8/2 13:46
+ * @Description
+ */
+public class SysSysUtil {
+
+    /**
+     * 璁剧疆鏈嶅姟鍣ㄤ俊鎭�
+     */
+    public static SysInfoVo info() {
+        SysInfoVo vo = new SysInfoVo() ;
+        Properties props = System.getProperties();
+        vo.setComputerName(IPUtils.getHostName());
+        vo.setComputerIp(IPUtils.getHostIp());
+        vo.setOsName(props.getProperty("os.name"));
+        vo.setOsArch(props.getProperty("os.arch"));
+        vo.setUserDir(props.getProperty("user.dir"));
+        return vo ;
+    }
+
+
+    @Data
+    public static class  SysInfoVo{
+        /**
+         * 鏈嶅姟鍣ㄥ悕绉�
+         */
+        public String computerName;
+
+        /**
+         * 鏈嶅姟鍣↖p
+         */
+        public String computerIp;
+
+        /**
+         * 椤圭洰璺緞
+         */
+        public String userDir;
+
+        /**
+         * 鎿嶄綔绯荤粺
+         */
+        public String osName;
+
+        /**
+         * 绯荤粺鏋舵瀯
+         */
+        public String osArch;
+
+        public String toString(){
+            StringBuilder sb = new StringBuilder() ;
+            sb.append("   绯荤粺淇℃伅锛歕n");
+            sb.append("      涓绘満鍚嶇О锛�" + computerName + "\n");
+            sb.append("      涓绘満IP锛�" + computerIp + "\n");
+            sb.append("      椤圭洰璺緞锛�" + userDir + "\n");
+            sb.append("      鎿嶄綔绯荤粺锛�" + osName + "\n");
+            sb.append("      绯荤粺鏋舵瀯锛�" + osArch + "\n");
+
+            return sb.toString() ;
+        }
+    }
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/SysUtil.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/SysUtil.java
new file mode 100644
index 0000000..40895ea
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/SysUtil.java
@@ -0,0 +1,64 @@
+package com.dy.common.util;
+
+import lombok.Data;
+
+import oshi.SystemInfo;
+import oshi.hardware.HardwareAbstractionLayer;
+
+import java.util.LinkedList;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/8/2 15:37
+ * @Description
+ */
+public class SysUtil {
+
+    public static InfoVo info() throws Exception {
+        InfoVo vo = new InfoVo() ;
+        SystemInfo si = new SystemInfo();
+        HardwareAbstractionLayer hal = si.getHardware();
+
+        vo.cpuInfoVo = SysCpuUtil.info(hal.getProcessor());
+
+        vo.memInfoVo = SysMemoryUtil.info(hal.getMemory());
+
+        vo.sysInfoVo = SysSysUtil.info();
+
+        vo.jvmInfoVo = SysJvmUtil.info();
+
+        vo.sysFiles = SysFileSysUtil.info(si.getOperatingSystem());
+
+        return vo ;
+    }
+
+    @Data
+    public static class InfoVo {
+        public SysCpuUtil.CpuInfoVo cpuInfoVo ;
+        public SysJvmUtil.JvmInfoVo jvmInfoVo ;
+        public SysMemoryUtil.MemInfoVo memInfoVo ;
+        public LinkedList<SysFileSysUtil.SysFile> sysFiles ;
+        public SysSysUtil.SysInfoVo sysInfoVo ;
+
+        public String toString(){
+            StringBuilder sb = new StringBuilder() ;
+            sb.append("绯荤粺淇℃伅锛歕n");
+            sb.append("  " + (cpuInfoVo != null?cpuInfoVo.toString():"") + "\n");
+            sb.append("  " + (jvmInfoVo != null?jvmInfoVo.toString():"") + "\n");
+            sb.append("  " + (memInfoVo != null?memInfoVo.toString():"") + "\n");
+            if(sysFiles != null && sysFiles.size() > 0){
+                for(SysFileSysUtil.SysFile f : sysFiles){
+                    sb.append("  " + f.toString() + "\n");
+                }
+            }
+            sb.append("  " + (sysInfoVo != null?sysInfoVo.toString():"") + "\n");
+
+            return sb.toString() ;
+        }
+    }
+
+    public static void main(String[] args) throws Exception{
+        SysUtil.InfoVo vo = SysUtil.info() ;
+        System.out.println(vo.toString());
+    }
+}
diff --git a/pipIrr-platform/pipIrr-global/pom.xml b/pipIrr-platform/pipIrr-global/pom.xml
index f780609..a494f6e 100644
--- a/pipIrr-platform/pipIrr-global/pom.xml
+++ b/pipIrr-platform/pipIrr-global/pom.xml
@@ -146,6 +146,12 @@
             <groupId>com.aliyun</groupId>
             <artifactId>alibaba-dingtalk-service-sdk</artifactId>
             <version>2.0.0</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>commons-logging</groupId>
+                    <artifactId>commons-logging</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>commons-codec</groupId>
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/pom.xml b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/pom.xml
index 29cb1cb..1597595 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/pom.xml
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/pom.xml
@@ -130,6 +130,12 @@
             <groupId>com.aliyun</groupId>
             <artifactId>alibaba-dingtalk-service-sdk</artifactId>
             <version>2.0.0</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>commons-logging</groupId>
+                    <artifactId>commons-logging</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>commons-codec</groupId>
@@ -137,6 +143,22 @@
             <version>1.15</version>
         </dependency>
 
+        <!-- 鑾峰緱绯荤粺淇℃伅 -->
+        <dependency>
+            <groupId>com.github.oshi</groupId>
+            <artifactId>oshi-core</artifactId>
+            <version>6.6.2</version>
+        </dependency>
+        <dependency>
+            <groupId>net.java.dev.jna</groupId>
+            <artifactId>jna</artifactId>
+            <version>5.12.1</version>
+        </dependency>
+        <dependency>
+            <groupId>net.java.dev.jna</groupId>
+            <artifactId>jna-platform</artifactId>
+            <version>5.12.1</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 3d71ead..777c277 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
@@ -60,11 +60,11 @@
 //		try {
 //			URL url = Server.class.getResource("/config/this.licence");
 //			if(!new Lnp(null).parese(url.getPath())){
-//				System.out.println("zhzc licence error!") ;   
+//				System.out.println("licence error!") ;
 //				return ;
 //			}
 //		} catch (Exception e) {
-//			System.out.println("zhzc licence error!") ; 
+//			System.out.println("licence error!") ;
 //			return ;
 //		}
 		//Server sv = new Server();
@@ -295,7 +295,8 @@
 
 			
 			/////////////////
-			//RMI妯″潡
+			//RMI妯″潡 鏆傛椂涓嶅簲鐢�
+			/*
 			RmiConfigVo rmiVo = new RmiConfigVo();
 			rmiVo.enable = conf.getSetAttrBoolean(doc, "config.rmi", "enable", null, null) ;
 			if(rmiVo.enable){
@@ -311,7 +312,7 @@
 				RmiSvUrl = "[ip]:" + rmiVo.port + "/" + rmiVo.context ;
 				units.add(rmiUnit) ;
 			}
-
+			*/
 
 			/////////////////
 			//RTU涓婅鏁版嵁澶勭悊妯″潡
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/MwInfoDeal.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/MwInfoDeal.java
index 43658e2..b979ff1 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/MwInfoDeal.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/MwInfoDeal.java
@@ -1,10 +1,13 @@
 package com.dy.rtuMw.server.local.localProtocol;
 
 import com.dy.common.threadPool.TreadPoolFactory;
+import com.dy.common.util.*;
 import com.dy.rtuMw.server.forTcp.TcpDownCommandCache;
 import com.dy.rtuMw.server.forTcp.TcpSessionCache;
 import com.dy.rtuMw.server.rtuData.RtuDataCache;
 import com.dy.rtuMw.server.rtuData.TaskPool;
+import oshi.SystemInfo;
+import oshi.hardware.HardwareAbstractionLayer;
 
 /**
  * @Author: liurunyu
@@ -13,7 +16,7 @@
  */
 public class MwInfoDeal {
 
-    public MwInfoVo deal(){
+    public MwInfoVo deal() throws Exception{
         MwInfoVo vo = new MwInfoVo() ;
         Integer[] info = TcpSessionCache.info() ;
         vo.rtuTotalConnect = info[0] ;
@@ -39,6 +42,12 @@
 
         vo.taskTreePoolTotalInstance = TaskPool.totalTasks() ;
 
+        SystemInfo si = new SystemInfo();
+        HardwareAbstractionLayer hal = si.getHardware();
+        vo.memInfoVo = SysMemoryUtil.info(hal.getMemory());
+        vo.sysInfoVo = SysSysUtil.info();
+        vo.jvmInfoVo = SysJvmUtil.info();
+
         return vo ;
     }
 }
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/MwInfoVo.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/MwInfoVo.java
index 9a9f330..44a85ec 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/MwInfoVo.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/MwInfoVo.java
@@ -1,6 +1,9 @@
 package com.dy.rtuMw.server.local.localProtocol;
 
+import com.dy.common.util.*;
 import lombok.Data;
+
+import java.util.LinkedList;
 
 /**
  * @Author: liurunyu
@@ -28,6 +31,10 @@
 
     public Integer taskTreePoolTotalInstance = 0 ;//浠诲姟鏍戞睜浠诲姟瀹炰緥鎬绘暟
 
+    public SysJvmUtil.JvmInfoVo jvmInfoVo ;
+    public SysMemoryUtil.MemInfoVo memInfoVo ;
+    public SysSysUtil.SysInfoVo sysInfoVo ;
+
     public String toString(){
         StringBuilder sb = new StringBuilder() ;
         sb.append("閫氫俊涓棿浠惰繍琛屼俊鎭�:\n");
@@ -45,6 +52,15 @@
         sb.append("      闀跨嚎绋嬫睜閰嶇疆鏈�澶х嚎绋嬫暟锛�" + longMaxThread + "\n");
         sb.append("      闀跨嚎绋嬫睜閰嶇疆鏈�灏忕嚎绋嬫暟锛�" + longMinThread + "\n");
         sb.append("   浠诲姟鏍戞睜浠诲姟瀹炰緥鎬绘暟锛�" + taskTreePoolTotalInstance + "\n");
+        if(jvmInfoVo != null){
+            sb.append(jvmInfoVo.toString()) ;
+        }
+       if(memInfoVo != null){
+            sb.append(memInfoVo.toString()) ;
+        }
+       if(sysInfoVo != null){
+            sb.append(sysInfoVo.toString()) ;
+        }
         sb.append("\n");
 
         return sb.toString() ;
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 03f1eeb..ccb127c 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
@@ -103,15 +103,19 @@
             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() ;
+                if(alarmVo.hasAlarm()) {
+                    po.sendMsTime = System.currentTimeMillis();
                     this.sendMessage(controller, alarmVo);
                 }
+            }else{
+                if(alarmVo.hasAlarm()){
+                    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);
diff --git a/pipIrr-platform/pipIrr-mw/pom.xml b/pipIrr-platform/pipIrr-mw/pom.xml
index 2d08fea..95e7429 100644
--- a/pipIrr-platform/pipIrr-mw/pom.xml
+++ b/pipIrr-platform/pipIrr-mw/pom.xml
@@ -122,6 +122,22 @@
             <artifactId>jdom2</artifactId>
         </dependency>
 
+        <!-- 鑾峰緱绯荤粺淇℃伅 -->
+        <dependency>
+            <groupId>com.github.oshi</groupId>
+            <artifactId>oshi-core</artifactId>
+            <version>6.6.2</version>
+        </dependency>
+        <dependency>
+            <groupId>net.java.dev.jna</groupId>
+            <artifactId>jna</artifactId>
+            <version>5.12.1</version>
+        </dependency>
+        <dependency>
+            <groupId>net.java.dev.jna</groupId>
+            <artifactId>jna-platform</artifactId>
+            <version>5.12.1</version>
+        </dependency>
 
         <!-- 娴嬭瘯 -->
         <dependency>

--
Gitblit v1.8.0