liurunyu
2024-07-05 6be968854d7a134cf31b8af7b8ffb219da5cee55
p206V1.0.0协议与硬件联调,并修改完善代码。
5个文件已修改
146 ■■■■■ 已修改文件
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdC0Vo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmOpenCloseValveLast.java 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealCloseValveReport.java 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealOpenValveReport.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java
@@ -85,7 +85,7 @@
            (code.equals(cd_99) ? "定时关阀开阀" :
            (code.equals(cd_A0) ? "定量关阀开阀" :
            (code.equals(cd_B0) ? "查询实时数据" :
            (code.equals(cd_C0) ? "自报实时数据" :
            (code.equals(cd_C0) ? "自报(整点)实时数据" :
            ""))))))))))))))))))))))))))))))))))))))))) ;
        return name ;
    }
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdC0Vo.java
@@ -19,7 +19,7 @@
    public DataStateVo stateVo ;//状态
    public String toString(){
        StringBuilder sb = new StringBuilder() ;
        sb.append("   终端自报实时数据:\n");
        sb.append("   终端自报(整点)实时数据:\n");
        sb.append("      瞬时流量:");
        sb.append(instantAmount==null?"":instantAmount);
        sb.append("\n");
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmOpenCloseValveLast.java
@@ -216,7 +216,7 @@
    /**
     * 本次使用电量
     */
    public Double thisEle;
    public Double clThisEle;
    public void valueFrom(DataV1_0_1 dV1_0_1, DataCd83OpenVo dataCd83OpenVo) throws Exception {
        this.opDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt);
@@ -248,7 +248,7 @@
        this.clOrderNo = null;//江海协议特有
        this.clEleTotalAmount = null;//江海协议特有
        this.clWaterRemainUser = null;//江海协议特有
        this.thisEle = null;//江海协议特有
        this.clThisEle = null;//江海协议特有
    }
    public void valueFrom84(DataV202404 dataV202404, DataCd84Vo cdData) throws Exception {
@@ -277,7 +277,7 @@
        this.clOrderNo = null;//江海协议特有
        this.clEleTotalAmount = null;//江海协议特有
        this.clWaterRemainUser = null;//江海协议特有
        this.thisEle = null;//江海协议特有
        this.clThisEle = null;//江海协议特有
    }
    public void valueFrom85(DataV202404 dataV202404, DataCd85Vo cdData) throws Exception {
@@ -294,7 +294,7 @@
        this.clOrderNo = cdData.orderNo;
        this.clEleTotalAmount = cdData.eleTotalAmount;
        this.clWaterRemainUser = cdData.waterRemain;
        this.thisEle = cdData.thisEle;
        this.clThisEle = cdData.thisEle;
    }
    public void updateFrom(DataV1_0_1 dV1_0_1, DataCd83OpenVo dataCd83OpenVo, boolean clearCloseValve) throws Exception {
@@ -307,22 +307,7 @@
        this.openDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt);
        if (clearCloseValve) {
            this.clDt = null;
            this.clType = null;
            this.clTotalAmount = null;
            this.clIcCardNo = null;
            this.clIcCardAddr = null;
            this.clRemainMoney = null;
            this.clThisAmount = null;
            this.clThisMoney = null;
            this.clThisTime = null;
            this.clOpenDt = null;
            this.closeDt = null;
            this.clOrderNo = null;//江海协议特有
            this.clEleTotalAmount = null;//江海协议特有
            this.clWaterRemainUser = null;//江海协议特有
            this.thisEle = null;//江海协议特有
            this.clearCloseValue();
        }
    }
@@ -340,6 +325,29 @@
        this.closeDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83CloseVo.closeDt) ;
        if(clearOpenValve){
            this.clearOpenValue();
        }
    }
    public void clearCloseValue(){
        this.clDt = null;
        this.clType = null;
        this.clTotalAmount = null;
        this.clIcCardNo = null;
        this.clIcCardAddr = null;
        this.clRemainMoney = null;
        this.clThisAmount = null;
        this.clThisMoney = null;
        this.clThisTime = null;
        this.clOpenDt = null;
        this.closeDt = null;
        this.clOrderNo = null;//江海协议特有
        this.clEleTotalAmount = null;//江海协议特有
        this.clWaterRemainUser = null;//江海协议特有
        this.clThisEle = null;//江海协议特有
    }
    public void clearOpenValue(){
            this.opDt = null ;
            this.opType = null ;
            this.opTotalAmount = null ;
@@ -347,11 +355,5 @@
            this.opIcCardAddr = null ;
            this.opRemainMoney = null ;
            this.openDt = null ;
            this.clOrderNo = null;//江海协议特有
            this.clEleTotalAmount = null;//江海协议特有
            this.clWaterRemainUser = null;//江海协议特有
            this.thisEle = null;//江海协议特有
        }
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealCloseValveReport.java
@@ -63,32 +63,46 @@
            //数据库中不存在该控制器的开关阀数据
            //首先生成最新数据及历史数据,并先保存
            poLast = this.newRmOpenCloseValveLast(controller, rtuAddr, dV1_0_1, dataCd83CloseVo);
            this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast);
            this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast, null);
            //保存最新数据
            sv.saveRmOpenCloseValveLast(poLast);
        }else{
            if(poLast.clType == null){
                //原记录不存在关阀数据,所以当前关阀上报是新的一次关阀
                if(poLast.opType == null){
                    //原记录中不存在开阀数据,没办法进行匹配
                if(poLast.opType == null || poLast.openDt == null){
                    //原记录中不存在开阀数据(即开阀与关阀数据都没有,这种情况一般不存在),没办法进行匹配
                    //生成并保存新的关阀上报历史数据记录
                    this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast);
                    this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast, null);
                }else{
                    //原记录中存在开阀数据,进行历史数据匹配
                    RmOpenCloseValveHistory poHistory = null ;
                    if(poLast.lastHistoryId != null){
                        poHistory = sv.getRmOpenCloseValveHistory(poLast.lastHistoryId) ;
                        if(poHistory != null){
                            //当前关阀上报是新的一次关阀,保留原记录中的开阀数据
                            if(poHistory.openDt != null){
                                //上面已经判断了poLast.openDt == null,所以此处一般会是poHistory.openDt != null
                                if(poHistory.openDt.equals(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83CloseVo.openDt))){
                                    //匹配成功
                                    //当前关阀是原记录中开阀的对应关阀
                            this.updateCloseValve(controller, poLast, poHistory, dV1_0_1, dataCd83CloseVo, false) ;
                            sv.updateRmOpenCloseValveHistory(poHistory);
                        }else{
                            //没有历史数据,生成并保存新的关阀上报历史数据记录
                            this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast);
                                    //匹配失败
                                    //当前关阀不是原记录中开阀的对应关阀,生成并保存新的关阀上报历史数据记录
                                    this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast, true);
                                }
                            }else{
                                //这种情况不存在,认为匹配失败
                                //当前关阀不是原记录中开阀的对应关阀,生成并保存新的关阀上报历史数据记录
                                this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast, true);
                        }
                    }else{
                        //没有历史数据,生成并保存新的关阀上报历史数据记录
                        this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast);
                            this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast, true);
                        }
                    }else{
                        //没有历史数据,生成并保存新的关阀上报历史数据记录
                        this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast, true);
                    }
                }
            }else if(poLast.opType != null){
@@ -99,15 +113,15 @@
                    //重复上报了,不进行处理
                }else {
                    //当前上报的关阀数据晚于原来的关阀数据,是新的上报关阀数据
                    this.updateCloseValve(controller, poLast, null, dV1_0_1, dataCd83CloseVo, false) ;
                    this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast);
                    this.updateCloseValve(controller, poLast, null, dV1_0_1, dataCd83CloseVo, true) ;
                    this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast, null);
                }
            }else{
                //if(po.opType == null)
                //原记录不存在开阀数据也不存在关阀数据,这种情况不存在,但为安全也进行处理
                this.updateCloseValve(controller, poLast, null, dV1_0_1, dataCd83CloseVo, false) ;
                //生成并保存新的关阀上报历史数据记录
                this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast);
                this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast, null);
            }
            sv.updateRmOpenCloseValveLast(poLast);
@@ -124,11 +138,20 @@
     * @param poLast
     * @throws Exception
     */
    private void newHistoryDataDeal(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd83CloseVo dataCd83CloseVo, RmOpenCloseValveLast poLast)throws Exception {
    private void newHistoryDataDeal(DbSv sv,
                                    PrController controller,
                                    String rtuAddr,
                                    DataV1_0_1 dV1_0_1,
                                    DataCd83CloseVo dataCd83CloseVo,
                                    RmOpenCloseValveLast poLast,
                                    Boolean clearOpenValue)throws Exception {
        RmOpenCloseValveHistory poHistory = this.newRmOpenCloseValveHistory(controller, rtuAddr, dV1_0_1, dataCd83CloseVo) ;
        sv.saveRmOpenCloseValveHistory(poHistory);
        //由最新数据持有历史数据中的最新记录ID,以方便快速查询
        poLast.lastHistoryId = poHistory == null ? null: poHistory.id ;
        if(clearOpenValue != null && clearOpenValue.booleanValue()){
            poLast.clearOpenValue();
        }
    }
    /**
@@ -140,7 +163,10 @@
     * @return
     * @throws Exception
     */
    private RmOpenCloseValveLast newRmOpenCloseValveLast(PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd83CloseVo dataCd83CloseVo)throws Exception {
    private RmOpenCloseValveLast newRmOpenCloseValveLast(PrController controller,
                                                         String rtuAddr,
                                                         DataV1_0_1 dV1_0_1,
                                                         DataCd83CloseVo dataCd83CloseVo)throws Exception {
        RmOpenCloseValveLast po = new RmOpenCloseValveLast() ;
        po.controllerId = controller==null?null:controller.getId() ;
        po.intakeId = controller==null?null:controller.getIntakeId() ;
@@ -159,7 +185,10 @@
     * @return
     * @throws Exception
     */
    private RmOpenCloseValveHistory newRmOpenCloseValveHistory(PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd83CloseVo dataCd83CloseVo)throws Exception {
    private RmOpenCloseValveHistory newRmOpenCloseValveHistory(PrController controller,
                                                               String rtuAddr,
                                                               DataV1_0_1 dV1_0_1,
                                                               DataCd83CloseVo dataCd83CloseVo)throws Exception {
        RmOpenCloseValveHistory po = new RmOpenCloseValveHistory() ;
        po.controllerId = controller==null?null:controller.getId() ;
        po.intakeId = controller==null?null:controller.getIntakeId() ;
@@ -179,7 +208,12 @@
     * @param clearOpenValve
     * @throws Exception
     */
    private void updateCloseValve(PrController controller, RmOpenCloseValveLast poLast, RmOpenCloseValveHistory poHistory, DataV1_0_1 dV1_0_1, DataCd83CloseVo dataCd83CloseVo, boolean clearOpenValve) throws Exception {
    private void updateCloseValve(PrController controller,
                                  RmOpenCloseValveLast poLast,
                                  RmOpenCloseValveHistory poHistory,
                                  DataV1_0_1 dV1_0_1,
                                  DataCd83CloseVo dataCd83CloseVo,
                                  boolean clearOpenValve) throws Exception {
        poLast.controllerId = controller==null?null:controller.getId();
        poLast.intakeId = controller==null?null:controller.getIntakeId();
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealOpenValveReport.java
@@ -65,10 +65,6 @@
            sv.saveRmOpenCloseValveLast(poLast);
        }else{
            //数据库中存在该控制器的开关阀数据
            if(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt).equals(poLast.openDt)){
                //时间一致,重复上报数据,不进行任何处理
                //log.error("测试开阀日期一致");
            }else{
                if(poLast.opType != null){
                    //原记录存在开阀数据,首先进行时间对比
                    if(poLast.openDt != null && poLast.openDt.after(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt))){
@@ -83,18 +79,10 @@
                    }
                }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))){
                        //当前上报是新的开阀数据,把最新数据中的关阀内容清空
                if(poLast.clOpenDt != null && poLast.clOpenDt.after(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt))){
                    //补报的许久之前的开阀报数据,不进行处理
                }else if(poLast.clOpenDt != null && poLast.clOpenDt.before(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt))){
                    //当前上报是新的开阀数据,把最新(last)数据中的关阀内容清空
                        this.updateOpenValve(controller, poLast, null, dV1_0_1, dataCd83OpenVo, true) ;
                        //生成并保存新的开阀上报历史数据记录
                        this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83OpenVo, poLast);
@@ -110,7 +98,7 @@
                        }
                    }
                }else{
                    //if(po.clType == null)
                //if(poLast.opType == null && po.clType == null)
                    //原记录不存在开阀数据也不存在关阀数据,这种情况不存在,但为安全也进行处理
                    this.updateOpenValve(controller, poLast, null, dV1_0_1, dataCd83OpenVo, true) ;
                    //生成并保存新的开阀上报历史数据记录
@@ -118,8 +106,6 @@
                }
                sv.updateRmOpenCloseValveLast(poLast);
            }
        }
    }