From f4d206d07eaeabad56e2918edf9799af13bb526e Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期一, 12 五月 2025 17:38:12 +0800 Subject: [PATCH] 表阀一体机:web后端系统,实现功能码5B、5C、15、16、22、30、31、50、55、56、65、68、97、98、99远程命令。 --- pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/ComTransCtrl.java | 207 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 203 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..a85d0fd 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,23 @@ 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.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 +26,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); + } + }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 createRtnMsg(String code, JSONObject resultData){ + 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