From 7d885c1d4c86f40927af50e6e7bfa13aac0c2180 Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期四, 21 十二月 2023 21:47:15 +0800 Subject: [PATCH] 1、common模块优化代码,Command命令中增加RTU命令结果返回webRul; 2、通信中间件增加了接收http下发RTU命令和内部命令的Controler; 3、RTU模拟器和控制器增加了上报完数据是否关闭TCP连接的控制。 --- pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/ParseParamsForDownV1_0_1.java | 13 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/tasks/FromRtuDataConstantTask.java | 4 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_71_Down.java | 3 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/RtuOnLineVo.java | 39 ++ pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Down.java | 1 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Down.java | 1 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/CommandType.java | 1 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Data.java | 16 + pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DriverV1_0_1.java | 7 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuDataNode.java | 12 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Up.java | 1 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/web/com/CommandCtrl.java | 108 +++++++ pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiClUnit.java | 2 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/web/comResult/WebResponseVo.java | 19 + pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/ServerProperties.java | 2 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java | 28 + pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/RtuOnLineDeal.java | 13 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuComResultNode.java | 54 +++ pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoPowerAspect.java | 1 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/LocalDecoder.java | 2 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/MyThreadJob.java | 32 + pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/MwConfigVo.java | 11 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/ClockVo.java | 64 ++++ pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/Server.java | 1 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/ClockDeal.java | 20 + pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/ServerProperties.java | 5 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuComResultCache.java | 65 ++++ pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/tasks/FromRtuComResultConstantTask.java | 42 +- pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/forTcp/MidResultActionFromRtu.java | 25 + pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoAspect.java | 1 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/RtuProtocolsDeal.java | 14 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/web/comResult/CommandResultDeal.java | 51 +++ pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultToRtu.java | 1 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java | 2 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/Server.java | 7 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/Manager.java | 1 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/ReturnCommand.java | 43 ++ pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webUtil/BaseResponseUtils.java | 4 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/CommandInnerDeaLer.java | 57 +++ pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java | 1 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/RtuProtocolVo.java | 38 ++ pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/ResConfigVo.java | 10 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/resources/Config.xml | 2 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultFromRtu.java | 9 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Down.java | 1 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java | 1 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/CodeLocal.java | 11 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Up.java | 1 48 files changed, 776 insertions(+), 71 deletions(-) diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoAspect.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoAspect.java index 2619ddc..660982d 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoAspect.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoAspect.java @@ -104,7 +104,6 @@ .queryParam("token", token) .build() .toUriString(); - // 鐢变簬鑾峰彇student鎺ュ彛鍜变滑璁剧疆浜哹asicauth锛屾墍浠ラ渶瑕佸湪璇锋眰鏃堕厤缃� HttpHeaders headers = new HttpHeaders(); HttpEntity<?> httpEntity = new HttpEntity<>(headers); ResponseEntity<SsoVo> response = null; diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoPowerAspect.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoPowerAspect.java index a9423ed..6535d5e 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoPowerAspect.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoPowerAspect.java @@ -121,7 +121,6 @@ .queryParam("anyPower", (Object) anyPower) .build() .toUriString(); - // 鐢变簬鑾峰彇student鎺ュ彛鍜变滑璁剧疆浜哹asicauth锛屾墍浠ラ渶瑕佸湪璇锋眰鏃堕厤缃� HttpHeaders headers = new HttpHeaders(); HttpEntity<?> httpEntity = new HttpEntity<>(headers); ResponseEntity<SsoVo> response = null; diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java index d2f7afc..933e980 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java @@ -3,6 +3,7 @@ import java.io.Serializable; import com.alibaba.fastjson2.JSON ; +import com.alibaba.fastjson2.JSONObject; public class Command implements Serializable{ @@ -50,6 +51,11 @@ public Boolean noRtMwDealRes ; /** + * rtu杩斿洖鍛戒护缁撴灉 鍙戝悜鐩殑鍦皐eb URL + */ + public String rtuResultSendWebUrl ; + + /** * 鍏蜂綋鍙傛暟鏁版嵁 */ public Object param ; @@ -63,9 +69,9 @@ String s = "鍛戒护id=" + id + "\n" ; s += (protocol == null ? "" : ("鍗忚=" + protocol + "\n")); s += (rtuAddr == null ? "" : ("Rtu鍦板潃=" + rtuAddr + "\n")); - s += "鍛戒护绫诲瀷=" + (type.equals(CommandType.innerCommand)?"鍐呴儴鍛戒护":"缁堢鍛戒护") + "\n" ; + s += "鍛戒护绫诲瀷=" + (type.equals(CommandType.innerCommand)?"鍐呴儴鍛戒护":"RTU鍛戒护") + "\n" ; s += (code == null ? "" : ("鍔熻兘鐮�=" + code + "\n")) ; - s += "杩斿洖涓棿浠跺鍛戒护澶勭悊缁撴灉=" + (noRtMwDealRes == null?"杩斿洖":(noRtMwDealRes?"涓嶈繑鍥�":"杩斿洖") + "\n") ; + s += "鏄惁杩斿洖涓棿浠跺鍛戒护澶勭悊缁撴灉=" + (noRtMwDealRes == null?"鏄�":(noRtMwDealRes?"鏄�":"鍚�") + "\n") ; if(param != null){ s += "鍙傛暟:" + param ; } @@ -82,7 +88,8 @@ @SuppressWarnings("unused") public String toJson()throws Exception{ try{ - return JSON.toJSONString(this) ; + String json = JSON.toJSONString(this) ; + return json ; }catch(Exception e){ throw new Exception(e.getMessage() , e ) ; } @@ -96,7 +103,10 @@ @SuppressWarnings("unused") public static Command jsonToObject(String json)throws Exception{ try{ - return JSON.parseObject(json, Command.class) ; + JSONObject jsonObject = JSON.parseObject(json); + Command command = jsonObject.to(Command.class) ; + //command.param = jsonObject.getObject("param", class); + return command ; }catch(Exception e){ throw new Exception(e.getMessage() , e ) ; } @@ -167,7 +177,15 @@ this.rtuAddr = rtuAddr; return this ; } - + + public String getRtuResultSendWebUrl() { + return rtuResultSendWebUrl; + } + + public void setRtuResultSendWebUrl(String rtuResultSendWebUrl) { + this.rtuResultSendWebUrl = rtuResultSendWebUrl; + } + public String getProtocol() { return protocol; } diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/CommandType.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/CommandType.java index df5a37a..84869f0 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/CommandType.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/CommandType.java @@ -12,7 +12,6 @@ * 閽堝Rtu澶栭儴鍛戒护 * 鍙兘鏄紓姝ワ紝鍛戒护缁撴灉閫氳繃鐩稿叧鐨勪俊鎭彂甯冮�氶亾鍙戝竷鍑哄幓 */ - @SuppressWarnings("unused") public static final String outerCommand = "outerCommand" ; /** diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Data.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Data.java index 68bc9f8..1bc29b7 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Data.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Data.java @@ -12,6 +12,7 @@ @Serial private static final long serialVersionUID = 20160805192500101L; + public String rtuResultSendWebUrl ;//rtu杩斿洖鍛戒护缁撴灉 鍙戝悜鐩殑鍦皐eb URL private String commandId ;//鍛戒护ID锛屽彲鑳戒负null private String rtuAddr ;//缁堢鍦板潃 private String protocol ;//鏁版嵁鎵�瀵瑰簲鐨勫崗璁悕绉� @@ -23,6 +24,9 @@ StringBuilder sb = new StringBuilder() ; sb.append("涓婅鎶ユ枃(鍗佸叚杩涘埗): ").append((hex == null?"":hex)).append("\n") ; // sb.append("Rtu鍦板潃 : ").append((rtuAddr==null?"":rtuAddr)).append("\n") ; + if(rtuResultSendWebUrl != null){ + sb.append("鍛戒护缁撴灉鍙戝線 : ").append(rtuResultSendWebUrl).append("\n") ; //rtu杩斿洖鍛戒护缁撴灉 鍙戝悜鐩殑鍦皐eb URL + } if(commandId != null){ sb.append("鍛戒护ID : ").append(commandId).append("\n") ; //鍛戒护ID } @@ -116,6 +120,18 @@ this.hex = hex; } + public String getRtuResultSendWebUrl() { + return rtuResultSendWebUrl; + } + /** + * 寰楀埌rtu杩斿洖鍛戒护缁撴灉 鍙戝悜鐩殑鍦皐eb URL + * 濡傛灉鏄富鍔ㄤ笂鎶ユ暟鎹紝鍒欐web URL涓虹┖ + * @return rtuResultSendWebUrl + */ + public void setRtuResultSendWebUrl(String rtuResultSendWebUrl) { + this.rtuResultSendWebUrl = rtuResultSendWebUrl; + } + public void setCommandId(String commandId) { this.commandId = commandId; } diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultFromRtu.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultFromRtu.java index 4813115..51289ac 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultFromRtu.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultFromRtu.java @@ -11,7 +11,8 @@ } public String commandId ;//鍙戦�佸懡浠ょ殑ID锛屽鏋滄槸鍛戒护缁撴灉锛屽苟涓斿尮閰嶄簡涓嬪彂鍛戒护锛屾鍊间笉涓虹┖ - + + public String rtuResultSendWebUrl ;//rtu杩斿洖鍛戒护缁撴灉 鍙戝悜鐩殑鍦皐eb URL public String protocolName ;//鍗忚鍚嶇О public String rtuAddr ;//Rtu鍦板潃 public String upCode ;//涓婅鏁版嵁涓殑鍔熻兘鐮� @@ -25,11 +26,15 @@ ProtocolUnit.getInstance().adapter.getSingleActionFromRtu(this.protocolName).doAction(this); } - public void setCommandId(String commandId){ + public void matchedCommand(String commandId, String rtuResultSendWebUrl){ this.commandId = commandId ; if(this.data != null){ this.data.setCommandId(commandId); } + this.rtuResultSendWebUrl = rtuResultSendWebUrl ; + if(this.data != null){ + this.data.setRtuResultSendWebUrl(rtuResultSendWebUrl); + } } } diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultToRtu.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultToRtu.java index 087aa53..c607c43 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultToRtu.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultToRtu.java @@ -10,6 +10,7 @@ serialVersionUID = 201606271057003L; } + public String rtuResultSendWebUrl ;//rtu杩斿洖鍛戒护缁撴灉 鍙戝悜鐩殑鍦皐eb URL public String protocolName ;//鍗忚鍚嶇О public String rtuAddr ;//Rtu鍦板潃 public String commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉 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 5cc2092..32c3863 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 @@ -3,7 +3,7 @@ public class CodeV1_0_1 { //鍔熻兘鐮佷负瀛楃涓诧紝鍗佸叚杩涘埗鏁版嵁 public static final String cd_02 = "02" ;//閬ユ祴绔欓摼璺娴� - public static final String cd_71 = "71" ;//鏌ヨ闃�闂ㄧ姸鎬侊紙鏉庡ぉ璧愬埗瀹氱殑鍗忚锛屽綋鍓嶆湭瀹炵幇锛� + public static final String cd_71 = "71" ;//璁剧疆宸ヤ綔妯″紡锛堟潕澶╄祼鍒跺畾鐨勫崗璁紝褰撳墠鏈疄鐜帮級 public static final String cd_83 = "83" ;//閬ユ祴绔欏紑鍏抽榾鑷姤 public static final String cd_84 = "84" ;//寮�闃�宸ヤ綔鎶� public static final String cd_C0 = "C0" ;//閬ユ祴绔欒嚜鎶ュ疄鏃舵暟鎹� diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DriverV1_0_1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DriverV1_0_1.java index ea3fefd..8d2ac78 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DriverV1_0_1.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DriverV1_0_1.java @@ -115,8 +115,12 @@ */ @Override public MidResult[] createCommand(Boolean isLowPower, Command command, Object... params) { + String RtuResultSendWebUrl = command.getRtuResultSendWebUrl() ; + if(RtuResultSendWebUrl == null || RtuResultSendWebUrl.trim().equals("")){ + return new MidResult[]{(new MidResultError(ProtocolConstantV206V1_0_0.protocolName, null, "涓ラ噸閿欒锛屽懡浠や腑rtu杩斿洖鍛戒护缁撴灉鍙戝悜鐩殑鍦皐eb URL涓虹┖锛屼笉鑳芥瀯寤轰换浣曞懡浠わ紒", null))} ; + } String rtuAddr = command.getRtuAddr() ; - if(rtuAddr == null){ + if(rtuAddr == null || rtuAddr.trim().equals("")){ return new MidResult[]{(new MidResultError(ProtocolConstantV206V1_0_0.protocolName, null, "涓ラ噸閿欒锛屽懡浠や腑Rtu鍦板潃涓虹┖锛屼笉鑳芥瀯寤轰换浣曞懡浠わ紒", null))} ; } try { @@ -124,6 +128,7 @@ this.downCpParams.clear(); this.downCpParams.setValue( + RtuResultSendWebUrl, ProtocolConstantV206V1_0_0.protocolName, rtuAddr, command.getId(), diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/ParseParamsForDownV1_0_1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/ParseParamsForDownV1_0_1.java index a0f2caa..fbef8cb 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/ParseParamsForDownV1_0_1.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/ParseParamsForDownV1_0_1.java @@ -3,7 +3,8 @@ import com.dy.common.mw.protocol.CodeParseParams; public class ParseParamsForDownV1_0_1 implements CodeParseParams{ - + + public String rtuResultSendWebUrl ;//rtu杩斿洖鍛戒护缁撴灉 鍙戝悜鐩殑鍦皐eb URL public String protocolName ; public String rtuAddr ;//鎺у埗鍣ㄥ湴鍧� public String commandId ; @@ -23,14 +24,16 @@ } public void setValue( - String protocolName, - String rtuAddr, + String rtuResultSendWebUrl, + String protocolName, + String rtuAddr, String commandId, String commandCode, Object param, Object attachment ){ - this.protocolName = protocolName ; - this.rtuAddr = rtuAddr ; + this.rtuResultSendWebUrl = rtuResultSendWebUrl ; + this.protocolName = protocolName ; + this.rtuAddr = rtuAddr ; this.commandId = commandId ; this.commandCode = commandCode ; this.param = param ; diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Up.java index dd96f44..0586760 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Up.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Up.java @@ -44,6 +44,7 @@ String confirmComCode = para.upCode ; ParseParamsForDownV1_0_1 downCpParams = new ParseParamsForDownV1_0_1() ; downCpParams.setValue( + null, ProtocolConstantV206V1_0_0.protocolName, para.rtuAddr, Command.defaultId, diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_71_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_71_Down.java index 4b269b6..d7a57f8 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_71_Down.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_71_Down.java @@ -21,6 +21,7 @@ byte[] bs = this.doParse(para) ; MidResultToRtu midRs = new MidResultToRtu() ; + midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;////rtu杩斿洖鍛戒护缁撴灉 鍙戝悜鐩殑鍦皐eb URL midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃锛堢數淇″钩鍙拌澶嘔MEI锛� midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉 @@ -67,7 +68,7 @@ ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ; - byte[] bs = new byte[0] ; + byte[] bs = new byte[1] ; //纭甯х殑鏁版嵁鍩熺敤浜庨仴娴嬬粓绔伐浣滄ā寮忕殑纭鎴栬浆鎹€�傛暟鎹负 1 涓瓧鑺� HEX锛�00H 鏃堕仴娴嬬粓 //绔湪鍏煎宸ヤ綔鐘舵�侊紱 01H 鏃堕仴娴嬬粓绔湪鑷姤宸ヤ綔鐘舵�侊紱 02H 鏃堕仴娴嬬粓绔湪鏌ヨ/搴旂瓟宸ヤ綔 //鐘舵�侊紱 03H 鏃堕仴娴嬬粓绔湪璋冭瘯/缁翠慨鐘舵�併�� diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Down.java index 57be9e7..d99d3f9 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Down.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Down.java @@ -21,6 +21,7 @@ byte[] bs = this.doParse(para) ; MidResultToRtu midRs = new MidResultToRtu() ; + midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;////rtu杩斿洖鍛戒护缁撴灉 鍙戝悜鐩殑鍦皐eb URL midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃锛堢數淇″钩鍙拌澶嘔MEI锛� midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉 diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java index 15ff9f1..8326fb0 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java @@ -43,6 +43,7 @@ String confirmComCode = para.upCode ; ParseParamsForDownV1_0_1 downCpParams = new ParseParamsForDownV1_0_1() ; downCpParams.setValue( + null, ProtocolConstantV206V1_0_0.protocolName, para.rtuAddr, Command.defaultId, diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Down.java index 394c7e7..a90316a 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Down.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Down.java @@ -21,6 +21,7 @@ byte[] bs = this.doParse(para) ; MidResultToRtu midRs = new MidResultToRtu() ; + midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;////rtu杩斿洖鍛戒护缁撴灉 鍙戝悜鐩殑鍦皐eb URL midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃锛堢數淇″钩鍙拌澶嘔MEI锛� midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉 diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Up.java index a14fc36..6d36ca9 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Up.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Up.java @@ -43,6 +43,7 @@ String confirmComCode = para.upCode ; ParseParamsForDownV1_0_1 downCpParams = new ParseParamsForDownV1_0_1() ; downCpParams.setValue( + null, ProtocolConstantV206V1_0_0.protocolName, para.rtuAddr, Command.defaultId, diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Down.java index f324ea9..28ab71f 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Down.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Down.java @@ -21,6 +21,7 @@ byte[] bs = this.doParse(para) ; MidResultToRtu midRs = new MidResultToRtu() ; + midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;////rtu杩斿洖鍛戒护缁撴灉 鍙戝悜鐩殑鍦皐eb URL midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃锛堢數淇″钩鍙拌澶嘔MEI锛� midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉 diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java index dd61198..c4ae4d4 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java @@ -43,6 +43,7 @@ String confirmComCode = para.upCode ; ParseParamsForDownV1_0_1 downCpParams = new ParseParamsForDownV1_0_1() ; downCpParams.setValue( + null, ProtocolConstantV206V1_0_0.protocolName, para.rtuAddr, Command.defaultId, diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webUtil/BaseResponseUtils.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webUtil/BaseResponseUtils.java index c55567e..64d0dda 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webUtil/BaseResponseUtils.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webUtil/BaseResponseUtils.java @@ -40,6 +40,10 @@ return buildResult(ResultCodeMsg.RsCode.ERROR_CODE,ResultCodeMsg.RsMsg.ERROR_MESSAGE, message); } + public static BaseResponse buildError(Object obj){ + return buildResult(ResultCodeMsg.RsCode.ERROR_CODE,ResultCodeMsg.RsMsg.ERROR_MESSAGE, obj); + } + public static BaseResponse buildResult(String code, String msg, Object data){ return BaseResponse.builder() .code((code == null || "".equals(code)) ? ResultCodeMsg.RsCode.SUCCESS_CODE : code) diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/Server.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/Server.java index a368845..7e5642a 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/Server.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/Server.java @@ -6,9 +6,9 @@ import com.dy.aceMw.server.*; import com.dy.aceMw.server.rtuData.RtuDataUnit; import com.dy.aceMw.server.rtuData.RtuDataUnitConfigVo; -import com.dy.aceMw.server.tasks.FromRtuConstantTask; +import com.dy.aceMw.server.tasks.FromRtuComResultConstantTask; +import com.dy.aceMw.server.tasks.FromRtuDataConstantTask; import com.dy.common.mw.UnitInterface; -import com.dy.common.mw.UnitStartedCallbackInterface; import com.dy.common.mw.channel.rmi.RmiConfigVo; import com.dy.common.mw.channel.rmi.RmiUnit; import com.dy.common.mw.channel.tcp.TcpConfigVo; @@ -297,7 +297,8 @@ CoreUnit coreUnit = CoreUnit.getInstance(); coreUnit.setAdapter(coreAdap); CoreUnit.addConstantTask(new ToRtuConstantTask()); - CoreUnit.addConstantTask(new FromRtuConstantTask()); + CoreUnit.addConstantTask(new FromRtuDataConstantTask()); + CoreUnit.addConstantTask(new FromRtuComResultConstantTask()); coreUnit.start(obj -> { }); units.add(coreUnit) ; diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/forTcp/MidResultActionFromRtu.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/forTcp/MidResultActionFromRtu.java index 40747c2..b3ac066 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/forTcp/MidResultActionFromRtu.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/forTcp/MidResultActionFromRtu.java @@ -1,5 +1,7 @@ package com.dy.aceMw.server.forTcp; +import com.dy.aceMw.server.rtuData.RtuComResultCache; +import com.dy.aceMw.server.rtuData.RtuComResultNode; import com.dy.aceMw.server.rtuData.RtuDataNode; import com.dy.aceMw.server.rtuData.RtuDataCache; import org.apache.logging.log4j.LogManager; @@ -28,16 +30,17 @@ MidResultToRtu resToRtu = TcpDownCommandCache.matchFromHead(resFromRtu) ; if(resToRtu != null){ //鍖归厤鍒颁笅鍙戠殑鍛戒护 - resFromRtu.setCommandId(resToRtu.commandId) ; - this.nextDeal(false, resFromRtu); + resFromRtu.matchedCommand(resToRtu.rtuResultSendWebUrl, resToRtu.commandId) ; + this.nextDealRtuData(false, resFromRtu); + this.nextDealRtuComResult(resFromRtu); }else{ - this.nextDeal(false, resFromRtu); + this.nextDealRtuData(false, resFromRtu); //鏈尮閰嶅埌涓嬪彂鐨勫懡浠わ紝鍛戒护鍦ㄧ紦瀛樺洜瓒呮椂琚竻闄や簡 RtuStatusDealer.commandFail2Success(resFromRtu.rtuAddr) ; } }else{ //涓诲姩涓婃姤鏁版嵁 - this.nextDeal(true, resFromRtu); + this.nextDealRtuData(true, resFromRtu); } } } @@ -47,11 +50,23 @@ * @param reportOrResponse_trueOrFalse * @param resFromRtu */ - private void nextDeal(boolean reportOrResponse_trueOrFalse, MidResultFromRtu resFromRtu){ + private void nextDealRtuData(boolean reportOrResponse_trueOrFalse, MidResultFromRtu resFromRtu){ try{ RtuDataCache.cacheRtuUpData(reportOrResponse_trueOrFalse, new RtuDataNode(resFromRtu.data)); }catch(Exception e){ log.error(e.getMessage(), e); } } + + /** + * 杩涘叆鍗曠嚎绋嬬幆澧冧腑杩愯 + * @param resFromRtu + */ + private void nextDealRtuComResult(MidResultFromRtu resFromRtu){ + try{ + RtuComResultCache.cacheRtuComResult(new RtuComResultNode(resFromRtu.data)); + }catch(Exception e){ + log.error(e.getMessage(), e); + } + } } diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/CommandInnerDeaLer.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/CommandInnerDeaLer.java new file mode 100644 index 0000000..d39f45f --- /dev/null +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/CommandInnerDeaLer.java @@ -0,0 +1,57 @@ +package com.dy.aceMw.server.local; + +import com.dy.aceMw.server.local.localProtocol.*; +import com.dy.common.mw.protocol.Command; + +/** + * @Author liurunyu + * @Date 2023/12/21 15:56 + * @LastEditTime 2023/12/21 15:56 + * @Description + */ +public class CommandInnerDeaLer { + /** + * 澶勭悊鍐呴儴鍛戒护 + * @param com + * @return + */ + public Command deal(Command com) throws Exception{ + String code = com.getCode() ; + if(code.equals(CodeLocal.clock)){ + return this.clock(com) ; + }else if(code.equals(CodeLocal.onLine)){ + return this.onLine(com) ; + }else if(code.equals(CodeLocal.allProtocols)){ + return this.allProtocols(com) ; + } + return ReturnCommand.errored("鍑洪敊锛屾敹鍒板唴閮ㄥ懡浠ょ殑鍔熻兘鐮佷笉鑳借瘑鍒紒", com.getId(), com.getCode()) ; + } + + /** + * 鏌ヨ閫氫俊涓棿浠舵椂閽� + * @throws Exception + */ + private Command clock(Command command) throws Exception{ + ClockVo c = new ClockDeal().deal() ; + return ReturnCommand.successed("鏌ヨ閫氫俊涓棿浠舵椂閽�", command.getId(), command.getCode(), c) ; + } + + /** + * 鏌ヨ鎵�鏈塕TU鍦ㄧ嚎鎯呭喌 + * @throws Exception + */ + private Command onLine(Command command) throws Exception{ + RtuOnLineVo ol = new RtuOnLineDeal().deal() ; + return ReturnCommand.successed("鏌ヨ鎵�鏈夋祴绔欏湪绾挎儏鍐电粨鏋�", command.getId(), command.getCode(), ol) ; + } + + /** + * 鏌ヨ鎵�鏈塕TU鍗忚閰嶇疆 + * @throws Exception + */ + private Command allProtocols(Command command) throws Exception{ + RtuProtocolVo mc = new RtuProtocolsDeal().deal() ; + return ReturnCommand.successed("鏌ヨ鎵�鏈夐�氫俊鍗忚閰嶇疆", command.getId(), command.getCode(), mc) ; + } + +} diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/ReturnCommand.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/ReturnCommand.java new file mode 100644 index 0000000..59f8fe2 --- /dev/null +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/ReturnCommand.java @@ -0,0 +1,43 @@ +package com.dy.aceMw.server.local; + + +import com.dy.common.mw.protocol.Command; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +/** + * @Author liurunyu + * @Date 2023/12/21 15:17 + * @LastEditTime 2023/12/21 15:17 + * @Description + */ +public class ReturnCommand { + + private static Logger log = LogManager.getLogger(ReturnCommand.class) ; + + /** + * 澶勭悊鍛戒护鎴愬姛 + * @param message + */ + public static Command successed(String message, String commandId, String code, Object attachment){ + log.info(message) ; + Command command = new Command().createReturnSuccessCommand(message, commandId, code) ; + command.setAttachment(attachment) ; + return command ; + } + /** + * 澶勭悊鍛戒护鎴愬姛 + * @param message + */ + public static Command successed(String message, String commandId, String code){ + log.info(message) ; + return new Command().createReturnSuccessCommand(message, commandId, code) ; + } + /** + * 澶勭悊鍛戒护鍙戠敓閿欒 + * @param message + */ + public static Command errored(String message, String commandId, String code){ + log.error(message) ; + return new Command().createReturnErrorCommand(message, commandId, code) ; + } +} diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/ClockDeal.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/ClockDeal.java new file mode 100644 index 0000000..1a58e04 --- /dev/null +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/ClockDeal.java @@ -0,0 +1,20 @@ +package com.dy.aceMw.server.local.localProtocol; + +import com.dy.common.util.DateTime; + +public class ClockDeal { + /** + * 鏌ヨ閫氫俊涓棿浠舵椂閽� + */ + public ClockVo deal(){ + ClockVo c = new ClockVo() ; + c.setClock(DateTime.yyyy_MM_dd_HH_mm_ss()) ; + c.setYear(Integer.parseInt(DateTime.yyyy())) ; + c.setMonth(Integer.parseInt(DateTime.MM())) ; + c.setDate(Integer.parseInt(DateTime.dd())) ; + c.setHour(Integer.parseInt(DateTime.HH())) ; + c.setMinute(Integer.parseInt(DateTime.mm())) ; + c.setSecond(Integer.parseInt(DateTime.ss())) ; + return c ; + } +} diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/ClockVo.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/ClockVo.java new file mode 100644 index 0000000..872ca25 --- /dev/null +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/ClockVo.java @@ -0,0 +1,64 @@ +package com.dy.aceMw.server.local.localProtocol; + +import java.io.Serializable; + +public class ClockVo implements Serializable{ + + private static final long serialVersionUID = 201606251603001L; + + public String clock ; + public Integer year ; + public Integer month ; + public Integer date ; + public Integer hour ; + public Integer minute ; + public Integer second ; + + public String toString(){ + return clock ; + } + + public String getClock() { + return clock; + } + public void setClock(String clock) { + this.clock = clock; + } + public Integer getYear() { + return year; + } + public void setYear(Integer year) { + this.year = year; + } + public Integer getMonth() { + return month; + } + public void setMonth(Integer month) { + this.month = month; + } + public Integer getDate() { + return date; + } + public void setDate(Integer date) { + this.date = date; + } + public Integer getHour() { + return hour; + } + public void setHour(Integer hour) { + this.hour = hour; + } + public Integer getMinute() { + return minute; + } + public void setMinute(Integer minute) { + this.minute = minute; + } + public Integer getSecond() { + return second; + } + public void setSecond(Integer second) { + this.second = second; + } + +} diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/CodeLocal.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/CodeLocal.java new file mode 100644 index 0000000..dd1d981 --- /dev/null +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/CodeLocal.java @@ -0,0 +1,11 @@ +package com.dy.aceMw.server.local.localProtocol; + +public class CodeLocal { + + public static final String clock = "LCD0000" ;//鏌ヨ鐩戞帶涓棿浠舵椂閽� + + public static final String onLine = "LCD0001" ;//鏌ヨ鎵�鏈塕TU鍦ㄧ嚎鎯呭喌 + + public static final String allProtocols = "LCD0100" ;//鏌ヨ鎵�鏈夊崗璁厤缃� + +} diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/RtuOnLineDeal.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/RtuOnLineDeal.java new file mode 100644 index 0000000..3255741 --- /dev/null +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/RtuOnLineDeal.java @@ -0,0 +1,13 @@ +package com.dy.aceMw.server.local.localProtocol; + +import com.dy.aceMw.server.forTcp.TcpSessionCache; + +public class RtuOnLineDeal { + + /** + * 鏌ヨ鍦ㄧ嚎涓庝笉鍦ㄧ嚎鎯呭喌 + */ + public RtuOnLineVo deal(){ + return (new RtuOnLineVo()).setOnLine(TcpSessionCache.allOnLine()); + } +} diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/RtuOnLineVo.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/RtuOnLineVo.java new file mode 100644 index 0000000..90728f8 --- /dev/null +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/RtuOnLineVo.java @@ -0,0 +1,39 @@ +package com.dy.aceMw.server.local.localProtocol; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map.Entry; + +public class RtuOnLineVo implements Serializable{ + + private static final long serialVersionUID = 202312211559001L; + + private HashMap<String , Boolean> onLineMap ; + + public String toString(){ + String s = "" ; + if(onLineMap != null){ + Iterator<Entry<String, Boolean>> it = onLineMap.entrySet().iterator() ; + Entry<String, Boolean> entry = null ; + while(it.hasNext()){ + entry = it.next() ; + s += entry.getKey() + ": " + (entry.getValue().booleanValue()?"鍦ㄧ嚎":"绂荤嚎") + "\n"; + } + } + return s ; + } + /** + * 瀛樺叆RTU鍦ㄧ嚎鎯呭喌 + * @param onLineMap 鍦ㄧ嚎闆嗗悎 + */ + public RtuOnLineVo setOnLine(HashMap<String , Boolean> onLineMap){ + this.onLineMap = onLineMap ; + return this ; + } + + public HashMap<String, Boolean> getOnLineMap() { + return onLineMap; + } + +} diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/RtuProtocolVo.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/RtuProtocolVo.java new file mode 100644 index 0000000..482c006 --- /dev/null +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/RtuProtocolVo.java @@ -0,0 +1,38 @@ +package com.dy.aceMw.server.local.localProtocol; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +public class RtuProtocolVo implements Serializable{ + + private static final long serialVersionUID = 202312211601001001L; + + private List<String> protocolList ; + + public RtuProtocolVo(){ + this.protocolList = new ArrayList<String>() ; + } + public String toString(){ + String s = "" ; + if(protocolList != null){ + for(String str : protocolList){ + s += str + "\n"; + } + } + return s ; + } + /** + * 瀛樺叆RTU鍦ㄧ嚎鎯呭喌 + * @param protocolList 鍗忚闆嗗悎 + */ + public RtuProtocolVo setRtuProtocolList(List<String> protocolList){ + this.protocolList = protocolList ; + return this ; + } + + public List<String> getRtuProtocolList() { + return protocolList; + } + +} diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/RtuProtocolsDeal.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/RtuProtocolsDeal.java new file mode 100644 index 0000000..54d7c22 --- /dev/null +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/local/localProtocol/RtuProtocolsDeal.java @@ -0,0 +1,14 @@ +package com.dy.aceMw.server.local.localProtocol; + + +import com.dy.common.mw.protocol.ProtocolCache; + +public class RtuProtocolsDeal { + /** + * 鏌ヨ鎵�鏈夊崗璁� + */ + public RtuProtocolVo deal(){ + return (new RtuProtocolVo()).setRtuProtocolList(ProtocolCache.getProtocolList()); + } + +} diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuComResultCache.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuComResultCache.java new file mode 100644 index 0000000..213b689 --- /dev/null +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuComResultCache.java @@ -0,0 +1,65 @@ +package com.dy.aceMw.server.rtuData; + +import com.dy.aceMw.server.ServerProperties; +import com.dy.common.queue.Node; +import com.dy.common.queue.Queue; + +public class RtuComResultCache { + + //TCP涓嬭鍛戒护缂撳瓨闃熷垪 + private static Queue cacheQueue = new Queue("RtuComResultCache") ; + + private static RtuComResultCache instance = new RtuComResultCache() ; + + private RtuComResultCache(){ + cacheQueue.setLimit(ServerProperties.cacheUpDownDataWarnCount, ServerProperties.cacheUpDownDataMaxCount); + } + + public static RtuComResultCache getInstance(){ + return instance ; + } + + /** + * 缂撳瓨鑺傜偣 + * @param node node + * @throws Exception 寮傚父 + */ + public static void cacheRtuComResult(RtuComResultNode node) throws Exception{ + if(node != null && node.obj != null){ + cacheQueue.pushHead(node); + } + } + + /** + * 寰楀埌绗竴涓妭鐐� + * @return Node + */ + public static Node getFirstQueueNode(){ + return cacheQueue.getFirstNode() ; + } + + /** + * 寰楀埌鏈�鍚庝竴涓妭鐐� + * @return Node + */ + public static Node getLastQueueNode(){ + return cacheQueue.getLastNode() ; + } + + /** + * 绉婚櫎鑺傜偣 + * @param node + */ + public static void removeNode(Node node){ + cacheQueue.remove(node); + } + + /** + * 缂撳瓨鐨勮妭鐐规暟 + * @Return 缂撳瓨鑺傜偣鏁� + */ + public static Integer size(){ + return cacheQueue.size() ; + } + +} diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuComResultNode.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuComResultNode.java new file mode 100644 index 0000000..1d5db33 --- /dev/null +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuComResultNode.java @@ -0,0 +1,54 @@ +package com.dy.aceMw.server.rtuData; + +import com.dy.aceMw.server.rtuData.dbSv.RtuSv; +import com.dy.aceMw.web.comResult.CommandResultDeal; +import com.dy.common.mw.protocol.Data; +import com.dy.common.queue.NodeObj; +import com.dy.common.springUtil.SpringContextUtil; +import com.dy.common.threadPool.ThreadPool; +import com.dy.common.threadPool.TreadPoolFactory; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class RtuComResultNode implements NodeObj { + + private static final Logger log = LogManager.getLogger(RtuComResultNode.class.getName()); + + public Object obj ;//鏁版嵁 + + public RtuComResultNode(Object obj){ + this.obj = obj ; + } + /** + * 鑷繁澶勭悊鑷繁 + * @return + */ + public boolean dealSelf(){ + try { + ThreadPool.Pool pool = TreadPoolFactory.getThreadPoolLong() ; + pool.putJob(new ThreadPool.Job() { + public void execute() { + if(obj != null){ + if(obj instanceof Data){ + CommandResultDeal deal = (CommandResultDeal) SpringContextUtil.getBean(CommandResultDeal.class) ; + deal.deal((Data)obj); + } + } + } + @Override + public void destroy(){ + } + @Override + public boolean isDestroy(){ + return false ; + } + + }); + } catch (Exception e) { + log.error("鍦≧tuComResultNode鍐呭彂鐢熷紓甯�", e); + } + return true ; + } + + +} diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuDataNode.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuDataNode.java index d007230..09ee99e 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuDataNode.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/RtuDataNode.java @@ -25,18 +25,18 @@ pool.putJob(new ThreadPool.Job() { public void execute() { if(obj != null){ - TaskSurpport t = null ; + TaskSurpport task = null ; try{ - t = TaskPool.popTask() ; - if(t != null){ - t.execute(obj); + task = TaskPool.popTask() ; + if(task != null){ + task.execute(obj); }else{ log.error("鏈緱鍒癛TU涓诲姩涓婃姤鏁版嵁澶勭悊浠诲姟锛�"); } }catch(Exception e){ - if(t != null){ + if(task != null){ //褰撴湁寮傚父鏃讹紝try catch涓殑浠g爜鍙病鏈夋墽琛宖reeAndCleanTask - TaskPool.freeAndCleanTask(t); + TaskPool.freeAndCleanTask(task); } } } diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/tasks/FromRtuConstantTask.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/tasks/FromRtuComResultConstantTask.java similarity index 66% copy from pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/tasks/FromRtuConstantTask.java copy to pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/tasks/FromRtuComResultConstantTask.java index fbf4b7c..9c056ca 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/tasks/FromRtuConstantTask.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/tasks/FromRtuComResultConstantTask.java @@ -1,7 +1,7 @@ package com.dy.aceMw.server.tasks; -import com.dy.aceMw.server.rtuData.RtuDataNode; -import com.dy.aceMw.server.rtuData.RtuDataCache; +import com.dy.aceMw.server.rtuData.RtuComResultNode; +import com.dy.aceMw.server.rtuData.RtuComResultCache; import com.dy.common.mw.core.CoreTask; import com.dy.common.queue.Node; import org.apache.logging.log4j.LogManager; @@ -10,8 +10,8 @@ /** * 瀵筊TU涓婅鏁版嵁杩涜涓氬姟澶勭悊 */ -public class FromRtuConstantTask extends CoreTask { - private static final Logger log = LogManager.getLogger(FromRtuConstantTask.class.getName()); +public class FromRtuComResultConstantTask extends CoreTask { + private static final Logger log = LogManager.getLogger(FromRtuComResultConstantTask.class.getName()); /** * 鍦ㄥ崟绾跨▼鐜涓繍琛� @@ -19,21 +19,21 @@ @Override public Integer execute() { try{ - dealRtuUpData() ; + dealRtuComResult() ; }catch(Exception e){ log.error(e); } - return RtuDataCache.size()>0?0:1 ; + return RtuComResultCache.size()>0?0:1 ; } /** - * 澶勭悊涓婅鏁版嵁 + * 澶勭悊涓婅鍛戒护缁撴灉 */ - public void dealRtuUpData() { - Node first = RtuDataCache.getFirstQueueNode() ; + public void dealRtuComResult() { + Node first = RtuComResultCache.getFirstQueueNode() ; if(first != null){ - Node last = RtuDataCache.getLastQueueNode() ; + Node last = RtuComResultCache.getLastQueueNode() ; while (last != null){ - last = this.doDealRtuUpData(first, last); + last = this.doDealRtuComResult(first, last); } } } @@ -43,7 +43,7 @@ * @param first 绗竴涓妭鐐� * @param last 鏈�鍚庝竴涓妭鐐� */ - private Node doDealRtuUpData(Node first, Node last){ + private Node doDealRtuComResult(Node first, Node last){ if(last != null){ //鍦╠ealNode鏂规硶涓紝鍙兘瑕佹妸last浠庨槦鍒椾腑绉婚櫎锛岃繖鏃秎ast.pre涓虹┖锛屾墍浠ユ彁鍓嶆妸last.pre鍙栧嚭鏉� Node pre = last.pre ; @@ -68,12 +68,12 @@ /** * 澶勭悊涓婅鏁版嵁 */ - public Integer dealRtuUpData_() { - Node first = RtuDataCache.getFirstQueueNode() ; + public Integer dealRtuComResult_() { + Node first = RtuComResultCache.getFirstQueueNode() ; if(first != null){ - Integer count = RtuDataCache.size() ; - Node last = RtuDataCache.getLastQueueNode() ; - this.doDealRtuUpData_(first, last); + Integer count = RtuComResultCache.size() ; + Node last = RtuComResultCache.getLastQueueNode() ; + this.doDealRtuComResult_(first, last); return count ; } return null ; @@ -84,13 +84,13 @@ * @param first 绗竴涓妭鐐� * @param last 鏈�鍚庝竴涓妭鐐� */ - private void doDealRtuUpData_(Node first, Node last){ + private void doDealRtuComResult_(Node first, Node last){ if(last != null){ //鍦╠ealNode鏂规硶涓紝鍙兘瑕佹妸last浠庨槦鍒椾腑绉婚櫎锛岃繖鏃秎ast.pre涓虹┖锛屾墍浠ユ彁鍓嶆妸last.pre鍙栧嚭鏉� Node pre = last.pre ; dealNode(last) ; if(first != last){ - doDealRtuUpData(first, pre) ; + doDealRtuComResult_(first, pre) ; }else{ //鍋滄 } @@ -103,9 +103,9 @@ */ private void dealNode(Node node){ if(node != null && node.obj != null){ - RtuDataNode obj = (RtuDataNode)node.obj ; + RtuComResultNode obj = (RtuComResultNode)node.obj ; obj.dealSelf() ; - RtuDataCache.removeNode(node); + RtuComResultCache.removeNode(node); } } diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/tasks/FromRtuConstantTask.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/tasks/FromRtuDataConstantTask.java similarity index 96% rename from pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/tasks/FromRtuConstantTask.java rename to pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/tasks/FromRtuDataConstantTask.java index fbf4b7c..9943b46 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/tasks/FromRtuConstantTask.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/tasks/FromRtuDataConstantTask.java @@ -10,8 +10,8 @@ /** * 瀵筊TU涓婅鏁版嵁杩涜涓氬姟澶勭悊 */ -public class FromRtuConstantTask extends CoreTask { - private static final Logger log = LogManager.getLogger(FromRtuConstantTask.class.getName()); +public class FromRtuDataConstantTask extends CoreTask { + private static final Logger log = LogManager.getLogger(FromRtuDataConstantTask.class.getName()); /** * 鍦ㄥ崟绾跨▼鐜涓繍琛� diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/web/com/CommandCtrl.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/web/com/CommandCtrl.java index 454c899..ddfb760 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/web/com/CommandCtrl.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/web/com/CommandCtrl.java @@ -1,6 +1,12 @@ package com.dy.aceMw.web.com; +import com.dy.aceMw.server.forTcp.TcpSessionCache; +import com.dy.aceMw.server.local.CommandInnerDeaLer; +import com.dy.aceMw.server.local.ReturnCommand; +import com.dy.aceMw.server.tasks.RtuDownTask; +import com.dy.common.mw.core.CoreUnit; import com.dy.common.mw.protocol.Command; +import com.dy.common.mw.protocol.CommandType; import com.dy.common.webUtil.BaseResponse; import com.dy.common.webUtil.BaseResponseUtils; import lombok.extern.slf4j.Slf4j; @@ -15,7 +21,7 @@ * @Author liurunyu * @Date 2023/12/21 13:58 * @LastEditTime 2023/12/21 13:58 - * @Description + * @Description 鍛戒护鎺ユ敹 */ @Slf4j @RestController @@ -25,6 +31,104 @@ @PostMapping(path = "send", consumes = MediaType.APPLICATION_JSON_VALUE) public BaseResponse<Command> send(@RequestBody Command com) { - return BaseResponseUtils.buildSuccess(com); + log.info("鏀跺埌web绯荤粺鍙戞潵鐨勫懡浠わ細\n" + com.toString()) ; + + String commandType = com.getType() ; + if(commandType == null){ + return BaseResponseUtils.buildError(ReturnCommand.errored("鍑洪敊锛屾敹鍒板懡浠ょ殑鍛戒护绫诲瀷涓虹┖锛�", com.getId(), com.getCode())); + } + String commandId = com.getId() ; + if(commandId == null){ + return BaseResponseUtils.buildError(ReturnCommand.errored("鍑洪敊锛屾敹鍒板懡浠ょ殑鍛戒护ID涓虹┖锛�",null, com.getCode())); + } + + String code = com.getCode() ; + if(code == null){ + return BaseResponseUtils.buildError(ReturnCommand.errored("鍑洪敊锛屾敹鍒板懡浠ょ殑鍛戒护鍔熻兘鐮佷负绌猴紒", com.getId(), null)); + } + + if(commandType.equals(CommandType.innerCommand)){ + //閫氫俊涓棿浠跺唴閮ㄥ懡浠わ紝渚嬪鏌ヨ鐩戞帶涓棿浠舵椂閽燂紝鏌ヨRTU鍦ㄧ嚎鎯呭喌绛� + try{ + Command reCom = new CommandInnerDeaLer().deal(com) ; + /* + boolean error = false ; + if(reCom.param != null && reCom.param != null){ + CommandBackParam cbp = (CommandBackParam)reCom.param ; + if(cbp.getSuccess() != null && !cbp.getSuccess().booleanValue()){ + error = true ; + return BaseResponseUtils.buildError(ReturnCommand.errored(cbp.getMessage(), com.getId(), null)); + } + } + if(!error){ + return BaseResponseUtils.buildError(ReturnCommand.errored(cbp.getMessage(), com.getId(), null)); + } + */ + return BaseResponseUtils.buildSuccess(reCom); + }catch(Exception e){ + return BaseResponseUtils.buildError(ReturnCommand.errored("澶勭悊鍐呴儴鍛戒护鍑洪敊" + (e.getMessage() == null?"":("锛�" + e.getMessage())), com.getId(), com.getCode()) ); + } + + }else if(commandType.equals(CommandType.outerCommand)){ + //鍙戝悜RTU鐨勫閮ㄥ懡浠わ紝寮傛澶勭悊锛寃eb绔痡roups鎴愬憳鍚屾寰楀埌鍛戒护澶勭悊缁撴灉锛屼絾鏋勯�犲懡浠ゅ強涓嬪彂鍛戒护鍜屽懡浠ょ粨鏋滄帴鏀惰寮傛寰楀埌 + try{ + return this.dealOuterCommand(com) ; + }catch(Exception e){ + return BaseResponseUtils.buildError(ReturnCommand.errored("澶勭悊鍙戝悜RTU鐨勫閮ㄥ懡浠ゅ嚭閿�" + (e.getMessage() == null?"":("锛�" + e.getMessage())), com.getId(), com.getCode()) ); + } + }else if(commandType.equals(CommandType.resultCommand)){ + return BaseResponseUtils.buildError(ReturnCommand.errored("鍑洪敊锛岄�氫俊涓棿浠朵笉鎺ョ粨鏋滅被鍨嬬殑鍛戒护锛�", com.getId(), com.getCode())); + }else{ + return BaseResponseUtils.buildError(ReturnCommand.errored("鍑洪敊锛屾敹鍒板懡浠ょ殑鍛戒护鍔熻兘鐮佷负绌猴紒", com.getId(), com.getCode())); + } } + + /** + * 澶勭悊鍙戝悜RTU鐨勫閮ㄥ懡浠� + * @return 缁撴灉 + */ + private BaseResponse<Command> dealOuterCommand(Command command){ + String rtuAddr = command.getRtuAddr() ; + if(rtuAddr == null || rtuAddr.trim().equals("")){ + return BaseResponseUtils.buildError(ReturnCommand.errored("鍑洪敊锛孯TU鍦板潃涓虹┖锛�", command.getId(), command.getCode())) ; + } + rtuAddr = rtuAddr.trim() ; + Boolean onLine = TcpSessionCache.isConnect(rtuAddr); + if(onLine == null){ + return BaseResponseUtils.buildError(ReturnCommand.errored("鍑洪敊锛孯TU锛堝湴鍧�=" + rtuAddr + "锛夋湭涓婄嚎锛�", command.getId(), command.getCode())) ; + }else if(!onLine.booleanValue()){ + return BaseResponseUtils.buildError(ReturnCommand.errored("鍑洪敊锛孯TU锛堝湴鍧�=" + rtuAddr + "锛夌绾匡紒", command.getId(), command.getCode())) ; + } + + //鐢熸垚寮傛浠诲姟 + RtuDownTask task = new RtuDownTask() ; + task.data = command ; + try{ + log.info("鏋勯�犱笅鍙戣繙绋嬪懡浠�" + command.getCode() + "鐨勬牳蹇冧换鍔★紝骞舵斁鍏ヤ换鍔¢槦鍒椾腑"); + CoreUnit.getInstance().pushCoreTask(task); + }catch(Exception e){ + log.error(e.getMessage(), e); + return BaseResponseUtils.buildError(ReturnCommand.successed("鍛戒护澶勭悊澶辫触" + e.getMessage(), command.getId(), command.getCode())) ; + } + + return BaseResponseUtils.buildSuccess(ReturnCommand.successed("鍛戒护宸叉帴鍙楋紝鍗冲皢鏋勯�犲苟涓嬪彂鍛戒护銆�", command.getId(), command.getCode())); + } + + /** + * 鏀跺埌鍛戒护缁撴灉 + * @param command + private void dealCommandResult(String jgSenderName, Command command){ + Object obj = command.getParam() ; + if(obj != null){ + CommandBackParam p = (CommandBackParam)obj ; + if(p.getSuccess()){ + log.info("鍛戒护" + (command.getId().equals(Command.defaultId)?"":("(id=" + command.getId() + ")")) + "鎵ц鎴愬姛" + + (p.getMessage() == null?"":(p.getMessage().equals("")?"":("锛�" + p.getMessage())))); + }else{ + log.error("鍛戒护" + (command.getId().equals(Command.defaultId)?"":("(id=" + command.getId() + ")")) + "鎵ц澶辫触" + + (p.getMessage() == null?"":(p.getMessage().equals("")?"":("锛�" + p.getMessage())))); + } + } + } + */ } diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/web/comResult/CommandResultDeal.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/web/comResult/CommandResultDeal.java new file mode 100644 index 0000000..4a7bbb6 --- /dev/null +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/web/comResult/CommandResultDeal.java @@ -0,0 +1,51 @@ +package com.dy.aceMw.web.comResult; + +import com.dy.common.mw.protocol.Data; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Component; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.util.UriComponentsBuilder; + +/** + * @Author liurunyu + * @Date 2023/12/21 20:28 + * @LastEditTime 2023/12/21 20:28 + * @Description + */ +@Slf4j +@Component() +public class CommandResultDeal { + + private RestTemplate restTemplate; + + @Autowired + public void setRestTemplate(RestTemplate restTemplate){ + this.restTemplate = restTemplate ; + } + + + public void deal(Data data) { + if (data.rtuResultSendWebUrl != null && data.rtuResultSendWebUrl.trim().equals("")) { + String url = UriComponentsBuilder.fromUriString(data.rtuResultSendWebUrl) + .build() + .toUriString(); + HttpHeaders headers = new HttpHeaders(); + HttpEntity<?> httpEntity = new HttpEntity<>(data, headers); + ResponseEntity<WebResponseVo> response = null; + try { + // 閫氳繃Post鏂瑰紡璋冪敤鎺ュ彛 + response = restTemplate.exchange(url, HttpMethod.POST, httpEntity, WebResponseVo.class); + } catch (Exception e) { + e.printStackTrace(); + } + assert response != null; + } else { + log.error("涓ラ噸閿欒锛屽湪com.dy.aceMw.web.comResult.CommandResultDeal閲岋紝澶勭悊鐨勬槸RTU鍛戒护缁撴灉Node锛屼絾鏁版嵁涓璻tuResultSendWebUrl涓虹┖"); + } + } +} diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/web/comResult/WebResponseVo.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/web/comResult/WebResponseVo.java new file mode 100644 index 0000000..d45f243 --- /dev/null +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/web/comResult/WebResponseVo.java @@ -0,0 +1,19 @@ +package com.dy.aceMw.web.comResult; + +/** + * @Author liurunyu + * @Date 2023/12/21 20:43 + * @LastEditTime 2023/12/21 20:43 + * @Description + */ +public class WebResponseVo { + public boolean result ; + + public boolean isResult() { + return result; + } + + public void setResult(boolean result) { + this.result = result; + } +} diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/ServerProperties.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/ServerProperties.java index c1462a6..5aa4fdb 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/ServerProperties.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/ServerProperties.java @@ -16,7 +16,10 @@ public static Integer heartbeatTimes = 3 ; //鍙戦�佹暟鎹鏁� public static Integer sendTimes = 0 ; - + //鍙戦�佸畬鏁版嵁鍚庯紝鏄惁鍏抽棴TCP杩炴帴锛�1鏄紝0鍚� + public static Integer sendOverThenCloseConnect = 0 ; + + public static boolean startTcpConnectWork = false ; //mwTestServer diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/ResConfigVo.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/ResConfigVo.java index 59df2ce..065e784 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/ResConfigVo.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/ResConfigVo.java @@ -17,6 +17,8 @@ public Integer heartbeatTimes = 3 ; //鍙戦�佹暟鎹鏁� public Integer sendTimes = 0 ; + //鍙戦�佸畬鏁版嵁鍚庯紝鏄惁鍏抽棴TCP杩炴帴锛�1鏄紝0鍚� + public Integer sendOverThenCloseConnect = 0 ; /** * 瀵硅薄杞垚json @@ -101,4 +103,12 @@ public void setSendTimes(Integer sendTimes) { this.sendTimes = sendTimes; } + + public Integer getSendOverThenCloseConnect() { + return sendOverThenCloseConnect; + } + + public void setSendOverThenCloseConnect(Integer sendOverThenCloseConnect) { + this.sendOverThenCloseConnect = sendOverThenCloseConnect; + } } diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiClUnit.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiClUnit.java index fa47cd9..4f9fdad 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiClUnit.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiClUnit.java @@ -202,6 +202,7 @@ ServerProperties.sendInterval = rVo.sendInterval ; ServerProperties.heartbeatTimes = rVo.heartbeatTimes ; ServerProperties.sendTimes = rVo.sendTimes ; + ServerProperties.sendOverThenCloseConnect = rVo.sendOverThenCloseConnect ; log.info("寰楀埌閰嶇疆鎴愬姛"); log.info(" 寮�濮婻tuAddr=" + ServerProperties.rtuAddrStart); log.info(" 鎴RtuAddr=" + ServerProperties.rtuAddrEnd); @@ -210,6 +211,7 @@ log.info(" 鍙戦�佹暟鎹棿闅�=" + ServerProperties.sendTimes); log.info(" 姣忚疆娆″彂閫佸績璺虫鏁�=" + ServerProperties.heartbeatTimes); log.info(" 姣廟TU涓婃姤鏁版嵁杞=" + ServerProperties.sendTimes); + log.info(" 鍙戦�佸畬鏁版嵁鍚庯紝鏄惁鍏抽棴TCP杩炴帴(1鏄紝0鍚�)=" + ServerProperties.sendOverThenCloseConnect); break ; }else{ log.error("rmi寰楀埌閰嶇疆澶辫触锛歫son杞琑esConfigVo涓簄ull"); diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/LocalDecoder.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/LocalDecoder.java index 610257f..976f340 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/LocalDecoder.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/LocalDecoder.java @@ -28,7 +28,7 @@ byte[] preByte = new byte[remain]; in.get(preByte) ; in.position(0) ; - log.info("鏀跺埌涓績搴旂瓟鏁版嵁锛�" + ByteUtil.bytes2Hex(preByte, true)); + log.info("鏀跺埌涓績涓嬭鏁版嵁锛�" + ByteUtil.bytes2Hex(preByte, true)); } return true; } diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/MyThreadJob.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/MyThreadJob.java index 7575093..0f58f3e 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/MyThreadJob.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/MyThreadJob.java @@ -39,18 +39,24 @@ @Override public void execute() throws Exception { - if(session != null){ - if(sendTimes <= ServerProperties.sendTimes){ - log.info("RTU" + rtuAddr + "寮�濮嬩换鍔�"); - log.info("RTU" + rtuAddr + "灏嗚鎵ц" + ServerProperties.sendTimes + "杞浠诲姟锛屽綋鍓嶈疆娆℃槸" + sendTimes); - sendDataOfP206V1_0_0() ; - }else{ - log.info("RTU" + rtuAddr + "绛夊緟涓�浼氾紝浠ユ帴鏀堕�氫俊涓棿浠朵笅琛屾暟鎹�"); - if(overStart == 0){ - overStart = System.currentTimeMillis() ; + if(!this.isOver){ + if(session != null){ + if(sendTimes <= ServerProperties.sendTimes){ + log.info("RTU" + rtuAddr + "寮�濮嬩换鍔�"); + log.info("RTU" + rtuAddr + "灏嗚鎵ц" + ServerProperties.sendTimes + "杞浠诲姟锛屽綋鍓嶈疆娆℃槸" + sendTimes); + sendDataOfP206V1_0_0() ; }else{ - long now = System.currentTimeMillis() ; - if(now - overStart >= 30 * 1000){ + if(ServerProperties.sendOverThenCloseConnect == 1){ + log.info("RTU" + rtuAddr + "绛夊緟涓�浼氾紝浠ユ帴鏀堕�氫俊涓棿浠朵笅琛屾暟鎹�"); + if(overStart == 0){ + overStart = System.currentTimeMillis() ; + }else{ + long now = System.currentTimeMillis() ; + if(now - overStart >= 30 * 1000){ + this.jobOver() ; + } + } + }else{ this.jobOver() ; } } @@ -95,7 +101,9 @@ } private void jobOver(){ - session.closeOnFlush() ; + if(ServerProperties.sendOverThenCloseConnect == 1){ + session.closeOnFlush() ; + } this.isOver = true ; TcpClUnit.clientOver() ; } diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/Server.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/Server.java index 6e08a2e..04d80ad 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/Server.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/Server.java @@ -138,6 +138,7 @@ ServerProperties.sendInterval = conf.getSetAttrPlusInt(doc, "config.base", "sendInterval", null, 1, null, null) ; ServerProperties.heartbeatTimes = conf.getSetAttrPlusInt(doc, "config.base", "heartbeatTimes", null, 1, null, null) ; ServerProperties.sendTimes = conf.getSetAttrPlusInt(doc, "config.base", "sendTimes", null, 1, null, null) ; + ServerProperties.sendOverThenCloseConnect = conf.getSetAttrPlusInt(doc, "config.base", "sendOverThenCloseConnect", null, 0, 1, null) ; ///////////////// diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/ServerProperties.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/ServerProperties.java index 7bada8e..cb75a64 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/ServerProperties.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/ServerProperties.java @@ -18,5 +18,7 @@ public static Integer heartbeatTimes = 0 ; //鍙戦�佹暟鎹鏁� public static Integer sendTimes = 0 ; + //鍙戦�佸畬鏁版嵁鍚庯紝鏄惁鍏抽棴TCP杩炴帴锛�1鏄紝0鍚� + public static Integer sendOverThenCloseConnect = 0 ; } diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/Manager.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/Manager.java index 2bbe053..8d9b36c 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/Manager.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/Manager.java @@ -123,6 +123,7 @@ conVo.sendInterval = ServerProperties.sendInterval ; conVo.heartbeatTimes = ServerProperties.heartbeatTimes ; conVo.sendTimes = ServerProperties.sendTimes ; + conVo.sendOverThenCloseConnect = ServerProperties.sendOverThenCloseConnect ; sta = new MwTestClientStatus() ; sta.confVo = conVo ; token2ClientMap.put("" + token, sta); diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/MwConfigVo.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/MwConfigVo.java index 1ee9d72..20a90e6 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/MwConfigVo.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/MwConfigVo.java @@ -17,6 +17,9 @@ public Integer heartbeatTimes = 3 ; //鍙戦�佹暟鎹鏁� public Integer sendTimes = 0 ; + //鍙戦�佸畬鏁版嵁鍚庯紝鏄惁鍏抽棴TCP杩炴帴锛�1鏄紝0鍚� + public Integer sendOverThenCloseConnect = 0 ; + /** * 瀵硅薄杞垚json * @return 杩斿洖 json @@ -100,4 +103,12 @@ public void setSendTimes(Integer sendTimes) { this.sendTimes = sendTimes; } + + public Integer getSendOverThenCloseConnect() { + return sendOverThenCloseConnect; + } + + public void setSendOverThenCloseConnect(Integer sendOverThenCloseConnect) { + this.sendOverThenCloseConnect = sendOverThenCloseConnect; + } } diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/resources/Config.xml b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/resources/Config.xml index 9145942..b81f162 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/resources/Config.xml +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/resources/Config.xml @@ -11,6 +11,7 @@ sendInterval锛氬彂閫佹暟鎹棿闅� 绉� heartbeatTimes锛氭瘡涓�杞鍙戦�佹暟鎹紝鍏朵腑鍖呮嫭蹇冭烦鍙戦�佹鏁� sendTimes锛氬彂閫佹暟鎹鏁� + sendOverThenCloseConnect:鍙戦�佸畬鏁版嵁鍚庯紝鏄惁鍏抽棴TCP杩炴帴锛�1鏄紝0鍚� --> <base rtuAddrStart="5323280000" @@ -21,6 +22,7 @@ sendInterval="2" heartbeatTimes="3" sendTimes="1" + sendOverThenCloseConnect="0" /> <!-- -- Gitblit v1.8.0