From bf079a83490bcdb46504b09925d29671d7769895 Mon Sep 17 00:00:00 2001
From: wuzeyu <1223318623@qq.com>
Date: 星期二, 28 五月 2024 11:04:39 +0800
Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV
---
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/RtuOnLineDeal.java | 11 ++
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/CommandSv.java | 53 +++++++++++++
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoOnLineIntake.java | 36 +++++++++
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtu/RtuCtrl.java | 21 +++++
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java | 16 ++++
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/CommandInnerDeaLer.java | 2
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/qo/OnLineIntakesQO.java | 33 ++++++++
pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml | 53 +++++++++++++
8 files changed, 221 insertions(+), 4 deletions(-)
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java
index d6262c9..854b1eb 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java
@@ -3,6 +3,7 @@
import com.dy.pipIrrGlobal.pojoPr.PrIntake;
import com.dy.pipIrrGlobal.voPr.VoIntake;
+import com.dy.pipIrrGlobal.voPr.VoOnLineIntake;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -110,4 +111,19 @@
* @return
*/
List<Map<String, Object>> getNoBindingIntakes();
+
+ /**
+ * 鑾峰彇鍙栨按鍙f暟閲忥紙鍦ㄧ嚎鍜屼笉鍦ㄧ嚎锛�
+ * @param params
+ * @return
+ */
+ Long getOnLineIntakesCount(Map<?, ?> params);
+
+ /**
+ * 鑾峰彇鍙栨按鍙e垪琛紙鍦ㄧ嚎鍜屼笉鍦ㄧ嚎锛�
+ * @param params
+ * @return
+ */
+ //List<VoOnLineIntake> getOnLineIntakes(@Param("onLineMap") String onLineMap, @Param("isOnLine") Boolean isOnLine);
+ List<VoOnLineIntake> getOnLineIntakes(Map<?, ?> params);
}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoOnLineIntake.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoOnLineIntake.java
new file mode 100644
index 0000000..01f6c46
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoOnLineIntake.java
@@ -0,0 +1,36 @@
+package com.dy.pipIrrGlobal.voPr;
+
+import com.dy.common.po.BaseEntity;
+import lombok.Data;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-05-27 17:02
+ * @LastEditTime 2024-05-27 17:02
+ * @Description 鍦ㄧ嚎鍙栨按鍙e璞�
+ */
+
+@Data
+public class VoOnLineIntake implements BaseEntity {
+ private static final long serialVersionUID = 202405271703001L;
+
+ /**
+ * 鍙栨按鍙D
+ */
+ private String intakeId;
+
+ /**
+ * 闃�鎺у櫒鍦板潃
+ */
+ private String rtuAddr;
+
+ /**
+ * 鍙栨按鍙g紪鍙�
+ */
+ private String intakeNum;
+
+ /**
+ * 鏄惁鍦ㄧ嚎
+ */
+ private Boolean isOnLine;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml
index 5a25cea..920ffce 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml
@@ -358,4 +358,57 @@
WHERE id NOT IN(SELECT intakeId FROM pr_controller) AND deleted = 0
</select>
+ <!--鑾峰彇鍙栨按鍙f暟閲忥紙鍦ㄧ嚎鍜屼笉鍦ㄥ厛锛�-->
+ <select id="getOnLineIntakesCount" resultType="java.lang.Long">
+ SELECT
+ COUNT(*) AS recordCount
+ FROM pr_controller con
+ INNER JOIN pr_intake inta ON con.intakeId = inta.id
+ INNER JOIN JSON_TABLE(
+ <!--'[{"rtuAddr":"37142501020100215","isOnLine":true},{"rtuAddr":"4000004","isOnLine":true},{"rtuAddr":"dy20240325","isOnLine":false}]',-->
+ #{onLineMap},
+ '$[*]' COLUMNS(
+ rtuAddr VARCHAR(20) PATH '$.rtuAddr',
+ isOnLine BOOLEAN PATH '$.isOnLine'
+ )
+ ) rtus ON con.rtuAddr = rtus.rtuAddr
+ <where>
+ <if test="isOnLine != null">
+ rtus.isOnLine = #{isOnLine}
+ </if>
+ <if test="intakeNum != null and intakeNum != ''">
+ AND inta.name LIKE CONCAT('%', #{intakeNum}, '%')
+ </if>
+ </where>
+ </select>
+
+ <!--鑾峰彇鍙栨按鍙e垪琛紙鍦ㄧ嚎鍜屼笉鍦ㄥ厛锛�-->
+ <select id="getOnLineIntakes" resultType="com.dy.pipIrrGlobal.voPr.VoOnLineIntake">
+ SELECT
+ con.intakeId,
+ con.rtuAddr,
+ inta.name AS intakeNum,
+ rtus.isOnLine
+ FROM pr_controller con
+ INNER JOIN pr_intake inta ON con.intakeId = inta.id
+ INNER JOIN JSON_TABLE(
+ <!--'[{"rtuAddr":"37142501020100215","isOnLine":true},{"rtuAddr":"4000004","isOnLine":true},{"rtuAddr":"dy20240325","isOnLine":false}]',-->
+ #{onLineMap},
+ '$[*]' COLUMNS(
+ rtuAddr VARCHAR(20) PATH '$.rtuAddr',
+ isOnLine BOOLEAN PATH '$.isOnLine'
+ )
+ ) rtus ON con.rtuAddr = rtus.rtuAddr
+ <where>
+ <if test="isOnLine != null">
+ rtus.isOnLine = #{isOnLine}
+ </if>
+ <if test="intakeNum != null and intakeNum != ''">
+ AND inta.name LIKE CONCAT('%', #{intakeNum}, '%')
+ </if>
+ </where>
+ <if test="pageCurr != null and pageSize != null">
+ LIMIT ${(pageCurr-1)*pageSize}, ${pageSize}
+ </if>
+ </select>
</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/CommandInnerDeaLer.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/CommandInnerDeaLer.java
index c6ee776..0d783a9 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/CommandInnerDeaLer.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/CommandInnerDeaLer.java
@@ -1,7 +1,7 @@
package com.dy.rtuMw.server.local;
-import com.dy.rtuMw.server.local.localProtocol.*;
import com.dy.common.mw.protocol.Command;
+import com.dy.rtuMw.server.local.localProtocol.*;
/**
* @Author liurunyu
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/RtuOnLineDeal.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/RtuOnLineDeal.java
index 15fe543..b981223 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/RtuOnLineDeal.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/RtuOnLineDeal.java
@@ -1,6 +1,6 @@
package com.dy.rtuMw.server.local.localProtocol;
-import com.dy.rtuMw.server.forTcp.TcpSessionCache;
+import java.util.HashMap;
public class RtuOnLineDeal {
@@ -8,6 +8,13 @@
* 鏌ヨ鍦ㄧ嚎涓庝笉鍦ㄧ嚎鎯呭喌
*/
public RtuOnLineVo deal(){
- return (new RtuOnLineVo()).setOnLine(TcpSessionCache.allOnLine());
+ //return (new RtuOnLineVo()).setOnLine(TcpSessionCache.allOnLine());
+
+ // 杩斿洖鍊兼祴璇曚唬鐮�
+ HashMap<String , Boolean> onLineMap = new HashMap<>() ;
+ onLineMap.put("37142501020100215", true);
+ onLineMap.put("dy20240325", false);
+ onLineMap.put("4000004", true);
+ return (new RtuOnLineVo()).setOnLine(onLineMap);
}
}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/CommandSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/CommandSv.java
index efd5f6c..7482f9d 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/CommandSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/CommandSv.java
@@ -1,15 +1,26 @@
package com.dy.pipIrrRemote.common;
+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.webUtil.QueryResultVo;
import com.dy.pipIrrGlobal.daoPr.PrControllerMapper;
+import com.dy.pipIrrGlobal.daoPr.PrIntakeMapper;
import com.dy.pipIrrGlobal.daoRm.RmCommandHistoryMapper;
import com.dy.pipIrrGlobal.daoSe.SeVirtualCardMapper;
import com.dy.pipIrrGlobal.pojoRm.RmCommandHistory;
+import com.dy.pipIrrGlobal.voPr.VoOnLineIntake;
import com.dy.pipIrrGlobal.voRm.VoUnclosedValve;
+import com.dy.pipIrrRemote.common.qo.OnLineIntakesQO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.common.utils.PojoUtils;
import org.springframework.stereotype.Service;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
* @author ZhuBaoMin
@@ -21,10 +32,11 @@
@Slf4j
@Service
@RequiredArgsConstructor
-public class CommandSv {
+public class CommandSv extends ComSupport {
private final RmCommandHistoryMapper rmCommandHistoryMapper;
private final PrControllerMapper prControllerMapper;
private final SeVirtualCardMapper seVirtualCardMapper;
+ private final PrIntakeMapper prIntakeMapper;
/**
* 鏍规嵁鍙栨按鍙D鑾峰彇闃�鎺у櫒鍦板潃
@@ -64,5 +76,44 @@
return rmCommandHistoryMapper.getUnclosedValves(operator);
}
+ /**
+ * 鑾峰彇鍙栨按鍙e垪琛�
+ * @return
+ */
+ public QueryResultVo<List<VoOnLineIntake>> selectOnLineIntakes(OnLineIntakesQO qo) {
+ Command com = new Command() ;
+ com.id = Command.defaultId;
+ com.code = "LCD0001";
+ com.type = "innerCommand";
+
+ JSONObject response = (JSONObject) JSON.toJSON(sendCom2Mw(com));
+
+ if(response != null && response.getString("code").equals("0001")) {
+ JSONObject attachment = response.getJSONObject("content").getJSONObject("attachment").getJSONObject("onLineMap");
+ HashMap<String, Boolean> onLineMap = JSON.parseObject(attachment.toJSONString(), 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);
+ }
+
+ qo.setOnLineMap(jsonArray.toJSONString());
+ Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
+ Long itemTotal = prIntakeMapper.getOnLineIntakesCount(params);
+
+ QueryResultVo<List<VoOnLineIntake>> rsVo = new QueryResultVo<>() ;
+ rsVo.pageSize = qo.pageSize ;
+ rsVo.pageCurr = qo.pageCurr ;
+ rsVo.calculateAndSet(itemTotal, params);
+ rsVo.obj = prIntakeMapper.getOnLineIntakes(params);
+ return rsVo;
+ } else {
+ QueryResultVo<List<VoOnLineIntake>> rsVo = new QueryResultVo<>();
+ return rsVo;
+ }
+ }
}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/qo/OnLineIntakesQO.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/qo/OnLineIntakesQO.java
new file mode 100644
index 0000000..9be4d6e
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/qo/OnLineIntakesQO.java
@@ -0,0 +1,33 @@
+package com.dy.pipIrrRemote.common.qo;
+
+import com.dy.common.webUtil.QueryConditionVo;
+import jakarta.validation.constraints.Max;
+import jakarta.validation.constraints.Min;
+import lombok.Data;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-05-27 20:32
+ * @LastEditTime 2024-05-27 20:32
+ * @Description
+ */
+
+@Data
+public class OnLineIntakesQO extends QueryConditionVo {
+ /**
+ * 涓棿浠惰繑鍥炵殑RTU鍦ㄧ嚎鎯呭喌瀵硅薄鏁扮粍
+ */
+ private String onLineMap;
+
+ /**
+ * 鍙栨按鍙g紪鍙�
+ */
+ private String intakeNum;
+
+ /**
+ * 鏄惁鍦ㄧ嚎
+ */
+ @Max(value = 1,message = "鏄惁鍦ㄧ嚎浠呭厑璁镐负鐪熸垨鍋�")
+ @Min(value = 0,message = "鏄惁鍦ㄧ嚎浠呭厑璁镐负鐪熸垨鍋�")
+ private Boolean isOnLine;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtu/RtuCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtu/RtuCtrl.java
index b550305..e86e811 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtu/RtuCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtu/RtuCtrl.java
@@ -10,11 +10,14 @@
import com.dy.common.mw.protocol.p206V202404.downVos.ComCdXyVo;
import com.dy.common.webUtil.BaseResponse;
import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.common.webUtil.QueryResultVo;
import com.dy.pipIrrGlobal.pojoRm.RmCommandHistory;
+import com.dy.pipIrrGlobal.voPr.VoOnLineIntake;
import com.dy.pipIrrRemote.common.ComSupport;
import com.dy.pipIrrRemote.common.CommandSv;
import com.dy.pipIrrRemote.common.dto.Addr;
import com.dy.pipIrrRemote.common.dto.DtoBase;
+import com.dy.pipIrrRemote.common.qo.OnLineIntakesQO;
import com.dy.pipIrrRemote.result.RemoteResultCode;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
@@ -24,6 +27,7 @@
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
+import java.util.List;
import java.util.Objects;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
@@ -65,6 +69,23 @@
}
/**
+ * 鑾峰彇鍙栨按鍙e垪琛紙鍦ㄧ嚎鍜屼笉鍦ㄧ嚎锛�
+ * @param qo
+ * @return
+ */
+ @GetMapping(path = "get_online_intakes")
+ @SsoAop()
+ public BaseResponse<QueryResultVo<List<VoOnLineIntake>>> getOnLineIntakes(OnLineIntakesQO qo) {
+ try {
+ QueryResultVo<List<VoOnLineIntake>> res = commandSv.selectOnLineIntakes(qo);
+ return BaseResponseUtils.buildSuccess(res);
+ } catch (Exception e) {
+ log.error("鏌ヨ鍙栨按鍙e紓甯�", e);
+ return BaseResponseUtils.buildException(e.getMessage());
+ }
+ }
+
+ /**
* 璁剧疆璁惧缁堢鍦板潃
* @param addr 璁剧疆璁惧缁堢鍦板潃浼犲叆瀵硅薄
* @param bindingResult
--
Gitblit v1.8.0