1、完善王江海制定的协议实现;
2、基于王江海制定的协议上行数据处任务树基础部分实现;
1 文件已重命名
3个文件已删除
9个文件已修改
6个文件已添加
461 ■■■■ 已修改文件
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/DataAlarmVo.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/DataStateVo.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_85_Down.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_85_Up.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Up.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlParse.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd80_5BVo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd85Vo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd93_A3_85Vo.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/TkReceive.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkFindP206V1_0_0.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkPreGenObjs.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealAlarmStatus.java 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealControllerNoTramp.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealControllerTramp.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkFindP206V202404.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkFindReport.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkPreGenObjs.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/RtuDataDealTree.xml 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/DataAlarmVo.java
File was deleted
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/DataStateVo.java
File was deleted
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_85_Down.java
@@ -4,8 +4,7 @@
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd84Vo;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd85Vo;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd93_A3_85Vo;
import com.dy.common.util.ByteUtil;
@AnnotationCodeDown(ifAny={
@@ -48,7 +47,7 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            DataCd85Vo cdData = (DataCd85Vo)para.param ;
            DataCd93_A3_85Vo cdData = (DataCd93_A3_85Vo)para.param ;
            byte[] bs = new byte[2] ;
            bs[0] = (byte)(Integer.parseInt(cdData.controllerType, 16));
            bs[1] = cdData.projectNo.byteValue() ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_85_Up.java
@@ -4,7 +4,7 @@
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.*;
import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd85Vo;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd93_A3_85Vo;
import com.dy.common.util.ByteUtil;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -84,7 +84,7 @@
     */
    protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
        DataV202404 dV1 = (DataV202404)data.getSubData() ;
        DataCd85Vo cdData = new DataCd85Vo() ;
        DataCd93_A3_85Vo cdData = new DataCd93_A3_85Vo(CodeV202404.getCodeName(dataCode)) ;
        dV1.subData = cdData ;
        GlParse.parseCd93A3And85(bs, cdData) ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Up.java
@@ -4,7 +4,7 @@
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.*;
import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd93_A3Vo;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd93_A3_85Vo;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -55,7 +55,7 @@
     */
    protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
        DataV202404 dV1 = (DataV202404)data.getSubData() ;
        DataCd93_A3Vo cdData = new DataCd93_A3Vo() ;
        DataCd93_A3_85Vo cdData = new DataCd93_A3_85Vo(CodeV202404.getCodeName(dataCode)) ;
        dV1.subData = cdData ;
        GlParse.parseCd93A3And85(bs, cdData) ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlParse.java
@@ -3,7 +3,7 @@
import com.dy.common.mw.protocol.p206V202404.ProtocolConstantV206V202404;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd80_5BVo;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd81Vo;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd93_A3Vo;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd93_A3_85Vo;
import com.dy.common.util.ByteUtil;
import com.dy.common.util.ByteUtilUnsigned;
import org.apache.logging.log4j.LogManager;
@@ -112,7 +112,7 @@
     * @param index
     * @return
     */
    public static void parseAlarmAndState(byte[] bs, int index, DataCd93_A3Vo vo){
    public static void parseAlarmAndState(byte[] bs, int index, DataCd93_A3_85Vo vo){
        byte b = bs[index] ;
        vo.statePump = (byte)(b & 0x1) ;
        vo.alarmWaterRemain = (byte)(b & 0x2) ;
@@ -285,7 +285,7 @@
     * @param cdData
     * @throws Exception
     */
    public static void parseCd93A3And85(byte[] bs, DataCd93_A3Vo cdData) throws Exception {
    public static void parseCd93A3And85(byte[] bs, DataCd93_A3_85Vo cdData) throws Exception {
        int index = ProtocolConstantV206V202404.dataIndex ;
        cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd80_5BVo.java
@@ -2,7 +2,7 @@
import lombok.Data;
//设备终端工作上报 + 设备终端工作上报
//设备终端工作上报 + 查询设备终端实时值
@Data
public class DataCd80_5BVo {
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd85Vo.java
File was deleted
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd93_A3_85Vo.java
File was renamed from pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd93_A3Vo.java
@@ -2,9 +2,9 @@
import lombok.Data;
//平台/APP远程关闭水泵/阀门
//平台/APP远程关闭水泵/阀门   +  刷卡关泵/阀上报
@Data
public class DataCd93_A3Vo {
public class DataCd93_A3_85Vo {
    public String controllerType;//控制器类型 01(0x01):测控一体阀;57(0x57):井电控制器
    public Integer projectNo ;//控制器类型 0x01:测控一体阀;0x57:井电控制器
@@ -41,6 +41,14 @@
    public Byte alarmEleLowVolt ; //三相电欠压报警    (1:欠压报警        0:正常)
    public Byte stateIcEnable ; //IC卡使能    (1、IC有刷卡支持    0:不支持)
    public String comName ;//命令名称
    public DataCd93_A3_85Vo(String comName){
        this.comName = comName ;
    }
    public String toString(){
        StringBuffer sb = new StringBuffer() ;
        sb.append("      平台/APP远程关闭水泵/阀门 : \n") ;
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/TkReceive.java
@@ -21,7 +21,7 @@
            log.error("严重错误,RTU上行数据为空!" );
        }else{
            if(data instanceof Data){
                //this.toNextTasks(data);
                this.toNextTasks(data);
            }else{
                log.error("严重错误,该数据类型(" + data.getClass().getName() + "),接收数据任务还未实现!" );
            }
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkFindP206V1_0_0.java
@@ -18,7 +18,7 @@
    public void execute(Object data) {
        Data d = (Data)data ;
        if(d.getProtocol() != null && d.getProtocol().equals(ProtocolConstantV206V1_0_0.protocolName)){
            this.toNextTasks(data);
            //this.toNextTasks(data);
        }else{
            //不是本协议的数据
        }
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkPreGenObjs.java
@@ -32,13 +32,11 @@
            PrController controller = sv.getControllersByRtuAddrAndIntakeNotNull(rtuAddr) ;
            PrControllerTramp controllerTramp = null ;
            if(controller == null){
                //数据库中未查询(已经绑定且控制器地址相符)到控制器(RTU实体)
                //数据库中未查询到控制器(RTU实体)(已经绑定且控制器地址相符)
                //流浪者控制器
                controllerTramp = sv.getPrControllerTrampByRtuAddr(rtuAddr);
                if(controllerTramp == null){
                    controllerTramp = new PrControllerTramp(null, rtuAddr, d.getProtocol(), new Date()) ;
                    //this.taskResult = new Object[]{sv, null, rtuTramp} ;
                    //this.toNextOneTask(data, TkDealControllerTramp.taskId);
                }
            }
            //不论是否为流浪控制器(RTU实体),都要进行下步工作,记录其上报的一些数据,当绑定控制器后,数据自动有了归属
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealAlarmStatus.java
New file
@@ -0,0 +1,161 @@
package com.dy.rtuMw.server.rtuData.p206V202404;
import com.dy.common.mw.protocol.Data;
import com.dy.common.mw.protocol.p206V202404.DataV202404 ;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd80_5BVo;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd81Vo;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd93_A3_85Vo;
import com.dy.common.util.DateTime;
import com.dy.pipIrrGlobal.pojoPr.PrController;
import com.dy.pipIrrGlobal.pojoRm.RmAlarmStateHistory;
import com.dy.pipIrrGlobal.pojoRm.RmAlarmStateLast;
import com.dy.rtuMw.server.rtuData.TaskSurpport;
import com.dy.rtuMw.server.rtuData.dbSv.DbSv;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
 * @Author liurunyu
 * @Date 2024/5/8 14:18
 */
public class TkDealAlarmStatus extends TaskSurpport {
    private static final Logger log = LogManager.getLogger(TkDealAlarmStatus.class.getName()) ;
    //类ID,一定与Tree.xml配置文件中配置一致
    public static final String taskId = "TkDealAlarmStatus" ;
    /**
     * 执行节点任务:报警及状态
     * @param data 需要处理的数据
     */
    @Override
    public void execute(Object data) {
        Data d = (Data)data ;
        Object protocolData = d.getSubData() ;
        if(protocolData != null){
            DataV202404 dV202404 = (DataV202404)protocolData ;
            if(dV202404 != null){
                Object cdObj = dV202404.subData ;
                if(cdObj != null){
                    try{
                        Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ;
                        DbSv sv = (DbSv)objs[0] ;
                        PrController controller = (PrController)objs[1] ;
                        if(cdObj instanceof DataCd80_5BVo){
                            //设备终端工作上报 + 查询设备终端实时值
                            DataCd80_5BVo cdData = (DataCd80_5BVo)(cdObj) ;
                            this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, null, null) ;
                            this.saveHistory(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, null, null) ;
                        }else if(cdObj instanceof DataCd93_A3_85Vo){
                            //平台/APP远程关闭水泵/阀门   +  刷卡关泵/阀上报
                            DataCd93_A3_85Vo cdData = (DataCd93_A3_85Vo)(cdObj) ;
                            this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.endDt, null, cdData, null) ;
                            this.saveHistory(sv, controller, d.getRtuAddr(), cdData.endDt, null, cdData, null) ;
                        }else if(cdObj instanceof DataCd81Vo){
                            //设备终端随机自报
                            DataCd81Vo cdData = (DataCd81Vo)(cdObj) ;
                            this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), null, null, null, cdData) ;
                            this.saveHistory(sv, controller, d.getRtuAddr(), null, null, null, cdData) ;
                        }
                    }catch (Exception e){
                        log.error("保存控制器报警和状态数据时发生异常", e);
                    }
                }
            }
        }
    }
    /**
     * 保存报警状态最新数据
     * @param sv 服务
     * @param controller 控制器对象
     * @param rtuAddr 控制器地址
     * @param rtuDt 控制器时钟
     * @param vo80_5B
     * @param vo93_A3_85
     * @param vo81
     */
    private void saveOrUpdateLast(DbSv sv,
                                  PrController controller,
                                  String rtuAddr,
                                  String rtuDt,
                                  DataCd80_5BVo vo80_5B,
                                  DataCd93_A3_85Vo vo93_A3_85,
                                  DataCd81Vo vo81) throws Exception {
//        RmAlarmStateLast po = sv.getRmAlarmStateLast(rtuAddr) ;
//        if(po == null){
//            po = new RmAlarmStateLast(null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(),
//                    rtuAddr,
//                    DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
//                    DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(rtuDt),
//                    alarmVo==null?null:alarmVo.batteryVolt, alarmVo==null?null:alarmVo.loss, alarmVo==null?null:alarmVo.meter, alarmVo==null?null:alarmVo.valve,
//                    stateVo==null?null:stateVo.icCard, stateVo==null?null:stateVo.working, stateVo==null?null:stateVo.valve) ;
//            sv.saveRmAlarmStateLast(po) ;
//        }else{
//            po = this.update(controller, po, rtuDt, dV1_0_1, alarmVo, stateVo) ;
//            sv.updateRmAlarmStateLast(po);
//        }
    }
    /**
     * 保存报警状态历史记录
     * @param sv 服务
     * @param controller 控制器对象
     * @param rtuAddr 控制器地址
     * @param rtuDt 控制器时钟
     * @param vo80_5B
     * @param vo93_A3_85
     * @param vo81
     */
    private void saveHistory(DbSv sv,
                             PrController controller,
                             String rtuAddr,
                             String rtuDt,
                             DataCd80_5BVo vo80_5B,
                             DataCd93_A3_85Vo vo93_A3_85,
                             DataCd81Vo vo81) throws Exception {
//        RmAlarmStateHistory po = new RmAlarmStateHistory(null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(),
//                rtuAddr,
//                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
//                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(rtuDt),
//                alarmVo==null?null:alarmVo.batteryVolt, alarmVo==null?null:alarmVo.loss, alarmVo==null?null:alarmVo.meter, alarmVo==null?null:alarmVo.valve,
//                stateVo==null?null:stateVo.icCard, stateVo==null?null:stateVo.working, stateVo==null?null:stateVo.valve) ;
//        sv.saveRmAlarmStateHistory(po) ;
    }
    private RmAlarmStateLast update(PrController controller,
                                    RmAlarmStateLast po,
                                    String rtuDt,
                                    DataCd80_5BVo vo80_5B,
                                    DataCd93_A3_85Vo vo93_A3_85,
                                    DataCd81Vo vo81) throws Exception {
//        po.controllerid = controller==null?null:controller.getId() ;
//        po.intakeid = controller==null?null:controller.getIntakeId() ;
//
//        po.dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt) ;
//        po.rtudt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(rtuDt) ;
//        if(alarmVo != null){
//            po.bateryvolt = alarmVo.batteryVolt ;
//            po.loss = alarmVo.loss ;
//            po.meter = alarmVo.meter ;
//            po.valve = alarmVo.valve ;
//        }else{
//            po.bateryvolt = null ;
//            po.loss = null ;
//            po.meter = null ;
//            po.valve = null ;
//        }
//        if(stateVo != null){
//           po.iccard = stateVo.icCard ;
//           po.working = stateVo.working ;
//           po.valvestate = stateVo.valve ;
//        }else{
//            po.iccard = null ;
//            po.working = null ;
//            po.valvestate = null ;
//        }
//        return po ;
        return null ;
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealControllerNoTramp.java
New file
@@ -0,0 +1,28 @@
package com.dy.rtuMw.server.rtuData.p206V202404;
import com.dy.rtuMw.server.rtuData.TaskSurpport;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
 * @Author liurunyu
 * @Date 2024/5/8 14:18
 * 处理非流浪控制器,此任务无具体业务逻辑,只是在任务xml配置文件中,框住其子任务节点
 */
public class TkDealControllerNoTramp extends TaskSurpport {
    private static final Logger log = LogManager.getLogger(TkDealControllerNoTramp.class.getName()) ;
    //类ID,一定与Tree.xml配置文件中配置一致
    public static final String taskId = "TkDealControllerNoTramp" ;
    /**
     * 执行节点任务
     * @param data 需要处理的数据
     */
    @Override
    public void execute(Object data) {
        //此任务无具体业务逻辑,只是在任务xml配置文件中,框住其子任务节点
        this.toNextTasks(data);
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealControllerTramp.java
New file
@@ -0,0 +1,33 @@
package com.dy.rtuMw.server.rtuData.p206V202404;
import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp;
import com.dy.rtuMw.server.rtuData.TaskSurpport;
import com.dy.rtuMw.server.rtuData.dbSv.DbSv;
import com.dy.rtuMw.server.rtuData.p206V1_0_0.TkPreGenObjs;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
 * @Author liurunyu
 * @Date 2024/5/8 14:18
 */
public class TkDealControllerTramp extends TaskSurpport {
    private static final Logger log = LogManager.getLogger(TkDealControllerTramp.class.getName()) ;
    //类ID,一定与Tree.xml配置文件中配置一致
    public static final String taskId = "TkDealControllerTramp" ;
    /**
     * 执行节点任务
     * @param data 需要处理的数据
     */
    @Override
    public void execute(Object data) {
        Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ;
        PrControllerTramp tramp = (PrControllerTramp)objs[2] ;
        if(tramp != null){
            DbSv sv = (DbSv)objs[0] ;
            sv.savePrConctrollerTramp(tramp);
        }
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkFindP206V202404.java
New file
@@ -0,0 +1,29 @@
package com.dy.rtuMw.server.rtuData.p206V202404;
import com.dy.common.mw.protocol.Data;
import com.dy.common.mw.protocol.p206V202404.ProtocolConstantV206V202404 ;
import com.dy.rtuMw.server.rtuData.TaskSurpport;
/**
 * @Author liurunyu
 * @Date 2024/5/8 14:18
 */
public class TkFindP206V202404 extends TaskSurpport {
    //类ID,一定与Tree.xml配置文件中配置一致
    public static final String taskId = "TkFindP206V202404" ;
    /**
     * 执行节点任务
     * @param data 需要处理的数据
     */
    @Override
    public void execute(Object data) {
        Data d = (Data)data ;
        if(d.getProtocol() != null && d.getProtocol().equals(ProtocolConstantV206V202404.protocolName)){
            this.toNextTasks(data);
        }else{
            //不是本协议的数据
        }
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkFindReport.java
New file
@@ -0,0 +1,34 @@
package com.dy.rtuMw.server.rtuData.p206V202404;
import com.dy.common.mw.protocol.Data;
import com.dy.rtuMw.server.rtuData.TaskSurpport;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
 * @Author liurunyu
 * @Date 2024/5/8 14:18
 */
/**
 * 识别非命令应答
 */
public class TkFindReport extends TaskSurpport {
    private static final Logger log = LogManager.getLogger(TkFindReport.class.getName()) ;
    //类ID,一定与Tree.xml配置文件中配置一致
    public static final String taskId = "TkFindReport" ;
    /**
     * 执行节点任务
     * @param data 需要处理的数据
     */
    @Override
    public void execute(Object data) {
        Data d = (Data)data ;
        if(d.getCommandId() == null || d.getCommandId().trim().equals("")){
            //无命令ID
            this.toNextTasks(data);
        }
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkPreGenObjs.java
New file
@@ -0,0 +1,52 @@
package com.dy.rtuMw.server.rtuData.p206V202404;
import com.dy.common.mw.protocol.Data;
import com.dy.common.springUtil.SpringContextUtil;
import com.dy.pipIrrGlobal.pojoPr.PrController;
import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp;
import com.dy.rtuMw.server.rtuData.TaskSurpport;
import com.dy.rtuMw.server.rtuData.dbSv.DbSv;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.text.ParseException;
import java.util.Date;
/**
 * @Author liurunyu
 * @Date 2024/5/8 14:18
 */
public class TkPreGenObjs extends TaskSurpport {
    private static final Logger log = LogManager.getLogger(TkPreGenObjs.class.getName()) ;
    //类ID,一定与Tree.xml配置文件中配置一致
    public static final String taskId = "TkPreGenObjs" ;
    /**
     * 执行节点任务
     * @param data 需要处理的数据
     */
    @Override
    public void execute(Object data) throws ParseException {
        Data d = (Data)data ;
        String rtuAddr = d.getRtuAddr() ;//TkRtuData里判断了rtuAddr为空
        DbSv sv = (DbSv) SpringContextUtil.getBean(DbSv.class) ;
        if(sv != null){
            PrController controller = sv.getControllersByRtuAddrAndIntakeNotNull(rtuAddr) ;
            PrControllerTramp controllerTramp = null ;
            if(controller == null){
                //数据库中未查询到控制器(RTU实体)(已经绑定且控制器地址相符)
                //流浪者控制器
                controllerTramp = sv.getPrControllerTrampByRtuAddr(rtuAddr);
                if(controllerTramp == null){
                    controllerTramp = new PrControllerTramp(null, rtuAddr, d.getProtocol(), new Date()) ;
                }
            }
            //不论是否为流浪控制器(RTU实体),都要进行下步工作,记录其上报的一些数据,当绑定控制器后,数据自动有了归属
            this.taskResult = new Object[]{sv, controller, controllerTramp} ;
            this.toNextTasks(data);
        }else{
            log.error("严重错误,未能得到DbSv对象");
        }
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/RtuDataDealTree.xml
@@ -13,8 +13,8 @@
                    <task id="TkDealControllerTramp" name="处理流浪控制器" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1_0_0.TkDealControllerTramp" />
                    <!-- 非流浪者RTU,必须放在TkDealControllerTramp后面 -->
                    <task id="TkDealControllerNoTramp" name="非流浪者RTU" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1_0_0.TkDealControllerNoTramp">
                        <!-- 识别主动上报数据 -->
                        <task id="TkFindReport" name="识别控制器上报数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1_0_0.TkFindReport">
                        <!-- 识别非命令应答上行数据 -->
                        <task id="TkFindReport" name="识别非命令应答上行数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1_0_0.TkFindReport">
                            <task id="TkDealAlarmStatus" name="控制器报警与状态数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1_0_0.TkDealAlarmStatus" />
                            <task id="TkDealAutoReport" name="控制器自报数据(整点报)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1_0_0.TkDealAutoReport" />
                            <task id="TkDealWorkReport" name="控制器阀开工作上报" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1_0_0.TkDealWorkReport" />
@@ -30,6 +30,29 @@
                    </task>
                </task>
            </task>
            <task id="TkFindP206V202404" name="识别P206V202404数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkFindP206V202404">
                <task id="TkPreGenObjs" name="预先准备各对象并识别流浪控制器" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkPreGenObjs">
                    <!-- 处理流浪控制器 -->
                    <task id="TkDealControllerTramp" name="处理流浪控制器" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealControllerTramp" />
                    <!-- 非流浪者RTU,必须放在TkDealControllerTramp后面 -->
                    <task id="TkDealControllerNoTramp" name="非流浪者RTU" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealControllerNoTramp">
                        <!-- 识别非命令应答上行数据 -->
                        <task id="TkFindReport" name="识别非命令应答上行数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkFindReport">
                            <task id="TkDealAlarmStatus" name="控制器报警与状态数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealAlarmStatus" />
                            <task id="TkDealAutoReport" name="控制器自报数据(整点报)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealAutoReport" />
                            <task id="TkDealWorkReport" name="控制器阀开工作上报" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealWorkReport" />
                            <task id="TkDealOpenValveReport" name="控制器开阀上报" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealOpenValveReport" />
                            <task id="TkDealCloseValveReport" name="控制器关阀上报" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealCloseValveReport" />
                            <task id="TkDealLoss" name="控制器漏损统计(待新协议出来后修改实现)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealLoss" />
                        </task>
                        <!-- 识别命令响应数据 -->
                        <task id="TkFindComResponse" name="识别响应命令数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkFindComResponse">
                            <task id="TkRtuDealCommandResponse" name="RTU响应命令数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkRtuDealCommandResponse" >
                            </task>
                        </task>
                    </task>
                </task>
            </task>
        </task>
    </task>
</project>