From f8cb69b9e1b0e8443942e13bbd3f46b9d4203269 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期日, 28 四月 2024 08:54:08 +0800
Subject: [PATCH] 靳总离职前,应元谋二期项目要求(慧图),做了通信协议修改,在他离职后,从韩月处得到最新协议,并做了部分协议软件实现修改,发现新协议中有一些协议定义有重复,也有错误的,所以这版本协议未全部实现,但实现的部分可以用来测试测控一体阀(与段志强一起测试过)。目前情况下,这版本协议实现不能应用于实际项目中,如果必须实现,还需要结合硬件协议具体实现内容再实现通信中间件的协议解析与构造部分,还需要实现上行数据处理任务树部分。

---
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealOpenValveReport.java |  232 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 219 insertions(+), 13 deletions(-)

diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealOpenValveReport.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealOpenValveReport.java
index 2364a3e..077feb4 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealOpenValveReport.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealOpenValveReport.java
@@ -3,8 +3,12 @@
 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.DataCd83OpenVo;
 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.RmOpenCloseValveHistory;
+import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
@@ -13,8 +17,6 @@
  * @Date 2024/1/16 17:16
  * @LastEditTime 2024/1/16 17:16
  * @Description
- */
-/**
  * 澶勭悊鎺у埗鍣ㄥ紑闃�涓婃姤
  */
 public class TkDealOpenValveReport extends TaskSurpport {
@@ -34,17 +36,221 @@
         Object subD = d.getSubData();
         if (subD != null) {
             DataV1_0_1 dV1_0_1 = (DataV1_0_1) subD;
-            if (dV1_0_1 != null && dV1_0_1.dataCd83OpenVo != null) {
-                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);
-                }
-            }
+//            if (dV1_0_1 != null && dV1_0_1.dataCd83OpenVo != null) {
+//                Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ;
+//                DbSv sv = (DbSv)objs[0] ;
+//                PrController controller = (PrController)objs[1] ;
+//                try{
+//                    this.doDeal(sv, controller, d.getRtuAddr(), dV1_0_1, dV1_0_1.dataCd83OpenVo) ;
+//                }catch (Exception e){
+//                    log.error("淇濆瓨鎺у埗鍣ㄥ紑闃�涓婃姤鏃跺彂鐢熷紓甯�", e);
+//                }
+//            }
         }
     }
+    /**
+     * 涓氬姟澶勭悊
+     * @param sv 鏈嶅姟
+     * @param controller 鎺у埗鍣ㄥ璞�
+     * @param rtuAddr 鎺у埗鍣ㄥ湴鍧�
+     * @param dV1_0_1 涓婃姤鏁版嵁
+     * @param dataCd83OpenVo 寮�闃�涓婃姤鏁版嵁瀵硅薄
+     */
+    private void doDeal(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd83OpenVo dataCd83OpenVo) throws Exception {
+        RmOpenCloseValveLast poLast = sv.getRmOpenCloseValveLast(rtuAddr) ;
+        if(poLast == null){
+            //鏁版嵁搴撲腑涓嶅瓨鍦ㄨ鎺у埗鍣ㄧ殑寮�鍏抽榾鏁版嵁
+            //棣栧厛鐢熸垚鏈�鏂版暟鎹強鍘嗗彶鏁版嵁锛屽苟鍏堜繚瀛�
+            poLast = this.newRmOpenCloseValveLast(controller, rtuAddr, dV1_0_1, dataCd83OpenVo);
+            this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83OpenVo, poLast);
+            sv.saveRmOpenCloseValveLast(poLast);
+        }else{
+            //鏁版嵁搴撲腑瀛樺湪璇ユ帶鍒跺櫒鐨勫紑鍏抽榾鏁版嵁
+            if(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt).equals(poLast.openDt)){
+                //鏃堕棿涓�鑷达紝閲嶅涓婃姤鏁版嵁锛屼笉杩涜浠讳綍澶勭悊
+            }else{
+                if(poLast.opType != null){
+                    //鍘熻褰曞瓨鍦ㄥ紑闃�鏁版嵁锛岄鍏堣繘琛屾椂闂村姣�
+                    if(poLast.openDt != null && poLast.openDt.after(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt))){
+                        //琛ユ姤鐨勮涔呬箣鍓嶇殑寮�闃�鏁版嵁锛屼笉杩涜澶勭悊
+                    }else if(poLast.openDt != null && poLast.openDt.equals(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt))){
+                        //閲嶅涓婃姤鐨勫紑闃�鏁版嵁锛屼笉杩涜澶勭悊
+                    }else{
+                        //褰撳墠寮�闃�涓婃姤鏄柊鐨勪竴娆″紑闃�锛屼笉绠″師璁板綍鏄惁瀛樺湪鍏抽榾鏁版嵁锛屼竴寰嬫竻绌哄叧闃�鏁版嵁
+                        this.updateOpenValve(controller, poLast, null, dV1_0_1, dataCd83OpenVo, true) ;
+                        //鐢熸垚骞朵繚瀛樻柊鐨勫紑闃�涓婃姤鍘嗗彶鏁版嵁璁板綍
+                        this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83OpenVo, poLast);
+                    }
+                }else if(poLast.clType != null){
+                    //鍘熻褰曚笉瀛樺湪寮�闃�鏁版嵁锛屼絾瀛樺湪鍏抽榾鏁版嵁锛岄鍏堣繘琛屾椂闂存瘮瀵�
+                    if(poLast.closeDt != null && poLast.closeDt.after(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt))){
+                        //褰撳墠涓婃姤鏄ˉ鎶ョ殑寮�闃�鏁版嵁
+                        RmOpenCloseValveHistory poHistory = null ;
+                        if(poLast.lastHistoryId != null){
+                            poHistory = sv.getRmOpenCloseValveHistory(poLast.lastHistoryId) ;
+                        }
+                        this.updateOpenValve(controller, poLast, poHistory, dV1_0_1, dataCd83OpenVo, false) ;
+                        if(poHistory != null){
+                            sv.updateRmOpenCloseValveHistory(poHistory);
+                        }
+                    }else if(poLast.closeDt != null && poLast.closeDt.before(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt))){
+                        //褰撳墠涓婃姤鏄柊鐨勫紑闃�鏁版嵁锛屾妸鏈�鏂版暟鎹腑鐨勫叧闃�鍐呭娓呯┖
+                        this.updateOpenValve(controller, poLast, null, dV1_0_1, dataCd83OpenVo, true) ;
+                        //鐢熸垚骞朵繚瀛樻柊鐨勫紑闃�涓婃姤鍘嗗彶鏁版嵁璁板綍
+                        this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83OpenVo, poLast);
+                    }else {
+                        //褰撳墠涓婃姤鐨勫紑闃�鏁版嵁涓庡師鏉ョ殑鍏抽榾鏁版嵁鍚屼竴鏃堕棿锛岃繖绉嶆儏鍐靛簲璇ヤ笉瀛樺湪锛屼絾涔熷鐞�
+                        RmOpenCloseValveHistory poHistory = null ;
+                        if(poLast.lastHistoryId != null){
+                            poHistory = sv.getRmOpenCloseValveHistory(poLast.lastHistoryId) ;
+                        }
+                        this.updateOpenValve(controller, poLast, poHistory, dV1_0_1, dataCd83OpenVo, false) ;
+                        if(poHistory != null){
+                            sv.updateRmOpenCloseValveHistory(poHistory);
+                        }
+                    }
+                }else{
+                    //if(po.clType == null)
+                    //鍘熻褰曚笉瀛樺湪寮�闃�鏁版嵁涔熶笉瀛樺湪鍏抽榾鏁版嵁锛岃繖绉嶆儏鍐典笉瀛樺湪锛屼絾涓哄畨鍏ㄤ篃杩涜澶勭悊
+                    this.updateOpenValve(controller, poLast, null, dV1_0_1, dataCd83OpenVo, true) ;
+                    //鐢熸垚骞朵繚瀛樻柊鐨勫紑闃�涓婃姤鍘嗗彶鏁版嵁璁板綍
+                    this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83OpenVo, poLast);
+                }
+
+                sv.updateRmOpenCloseValveLast(poLast);
+            }
+
+        }
+    }
+
+    /**
+     * 淇濆瓨鏂扮殑寮�闃�涓婃姤鍘嗗彶鏁版嵁璁板綍锛屽苟鎶奍D璧嬪�肩粰鏈�鏂拌褰曠殑 lastHistoryId
+     * @param sv
+     * @param controller
+     * @param rtuAddr
+     * @param dV1_0_1
+     * @param dataCd83OpenVo
+     * @param poLast
+     * @throws Exception
+     */
+    private void newHistoryDataDeal(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd83OpenVo dataCd83OpenVo, RmOpenCloseValveLast poLast)throws Exception {
+        RmOpenCloseValveHistory poHistory = this.newRmOpenCloseValveHistory(controller, rtuAddr, dV1_0_1, dataCd83OpenVo) ;
+        sv.saveRmOpenCloseValveHistory(poHistory);
+        //鐢辨渶鏂版暟鎹寔鏈夊巻鍙叉暟鎹腑鐨勬渶鏂拌褰旾D锛屼互鏂逛究蹇�熸煡璇�
+        poLast.lastHistoryId = poHistory == null ? null: poHistory.id ;
+    }
+
+    /**
+     * 鐢熸垚鏂扮殑寮�闃�涓婃姤鏈�鏂版暟鎹褰�
+     * @param controller
+     * @param rtuAddr
+     * @param dV1_0_1
+     * @param dataCd83OpenVo
+     * @return
+     * @throws Exception
+     */
+    private RmOpenCloseValveLast newRmOpenCloseValveLast(PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd83OpenVo dataCd83OpenVo)throws Exception {
+        RmOpenCloseValveLast po = new RmOpenCloseValveLast(null, null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(),
+                rtuAddr,
+                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
+                dataCd83OpenVo.type,
+                dataCd83OpenVo.totalAmount,
+                dataCd83OpenVo.icCardNo,
+                dataCd83OpenVo.icCardAddr,
+                dataCd83OpenVo.remainMoney,
+                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt),
+                null, null, null, null, null, null, null, null, null, null, null) ;
+        return po ;
+    }
+
+
+    /**
+     * 鐢熸垚鏂扮殑寮�闃�涓婃姤鍘嗗彶鏁版嵁璁板綍
+     * @param controller
+     * @param rtuAddr
+     * @param dV1_0_1
+     * @param dataCd83OpenVo
+     * @return
+     * @throws Exception
+     */
+    private RmOpenCloseValveHistory newRmOpenCloseValveHistory(PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd83OpenVo dataCd83OpenVo)throws Exception {
+        RmOpenCloseValveHistory po = new RmOpenCloseValveHistory(null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(),
+                rtuAddr,
+                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
+                dataCd83OpenVo.type,
+                dataCd83OpenVo.totalAmount,
+                dataCd83OpenVo.icCardNo,
+                dataCd83OpenVo.icCardAddr,
+                dataCd83OpenVo.remainMoney,
+                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt),
+                null, null, null, null, null, null, null, null, null, null, null) ;
+        return po ;
+    }
+
+
+    /**
+     * 鏇存柊鏁版嵁
+     * @param controller
+     * @param poLast
+     * @param poHistory
+     * @param dV1_0_1
+     * @param dataCd83OpenVo
+     * @param clearCloseValve
+     * @throws Exception
+     */
+    private void updateOpenValve(PrController controller, RmOpenCloseValveLast poLast, RmOpenCloseValveHistory poHistory, DataV1_0_1 dV1_0_1, DataCd83OpenVo dataCd83OpenVo, boolean clearCloseValve) throws Exception {
+        poLast.controllerId = controller==null?null:controller.getId();
+        poLast.intakeId = controller==null?null:controller.getIntakeId();
+
+        poLast.opDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt);
+        poLast.opType = dataCd83OpenVo.type ;
+        poLast.opTotalAmount = dataCd83OpenVo.totalAmount ;
+        poLast.opIcCardNo = dataCd83OpenVo.icCardNo ;
+        poLast.opIcCardAddr = dataCd83OpenVo.icCardAddr ;
+        poLast.opRemainMoney = dataCd83OpenVo.remainMoney ;
+        poLast.openDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt) ;
+
+        if(poHistory != null){
+            poHistory.controllerId = controller==null?null:controller.getId();
+            poHistory.intakeId = controller==null?null:controller.getIntakeId();
+
+            poHistory.opDt = poLast.opDt;
+            poHistory.opType = dataCd83OpenVo.type ;
+            poHistory.opTotalAmount = dataCd83OpenVo.totalAmount ;
+            poHistory.opIcCardNo = dataCd83OpenVo.icCardNo ;
+            poHistory.opIcCardAddr = dataCd83OpenVo.icCardAddr ;
+            poHistory.opRemainMoney = dataCd83OpenVo.remainMoney ;
+            poHistory.openDt = poLast.openDt ;
+        }
+
+        if(clearCloseValve){
+            poLast.clDt = null ;
+            poLast.clType = null ;
+            poLast.clTotalAmount = null ;
+            poLast.clIcCardNo = null ;
+            poLast.clIcCardAddr = null ;
+            poLast.clRemainMoney = null ;
+            poLast.clThisAmount = null ;
+            poLast.clThisMoney = null ;
+            poLast.clThisTime = null ;
+            poLast.clOpenDt = null ;
+            poLast.closeDt = null ;
+
+            if(poHistory != null) {
+                poHistory.clDt = null;
+                poHistory.clType = null;
+                poHistory.clTotalAmount = null;
+                poHistory.clIcCardNo = null;
+                poHistory.clIcCardAddr = null;
+                poHistory.clRemainMoney = null;
+                poHistory.clThisAmount = null;
+                poHistory.clThisMoney = null;
+                poHistory.clThisTime = null;
+                poHistory.clOpenDt = null;
+                poHistory.closeDt = null;
+            }
+
+        }
+
+    }
 }

--
Gitblit v1.8.0