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