From 9a332594f1efa890997f9ba8d3a4d964f1b68b72 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期一, 30 六月 2025 08:57:39 +0800
Subject: [PATCH] 1、中间件设备日志文件针对FBox设备优化;2、表阀一体机功能码92返回结果判断bug修改;3、remote模块中实现表阀一体机协议的功能码9D(正常远程关阀)。

---
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdCtrl.java  |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd9D/CdSv.java    |   38 +++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd9D/CdCtrl.java  |  150 +++++++++++++++++++++++++++++++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd9D/CdDto.java   |   17 ++++
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/resource/rtuLog/RtuLogManager.java                |    4 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd9D/CdParam.java |   22 +++++
 6 files changed, 231 insertions(+), 2 deletions(-)

diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/resource/rtuLog/RtuLogManager.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/resource/rtuLog/RtuLogManager.java
index ae3b050..d0dff48 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/resource/rtuLog/RtuLogManager.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/resource/rtuLog/RtuLogManager.java
@@ -172,7 +172,9 @@
 								return new Object[]{null, 3} ;
 							}
 							if(!oldLog.delete()){
-								return new Object[]{null, 4} ;
+								//2025-06-28 瀵逛簬姘磋偉鏈篎Box涓婃姤鏁版嵁姣旇緝棰戠箒锛屽疄娴嬭�佹枃浠跺父鏈夊垹闄や笉浜嗙殑鎯呭喌鍙戠敓锛�
+								//涓�娆″垹闄や笉浜嗭紝涓嬫鍐嶅彲鍒犻櫎锛屾墍浠ヤ笅闈eturn鍘婚櫎
+								//return new Object[]{null, 4} ;
 							}
 						}
 					}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdCtrl.java
index fa21331..bbad1d9 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdCtrl.java
@@ -170,7 +170,7 @@
                 DataCd92_A2Vo cvo = JSON.parseObject(json, DataCd92_A2Vo.class) ;
                 if(cvo != null){
                     if(callback != null){
-                        if(cvo.opResult != null && cvo.opResult.byteValue() == (byte)0){
+                        if(cvo.opResult != null && cvo.opResult.byteValue() == (byte)1){
                             callback.call(true);//寮�闃�鎴愬姛
                         }else{
                             callback.call(false);//寮�闃�澶辫触
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd9D/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd9D/CdCtrl.java
new file mode 100644
index 0000000..4d63e92
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd9D/CdCtrl.java
@@ -0,0 +1,150 @@
+package com.dy.pipIrrRemote.monitor.p202404V201.cd9D;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.dy.common.aop.SsoAop;
+import com.dy.common.mw.protocol.Command;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd93_9D_A3Vo;
+import com.dy.common.util.Callback;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast;
+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;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/5/28 11:30
+ * @Description
+ */
+@Slf4j
+@Tag(name = "杩滅▼鍛戒护", description = "骞冲彴杩滅▼鍏抽榾")
+@RestController("p202404V201Cd9DCtrl")
+@RequestMapping(path = "p202404V201/cd9D")
+@RequiredArgsConstructor
+@Scope("prototype") //鍥犱负鏈夊璞$被灞炴�э紝鎵�浠ラ噰鐢ㄥ師鍨嬫ā寮忥紝姣忔璇锋眰鏂板缓涓�涓疄渚嬪璞�
+public class CdCtrl extends ComCtrl {
+
+    private static final String RtuSuccessMsg = "鎺у埗鍣ㄦ帴鏀跺苟鎵ц鍛戒护鎴愬姛锛屾棤杩斿洖鏁版嵁";
+
+    private static final String ComCode = "9D" ;
+
+    @Autowired
+    private CdSv sv ;
+    /**
+     * 鍚戣澶囷紙鎺у埗鍣級鍙戦�佸懡浠�
+     * @param dto 鍓嶇鍙戞潵鐨勫�煎璞�
+     * @param bindingResult 瀵筪to楠岃瘉鐨勭粨鏋�
+     * @return 杩斿洖鍓嶇
+     */
+    @PostMapping(path = "send", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @SsoAop()
+    public BaseResponse<Object> send(@RequestBody @Valid CdDto dto, BindingResult bindingResult) {
+        BaseResponse<Object> res ;
+        //鍙戦�佸懡浠ゅ墠-1锛氶獙璇�
+        res = super.pre1(sv, ComCode, dto, bindingResult);
+        if(res == null) {
+            //鍙戦�佸懡浠ゅ墠-2锛氳幏寰楁暟鎹�
+            res = super.pre2(sv, ComCode, dto, bindingResult);
+            if (res == null) {
+                //鑾峰彇寮�闃�鍛戒护鍙傛暟
+                RmOpenCloseValveLast lastOpPo = sv.getLastOpenValve(dto.getIntakeId()) ;
+                if(lastOpPo == null || lastOpPo.opType == null) {
+                    return BaseResponseUtils.buildFail("璇ュ彇姘村彛涓婃棤鏈�杩戠殑寮�闃�鎿嶄綔");
+                }
+                if(lastOpPo.clType != null) {
+                    return BaseResponseUtils.buildFail("璇ュ彇姘村彛涓婃棤鏈�杩戠殑寮�闃�鎿嶄綔");
+                }
+                //鍙戦�佸懡浠ゅ墠-3锛氫繚瀛樺懡浠ゆ棩蹇�
+                CdParam comParam = CdParam.builder().commandCode(ComCode).projectNo(projectNo).controllerType(controllerType)
+                        .icCardAddr(lastOpPo.opIcCardAddr)//寮�闃�ic鍗″湴鍧�
+                        .icCardNo(lastOpPo.opIcCardNo)//寮�闃�IC鍗$紪鍙�
+                        .orderNo(lastOpPo.opOrderNo)//璁㈠崟鍙�
+                        .build();
+                res = super.pre3(sv, dto.getIntakeId(), dto.getOperator(), ComCode, comParam);
+                if (res == null) {
+                    //鍙戦�佸懡浠ゅ墠-4锛氬噯澶嘑eature
+                    super.pre4();
+                    try {
+                        //鍒涘缓澶栭儴鍛戒护锛堝彂缁欐帶鍒跺櫒锛�
+                        Command com = sv.createOuterCommand(ctrlPo.getRtuAddr(), "" + comId, ComCode);
+                        com.rtuResultSendWebUrl = rtuResultSendWebUrl;
+                        com.param = comParam;
+                        //鍙戦�佸懡浠�
+                        res = super.doSend(sv, com);
+                        if (res == null) {
+                            //鍙戦�佸懡浠ゅ悗
+                            res = super.after(ComCode, new Callback() {
+                                @Override
+                                public void call(Object obj) {
+                                    //Boolean success = (Boolean) obj;
+                                    //if(success){
+                                    //    //鍏抽榾鎴愬姛
+                                    //}
+                                }
+                                @Override
+                                public void call(Object... objs) {
+                                }
+                                @Override
+                                public void exception(Exception e) {
+                                }
+                            });
+                        }
+                    } catch (Exception e) {
+                        res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage()));
+                    } finally {
+                        //鏈�缁�
+                        super.end();
+                    }
+                }
+            }
+        }
+        return res ;
+    }
+
+    @Override
+    protected String checkDto(DtoBase dto) {
+        return null;
+    }
+
+    @Override
+    protected String dealComResult(String code, JSONObject resultData, Callback callback){
+        String msg;
+        if(resultData != null){
+            JSONObject codeData = resultData.getJSONObject("data") ;
+            if(codeData == null){
+                msg = RtuSuccessMsg ;
+            }else {
+                String json = codeData.toJSONString();
+                DataCd93_9D_A3Vo cvo = JSON.parseObject(json, DataCd93_9D_A3Vo.class) ;
+                if(cvo != null){
+                    if(callback != null){
+                        if(cvo.clResult != null && cvo.clResult == 0){
+                            callback.call(true);//鍏抽榾鎴愬姛
+                        }else{
+                            callback.call(false);//鍏抽榾澶辫触
+                        }
+                    }
+                    msg = cvo.toStr(false) ;
+                }else{
+                    msg = RtuSuccessMsg ;
+                }
+            }
+        }else{
+            msg = RtuSuccessMsg ;
+        }
+        return msg;
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd9D/CdDto.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd9D/CdDto.java
new file mode 100644
index 0000000..276d441
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd9D/CdDto.java
@@ -0,0 +1,17 @@
+package com.dy.pipIrrRemote.monitor.p202404V201.cd9D;
+
+import com.dy.pipIrrRemote.common.dto.DtoBase;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/5/28 11:30
+ * @Description
+ */
+
+@Data
+@EqualsAndHashCode(callSuper=true)
+public class CdDto extends DtoBase {
+    public static final long serialVersionUID = 202506281131001L;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd9D/CdParam.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd9D/CdParam.java
new file mode 100644
index 0000000..033b495
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd9D/CdParam.java
@@ -0,0 +1,22 @@
+package com.dy.pipIrrRemote.monitor.p202404V201.cd9D;
+
+import com.dy.pipIrrRemote.monitor.common.CdParameter;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/5/28 11:30
+ * @Description
+ */
+@Data
+@ToString(callSuper = true)
+@EqualsAndHashCode(callSuper = true)
+@SuperBuilder
+public class CdParam extends CdParameter {
+    public String icCardAddr ;//鐢ㄦ埛鍗″湴鍧�锛�4瀛楄妭HEX锛�
+    public String icCardNo ;//鐢ㄦ埛鍗″簭鍒楀彿锛�17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛�
+    public String orderNo ;//璁㈠崟鍙凤紙16浣嶆暟瀛楋級
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd9D/CdSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd9D/CdSv.java
new file mode 100644
index 0000000..ea3c60c
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd9D/CdSv.java
@@ -0,0 +1,38 @@
+package com.dy.pipIrrRemote.monitor.p202404V201.cd9D;
+
+import com.dy.pipIrrGlobal.daoPr.PrWaterPriceMapper;
+import com.dy.pipIrrGlobal.daoRm.RmOpenCloseValveLastMapper;
+import com.dy.pipIrrGlobal.daoSe.SeVirtualCardMapper;
+import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast;
+import com.dy.pipIrrRemote.monitor.common.ComSv;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/5/28 11:30
+ * @Description
+ */
+@Slf4j
+@Service("cd9DSv")
+public class CdSv extends ComSv {
+
+    @Autowired
+    protected SeVirtualCardMapper seVirtualCardDao ;
+    @Autowired
+    protected PrWaterPriceMapper prWaterPriceDao ;
+    @Autowired
+    protected RmOpenCloseValveLastMapper rmOpenCloseValveLastDao ;
+
+
+    public RmOpenCloseValveLast getLastOpenValve(Long intakeId){
+        List<RmOpenCloseValveLast> list = rmOpenCloseValveLastDao.selectByIntakeId(intakeId) ;
+        if(list != null && list.size() > 0){
+            return list.get(0) ;
+        }
+        return null ;
+    }
+}
\ No newline at end of file

--
Gitblit v1.8.0