From 7aab004601e77890b158f19d1735594a8326feaa Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期四, 24 四月 2025 17:11:17 +0800
Subject: [PATCH] 数据库事务注解位置调整

---
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/MonitorSv.java |  221 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 221 insertions(+), 0 deletions(-)

diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/MonitorSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/MonitorSv.java
new file mode 100644
index 0000000..fc76796
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/MonitorSv.java
@@ -0,0 +1,221 @@
+package com.dy.pipIrrRemote.monitor;
+
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
+import com.dy.common.mw.protocol.Command;
+import com.dy.common.mw.protocol.CommandBackParam;
+import com.dy.common.mw.protocol.rtuState.RtuStatus;
+import com.dy.common.util.DateTime;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.QueryResultVo;
+import com.dy.pipIrrGlobal.daoPr.PrIntakeMapper;
+import com.dy.pipIrrGlobal.rtuMw.CodeLocal;
+import com.dy.pipIrrGlobal.rtuMw.Web2RtuMw;
+import com.dy.pipIrrGlobal.voPr.VoOnLineIntake;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.common.utils.PojoUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import java.text.DateFormat;
+import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/10/23 11:32
+ * @Description
+ */
+@Slf4j
+@Service
+public class MonitorSv extends Web2RtuMw {
+
+    @Autowired
+    private PrIntakeMapper prIntakeMapper;
+
+    @Autowired
+    private Environment env;
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    /**
+     * 鑾峰彇宸茬粡缁戝畾鎺у埗鍣ㄧ殑鍙栨按鍙e垪琛紙骞舵爣璁板湪绾夸笌涓嶅湪绾匡級
+     *
+     * @return
+     */
+    public QueryResultVo<List<VoOnLineIntake>> selectOnLineIntakes(QueryVo vo) {
+        if(vo.getIsOnLine() == null){
+            //涓嶅尯鍒嗗湪绾夸笌绂荤嚎
+            return selectIntakesIgnoreOnOffLine(vo) ;
+        }else{
+            //鍦ㄧ嚎 鎴� 绂荤嚎
+            return selectIntakesOnOrOffLine(vo) ;
+        }
+    }
+
+    /**
+     * 鏌ヨRTU鍦ㄩ�氫俊涓棿浠朵腑鐨勭姸鎬�
+     * @param rtuAddr
+     * @return
+     */
+    public RtuStatus rtuStatus(String rtuAddr) throws Exception{
+        //鍚戦�氫俊涓棿浠跺彂鍏冲懡浠わ紝鏌ヨ閮ㄥ垎RTU鍦ㄧ嚎鎯呭喌
+        RtuStatus rtuStatus = null ;
+        Command com = this.createInnerCommand(CodeLocal.oneRtuStates);
+        com.setParam(rtuAddr) ;
+        String rqUrl = this.get2MwRequestUrl(this.env, ContextComSend) ;
+        BaseResponse res = sendPostRequest2Mw(restTemplate, rqUrl, com) ;
+        if(res != null){
+            if(res.isSuccess()){
+                Command reCom = JSON.parseObject(res.getContent() == null ? null : JSON.toJSONString(res.getContent()), Command.class) ;
+                CommandBackParam bakParam = JSON.parseObject((reCom== null || reCom.param == null) ? null : JSON.toJSONString(reCom.param), CommandBackParam.class) ;
+                if(bakParam != null){
+                    if(bakParam.getSuccess().booleanValue()){
+                        //閫氫俊涓棿浠舵垚鍔熻繑鍥炲懡浠ょ粨鏋�
+                        if(reCom.getAttachment() != null){
+                            rtuStatus = JSON.parseObject(JSON.toJSONString(reCom.getAttachment()), RtuStatus.class);
+                        }else{
+                            throw new Exception("閫氫俊涓棿浠舵湭鎺屾彙璇TU鐨勭姸鎬侊紝鍙兘璇TU鏈笂绾�") ;
+                        }
+                    }
+                }else{
+                    log.error("閫氫俊涓棿浠惰繑鍥炲唴閮ㄥ懡浠ょ粨鏋滀腑涓嶅寘鍚獵ommandBackParam绫诲瀷鍙傛暟");
+                    throw new Exception("閫氫俊涓棿浠舵墽琛屽懡浠ゅ嚭閿�") ;
+                }
+            }else{
+                log.error("閫氫俊涓棿浠惰繑鍥炲唴閮ㄥ懡浠ゆ墽琛屽け璐�" + (res.getMsg() == null? "" : ("锛�" + res.getMsg()))) ;
+                throw new Exception("閫氫俊涓棿浠舵墽琛屽懡浠ゅ嚭閿�" + (res.getMsg() == null? "" : ("锛�" + res.getMsg()))) ;
+            }
+        }else{
+            log.error("閫氫俊涓棿浠惰繑鍥炲唴閮ㄥ懡浠ょ粨鏋滀负null");
+            throw new Exception("閫氫俊涓棿浠舵墽琛屽懡浠ゅ嚭閿欙紝杩斿洖鍐呴儴鍛戒护缁撴灉涓簄ull") ;
+        }
+        return rtuStatus ;
+    }
+
+    /**
+     * 鏌ヨ鍙栨按鍙o紝涓嶉檺鍒跺湪绾夸笌绂荤嚎鐘舵��
+     * @param vo
+     * @return
+     */
+    private QueryResultVo<List<VoOnLineIntake>> selectIntakesIgnoreOnOffLine(QueryVo vo) {
+        QueryResultVo<List<VoOnLineIntake>> rsVo = this.queryDb(vo) ;
+        if(rsVo != null && rsVo.obj != null && (rsVo.obj.size() > 0)){
+            String rtuAddrs = "" ;
+            boolean first = true ;
+            for(VoOnLineIntake rVo : rsVo.obj){
+                if(first){
+                    first = false ;
+                    rtuAddrs += rVo.getRtuAddr() ;
+                }else{
+                    rtuAddrs += "," + rVo.getRtuAddr() ;
+                }
+            }
+            //鍚戦�氫俊涓棿浠跺彂鍏冲懡浠わ紝鏌ヨ閮ㄥ垎RTU鍦ㄧ嚎鎯呭喌
+            Command com = this.createInnerCommand(CodeLocal.onLinePart);
+            com.setParam(rtuAddrs) ;
+            String rqUrl = this.get2MwRequestUrl(this.env, ContextComSend) ;
+            BaseResponse res = sendPostRequest2Mw(restTemplate, rqUrl, com) ;
+            if(res != null){
+                if(res.isSuccess()){
+                    Command reCom = JSON.parseObject(res.getContent() == null ? null : JSON.toJSONString(res.getContent()), Command.class) ;
+                    CommandBackParam bakParam = JSON.parseObject((reCom== null || reCom.param == null) ? null : JSON.toJSONString(reCom.param), CommandBackParam.class) ;
+                    if(bakParam != null){
+                        if(bakParam.getSuccess().booleanValue()){
+                            //閫氫俊涓棿浠舵垚鍔熻繑鍥炲懡浠ょ粨鏋�
+                            HashMap<String, Boolean> onLineMap = JSON.parseObject(JSON.toJSONString(reCom.getAttachment()), HashMap.class);
+                            for(VoOnLineIntake rVo : rsVo.obj){
+                                if(onLineMap.containsKey(rVo.getRtuAddr())) {
+                                    rVo.setIsOnLine(onLineMap.get(rVo.getRtuAddr()));
+                                }
+                            }
+                        }
+                    }else{
+                        log.error("閫氫俊涓棿浠惰繑鍥炲唴閮ㄥ懡浠ょ粨鏋滀腑涓嶅寘鍚獵ommandBackParam绫诲瀷鍙傛暟");
+                    }
+                }else{
+                    log.error("閫氫俊涓棿浠惰繑鍥炲唴閮ㄥ懡浠ゆ墽琛屽け璐�" + (res.getMsg() == null? "" : ("锛�" + res.getMsg()))) ;
+                }
+            }else{
+                log.error("閫氫俊涓棿浠惰繑鍥炲唴閮ㄥ懡浠ょ粨鏋滀负null");
+            }
+        }
+        return rsVo;
+    }
+
+
+    /**
+     * 鏌ヨ鍙栨按鍙o紝鍦ㄧ嚎鎴栫绾跨姸鎬�
+     * @param vo
+     * @return
+     */
+    private QueryResultVo<List<VoOnLineIntake>> selectIntakesOnOrOffLine(QueryVo vo) {
+        //鍚戦�氫俊涓棿浠跺彂鍏冲懡浠わ紝鏌ヨ閮ㄥ垎RTU鍦ㄧ嚎鎯呭喌
+        Command com = this.createInnerCommand(CodeLocal.onLineAll);
+        String rqUrl = this.get2MwRequestUrl(this.env, ContextComSend) ;
+        BaseResponse res = sendPostRequest2Mw(restTemplate, rqUrl, com) ;
+        if(res != null){
+            if(res.isSuccess()){
+                Command reCom = JSON.parseObject(res.getContent() == null ? null : JSON.toJSONString(res.getContent()), Command.class) ;
+                CommandBackParam bakParam = JSON.parseObject((reCom== null || reCom.param == null) ? null : JSON.toJSONString(reCom.param), CommandBackParam.class) ;
+                if(bakParam != null){
+                    if(bakParam.getSuccess().booleanValue()){
+                        //閫氫俊涓棿浠舵垚鍔熻繑鍥炲懡浠ょ粨鏋�
+                        HashMap<String, Boolean> onLineMap = JSON.parseObject(JSON.toJSONString(reCom.getAttachment()), HashMap.class);
+                        JSONArray jsonArray = new JSONArray();
+                        for (Map.Entry<String, Boolean> entry : onLineMap.entrySet()) {
+                            JSONObject jsonObject = new JSONObject();
+                            jsonObject.put("rtuAddr", entry.getKey());
+                            jsonObject.put("isOnLine", entry.getValue());
+                            jsonArray.add(jsonObject);
+                        }
+                        vo.setOnLineMap(jsonArray.toJSONString());
+                    }
+                }else{
+                    log.error("閫氫俊涓棿浠惰繑鍥炲唴閮ㄥ懡浠ょ粨鏋滀腑涓嶅寘鍚獵ommandBackParam绫诲瀷鍙傛暟");
+                }
+            }else{
+                log.error("閫氫俊涓棿浠惰繑鍥炲唴閮ㄥ懡浠ゆ墽琛屽け璐�" + (res.getMsg() == null? "" : ("锛�" + res.getMsg()))) ;
+            }
+        }else{
+            log.error("閫氫俊涓棿浠惰繑鍥炲唴閮ㄥ懡浠ょ粨鏋滀负null");
+        }
+
+        return this.queryDb(vo) ;
+    }
+
+    /**
+     * 鏌ヨ鏁版嵁搴�
+     * @param vo
+     * @return
+     */
+    private QueryResultVo<List<VoOnLineIntake>> queryDb(QueryVo vo){
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(vo);
+        Long itemTotal = prIntakeMapper.selectIntakesCountForOnLine(params);
+
+        QueryResultVo<List<VoOnLineIntake>> rsVo = new QueryResultVo<>();
+        rsVo.pageSize = vo.pageSize;
+        rsVo.pageCurr = vo.pageCurr;
+        rsVo.calculateAndSet(itemTotal, params);
+        List<VoOnLineIntake> records = prIntakeMapper.selectIntakesForOnLine(params) ;
+        rsVo.obj = records ;
+        for(VoOnLineIntake rVo : records){
+            if(rVo.getAlarm() != null && !rVo.getAlarm().trim().equals("") && rVo.getAlarm().endsWith("锛�")){
+                if(rVo.getAlarmDt() != null){
+                    rVo.setAlarm(rVo.getAlarm().substring(0, rVo.getAlarm().length() - 1) + "\n" + DateTime.yyyy_MM_dd_HH_mm_ss(rVo.getAlarmDt()) ) ;
+                }else{
+                    rVo.setAlarm(rVo.getAlarm().substring(0, rVo.getAlarm().length() - 1)) ;
+                }
+            }
+        }
+        return rsVo ;
+    }
+
+}

--
Gitblit v1.8.0