From c4a6cf65e1851d85cf104ea21e2921a98089b6a9 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期二, 16 一月 2024 15:36:45 +0800
Subject: [PATCH] 1、通信中间件实现控制器自报数据处理逻辑,及实现数据库映射Mapper。
---
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealAutoReport.java | 73 +++++++++++++++++++++++++++++++++++-
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/RtuDataDealTree.xml | 7 +--
2 files changed, 74 insertions(+), 6 deletions(-)
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealAutoReport.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealAutoReport.java
index 5143c34..1b33e27 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealAutoReport.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealAutoReport.java
@@ -1,11 +1,18 @@
package com.dy.aceMw.server.rtuData.p206V1_0_0;
import com.dy.aceMw.server.rtuData.TaskSurpport;
+import com.dy.aceMw.server.rtuData.dbSv.DbSv;
import com.dy.common.mw.protocol.Data;
import com.dy.common.mw.protocol.p206V1_0_0.DataCdC0Vo;
import com.dy.common.mw.protocol.p206V1_0_0.DataV1_0_1;
+import com.dy.common.util.DateTime;
+import com.dy.pipIrrGlobal.pojoPr.PrController;
+import com.dy.pipIrrGlobal.pojoRm.RmAutoReportHistory;
+import com.dy.pipIrrGlobal.pojoRm.RmAutoReportLast;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+
+import java.util.Date;
/**
* @Author liurunyu
@@ -21,7 +28,7 @@
public static final String taskId = "TkDealAlarmStatus" ;
/**
- * 鎵ц鑺傜偣浠诲姟锛歊TU鑷姤
+ * 鎵ц鑺傜偣浠诲姟锛氭帶鍒跺櫒鑷姤鏁版嵁锛堝姛鑳界爜涓篊0锛�
* @param data 闇�瑕佸鐞嗙殑鏁版嵁
*/
@Override
@@ -31,8 +38,70 @@
if (subD != null) {
DataV1_0_1 dV1_0_1 = (DataV1_0_1) subD;
if (dV1_0_1 != null && dV1_0_1.dataCdC0Vo != null) {
- DataCdC0Vo dataCdC0Vo = dV1_0_1.dataCdC0Vo ;
+ Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ;
+ DbSv sv = (DbSv)objs[0] ;
+ PrController controller = (PrController)objs[1] ;
+ try{
+ this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dV1_0_1.dataCdC0Vo) ;
+ this.saveHistory(sv, controller, d.getRtuAddr(), dV1_0_1.dataCdC0Vo) ;
+ }catch (Exception e){
+ log.error("淇濆瓨鎺у埗鍣ㄨ嚜鎶ユ暟鎹椂鍙戠敓寮傚父", e);
+ }
}
}
}
+ /**
+ * 淇濆瓨鑷姤鏈�鏂版暟鎹�
+ * @param sv 鏈嶅姟
+ * @param controller 鎺у埗鍣ㄥ璞�
+ * @param rtuAddr 鎺у埗鍣ㄥ湴鍧�
+ * @param dataCdC0Vo 鑷姤鏁版嵁瀵硅薄
+ */
+ private void saveOrUpdateLast(DbSv sv, PrController controller, String rtuAddr, DataCdC0Vo dataCdC0Vo) throws Exception {
+ RmAutoReportLast po = sv.getRmLastAutoReport(rtuAddr) ;
+ if(po == null){
+ po = new RmAutoReportLast(null, controller.getId(), controller.getId(),
+ rtuAddr,
+ new Date(),
+ DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCdC0Vo.rtuDt),
+ dataCdC0Vo.instantAmount, dataCdC0Vo.totalAmount, dataCdC0Vo.lossAmount,
+ dataCdC0Vo.waterPress, dataCdC0Vo.batteryVolt, dataCdC0Vo.sunVolt, dataCdC0Vo.signalValue) ;
+ sv.saveRmAutoReportLast(po) ;
+ }else{
+ po = this.update(po, dataCdC0Vo) ;
+ sv.saveRmAutoReportLast(po);
+ }
+ }
+
+ /**
+ * 淇濆瓨鑷姤鍘嗗彶璁板綍
+ * @param sv 鏈嶅姟
+ * @param controller 鎺у埗鍣ㄥ璞�
+ * @param rtuAddr 鎺у埗鍣ㄥ湴鍧�
+ * @param dataCdC0Vo 鑷姤鏁版嵁瀵硅薄
+ */
+ private void saveHistory(DbSv sv, PrController controller, String rtuAddr, DataCdC0Vo dataCdC0Vo) throws Exception {
+ RmAutoReportHistory po = new RmAutoReportHistory(null, controller.getId(), controller.getId(),
+ rtuAddr,
+ new Date(),
+ DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCdC0Vo.rtuDt),
+ dataCdC0Vo.instantAmount, dataCdC0Vo.totalAmount, dataCdC0Vo.lossAmount,
+ dataCdC0Vo.waterPress, dataCdC0Vo.batteryVolt, dataCdC0Vo.sunVolt, dataCdC0Vo.signalValue) ;
+ sv.saveRmAutoReportHistory(po) ;
+ }
+
+
+ private RmAutoReportLast update(RmAutoReportLast po, DataCdC0Vo dataCdC0Vo) throws Exception {
+ po.dt = new Date() ;
+ po.rtudt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCdC0Vo.rtuDt) ;
+ po.instantamount = dataCdC0Vo.instantAmount;
+ po.totalamount = dataCdC0Vo.totalAmount;
+ po.lossamount = dataCdC0Vo.lossAmount;
+ po.waterpress = dataCdC0Vo.waterPress;
+ po.batteryvolt = dataCdC0Vo.batteryVolt;
+ po.sunvolt = dataCdC0Vo.sunVolt;
+ po.signalvalue = dataCdC0Vo.signalValue;
+ return po ;
+ }
}
+
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/RtuDataDealTree.xml b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/RtuDataDealTree.xml
index 6eebb0b..65d651f 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/RtuDataDealTree.xml
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/RtuDataDealTree.xml
@@ -13,10 +13,9 @@
<task id="TkDealControllerTramp" name="澶勭悊娴佹氮鎺у埗鍣�" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealControllerTramp" />
<!-- 闈炴祦娴�匯TU锛屽繀椤绘斁鍦═kDealControllerTramp鍚庨潰 -->
<!-- 璇嗗埆涓诲姩涓婃姤鏁版嵁 -->
- <task id="TkFindReport" name="璇嗗埆涓婃姤鏁版嵁" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkFindReport">
- <task id="TkDealAlarmStatus" name="鎶ヨ涓庣姸鎬佹暟鎹�" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealAlarmStatus" />
- <task id="TkDealAutoReport" name="缁堢鑷姤" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealAutoReport" />
-
+ <task id="TkFindReport" name="璇嗗埆鎺у埗鍣ㄤ笂鎶ユ暟鎹�" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkFindReport">
+ <task id="TkDealAlarmStatus" name="鎺у埗鍣ㄦ姤璀︿笌鐘舵�佹暟鎹�" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealAlarmStatus" />
+ <task id="TkDealAutoReport" name="鎺у埗鍣ㄨ嚜鎶ユ暟鎹�" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealAutoReport" />
</task>
<!-- 璇嗗埆鍛戒护鍝嶅簲鏁版嵁 -->
<task id="TkFindComResponse" name="璇嗗埆鍝嶅簲鍛戒护鏁版嵁" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkFindComResponse">
--
Gitblit v1.8.0