From 710c6a4d568237016a70b74aa3769b89e336725c Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期二, 13 五月 2025 15:48:21 +0800
Subject: [PATCH] 1、实现功能码92、93命令web后端接口定义与逻辑代码实现; 2、修改原来功能逻辑实现的逻辑,增加回调; 3、表阀一体机协议命令结果数据库存储补充实现。

---
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/ComTransCtrl.java |  208 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 204 insertions(+), 4 deletions(-)

diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/ComTransCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/ComTransCtrl.java
index a1e4b11..1ee1493 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/ComTransCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/ComTransCtrl.java
@@ -1,8 +1,24 @@
 package com.dy.pipIrrRemote.monitor;
 
+import com.alibaba.fastjson2.JSONObject;
+import com.dy.common.aop.SsoAop;
+import com.dy.common.mw.protocol.Command;
+import com.dy.common.util.Callback;
+import com.dy.common.util.NumUtil;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.pipIrrRemote.common.dto.DtoBase;
+import com.dy.pipIrrRemote.monitor.common.ComCtrl;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
+import org.springframework.http.MediaType;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -11,15 +27,199 @@
  * @Date: 2025/4/30 16:08
  * @Description
  */
-
 @Slf4j
 @Tag(name = "杩滅▼閫忎紶鍛戒护", description = "杩滅▼閫忎紶鍛戒护")
 @RestController
-@RequestMapping(path = "command")
+@RequestMapping(path = "comTrans")
 @RequiredArgsConstructor
-public class ComTransCtrl {
+@Scope("prototype") //鍥犱负鏈夊璞$被灞炴�э紝鎵�浠ラ噰鐢ㄥ師鍨嬫ā寮忥紝姣忔璇锋眰鏂板缓涓�涓疄渚嬪璞�
+public class ComTransCtrl extends ComCtrl {
 
-    private final ComTransSv comSv;
+    private static final String RtuSuccessMsg = "鎺у埗鍣ㄦ帴鏀跺苟鎵ц鍛戒护鎴愬姛";
 
+    @Autowired
+    private ComTransSv sv ;
+
+    /**
+     * 鍚戣澶囷紙鎺у埗鍣級鍙戦�侀�忎紶鍛戒护
+     * @param dto 鍓嶇鍙戞潵鐨勫�煎璞�
+     * @param bindingResult 瀵筪to楠岃瘉鐨勭粨鏋�
+     * @return 杩斿洖鍓嶇
+     */
+    @PostMapping(path = "send", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @SsoAop()
+    public BaseResponse<Object> send(@RequestBody @Valid ComTransDto dto, BindingResult bindingResult) {
+        BaseResponse<Object> res ;
+        //鍙戦�佸懡浠ゅ墠-1锛氶獙璇�
+        res = super.pre1(sv, dto.comCode, dto, bindingResult);
+        if(res == null) {
+            //鍙戦�佸懡浠ゅ墠-2锛氳幏寰楁暟鎹�
+            res = super.pre2(sv, dto.comCode, dto, bindingResult);
+            if(res == null) {
+                //鍙戦�佸懡浠ゅ墠-3锛氫繚瀛樺懡浠ゆ棩蹇�
+                this.comName = "閫忎紶锛�" + comName + "锛�" ;
+                String comData = dto.comData.toUpperCase() ;
+                ComTransParam comParam = ComTransParam.builder().commandCode(dto.comCode).data(comData).build();
+                res = super.pre3(sv, dto.getIntakeId(), dto.getOperator(), dto.comCode, comParam);
+                if(res == null) {
+                    //鍙戦�佸懡浠ゅ墠-4锛氬噯澶嘑eature
+                    super.pre4();
+                    try{
+                        //鍒涘缓澶栭儴閫忎紶鍛戒护锛堝彂缁欐帶鍒跺櫒锛�
+                        Command com = sv.createOuterTransparentCommand("" + comId, dto.comCode);
+                        com.rtuAddr = ctrlPo.getRtuAddr() ;
+                        com.attachment = comData ;
+                        com.rtuResultSendWebUrl = rtuResultSendWebUrl;
+                        //鍙戦�佸懡浠�
+                        res = super.doSend(sv, com) ;
+                        if(res == null) {
+                            //鍙戦�佸懡浠ゅ悗
+                            res = super.after(dto.comCode, null);
+                        }
+                    }catch (Exception e){
+                        res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null?"":e.getMessage())) ;
+                    }finally {
+                        //鏈�缁�
+                        super.end() ;
+                    }
+                }
+            }
+        }
+        return res ;
+    }
+
+    /**
+     * 楠岃瘉
+     * @param dto
+     * @return
+     */
+    @Override
+    protected String checkDto(DtoBase dto){
+        ComTransDto myDto = (ComTransDto)dto;
+        if(!NumUtil.isHex(myDto.comCode)){
+            return "鍛戒护鍔熻兘鐮佷笉鏄崄鍏繘鍒舵暟";
+        }
+        if(!NumUtil.isHex(myDto.comData)){
+            return "鍛戒护鏁版嵁涓嶆槸鍗佸叚杩涘埗鏁�";
+        }
+        if(myDto.comData.length() % 2 != 0){
+            return "鍛戒护鏁版嵁涓嶅畬澶囷紙闀垮害涓嶆槸鍋舵暟锛�";
+        }
+        if(!myDto.comData.contains(myDto.comCode)){
+            return "鍛戒护鏁版嵁涓笉鍖呭惈鍔熻兘鐮�";
+        }
+        return null ;
+    }
+
+    @Override
+    protected String dealComResult(String code, JSONObject resultData, Callback callback){
+        String msg;
+        if(resultData != null){
+            JSONObject codeData = resultData.getJSONObject("data") ;
+            switch (code){
+                case "3C": msg = createCd3CRtnMsg(codeData); break;
+                case "10": msg = createCd10RtnMsg(codeData); break;
+                case "21": msg = createCd21RtnMsg(codeData); break;
+                case "37": msg = createCd37RtnMsg(codeData); break;
+                case "50": msg = createCd50RtnMsg(codeData); break;
+                case "65": msg = createCd65RtnMsg(codeData); break;
+                case "66": msg = createCd66RtnMsg(codeData); break;
+                case "67": msg = createCd67RtnMsg(codeData); break;
+                case "91": msg = createCd91RtnMsg(codeData); break;
+                case "92": msg = createCd92RtnMsg(codeData); break;
+                case "93": msg = createCd93RtnMsg(codeData); break;
+                default: msg = RtuSuccessMsg; break;
+            }
+        }else{
+            msg = RtuSuccessMsg ;
+        }
+        return msg;
+    }
+    private String createCd3CRtnMsg(JSONObject codeData){
+        if(codeData == null){
+           return RtuSuccessMsg ;
+        }else{
+            Integer minute = codeData.getInteger("minute");
+            return "璁剧疆鎴愬姛锛岃嚜鎶ュ懆鏈燂細" + minute + "鍒嗛挓" ;
+        }
+    }
+    private String createCd10RtnMsg(JSONObject codeData){
+        if(codeData == null){
+            return RtuSuccessMsg ;
+        }else {
+            String newRtuAddr = codeData.getString("newRtuAddr");
+            return "璁剧疆鎴愬姛锛屾帶鍒跺櫒鍦板潃锛�" + newRtuAddr;
+        }
+    }
+    private String createCd21RtnMsg(JSONObject codeData){
+        if(codeData == null){
+            return RtuSuccessMsg ;
+        }else {
+            String ip = codeData.getString("ip");
+            Integer port = codeData.getInteger("port");
+            return "璁剧疆鎴愬姛锛孖P鍦板潃锛�" + ip + "锛岀鍙e彿锛�" + port;
+        }
+    }
+    private String createCd37RtnMsg(JSONObject codeData){
+        if(codeData == null){
+            return RtuSuccessMsg ;
+        }else {
+            Integer second = codeData.getInteger("second");
+            return "璁剧疆鎴愬姛锛屾祦閲忛噰闆嗗懆鏈燂細" + second + "绉�";
+        }
+    }
+   private String createCd50RtnMsg(JSONObject codeData){
+       if(codeData == null){
+           return RtuSuccessMsg ;
+       }else {
+           String rtuAddr = codeData.getString("rtuAddr");
+           return "鏌ヨ鎴愬姛锛屾帶鍒跺櫒鍦板潃锛�" + rtuAddr;
+       }
+    }
+    private String createCd65RtnMsg(JSONObject codeData){
+        if(codeData == null){
+            return RtuSuccessMsg ;
+        }else {
+            Integer minute = codeData.getInteger("minute");
+            return "鏌ヨ鎴愬姛锛岃嚜鎶ュ懆鏈燂細" + minute + "鍒嗛挓";
+        }
+    }
+    private String createCd66RtnMsg(JSONObject codeData){
+        if(codeData == null){
+            return RtuSuccessMsg ;
+        }else {
+            String ip = codeData.getString("ip");
+            Integer port = codeData.getInteger("port");
+            return "鏌ヨ鎴愬姛锛孖P鍦板潃锛�" + ip + "锛岀鍙e彿锛�" + port;
+        }
+    }
+    private String createCd67RtnMsg(JSONObject codeData){
+        if(codeData == null){
+            return RtuSuccessMsg ;
+        }else {
+            Integer second = codeData.getInteger("second");
+            return "鏌ヨ鎴愬姛锛屾祦閲忛噰闆嗗懆鏈燂細" + second + "绉�";
+        }
+    }
+    private String createCd91RtnMsg(JSONObject codeData){
+        //姝ゅ懡浠ょ殑codeData鏄痭ull
+        return "鎺у埗鍣ㄦ竻绌哄巻鍙茶褰曟垚鍔�" ;
+    }
+    private String createCd92RtnMsg(JSONObject codeData){
+        if(codeData == null){
+            return RtuSuccessMsg ;
+        }else {
+            Boolean success = codeData.getBoolean("success");
+            return success ? "鎺у埗鍣ㄥ凡鎵ц閬ユ帶寮�闃�鍛戒护" : "鎺у埗鍣ㄦ嫆缁濇墽琛岄仴鎺у紑闃�鍛戒护";
+        }
+    }
+    private String createCd93RtnMsg(JSONObject codeData){
+        if(codeData == null){
+            return RtuSuccessMsg ;
+        }else {
+            Boolean success = codeData.getBoolean("success");
+            return success ? "鎺у埗鍣ㄥ凡鎵ц閬ユ帶鍏抽榾鍛戒护" : "鎺у埗鍣ㄦ嫆缁濇墽琛岄仴鎺у叧闃�鍛戒护";
+        }
+    }
 
 }

--
Gitblit v1.8.0