From 8043346013cac57ba9e0b74ec68408a463c84c18 Mon Sep 17 00:00:00 2001 From: wuzeyu <1223318623@qq.com> Date: 星期三, 31 七月 2024 16:38:03 +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/MwInfoVo.java | 52 +++++ pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/application.yml | 2 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/threadPool/ThreadPool.java | 7 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkPreGenObjs.java | 2 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/ServerProperties.java | 3 pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/common/CodeLocal.java | 3 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/threadPool/ThreadPoolImp.java | 16 + pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/CommandP206V1_0_0Ctrl.java | 6 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataAlarmVo.java | 28 +++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrController.java | 9 + pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpDownCommandCache.java | 23 ++ pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java | 6 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeCtrl.java | 16 + pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/config/DingTalk.java | 86 +++++++++ pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateLastMapper.xml | 20 + pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/resources/Config.xml | 2 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/threadPool/TreadPoolFactory.java | 22 ++ pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/MwInfoDeal.java | 44 ++++ pipIrr-platform/pipIrr-global/pom.xml | 13 + pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientAmountStatistics.java | 2 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java | 23 ++ pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/TaskPool.java | 12 + pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java | 34 +++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoIntakeAmountStatistics.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-global/src/main/resources/mapper/PrControllerMapper.xml | 13 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml | 2 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/resources/application.yml | 2 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/CodeLocal.java | 3 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateLast.java | 5 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-global/src/main/resources/application-global.yml | 9 + pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/CommandInnerDeaLer.java | 12 + 33 files changed, 473 insertions(+), 30 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-common/src/main/java/com/dy/common/threadPool/ThreadPool.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/threadPool/ThreadPool.java index 84e72eb..32537ae 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/threadPool/ThreadPool.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/threadPool/ThreadPool.java @@ -10,6 +10,13 @@ */ public interface Pool{ /** + * 绾跨▼姹犱腑绾跨▼涓暟 + * @return + */ + public Integer size() ; + public Integer maxThread() ; + public Integer minThread() ; + /** * 鎶婃墍瑕佹墽琛岀殑宸ヤ綔瀵硅薄瀹炰緥鏀惧叆绾跨▼姹犱腑 * @param job ThreadJob 宸ヤ綔瀵硅薄瀹炰緥 * @throws Exception diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/threadPool/ThreadPoolImp.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/threadPool/ThreadPoolImp.java index 15cb864..ba8154a 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/threadPool/ThreadPoolImp.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/threadPool/ThreadPoolImp.java @@ -131,6 +131,22 @@ this.monitorThread.start() ; } } + /** + * 绾跨▼姹犱腑绾跨▼涓暟 + * @return + */ + @Override + public Integer size() { + return currNum ; + } + @Override + public Integer maxThread() { + return maxNum ; + } + @Override + public Integer minThread() { + return minNum ; + } /** * 鎶婃墍瑕佹墽琛岀殑宸ヤ綔瀵硅薄瀹炰緥鏀惧叆绾跨▼姹犱腑 diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/threadPool/TreadPoolFactory.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/threadPool/TreadPoolFactory.java index f7c34ee..b20cbca 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/threadPool/TreadPoolFactory.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/threadPool/TreadPoolFactory.java @@ -5,7 +5,27 @@ private static ThreadPool.Pool pool_short ;//鐭伐浣滀换鍔$嚎绋嬫睜锛岀嚎绋嬪伐浣滅敤鏃惰緝鐭� private static ThreadPool.Pool pool_long ;//闀垮伐浣滀换鍔$嚎绋嬫睜锛岀嚎绋嬪伐浣滅敤鏃惰緝闀� - + + + public final static Integer[] pool_short_state(){ + Integer shortCurThread = 0 ;//鐭嚎绋嬫睜褰撳墠绾跨▼鏁� + Integer shortMaxThread = 0 ;//鐭嚎绋嬫睜鏈�澶х嚎绋嬫暟 + Integer shortMinThread = 0 ;//鐭嚎绋嬫睜鏈�灏忕嚎绋嬫暟 + shortCurThread = pool_short.size() ; + shortMaxThread = pool_short.maxThread() ; + shortMinThread = pool_short.minThread() ; + return new Integer[]{shortCurThread, shortMaxThread, shortMinThread} ; + } + + public final static Integer[] pool_long_state(){ + Integer longCurThread = 0 ;//鐭嚎绋嬫睜褰撳墠绾跨▼鏁� + Integer longMaxThread = 0 ;//鐭嚎绋嬫睜鏈�澶х嚎绋嬫暟 + Integer longMinThread = 0 ;//鐭嚎绋嬫睜鏈�灏忕嚎绋嬫暟 + longCurThread = pool_long.size() ; + longMaxThread = pool_long.maxThread() ; + longMinThread = pool_long.minThread() ; + return new Integer[]{longCurThread, longMaxThread, longMinThread} ; + } /** * 鍒濆鍖栫嚎绋嬫睜 * @param poolName 绾跨▼姹犲拰绾跨▼鍚嶇О diff --git a/pipIrr-platform/pipIrr-global/pom.xml b/pipIrr-platform/pipIrr-global/pom.xml index 67e9c0e..4624b96 100644 --- a/pipIrr-platform/pipIrr-global/pom.xml +++ b/pipIrr-platform/pipIrr-global/pom.xml @@ -140,6 +140,19 @@ <artifactId>okhttp</artifactId> <version>4.9.2</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> </dependencies> <build> 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 new file mode 100644 index 0000000..67afbfc --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/config/DingTalk.java @@ -0,0 +1,86 @@ +package com.dy.pipIrrGlobal.config; + +import com.dingtalk.api.DefaultDingTalkClient; +import com.dingtalk.api.DingTalkClient; +import com.dingtalk.api.request.OapiRobotSendRequest; +import com.dingtalk.api.response.OapiRobotSendResponse; +import com.taobao.api.ApiException; +import org.apache.commons.codec.binary.Base64; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import javax.crypto.Mac; +import javax.crypto.spec.SecretKeySpec; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.util.Collections; + +/** + * @author ZhuBaoMin + * @date 2024-07-31 9:20 + * @LastEditTime 2024-07-31 9:20 + * @Description 閽夐拤瀹㈡埛绔伐鍏风被 + */ + +@Component +public class DingTalk { + @Value("${dingtalk.robot.url}") + private String URL; + + @Value("${dingtalk.robot.access-token}") + private String CUSTOM_ROBOT_TOKEN; + + @Value("${dingtalk.robot.secret}") + private String SECRET; + + @Value("${dingtalk.at-all}") + private Boolean AT_ALL; + + @Value("${dingtalk.mobile}") + private String MOBILE; + + public void sendMessage(String message) { + try { + Long timestamp = System.currentTimeMillis(); + String secret = SECRET; + String stringToSign = timestamp + "\n" + secret; + Mac mac = Mac.getInstance("HmacSHA256"); + mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256")); + byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8")); + String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8"); + + //sign瀛楁鍜宼imestamp瀛楁蹇呴』鎷兼帴鍒拌姹俇RL涓婏紝鍚﹀垯浼氬嚭鐜� 310000 鐨勯敊璇俊鎭� + DingTalkClient client = new DefaultDingTalkClient( URL + "?sign=" + sign + "×tamp=" + timestamp); + OapiRobotSendRequest req = new OapiRobotSendRequest(); + /** + * 鍙戦�佹枃鏈秷鎭� + */ + //瀹氫箟鏂囨湰鍐呭 + OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text(); + text.setContent(message); + //瀹氫箟 @瀵硅薄 + OapiRobotSendRequest.At at = new OapiRobotSendRequest.At(); + if(AT_ALL) { + at.setIsAtAll(true); + }else { + at.setAtMobiles(Collections.singletonList(MOBILE)); + } + //璁剧疆娑堟伅绫诲瀷 + req.setMsgtype("text"); + req.setText(text); + req.setAt(at); + OapiRobotSendResponse rsp = client.execute(req, CUSTOM_ROBOT_TOKEN); + System.out.println(rsp.getBody()); + } catch (ApiException e) { + e.printStackTrace(); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); + } catch (NoSuchAlgorithmException e) { + throw new RuntimeException(e); + } catch (InvalidKeyException e) { + throw new RuntimeException(e); + } + } +} diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrController.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrController.java index 6f977b5..c36da5f 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrController.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrController.java @@ -3,6 +3,7 @@ import com.alibaba.fastjson2.annotation.JSONField; import com.alibaba.fastjson2.writer.ObjectWriterImplToString; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.dy.common.po.BaseEntity; @@ -99,4 +100,12 @@ */ @Schema(description = "鍒犻櫎鏍囪瘑", requiredMode = Schema.RequiredMode.NOT_REQUIRED) private Byte deleted; + + + ///////////////////////////////////////// + // 闈炴暟鎹簱灞炴�� + ///////////////////////////////////////// + @TableField(exist = false) + @Schema(description = "鍙栨按鍙g紪鍙�") + public String intakeName ; } \ No newline at end of file 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/java/com/dy/pipIrrGlobal/voSt/VoClientAmountStatistics.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientAmountStatistics.java index dfdbe82..3a61efd 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientAmountStatistics.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientAmountStatistics.java @@ -5,7 +5,7 @@ /** * @Author: liurunyu * @Date: 2024/7/24 17:09 - * @Description + * @Description 浠ョ敤姘存埛缁熻鐢ㄦ按閲� */ @Data public class VoClientAmountStatistics { diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoIntakeAmountStatistics.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoIntakeAmountStatistics.java index 508e4ae..429df09 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoIntakeAmountStatistics.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoIntakeAmountStatistics.java @@ -5,7 +5,7 @@ /** * @Author: liurunyu * @Date: 2024/7/24 14:16 - * @Description 浠ュ彇姘村彛缁熻婕忔崯 + * @Description 浠ュ彇姘村彛缁熻鍙栨按閲� */ @Data public class VoIntakeAmountStatistics { diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml index 408b44e..3fd34ef 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml @@ -167,3 +167,12 @@ auto-statistics: startHour: 17 #寮�濮嬪皬鏃� 0 startMinute: 19 #寮�濮嬪垎閽� 5 + +#閽夐拤娑堟伅鎺ㄩ�� +dingtalk: + robot: + url: https://oapi.dingtalk.com/robot/send + access-token: fecef8e7725998f8912af05419580861aafc73413c4920036c07c050fa33055f + secret: SEC6042bc964d08899a5853eb321eb5a4d842a395982777f815bd07451c879228b7 + at-all: true + mobile: 18602657034 \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml index e9b32bd..3ba6bb9 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml @@ -260,11 +260,14 @@ </select> <!--鏍规嵁鎺у埗鍣ㄥ湴鍧�鑾峰彇鎺у埗鍣ㄥ垪琛�--> - <select id="getControllersByRtuAddrAndIntakeNotNull" parameterType="java.lang.String" resultMap="PartResultMap"> - SELECT - <include refid="Part_Column_List"> - </include> - FROM pr_controller WHERE deleted = 0 AND intakeId is not null AND rtuAddr=#{rtuAddr,jdbcType=VARCHAR} + <select id="getControllersByRtuAddrAndIntakeNotNull" parameterType="java.lang.String" resultType="com.dy.pipIrrGlobal.pojoPr.PrController"> + SELECT tb.id id, + tb.rtuAddr rtuAddr, + tb.intakeId intakeId, + itb.name intakeName + FROM pr_controller tb + INNER JOIN pr_intake itb on tb.intakeId=itb.id + WHERE deleted = 0 AND intakeId is not null AND rtuAddr=#{rtuAddr,jdbcType=VARCHAR} </select> <!--鏍规嵁鎺у埗鍣ㄧ紪鍙烽�昏緫鍒犻櫎鎺у埗--> 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/forTcp/TcpDownCommandCache.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpDownCommandCache.java index b4fc611..bae9ac6 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpDownCommandCache.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpDownCommandCache.java @@ -25,6 +25,29 @@ return instance ; } + + public static Integer[] info(){ + Integer comTotalDown = 0 ;//缂撳瓨鐨勪笅琛屽懡浠ゆ�绘暟 + Integer comNoResTotalDownByOnLine = 0 ;//RTU鍦ㄧ嚎锛屼絾瀵瑰叾涓嬭鍛戒护鏈敹鍒板簲绛旂殑鎬绘暟 + Integer comNoResTotalDownByOffLine = 0 ;//RTU绂荤嚎锛屼絾瀵瑰叾涓嬭鍛戒护鏈敹鍒板簲绛旂殑鎬绘暟 + MidResultToRtu res ; + TcpDownCommandObj obj ; + Node node = cacheQueue.getFirstNode() ; + while(node != null && node.obj != null){ + obj = (TcpDownCommandObj)node.obj; + res = obj.result ; + if(!obj.onceReceivedResult){ + comTotalDown ++ ; + if(TcpSessionCache.isConnect(res.rtuAddr)){ + comNoResTotalDownByOnLine ++ ; + }else{ + comNoResTotalDownByOffLine ++ ; + } + } + } + return new Integer[]{comTotalDown, comNoResTotalDownByOnLine, comNoResTotalDownByOffLine} ; + } + /** * 缂撳瓨鍛戒护 * @param result diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java index bf28087..c7aff2f 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java @@ -24,6 +24,29 @@ */ private static HashMap<String, TcpSession> sessionTable = new HashMap<String, TcpSession>() ; + + /** + * 寰楀埌淇℃伅 + * @return + */ + public static Integer[] info(){ + Integer rtuTotalConnect = 0 ;//宸茬粡杩炴帴杩囦腑闂翠欢鐨凴TU鎬绘暟锛堝寘鎷湪绾夸笌绂荤嚎鐨勶級 + Integer rtuTotalOnLine = 0 ;//鍦ㄧ嚎RTU鎬绘暟 + Integer rtuTotalOffLine = 0 ;//绂荤嚎RTU鎬绘暟 + synchronized (sessionTable){ + rtuTotalConnect = sessionTable.size() ; + Collection<TcpSession> col = sessionTable.values() ; + for(TcpSession se : col){ + if(se.ioSession.isConnected()){ + rtuTotalOnLine ++ ; + }else{ + rtuTotalOffLine ++ ; + } + } + } + return new Integer[] {rtuTotalConnect, rtuTotalOnLine, rtuTotalOffLine} ; + } + /** * 鍏抽棴鎵�鏈夌綉缁滆繛鎺� */ diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/CommandInnerDeaLer.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/CommandInnerDeaLer.java index 9ae2f68..a2dfc3a 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/CommandInnerDeaLer.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/CommandInnerDeaLer.java @@ -29,6 +29,8 @@ return this.stopTcpSv(com) ; }else if(code.equals(CodeLocal.recoverTcpSv)){ return this.recoverTcpSv(com) ; + }else if(code.equals(CodeLocal.mwState)){ + return this.mwInfo(com) ; } return ReturnCommand.errored("鍑洪敊锛屾敹鍒板唴閮ㄥ懡浠ょ殑鍔熻兘鐮佷笉鑳借瘑鍒紒", com.getId(), com.getCode()) ; } @@ -84,4 +86,14 @@ + /** + * 鏌ヨ閫氫俊涓棿浠惰繍琛屾儏鍐� + * @throws Exception + */ + private Command mwInfo(Command command) throws Exception{ + MwInfoVo mwInfo = new MwInfoDeal().deal() ; + return ReturnCommand.successed("鏌ヨ閫氫俊涓棿浠惰繍琛屾儏鍐�", command.getId(), command.getCode(), mwInfo) ; + } + + } diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/CodeLocal.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/CodeLocal.java index 49aa69d..2c3e0fa 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/CodeLocal.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/CodeLocal.java @@ -9,6 +9,9 @@ public static final String allProtocols = "LCD0100" ;//鏌ヨ鎵�鏈夊崗璁厤缃� public static final String stopTcpSv = "LCD0110" ;//鍋滄TCP鏈嶅姟锛屼笉鍐嶆帴鍏ユ柊鐨凾CP杩炴帴锛屽凡缁廡CP杩炴帴鐨勫叏閮ㄦ柇杩炴帴 + public static final String recoverTcpSv = "LCD0112" ;//閲嶅惎TCP鏈嶅姟锛屾帴鍏ユ柊鐨凾CP杩炴帴 + public static final String mwState = "LCD0200" ;//寰楀埌閫氫俊涓棿浠惰繍琛屼俊鎭� + } 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 new file mode 100644 index 0000000..43658e2 --- /dev/null +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/MwInfoDeal.java @@ -0,0 +1,44 @@ +package com.dy.rtuMw.server.local.localProtocol; + +import com.dy.common.threadPool.TreadPoolFactory; +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; + +/** + * @Author: liurunyu + * @Date: 2024/7/29 11:07 + * @Description + */ +public class MwInfoDeal { + + public MwInfoVo deal(){ + MwInfoVo vo = new MwInfoVo() ; + Integer[] info = TcpSessionCache.info() ; + vo.rtuTotalConnect = info[0] ; + vo.rtuTotalOnLine = info[1] ; + vo.rtuTotalOffLine = info[2] ; + + info = TcpDownCommandCache.info() ; + vo.comTotalDown = info[0] ; + vo.comNoResTotalDownByOnLine = info[1] ; + vo.comNoResTotalDownByOffLine = info[2] ; + + vo.dataTotalUp = RtuDataCache.size() ; + + info = TreadPoolFactory.pool_short_state() ; + vo.shortCurThread = info[0] ; + vo.shortMaxThread = info[1] ; + vo.shortMinThread = info[2] ; + + info = TreadPoolFactory.pool_long_state() ; + vo.longCurThread = info[0] ; + vo.longMaxThread = info[1] ; + vo.longMinThread = info[2] ; + + vo.taskTreePoolTotalInstance = TaskPool.totalTasks() ; + + 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 new file mode 100644 index 0000000..9a9f330 --- /dev/null +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/MwInfoVo.java @@ -0,0 +1,52 @@ +package com.dy.rtuMw.server.local.localProtocol; + +import lombok.Data; + +/** + * @Author: liurunyu + * @Date: 2024/7/29 10:54 + * @Description + */ +@Data +public class MwInfoVo { + public Integer rtuTotalConnect ;//宸茬粡杩炴帴杩囦腑闂翠欢鐨凴TU鎬绘暟锛堝寘鎷湪绾夸笌绂荤嚎鐨勶級 + public Integer rtuTotalOnLine ;//鍦ㄧ嚎RTU鎬绘暟 + public Integer rtuTotalOffLine ;//绂荤嚎RTU鎬绘暟 + + public Integer comTotalDown ;//缂撳瓨鐨勪笅琛屽懡浠ゆ�绘暟 + public Integer comNoResTotalDownByOnLine;//RTU鍦ㄧ嚎锛屼絾瀵瑰叾涓嬭鍛戒护鏈敹鍒板簲绛旂殑鎬绘暟 + public Integer comNoResTotalDownByOffLine;//RTU绂荤嚎锛屼絾瀵瑰叾涓嬭鍛戒护鏈敹鍒板簲绛旂殑鎬绘暟 + + public Integer dataTotalUp ;//涓婅鏁版嵁鍦ㄧ紦瀛樹腑杩樻湭澶勭悊鐨勬�绘暟 + + public Integer shortCurThread = 0 ;//鐭嚎绋嬫睜褰撳墠绾跨▼鏁� + public Integer shortMaxThread = 0 ;//鐭嚎绋嬫睜鏈�澶х嚎绋嬫暟 + public Integer shortMinThread = 0 ;//鐭嚎绋嬫睜鏈�灏忕嚎绋嬫暟 + public Integer longCurThread = 0 ;//闀跨嚎绋嬫睜褰撳墠绾跨▼鏁� + public Integer longMaxThread = 0 ;//闀跨嚎绋嬫睜鏈�澶х嚎绋嬫暟 + public Integer longMinThread = 0 ;//闀跨嚎绋嬫睜鏈�灏忕嚎绋嬫暟 + + public Integer taskTreePoolTotalInstance = 0 ;//浠诲姟鏍戞睜浠诲姟瀹炰緥鎬绘暟 + + public String toString(){ + StringBuilder sb = new StringBuilder() ; + sb.append("閫氫俊涓棿浠惰繍琛屼俊鎭�:\n"); + sb.append(" 杩炴帴RTU鎬绘暟锛�" + rtuTotalConnect + "\n"); + sb.append(" 鍦ㄧ嚎RTU鎬绘暟锛�" + rtuTotalOnLine + "\n"); + sb.append(" 绂荤嚎RTU鎬绘暟锛�" + rtuTotalOffLine + "\n"); + sb.append(" 涓嬭鏈簲绛斿懡浠ゆ�绘暟锛�" + comTotalDown + "\n"); + sb.append(" 鍦ㄧ嚎RTU鏈簲绛斿懡浠ゆ�绘暟锛�" + comNoResTotalDownByOnLine + "\n"); + sb.append(" 绂荤嚎RTU鏈簲绛斿懡浠ゆ�绘暟锛�" + comNoResTotalDownByOffLine + "\n"); + sb.append(" 涓婅鏈鐞嗘暟鎹�绘暟锛�" + dataTotalUp + "\n"); + sb.append(" 鐭嚎绋嬫睜褰撳墠绾跨▼鏁帮細" + shortCurThread + "\n"); + sb.append(" 鐭嚎绋嬫睜閰嶇疆鏈�澶х嚎绋嬫暟锛�" + shortMaxThread + "\n"); + sb.append(" 鐭嚎绋嬫睜閰嶇疆鏈�灏忕嚎绋嬫暟锛�" + shortMinThread + "\n"); + sb.append(" 闀跨嚎绋嬫睜褰撳墠绾跨▼鏁帮細" + longCurThread + "\n"); + sb.append(" 闀跨嚎绋嬫睜閰嶇疆鏈�澶х嚎绋嬫暟锛�" + longMaxThread + "\n"); + sb.append(" 闀跨嚎绋嬫睜閰嶇疆鏈�灏忕嚎绋嬫暟锛�" + longMinThread + "\n"); + sb.append(" 浠诲姟鏍戞睜浠诲姟瀹炰緥鎬绘暟锛�" + taskTreePoolTotalInstance + "\n"); + sb.append("\n"); + + return sb.toString() ; + } +} diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/TaskPool.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/TaskPool.java index bd4f5ed..5bceac7 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/TaskPool.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/TaskPool.java @@ -12,12 +12,22 @@ private static Logger log = LogManager.getLogger(TaskPool.class.getName()) ; private static List<TaskSurpport> tasks = new ArrayList<TaskSurpport>() ; + + private static Integer taskTotal = 0 ; private static TreeConfig taskTreeConf ; public static void setTaskTreeCofig(TreeConfig conf){ taskTreeConf = conf ; + } + + /** + * 寰楀埌浠诲姟鏍戝疄渚嬫�绘暟 + * @return + */ + public static Integer totalTasks() { + return taskTotal ; } @@ -39,6 +49,8 @@ } finally { if(t == null){ log.error("瀹炰緥鍖栦笂琛屾暟鎹鐞嗕换鍔″璞″け璐ワ紒" ); + }else{ + taskTotal++ ; } } } 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/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkPreGenObjs.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkPreGenObjs.java index 8c39b08..4eebda0 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkPreGenObjs.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkPreGenObjs.java @@ -53,7 +53,7 @@ onceUpDataRtus.put(rtuAddr, true) ; } - DbSv sv = (DbSv)SpringContextUtil.getBean(DbSv.class) ; + DbSv sv = SpringContextUtil.getBean(DbSv.class) ; if(sv != null){ PrController controller = sv.getControllersByRtuAddrAndIntakeNotNull(rtuAddr) ; PrControllerTramp controllerTramp = null ; 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" /> <!-- diff --git a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/resources/Config.xml b/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/resources/Config.xml index 58f8a1d..29e1d44 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/resources/Config.xml +++ b/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/resources/Config.xml @@ -4,5 +4,5 @@ <base rtuAddr="532328059995" onlyOneHeartBeat="true" icCardAddr="3B7D1E1A" icCardNo="61181622830147821"></base> <!-- --> - <tcpCl mwServerIp="192.168.40.182" mwServerPort="60000" connectTimeout="3000" /> + <tcpCl mwServerIp="127.0.0.1" mwServerPort="60000" connectTimeout="3000" /> </config> \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/common/CodeLocal.java b/pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/common/CodeLocal.java index 9b7edb2..e2fae7a 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/common/CodeLocal.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/common/CodeLocal.java @@ -9,6 +9,9 @@ public static final String allProtocols = "LCD0100" ;//鏌ヨ鎵�鏈夊崗璁厤缃� public static final String stopTcpSv = "LCD0110" ;//鍋滄TCP鏈嶅姟锛屼笉鍐嶆帴鍏ユ柊鐨凾CP杩炴帴锛屽凡缁廡CP杩炴帴鐨勫叏閮ㄦ柇杩炴帴 + public static final String recoverTcpSv = "LCD0112" ;//鎭㈠TCP鏈嶅姟锛屾帴鍏ユ柊鐨凾CP杩炴帴 + public static final String mwState = "LCD0200" ;//寰楀埌閫氫俊涓棿浠惰繍琛屼俊鎭� + } 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 8a2bfa1..6f0e02b 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 @@ -35,6 +35,8 @@ rt = this.stopTcpSv() ; }else if(com.equals(CodeLocal.recoverTcpSv)){ rt = this.recoverTcpSv() ; + }else if(com.equals(CodeLocal.mwState)){ + rt = this.mwState() ; }else if(com.equals("10")){ rt = this.cd10() ; }else if(com.equals("21")){ @@ -108,6 +110,10 @@ return this.sendCom2Mw(this.commandLocal(CodeLocal.recoverTcpSv, null, null)) ; } + private BaseResponse mwState(){ + return this.sendCom2Mw(this.commandLocal(CodeLocal.mwState, null, null)) ; + } + private BaseResponse cd10(){ Com10Vo comVo = new Com10Vo() ; comVo.rtuAddr = "532328059995" ;//鍓�6浣嶆槸琛屾斂鍖哄垝鐮侊紝鍚�6浣嶆槸搴忓垪鍙锋渶澶ф槸065535 diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeCtrl.java index 455015f..8fabaa3 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeCtrl.java @@ -13,6 +13,7 @@ import com.dy.pipIrrGlobal.voSe.VoActiveCard; import com.dy.pipIrrProject.intake.qo.OnLineIntakesQO; import com.dy.pipIrrProject.result.ProjectResultCode; +import com.taobao.api.ApiException; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.Content; @@ -51,6 +52,11 @@ @RequiredArgsConstructor public class IntakeCtrl { private final IntakeSv intakeSv; + + @GetMapping("/test") + public String sendMessage(String message) throws ApiException { + return intakeSv.sendMessage(message); + } /** * 瀹㈡埛绔姹傚緱鍒版墍鏈夊彇姘村彛鍚嶅瓧 @@ -142,7 +148,7 @@ @PostMapping(path = "add", consumes = MediaType.APPLICATION_JSON_VALUE) @Transactional(rollbackFor = Exception.class) @SsoAop() - public BaseResponse<Boolean> add(@RequestBody @Valid PrIntake po, @Parameter(hidden = true) BindingResult bindingResult) { + public BaseResponse<Boolean> add(@RequestBody @Valid PrIntake po, @Parameter(hidden = true) BindingResult bindingResult) { DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); if (bindingResult != null && bindingResult.hasErrors()) { return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); @@ -152,7 +158,7 @@ return BaseResponseUtils.buildFail(ProjectResultCode.INTAKE_NAME_EXIST.getMessage()); } po.setOperateDt(new Date()); - po.setDeleted((byte)0); + po.setDeleted((byte) 0); Integer rec = Optional.ofNullable(intakeSv.addIntake(po)).orElse(0); if (rec == 0) { return BaseResponseUtils.buildFail(ProjectResultCode.ADD_INTAKE_FAIL.getMessage()); @@ -182,11 +188,11 @@ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } List<Long> ids = intakeSv.getIntakeIdByNameExcludeId(po.getId(), po.getName()); - if (ids.size() > 0){ + if (ids.size() > 0) { return BaseResponseUtils.buildFail(ProjectResultCode.INTAKE_NAME_EXIST.getMessage()); } int count; - po.setOperateDt( new Date()); + po.setOperateDt(new Date()); try { count = this.intakeSv.update(po); } catch (Exception e) { @@ -286,6 +292,7 @@ /** * 鑾峰彇鍙栨按鍙e垪琛紙鍦ㄧ嚎鍜屼笉鍦ㄧ嚎锛� + * * @param qo * @return */ @@ -303,6 +310,7 @@ /** * 鏍规嵁鎿嶄綔鍛樿幏鍙栧父鐢ㄥ彇姘村彛锛堝湪绾垮拰涓嶅湪绾匡級 + * * @param operator * @return */ diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java index e3080e5..7684816 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java @@ -3,9 +3,11 @@ import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; +import com.dy.common.multiDataSource.DataSourceContext; import com.dy.common.mw.protocol.Command; import com.dy.common.webUtil.BaseResponse; import com.dy.common.webUtil.QueryResultVo; +import com.dy.pipIrrGlobal.config.DingTalk; import com.dy.pipIrrGlobal.daoPr.PrDivideMapper; import com.dy.pipIrrGlobal.daoPr.PrIntakeMapper; import com.dy.pipIrrGlobal.pojoPr.PrIntake; @@ -15,6 +17,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.common.utils.PojoUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; @@ -45,8 +48,32 @@ @Autowired private RestTemplate restTemplate; - protected static String mwUrlSendCom = "http://127.0.0.1:8070/rtuMw/com/send" ; + protected String comSendUrl; + /** + * pro_mw锛氬睘鎬� + * tag浠庢帶鍒跺櫒涓幏鍙� + * key_mw锛歶rl鐨刱ey + */ + private Environment env = null; + private String pro_mw = "mw"; + private String key_mw = "comSendUrl"; + @Autowired + public IntakeSv(Environment env) { + this.env = env; + } + + @Autowired + private DingTalk dingTalk; + + public String sendMessage(String message) { + try { + dingTalk.sendMessage(message); + } catch (Exception e) { + return "鍙戦�佸け璐�"; + } + return "鍙戦�佹垚鍔�"; + } /** * 娣诲姞鍙栨按鍙� @@ -78,7 +105,6 @@ public Long getSupperByVillageId(long vaId) { return prIntakeMapper.getSupperByVillageId(vaId); } - /** * 淇濆瓨淇敼瀹炰綋 @@ -207,9 +233,9 @@ com.id = Command.defaultId; com.code = "LCD0001"; com.type = "innerCommand"; + comSendUrl = env.getProperty(pro_mw + "." + DataSourceContext.get() + "." + key_mw); JSONObject response = (JSONObject) JSON.toJSON(sendCom2Mw(com)); - if(response != null && response.getString("code").equals("0001")) { JSONObject attachment = response.getJSONObject("content").getJSONObject("attachment").getJSONObject("onLineMap"); HashMap<String, Boolean> onLineMap = JSON.parseObject(attachment.toJSONString(), HashMap.class); @@ -272,7 +298,7 @@ * @return */ protected BaseResponse sendCom2Mw(Command com){ - String url = UriComponentsBuilder.fromUriString(mwUrlSendCom) + String url = UriComponentsBuilder.fromUriString(comSendUrl) .build() .toUriString(); HttpHeaders headers = new HttpHeaders(); diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/application.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/application.yml index 24d6838..ceb5374 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/application.yml +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/application.yml @@ -15,4 +15,4 @@ #GenerateIdSetSuffixListener涓簲鐢紝鍙栧�艰寖鍥存槸0-99 idSuffix: ${pipIrr.project.idSuffix} #ConfigListener涓簲鐢� - #configFileNames: config-global.xml,config-demo.xml + #configFileNames: config-global.xml,config-demo.xml \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/resources/application.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/resources/application.yml index 8dc7ccd..b6c6612 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/resources/application.yml +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/resources/application.yml @@ -15,4 +15,4 @@ #GenerateIdSetSuffixListener涓簲鐢紝鍙栧�艰寖鍥存槸0-99 idSuffix: ${pipIrr.remote.idSuffix} #ConfigListener涓簲鐢� - #configFileNames: config-global.xml,config-demo.xml + #configFileNames: config-global.xml,config-demo.xml \ No newline at end of file -- Gitblit v1.8.0