From 4342b12d28b15e61bbed4d4d5e64a6a2bacae952 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期二, 27 二月 2024 12:56:11 +0800
Subject: [PATCH] 1、完善代码; 2、实现开闭上报处理

---
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealOpenValveReport.java |  205 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 201 insertions(+), 4 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..c6fb3ef 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 {
@@ -39,12 +41,207 @@
                 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) ;
+                    this.dealSave(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 dealSave(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(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(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(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(poLast, poHistory, dV1_0_1, dataCd83OpenVo, false) ;
+                        if(poHistory != null){
+                            sv.updateRmOpenCloseValveHistory(poHistory);
+                        }
+                    }
+                }else{
+                    //if(po.clType == null)
+                    //鍘熻褰曚笉瀛樺湪寮�闃�鏁版嵁涔熶笉瀛樺湪鍏抽榾鏁版嵁锛岃繖绉嶆儏鍐典笉瀛樺湪锛屼絾涓哄畨鍏ㄤ篃杩涜澶勭悊
+                    this.updateOpenValve(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 poLast
+     * @param poHistory
+     * @param dV1_0_1
+     * @param dataCd83OpenVo
+     * @param clearCloseValve
+     * @throws Exception
+     */
+    private void updateOpenValve(RmOpenCloseValveLast poLast, RmOpenCloseValveHistory poHistory, DataV1_0_1 dV1_0_1, DataCd83OpenVo dataCd83OpenVo, boolean clearCloseValve) throws Exception {
+        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.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