wuzeyu
2024-05-15 fbd4cf5aeb4274938c12030e5d235c65c20c19c3
Merge remote-tracking branch 'origin/master'
1 文件已复制
9 文件已重命名
67个文件已修改
13个文件已添加
2029 ■■■■ 已修改文件
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/CommonV202404.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCdXyVo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_10_Down.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_15_Down.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_16_Down.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_21_Down.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_22_Down.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_23_Down.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_24_Down.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_25_Down.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_26_Down.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_30_Down.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_31_Down.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_50_Down.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_55_Down.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_55_Up.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_56_Down.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5B_Down.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5C_Down.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5C_Up.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_65_Down.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_65_Up.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_68_Down.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_80_Down.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_81_Down.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_83_Up.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_84_Up.java 21 ●●●●● 补丁 | 查看 | 原始文档 | 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 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_86_Down.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_86_Up.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_87_Down.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_87_Up.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_88_Down.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_8A_Down.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_8A_Up.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_92_A2_Down.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Down.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Up.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_97_Down.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_98_Down.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_99_Down.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9A_Down.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9C_Down.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_C2_Up.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Test.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlCreate.java 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlParse.java 265 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/AlarmVo.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd80_5BVo.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd81Vo.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd84Vo.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd85Vo.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd93_A3Vo.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCdC2Vo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/singleDataSource/DruidDataSourceConfig.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/springUtil/RestTemplateConfiguration.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/PipIrrMwRtuApplication.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealAlarmStatusV202404.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealControllerNoTrampV202404.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealControllerTrampV202404.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkFindComResponseV202404.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkFindReportV202404.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkPreGenObjsV202404.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkRtuDealCommandResponseV202404.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/RtuDataDealTree.xml 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/application-database.yml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/.gitignore 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/.mvn/wrapper/maven-wrapper.jar 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/.mvn/wrapper/maven-wrapper.properties 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/mvnw 308 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/mvnw.cmd 205 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/pom.xml 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/PipIrrMwTestWebApplication.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/Test.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/TestSupport.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/resources/application.yml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/test/java/com/dy/pipIrrMwTestWeb/PipIrrMwTestWebApplicationTests.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/PipIrrBaseApplication.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/PipIrrDemoApplication.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-gis/src/main/java/com/dy/pipIrrGis/PipIrrGisApplication.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/java/com/dy/pipIrrIrrigate/PipIrrIrrigateApplication.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/PipIrrProjectApplication.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/PipIrrRemoteApplication.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/PipIrrSellApplication.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/PipIrrSsoApplication.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/PipIrrStatisticsApplication.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pom.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/CommonV202404.java
@@ -172,9 +172,9 @@
    public byte createCtrl(byte dir, byte funcCode){
        byte b = dir;//DIR = 1(0x80),表示此帧报文是由终端发出的上行报文;
        b = (byte)(b | funcCode) ;
        //DIV = 1(0x40),表示此报文已被拆分为若干帧
        //FCB = 1(0x08),表示只发一次
        b = (byte)(b |0x08) ;
        //DIV = 1(0x20),表示此报文已被拆分为若干帧
        //FCB = 1(0x10),表示只发一次
        b = (byte)(b |0x10) ;
        //DIR = 0 下行,则功能码采用0
        return b ;
    }
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCdXyVo.java
@@ -1,6 +1,6 @@
package com.dy.common.mw.protocol.p206V202404.downVos;
public class ComCdXyVo {
    public String controllerType;//控制器类型 01(0x01):测控一体阀;57(0x57):井电控制器
    public Integer projectNo ;//控制器类型 0x01:测控一体阀;0x57:井电控制器
    public String controllerType;//控制器类型:  01(0x01):测控一体阀;57(0x57):井电控制器
    public Integer projectNo ;//项目编号
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_10_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -46,7 +47,8 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            JSONObject obj = (JSONObject)para.param;
            String json = obj.toJSONString();
            ComCd10Vo cvo = JSON.parseObject(json, ComCd10Vo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCd10Vo为null") ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_15_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -48,7 +49,8 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            JSONObject obj = (JSONObject)para.param;
            String json = obj.toJSONString();
            ComCd15Vo cvo = JSON.parseObject(json, ComCd15Vo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCd15Vo为null") ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_16_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -48,7 +49,8 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            JSONObject obj = (JSONObject)para.param;
            String json = obj.toJSONString();
            ComCd16Vo cvo = JSON.parseObject(json, ComCd16Vo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCd16Vo为null") ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_21_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -48,7 +49,8 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            JSONObject obj = (JSONObject)para.param;
            String json = obj.toJSONString();
            ComCd21Vo cvo = JSON.parseObject(json, ComCd21Vo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCd21Vo为null") ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_22_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -48,7 +49,8 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            JSONObject obj = (JSONObject)para.param;
            String json = obj.toJSONString();
            ComCd22Vo cvo = JSON.parseObject(json, ComCd22Vo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCd22Vo为null") ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_23_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -49,7 +50,8 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            JSONObject obj = (JSONObject)para.param;
            String json = obj.toJSONString();
            ComCd23Vo cvo = JSON.parseObject(json, ComCd23Vo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCd23Vo为null") ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_24_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -50,7 +51,8 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            JSONObject obj = (JSONObject)para.param;
            String json = obj.toJSONString();
            ComCd24Vo cvo = JSON.parseObject(json, ComCd24Vo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCd24Vo为null") ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_25_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -46,18 +47,16 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            ComCdXyVo cvo = JSON.parseObject(json, ComCdXyVo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCdXyVo为null") ;
            }
            JSONObject obj = (JSONObject)para.param;
            String controllerType = (String)obj.get("controllerType");
            Integer projectNo = (Integer)obj.get("projectNo") ;
            byte[] bs = new byte[9] ;
            int index = 0 ;
            bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
            bs[index] = (byte)(Integer.parseInt(controllerType, 16));
            index ++ ;
            bs[index] = cvo.projectNo.byteValue() ;
            bs[index] = projectNo.byteValue() ;
            index ++ ;
            GlCreate.createPw(bs, index);
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_26_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -47,7 +48,8 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            JSONObject obj = (JSONObject)para.param;
            String json = obj.toJSONString();
            ComCd26Vo cvo = JSON.parseObject(json, ComCd26Vo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCd22Vo为null") ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_30_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -46,17 +47,16 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            ComCdXyVo cvo = JSON.parseObject(json, ComCdXyVo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCdXyVo为null") ;
            }
            JSONObject obj = (JSONObject)para.param;
            String controllerType = (String)obj.get("controllerType");
            Integer projectNo = (Integer)obj.get("projectNo") ;
            byte[] bs = new byte[9] ;
            int index = 0 ;
            bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
            bs[index] = (byte)(Integer.parseInt(controllerType, 16));
            index ++ ;
            bs[index] = cvo.projectNo.byteValue() ;
            bs[index] = projectNo.byteValue() ;
            index ++ ;
            GlCreate.createPw(bs, index);
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_31_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -46,7 +47,8 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            JSONObject obj = (JSONObject)para.param;
            String json = obj.toJSONString();
            ComCd31Vo cvo = JSON.parseObject(json, ComCd31Vo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCd30Vo为null") ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_50_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -46,17 +47,16 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            ComCdXyVo cvo = JSON.parseObject(json, ComCdXyVo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCdXyVo为null") ;
            }
            JSONObject obj = (JSONObject)para.param;
            String controllerType = (String)obj.get("controllerType");
            Integer projectNo = (Integer)obj.get("projectNo") ;
            byte[] bs = new byte[2] ;
            int index = 0 ;
            bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
            bs[index] = (byte)(Integer.parseInt(controllerType, 16));
            index ++ ;
            bs[index] = cvo.projectNo.byteValue() ;
            bs[index] = projectNo.byteValue() ;
            bytes = ByteUtil.bytesMerge(bytes, bs) ;
        }else{
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_55_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -47,7 +48,8 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            JSONObject obj = (JSONObject)para.param;
            String json = obj.toJSONString();
            ComCd55Vo cvo = JSON.parseObject(json, ComCd55Vo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCd55Vo为null") ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_55_Up.java
@@ -96,15 +96,15 @@
            cdData.icCardNo  = GlParse.parseIcCardNo(bs, index, 6, 2) ;
            index += 8 ;
            int chargeMoney = ByteUtil.BCD2Int_BE(bs, index, index + 4) ;
            Long chargeMoney = ByteUtil.BCD2Long_LE(bs, index, index + 4) ;
            cdData.chargeMoney = chargeMoney/100.0D;
            index += 5 ;
            int chargeWater = ByteUtil.BCD2Int_BE(bs, index, index + 4) ;
            Long chargeWater = ByteUtil.BCD2Long_LE(bs, index, index + 4) ;
            cdData.chargeWater = chargeWater/100.0D;
            index += 5 ;
            cdData.flowNo = ByteUtil.BCD2String_BE(bs, index, index + 5) ;
            cdData.flowNo = ByteUtil.BCD2String_LE(bs, index, index + 5) ;
            index += 6 ;
            byte flag = bs[index] ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_56_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -46,17 +47,16 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            ComCdXyVo cvo = JSON.parseObject(json, ComCdXyVo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCdXyVo为null") ;
            }
            JSONObject obj = (JSONObject)para.param;
            String controllerType = (String)obj.get("controllerType");
            Integer projectNo = (Integer)obj.get("projectNo") ;
            byte[] bs = new byte[2] ;
            int index = 0 ;
            bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
            bs[index] = (byte)(Integer.parseInt(controllerType, 16));
            index ++ ;
            bs[index] = cvo.projectNo.byteValue() ;
            bs[index] = projectNo.byteValue() ;
            bytes = ByteUtil.bytesMerge(bytes, bs) ;
        }else{
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5B_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -46,17 +47,16 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            ComCdXyVo cvo = JSON.parseObject(json, ComCdXyVo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCdXyVo为null") ;
            }
            JSONObject obj = (JSONObject)para.param;
            String controllerType = (String)obj.get("controllerType");
            Integer projectNo = (Integer)obj.get("projectNo") ;
            byte[] bs = new byte[2] ;
            int index = 0 ;
            bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
            bs[index] = (byte)(Integer.parseInt(controllerType, 16));
            index ++ ;
            bs[index] = cvo.projectNo.byteValue() ;
            bs[index] = projectNo.byteValue() ;
            bytes = ByteUtil.bytesMerge(bytes, bs) ;
        }else{
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5C_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -46,7 +47,8 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            JSONObject obj = (JSONObject)para.param;
            String json = obj.toJSONString();
            ComCd55Vo cvo = JSON.parseObject(json, ComCd55Vo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCd55Vo为null") ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5C_Up.java
@@ -99,15 +99,15 @@
            String yy = ByteUtil.BCD2String_BE(bs, index, index) ;
            cdData.dt = "20" + yy + "-" + MM + "-" + dd + " " + HH  ;
            int meterAmountDay = ByteUtil.BCD2Int_BE(bs, index, index + 3) ;
            Long meterAmountDay = ByteUtil.BCD2Long_LE(bs, index, index + 3) ;
            cdData.meterAmountDay = meterAmountDay/100.0D;
            index += 4 ;
            int farmerAmountDay = ByteUtil.BCD2Int_BE(bs, index, index + 3) ;
            Long farmerAmountDay = ByteUtil.BCD2Long_LE(bs, index, index + 3) ;
            cdData.farmerAmountDay = farmerAmountDay/100.0D;
            index += 4 ;
            int lossAmountDay = ByteUtil.BCD2Int_BE(bs, index, index + 3) ;
            Long lossAmountDay = ByteUtil.BCD2Long_LE(bs, index, index + 3) ;
            cdData.lossAmountDay = lossAmountDay/100.0D;
            return cdData ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_65_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -46,7 +47,8 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            JSONObject obj = (JSONObject)para.param;
            String json = obj.toJSONString();
            ComCd65Vo cvo = JSON.parseObject(json, ComCd65Vo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCd65Vo为null") ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_65_Up.java
@@ -96,19 +96,19 @@
            cdData.icCardNo  = GlParse.parseIcCardNo(bs, index, 6, 2) ;
            index += 8 ;
            int moneyRemain = ByteUtil.BCD2Int_BE(bs, index, index + 4) ;
            Long moneyRemain = ByteUtil.BCD2Long_LE(bs, index, index + 4) ;
            cdData.moneyRemain = moneyRemain/100.0D;
            index += 5 ;
            int waterRemain = ByteUtil.BCD2Int_BE(bs, index, index + 4) ;
            Long waterRemain = ByteUtil.BCD2Long_LE(bs, index, index + 4) ;
            cdData.waterRemain = waterRemain/100.0D;
            index += 5 ;
            int thisEle = ByteUtil.BCD2Int_BE(bs, index, index + 3) ;
            int thisEle = ByteUtil.BCD2Int_LE(bs, index, index + 3) ;
            cdData.thisEle = thisEle/100.0D;
            index += 4 ;
            int thisWater = ByteUtil.BCD2Int_BE(bs, index, index + 3) ;
            int thisWater = ByteUtil.BCD2Int_LE(bs, index, index + 3) ;
            cdData.thisWater = thisWater/100.0D;
            index += 4 ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_68_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -46,17 +47,16 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            ComCdXyVo cvo = JSON.parseObject(json, ComCdXyVo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCdXyVo为null") ;
            }
            JSONObject obj = (JSONObject)para.param;
            String controllerType = (String)obj.get("controllerType");
            Integer projectNo = (Integer)obj.get("projectNo") ;
            byte[] bs = new byte[2] ;
            int index = 0 ;
            bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
            bs[index] = (byte)(Integer.parseInt(controllerType, 16));
            index ++ ;
            bs[index] = cvo.projectNo.byteValue() ;
            bs[index] = projectNo.byteValue() ;
            bytes = ByteUtil.bytesMerge(bytes, bs) ;
        }else{
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_80_Down.java
@@ -49,7 +49,7 @@
            byte[] bs = new byte[2] ;
            bs[0] = (byte)(Integer.parseInt(cdData.getControllerType(), 16));
            bs[1] = cdData.projectNo.byteValue() ;
            GlCreate.createTp(bs, 3) ;
            GlCreate.createTp(bs, 2) ;
            bytes = ByteUtil.bytesMerge(bytes, bs) ;
        }else{
            throw new Exception("下行命令参数据为null") ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_81_Down.java
@@ -46,10 +46,10 @@
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            DataCd81Vo cdData = (DataCd81Vo)para.param ;
            byte[] bs = new byte[2] ;
            byte[] bs = new byte[8] ;
            bs[0] = (byte)(Integer.parseInt(cdData.getControllerType(), 16));
            bs[1] = cdData.projectNo.byteValue() ;
            GlCreate.createTp(bs, 3) ;
            GlCreate.createTp(bs, 2) ;
            bytes = ByteUtil.bytesMerge(bytes, bs) ;
        }else{
            throw new Exception("下行命令参数据为null") ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_83_Up.java
@@ -92,28 +92,28 @@
        cdData.projectNo = (int)bs[index];
        index ++ ;
        cdData.waterTotalAmountYear = ByteUtil.BCD2Int_BE(bs, index, index + 4)/100.0D ;
        cdData.waterTotalAmountYear = ByteUtil.BCD2Long_LE(bs, index, index + 4)/100.0D ;
        index += 5 ;
        cdData.waterTotalAmountMeter = ByteUtil.BCD2Int_BE(bs, index, index + 4)/100.0D ;
        cdData.waterTotalAmountMeter = ByteUtil.BCD2Long_LE(bs, index, index + 4)/100.0D ;
        index += 5 ;
        cdData.eleTotalAmountYear = ByteUtil.BCD2Int_BE(bs, index, index + 4)/100.0D ;
        cdData.eleTotalAmountYear = ByteUtil.BCD2Long_LE(bs, index, index + 4)/100.0D ;
        index += 5 ;
        cdData.eleTotalAmountMeter = ByteUtil.BCD2Int_BE(bs, index, index + 4)/100.0D ;
        cdData.eleTotalAmountMeter = ByteUtil.BCD2Long_LE(bs, index, index + 4)/100.0D ;
        index += 5 ;
        cdData.waterTotalAmountDay = ByteUtil.BCD2Int_BE(bs, index, index + 3)/100.0D ;
        cdData.waterTotalAmountDay = ByteUtil.BCD2Long_LE(bs, index, index + 3)/100.0D ;
        index += 4 ;
        cdData.waterUserTotalAmountDay = ByteUtil.BCD2Int_BE(bs, index, index + 3)/100.0D ;
        cdData.waterUserTotalAmountDay = ByteUtil.BCD2Long_LE(bs, index, index + 3)/100.0D ;
        index += 4 ;
        cdData.lossTotalAmountDay = ByteUtil.BCD2Int_BE(bs, index, index + 3)/100.0D ;
        cdData.lossTotalAmountDay = ByteUtil.BCD2Long_LE(bs, index, index + 3)/100.0D ;
        index += 4 ;
        cdData.batteryVolt = ByteUtil.BCD2Int_BE(bs, index, index + 1)/100.0D ;
        cdData.batteryVolt = ByteUtil.BCD2Int_LE(bs, index, index + 1)/100.0D ;
    }
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_84_Up.java
@@ -106,27 +106,20 @@
        index += 8 ;
        cdData.orderNo = ByteUtil.BCD2String_BE(bs, index, index + 7) ;
        index ++ ;
        String mm = ByteUtil.BCD2String_LE(bs, index, index) ;
        index ++ ;
        String HH = ByteUtil.BCD2String_LE(bs, index, index) ;
        index ++ ;
        String dd = ByteUtil.BCD2String_LE(bs, index, index) ;
        index ++ ;
        String MM = ByteUtil.BCD2String_LE(bs, index, index) ;
        cdData.opDt = MM + "月" + dd + "日" + HH + "时" + mm + "分" ;
        index += 8 ;
        cdData.opDt = GlParse.parseRtuDt(bs, index) ;
        index ++ ;
        cdData.waterTotalAmount = ByteUtil.BCD2Int_BE(bs, index, index + 4)/100.0D ;
        index += 6 ;
        cdData.waterTotalAmount = ByteUtil.BCD2Long_LE(bs, index, index + 4)/100.0D ;
        index += 5 ;
        cdData.eleTotalAmount = ByteUtil.BCD2Int_BE(bs, index, index + 4)/100.0D ;
        cdData.eleTotalAmount = ByteUtil.BCD2Long_LE(bs, index, index + 4)/100.0D ;
        index += 5 ;
        cdData.moneyRemainUser = ByteUtil.BCD2Int_BE(bs, index, index + 4)/100.0D ;
        cdData.moneyRemainUser = ByteUtil.BCD2Long_LE(bs, index, index + 4)/100.0D ;
        index += 5 ;
        cdData.waterRemainUser = ByteUtil.BCD2Int_BE(bs, index, index + 4)/100.0D ;
        cdData.waterRemainUser = ByteUtil.BCD2Long_LE(bs, index, index + 4)/100.0D ;
        index += 5 ;
        GlParse.parseAlarmAndState(bs, index, cdData) ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_85_Down.java
@@ -4,7 +4,8 @@
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.DataCd93_A3_85Vo;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd85Vo;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd93_A3Vo;
import com.dy.common.util.ByteUtil;
@AnnotationCodeDown(ifAny={
@@ -47,7 +48,7 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            DataCd93_A3_85Vo cdData = (DataCd93_A3_85Vo)para.param ;
            DataCd85Vo cdData = (DataCd85Vo)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,8 @@
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_A3_85Vo;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd85Vo;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd93_A3Vo;
import com.dy.common.util.ByteUtil;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -84,10 +85,10 @@
     */
    protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
        DataV202404 dV1 = (DataV202404)data.getSubData() ;
        DataCd93_A3_85Vo cdData = new DataCd93_A3_85Vo(CodeV202404.getCodeName(dataCode)) ;
        DataCd85Vo cdData = new DataCd85Vo(CodeV202404.getCodeName(dataCode)) ;
        dV1.subData = cdData ;
        GlParse.parseCd93A3And85(bs, cdData) ;
        GlParse.parseCd85(bs, cdData) ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_86_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -47,7 +48,8 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            JSONObject obj = (JSONObject)para.param;
            String json = obj.toJSONString();
            ComCd86Vo cvo = JSON.parseObject(json, ComCd86Vo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCd21Vo为null") ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_86_Up.java
@@ -74,7 +74,7 @@
        cdData.ip = ByteUtil.bytes2String_BE(bs, index, index + ipLen - 1) ;
        index += ipLen ;
        cdData.port = Integer.parseInt(ByteUtil.bytes2String_BE(bs, index, index + portLen - 1)) ;
        cdData.port = Integer.parseInt(ByteUtil.bytes2String_LE(bs, index, index + portLen - 1)) ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_87_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -46,7 +47,8 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            JSONObject obj = (JSONObject)para.param;
            String json = obj.toJSONString();
            ComCd87Vo cvo = JSON.parseObject(json, ComCd87Vo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCd21Vo为null") ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_87_Up.java
@@ -73,10 +73,10 @@
        short portLen = ByteUtilUnsigned.byte2Byte(bs, index) ;
        index++ ;
        cdData.domain = ByteUtil.bytes2String_BE(bs, index, index + domainLen - 1) ;
        cdData.domain = ByteUtil.bytes2String_LE(bs, index, index + domainLen - 1) ;
        index += domainLen ;
        cdData.port = Integer.parseInt(ByteUtil.bytes2String_BE(bs, index, index + portLen - 1)) ;
        cdData.port = Integer.parseInt(ByteUtil.bytes2String_LE(bs, index, index + portLen - 1)) ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_88_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -47,18 +48,16 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            ComCdXyVo cvo = JSON.parseObject(json, ComCdXyVo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCdXyVo为null") ;
            }
            JSONObject obj = (JSONObject)para.param;
            String controllerType = (String)obj.get("controllerType");
            Integer projectNo = (Integer)obj.get("projectNo") ;
            byte[] bs = new byte[2] ;
            int index = 0 ;
            bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
            bs[index] = (byte)(Integer.parseInt(controllerType, 16));
            index ++ ;
            bs[index] = cvo.projectNo.byteValue() ;
            bs[index] = projectNo.byteValue() ;
            bytes = ByteUtil.bytesMerge(bytes, bs) ;
        }else{
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_8A_Down.java
@@ -49,7 +49,7 @@
            byte[] bs = new byte[8] ;
            bs[0] = (byte)(Integer.parseInt(cdData.getControllerType(), 16));
            bs[1] = cdData.projectNo.byteValue() ;
            GlCreate.createTp(bs, 3) ;
            GlCreate.createTp(bs, 2) ;
            bytes = ByteUtil.bytesMerge(bytes, bs) ;
        }else{
            throw new Exception("下行命令参数据为null") ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_8A_Up.java
@@ -92,23 +92,23 @@
        cdData.projectNo = (int)bs[index];
        index++ ;
        int lng = ByteUtil.BCD2Int_BE(bs, index, index + 4) ;
        Long lng = ByteUtil.BCD2Long_LE(bs, index, index + 4) ;
        cdData.lng = lng/1000000.0D;
        index += 5 ;
        int lat = ByteUtil.BCD2Int_BE(bs, index, index + 4) ;
        Long lat = ByteUtil.BCD2Long_LE(bs, index, index + 4) ;
        cdData.lat = lat/1000000.0D;
        index += 5 ;
        int softVersion = ByteUtil.BCD2Int_BE(bs, index, index + 1) ;
        int softVersion = ByteUtil.BCD2Int_LE(bs, index, index + 1) ;
        cdData.softVersion = softVersion/10.0F;
        index += 2 ;
        int hardVersion = ByteUtil.BCD2Int_BE(bs, index, index + 1) ;
        int hardVersion = ByteUtil.BCD2Int_LE(bs, index, index + 1) ;
        cdData.hardVersion = hardVersion/10.0F;
        index += 2 ;
        int protocolVersion = ByteUtil.BCD2Int_BE(bs, index, index + 1) ;
        int protocolVersion = ByteUtil.BCD2Int_LE(bs, index, index + 1) ;
        cdData.protocolVersion = protocolVersion/10.0F;
    }
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_92_A2_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -49,7 +50,8 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            JSONObject obj = (JSONObject)para.param;
            String json = obj.toJSONString();
            ComCd92_A2Vo cvo = JSON.parseObject(json, ComCd92_A2Vo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCd92_A2Vo为null") ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -49,7 +50,8 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            JSONObject obj = (JSONObject)para.param;
            String json = obj.toJSONString();
            ComCd93_A3Vo cvo = JSON.parseObject(json, ComCd93_A3Vo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCd93_A3Vo为null") ;
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_A3_85Vo;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd93_A3Vo;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -55,10 +55,10 @@
     */
    protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
        DataV202404 dV1 = (DataV202404)data.getSubData() ;
        DataCd93_A3_85Vo cdData = new DataCd93_A3_85Vo(CodeV202404.getCodeName(dataCode)) ;
        DataCd93_A3Vo cdData = new DataCd93_A3Vo(CodeV202404.getCodeName(dataCode)) ;
        dV1.subData = cdData ;
        GlParse.parseCd93A3And85(bs, cdData) ;
        GlParse.parseCd93A3(bs, cdData) ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_97_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -46,17 +47,16 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            ComCdXyVo cvo = JSON.parseObject(json, ComCdXyVo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCdXyVo为null") ;
            }
            JSONObject obj = (JSONObject)para.param;
            String controllerType = (String)obj.get("controllerType");
            Integer projectNo = (Integer)obj.get("projectNo") ;
            byte[] bs = new byte[2] ;
            int index = 0 ;
            bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
            bs[index] = (byte)(Integer.parseInt(controllerType, 16));
            index ++ ;
            bs[index] = cvo.projectNo.byteValue() ;
            bs[index] = projectNo.byteValue() ;
            bytes = ByteUtil.bytesMerge(bytes, bs) ;
        }else{
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_98_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -46,17 +47,16 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            ComCdXyVo cvo = JSON.parseObject(json, ComCdXyVo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCdXyVo为null") ;
            }
            JSONObject obj = (JSONObject)para.param;
            String controllerType = (String)obj.get("controllerType");
            Integer projectNo = (Integer)obj.get("projectNo") ;
            byte[] bs = new byte[2] ;
            int index = 0 ;
            bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
            bs[index] = (byte)(Integer.parseInt(controllerType, 16));
            index ++ ;
            bs[index] = cvo.projectNo.byteValue() ;
            bs[index] = projectNo.byteValue() ;
            bytes = ByteUtil.bytesMerge(bytes, bs) ;
        }else{
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_99_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -46,17 +47,16 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            ComCdXyVo cvo = JSON.parseObject(json, ComCdXyVo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCdXyVo为null") ;
            }
            JSONObject obj = (JSONObject)para.param;
            String controllerType = (String)obj.get("controllerType");
            Integer projectNo = (Integer)obj.get("projectNo") ;
            byte[] bs = new byte[2] ;
            int index = 0 ;
            bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
            bs[index] = (byte)(Integer.parseInt(controllerType, 16));
            index ++ ;
            bs[index] = cvo.projectNo.byteValue() ;
            bs[index] = projectNo.byteValue() ;
            bytes = ByteUtil.bytesMerge(bytes, bs) ;
        }else{
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9A_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -46,17 +47,16 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            ComCdXyVo cvo = JSON.parseObject(json, ComCdXyVo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCdXyVo为null") ;
            }
            JSONObject obj = (JSONObject)para.param;
            String controllerType = (String)obj.get("controllerType");
            Integer projectNo = (Integer)obj.get("projectNo") ;
            byte[] bs = new byte[2] ;
            int index = 0 ;
            bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
            bs[index] = (byte)(Integer.parseInt(controllerType, 16));
            index ++ ;
            bs[index] = cvo.projectNo.byteValue() ;
            bs[index] = projectNo.byteValue() ;
            bytes = ByteUtil.bytesMerge(bytes, bs) ;
        }else{
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9C_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
@@ -48,7 +49,8 @@
    public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
        byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
        if(para.param != null){
            String json = (String)para.param;
            JSONObject obj = (JSONObject)para.param;
            String json = obj.toJSONString();
            ComCd9CVo cvo = JSON.parseObject(json, ComCd9CVo.class) ;
            if(cvo == null){
                throw new Exception("json转ComCd9CVo为null") ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_C2_Up.java
@@ -54,7 +54,7 @@
                para.data.subData==null?null:(((DataV202404)para.data.subData).subData),
                null);
        //构造应答
        byte[] data = new Cd_02_Down().doParse(downCpParams) ;
        byte[] data = new Cd_C2_Down().doParse(downCpParams) ;
        MidResultToRtu confirmCommand = new MidResultToRtu() ;
        confirmCommand.protocolName = para.protocolName ;//协议名称
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Test.java
New file
@@ -0,0 +1,18 @@
package com.dy.common.mw.protocol.p206V202404.parse;
import com.dy.common.util.ByteUtil;
/**
 * @Author: liurunyu
 * @Date: 2024/5/15 13:43
 * @Description
 */
public class Test {
    public static void main(String[] args) throws Exception{
        byte[] bs = new byte[]{(byte)0x80, (byte)0x01, (byte)0x00, (byte)0x00, (byte)0x00} ;
        Long l1 =  ByteUtil.BCD2Long_BE(bs, 0, 0 + 4);
        Long l2 =  ByteUtil.BCD2Long_LE(bs, 0, 0 + 4);
        System.out.println(l1);
        System.out.println(l2);
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlCreate.java
@@ -32,7 +32,7 @@
        index++ ;
        GlCreate.createRtuAddr(rtuAddr, bsHead, index);
        index += 7 ;
        index += 8 ;
        ByteUtil.hex2Bytes(commandCode, bsHead, index) ;
        return bsHead ;
@@ -95,12 +95,12 @@
    }
    public static void createDt(byte[] bs, int index) throws Exception {
        bs[index] = Byte.parseByte(DateTime.ss()) ;
        bs[index + 1] = Byte.parseByte(DateTime.mm()) ;
        bs[index + 2] = Byte.parseByte(DateTime.HH()) ;
        bs[index + 3] = Byte.parseByte(DateTime.dd()) ;
        bs[index + 4] = Byte.parseByte(DateTime.MM()) ;
        bs[index + 5] = Byte.parseByte(DateTime.yy()) ;
        ByteUtil.string2BCD_BE(bs, DateTime.ss(), index) ; ;
        ByteUtil.string2BCD_BE(bs, DateTime.mm(), index + 1) ;
        ByteUtil.string2BCD_BE(bs, DateTime.HH(), index + 2) ;
        ByteUtil.string2BCD_BE(bs, DateTime.dd(), index + 3) ;
        ByteUtil.string2BCD_BE(bs, DateTime.MM(), index + 4) ;
        ByteUtil.string2BCD_BE(bs, DateTime.yy(), index + 5) ;
    }
@@ -110,19 +110,52 @@
    }
    public static void createTp(byte[] bs, int index) throws Exception {
        ByteUtil.string2BCD_BE(bs, DateTime.ss(), index) ; ;
        ByteUtil.string2BCD_BE(bs, DateTime.mm(), index + 1) ;
        ByteUtil.string2BCD_BE(bs, DateTime.HH(), index + 2) ;
        ByteUtil.string2BCD_BE(bs, DateTime.dd(), index + 3) ;
        byte month = Byte.parseByte(DateTime.MM()) ;
        byte week = (byte)(DateTime.week_Int().byteValue() << 1)  ;
        String month1 = "0" ;
        String month2 = "0" ;
        if(month < 10){
            month1 = "" + month ;
        }else{
            if(month == 10){
                month1 = "0" ;
            }else if(month == 11){
                month1 = "1" ;
            }else if(month == 12){
                month1 = "2" ;
            }
            week = (byte)(week | 0x01) ;
        }
        month2 = "" + week ;
        ByteUtil.string2BCD_BE(bs, month2 + month1, index + 4) ;
        ByteUtil.string2BCD_BE(bs, DateTime.yy(), index + 5) ;
        /*
        bs[index] = Byte.parseByte(DateTime.ss()) ;
        bs[index + 1] = Byte.parseByte(DateTime.mm()) ;
        bs[index + 2] = Byte.parseByte(DateTime.HH()) ;
        bs[index + 3] = Byte.parseByte(DateTime.dd()) ;
        bs[index + 4] = (byte)(DateTime.week_Int().byteValue() << 5 | Byte.parseByte(DateTime.MM())) ;
        bs[index + 5] = Byte.parseByte(DateTime.yy()) ;
        */
    }
    public static void createS2D(byte[] bs, int index) throws Exception {
        ByteUtil.string2BCD_BE(bs, DateTime.ss(), index) ; ;
        ByteUtil.string2BCD_BE(bs, DateTime.mm(), index + 1) ;
        ByteUtil.string2BCD_BE(bs, DateTime.HH(), index + 2) ;
        ByteUtil.string2BCD_BE(bs, DateTime.dd(), index + 3) ;
        /*
        bs[index] = Byte.parseByte(DateTime.ss()) ;
        bs[index + 1] = Byte.parseByte(DateTime.mm()) ;
        bs[index + 2] = Byte.parseByte(DateTime.HH()) ;
        bs[index + 3] = Byte.parseByte(DateTime.dd()) ;
        */
    }
    public static void createLen(byte[] bsNoTail) throws Exception {
@@ -137,4 +170,11 @@
        bytes[1] = ProtocolConstantV206V1_0_0.P_Tail_Byte ;
        return bytes ;
    }
    public static void main(String[] args)throws Exception{
        byte[] bs = new byte[6] ;
        createTp(bs, 0) ;
        String hex = ByteUtil.bytes2Hex(bs,true, 0, 6) ;
        System.out.println(hex);
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlParse.java
@@ -43,128 +43,21 @@
     */
    public static String parseIcCardNo(byte[] bs, int index, int len1, int len2)throws Exception{
        String rtuAddrBCD = "" + ByteUtil.BCD2Long_BE(bs, index, index + len1 - 1) ;
        String rtuAddrStr = "" + ByteUtilUnsigned.bytes2Short_LE(bs, index + len1 + len2 -1 ) ;
        String rtuAddrStr = "" + ByteUtilUnsigned.bytes2Short_LE(bs, index + len1) ;
        while(rtuAddrStr.length() < 5){
            rtuAddrStr = "0" + rtuAddrStr ;
        }
        return rtuAddrBCD + rtuAddrStr ;
    }
    /**
     * 分析状态与报警
     * @param bs
     * @param index
     * @return
     */
    public static void parseAlarmAndState(byte[] bs, int index, DataCd80_5BVo vo){
        byte b = bs[index] ;
        vo.statePump = (byte)(b & 0x1) ;
        vo.alarmWaterRemain = (byte)(b >> 1 & 1) ;
        vo.alarm0WaterRemain = (byte)(b >> 2 & 1) ;
        vo.alarmExceedYear = (byte)(b >> 3 & 1) ;
        vo.alarmWaterMeterFault = (byte)(b >> 4 & 1) ;
        vo.alarmSteal = (byte)(b >> 5 & 1) ;
        vo.alarmWaterMeterBreak = (byte)(b >> 6 & 1) ;
        vo.alarmEleMeterFault = (byte)(b >> 7 & 1) ;
        index++ ;
        b = bs[index] ;
        vo.alarm0MoneyRemain = (byte)(b & 0x1) ;
        vo.alarmInnerDoor = (byte)(b >> 1 & 1) ;
        vo.alarmOuterDoor = (byte)(b >> 2 & 1) ;
        vo.alarmEleMiss = (byte)(b >> 3 & 1) ;
        vo.alarmEleExceed = (byte)(b >> 4 & 1) ;
        vo.alarmEleLowVolt = (byte)(b >> 5 & 1) ;
        vo.stateIcEnable = (byte)(b >> 6 & 1) ;
    }
    /**
     * 分析状态与报警
     * @param bs
     * @param index
     * @return
     */
    public static void parseAlarmAndState(byte[] bs, int index, DataCd81Vo vo){
        byte b = bs[index] ;
        vo.statePump = (byte)(b & 0x1) ;
        vo.alarmWaterRemain = (byte)(b >> 1 & 1) ;
        vo.alarm0WaterRemain = (byte)(b >> 2 & 1) ;
        vo.alarmExceedYear = (byte)(b >> 3 & 1) ;
        vo.alarmWaterMeterFault = (byte)(b >> 4 & 1) ;
        vo.alarmSteal = (byte)(b >> 5 & 1) ;
        vo.alarmWaterMeterBreak = (byte)(b >> 6 & 1) ;
        vo.alarmEleMeterFault = (byte)(b >> 7 & 1) ;
        index++ ;
        b = bs[index] ;
        vo.alarm0MoneyRemain = (byte)(b & 0x1) ;
        vo.alarmInnerDoor = (byte)(b >> 1 & 1) ;
        vo.alarmOuterDoor = (byte)(b >> 2 & 1) ;
        vo.alarmEleMiss = (byte)(b >> 3 & 1) ;
        vo.alarmEleExceed = (byte)(b >> 4 & 1) ;
        vo.alarmEleLowVolt = (byte)(b >> 5 & 1) ;
        vo.stateIcEnable = (byte)(b >> 6 & 1) ;
    }
    /**
     * 分析状态与报警
     * @param bs
     * @param index
     * @return
     */
    public static void parseAlarmAndState(byte[] bs, int index, DataCd84Vo vo){
        byte b = bs[index] ;
        vo.statePump = (byte)(b & 0x1) ;
        vo.alarmWaterRemain = (byte)(b >> 1 & 1) ;
        vo.alarm0WaterRemain = (byte)(b >> 2 & 1) ;
        vo.alarmExceedYear = (byte)(b >> 3 & 1) ;
        vo.alarmWaterMeterFault = (byte)(b >> 4 & 1) ;
        vo.alarmSteal = (byte)(b >> 5 & 1) ;
        vo.alarmWaterMeterBreak = (byte)(b >> 6 & 1) ;
        vo.alarmEleMeterFault = (byte)(b >> 7 & 1) ;
        index++ ;
        b = bs[index] ;
        vo.alarm0MoneyRemain = (byte)(b & 0x1) ;
        vo.alarmInnerDoor = (byte)(b >> 1 & 1) ;
        vo.alarmOuterDoor = (byte)(b >> 2 & 1) ;
        vo.alarmEleMiss = (byte)(b >> 3 & 1) ;
        vo.alarmEleExceed = (byte)(b >> 4 & 1) ;
        vo.alarmEleLowVolt = (byte)(b >> 5 & 1) ;
        vo.stateIcEnable = (byte)(b >> 6 & 1) ;
    }
    /**
     * 分析状态与报警
     * @param bs
     * @param index
     * @return
     */
    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 >> 1 & 1) ;
        vo.alarm0WaterRemain = (byte)(b >> 2 & 1) ;
        vo.alarmExceedYear = (byte)(b >> 3 & 1) ;
        vo.alarmWaterMeterFault = (byte)(b >> 4 & 1) ;
        vo.alarmSteal = (byte)(b >> 5 & 1) ;
        vo.alarmWaterMeterBreak = (byte)(b >> 6 & 1) ;
        vo.alarmEleMeterFault = (byte)(b >> 7 & 1) ;
        index++ ;
        b = bs[index] ;
        vo.alarm0MoneyRemain = (byte)(b & 0x1) ;
        vo.alarmInnerDoor = (byte)(b >> 1 & 1) ;
        vo.alarmOuterDoor = (byte)(b >> 2 & 1) ;
        vo.alarmEleMiss = (byte)(b >> 3 & 1) ;
        vo.alarmEleExceed = (byte)(b >> 4 & 1) ;
        vo.alarmEleLowVolt = (byte)(b >> 5 & 1) ;
        vo.stateIcEnable = (byte)(b >> 6 & 1) ;
    }
   /**
     * 分析状态与报警
     * @param bs
     * @param index
     * @return
     */
    public static void parseAlarmAndState(byte[] bs, int index, DataCdC2Vo vo){
    public static void parseAlarmAndState(byte[] bs, int index, AlarmVo vo){
        byte b = bs[index] ;
        vo.statePump = (byte)(b & 0x1) ;
        vo.alarmWaterRemain = (byte)(b >> 1 & 1) ;
@@ -197,7 +90,7 @@
            index++ ;
            dt = ByteUtil.BCD2String_BE(bs, index, index) + " " + dt ;//日
            index++ ;
            //bs[index] = (byte)(bs[index] & 0x10);
            bs[index] = (byte)(bs[index] & 0x1F);
            dt = ByteUtil.BCD2String_BE(bs, index, index) + "-" + dt ;//月
            index++ ;
            dt = "20" + ByteUtil.BCD2String_BE(bs, index, index) + "-" + dt ;//年
@@ -224,7 +117,7 @@
        cdData.useWaterType = bs[index];
        index++ ;
        cdData.orderNo = ByteUtil.BCD2String_BE(bs, index, index + 4) ;
        cdData.orderNo = ByteUtil.BCD2String_BE(bs, index, index + 7) ;
        index += 8 ;
        cdData.icCardAddr = ByteUtil.bytes2Hex(bs, false, index, 4) ;
@@ -236,108 +129,166 @@
        cdData.rtuDt  = GlParse.parseRtuDt(bs, index) ;
        index += 6 ;
        int waterLevel = ByteUtil.BCD2Int_BE(bs, index, index + 3) ;
        Long waterLevel = ByteUtil.BCD2Long_LE(bs, index, index + 3) ;
        cdData.waterLevel = waterLevel/1000.0D;
        index += 4 ;
        int waterPress = ByteUtil.BCD2Int_BE(bs, index, index + 2) ;
        int waterPress = ByteUtil.BCD2Int_LE(bs, index, index + 2) ;
        cdData.waterPress = waterPress/100.0D;
        index += 3 ;
        int waterInstant = ByteUtil.BCD2Int_BE(bs, index, index + 3) ;
        Long waterInstant = ByteUtil.BCD2Long_LE(bs, index, index + 3) ;
        cdData.waterInstant = waterInstant/100.0D;
        index += 4 ;
        int waterTotal = ByteUtil.BCD2Int_BE(bs, index, index + 4) ;
        Long waterTotal = ByteUtil.BCD2Long_LE(bs, index, index + 4) ;
        cdData.waterTotal = waterTotal/100.0D;
        index += 5 ;
        int eleTotal = ByteUtil.BCD2Int_BE(bs, index, index + 4) ;
        Long eleTotal = ByteUtil.BCD2Long_LE(bs, index, index + 4) ;
        cdData.eleTotal = eleTotal/100.0D;
        index += 5 ;
        int moneyRemain = ByteUtil.BCD2Int_BE(bs, index, index + 4) ;
        Long moneyRemain = ByteUtil.BCD2Long_LE(bs, index, index + 4) ;
        cdData.moneyRemain = moneyRemain/100.0D;
        index += 5 ;
        int waterRemain = ByteUtil.BCD2Int_BE(bs, index, index + 4) ;
        Long waterRemain = ByteUtil.BCD2Long_LE(bs, index, index + 4) ;
        cdData.waterRemain = waterRemain/100.0D;
        index += 5 ;
        int thisEle = ByteUtil.BCD2Int_BE(bs, index, index + 3) ;
        int thisEle = ByteUtil.BCD2Int_LE(bs, index, index + 3) ;
        cdData.thisEle = thisEle/100.0D;
        index += 4 ;
        int thisWater = ByteUtil.BCD2Int_BE(bs, index, index + 3) ;
        int thisWater = ByteUtil.BCD2Int_LE(bs, index, index + 3) ;
        cdData.thisWater = thisWater/100.0D;
        index += 4 ;
        int thisMoney = ByteUtil.BCD2Int_BE(bs, index, index + 3) ;
        int thisMoney = ByteUtil.BCD2Int_LE(bs, index, index + 3) ;
        cdData.thisMoney = thisMoney/100.0D;
        index += 4 ;
        cdData.thisDuration = ByteUtil.BCD2Int_BE(bs, index, index + 1) ;
        cdData.thisDuration = ByteUtil.BCD2Int_LE(bs, index, index + 1) ;
        index += 2 ;
        int waterPrice = ByteUtil.BCD2Int_BE(bs, index, index + 1) ;
        int waterPrice = ByteUtil.BCD2Int_LE(bs, index, index + 1) ;
        cdData.waterPrice = waterPrice/100.0D;
        index += 2 ;
        int elePrice = ByteUtil.BCD2Int_BE(bs, index, index + 1) ;
        int elePrice = ByteUtil.BCD2Int_LE(bs, index, index + 1) ;
        cdData.elePrice = elePrice/100.0D;
        index += 2 ;
        GlParse.parseAlarmAndState(bs, index, cdData) ;
        index += 2 ;
        int aVolt = ByteUtil.BCD2Int_BE(bs, index, index + 1) ;
        int aVolt = ByteUtil.BCD2Int_LE(bs, index, index + 1) ;
        cdData.aVolt = aVolt/10.0D;
        index += 2 ;
        int bVolt = ByteUtil.BCD2Int_BE(bs, index, index + 1) ;
        int bVolt = ByteUtil.BCD2Int_LE(bs, index, index + 1) ;
        cdData.bVolt = bVolt/10.0D;
        index += 2 ;
        int cVolt = ByteUtil.BCD2Int_BE(bs, index, index + 1) ;
        int cVolt = ByteUtil.BCD2Int_LE(bs, index, index + 1) ;
        cdData.cVolt = cVolt/10.0D;
        index += 2 ;
        int aCurrent = ByteUtil.BCD2Int_BE(bs, index, index + 1) ;
        int aCurrent = ByteUtil.BCD2Int_LE(bs, index, index + 1) ;
        cdData.aCurrent = aCurrent/10.0D;
        index += 2 ;
        int bCurrent = ByteUtil.BCD2Int_BE(bs, index, index + 1) ;
        int bCurrent = ByteUtil.BCD2Int_LE(bs, index, index + 1) ;
        cdData.bCurrent = bCurrent/10.0D;
        index += 2 ;
        int cCurrent = ByteUtil.BCD2Int_BE(bs, index, index + 1) ;
        int cCurrent = ByteUtil.BCD2Int_LE(bs, index, index + 1) ;
        cdData.cCurrent = cCurrent/10.0D;
        index += 2 ;
        int batteryVolt = ByteUtil.BCD2Int_BE(bs, index, index + 1) ;
        int batteryVolt = ByteUtil.BCD2Int_LE(bs, index, index + 1) ;
        cdData.batteryVolt = batteryVolt/100.0D;
        index += 2 ;
        int waterMeterTransVolt = ByteUtil.BCD2Int_BE(bs, index, index + 1) ;
        int waterMeterTransVolt = ByteUtil.BCD2Int_LE(bs, index, index + 1) ;
        cdData.waterMeterTransVolt = waterMeterTransVolt/100.0D;
        index += 2 ;
        int waterMeterWorkVolt = ByteUtil.BCD2Int_BE(bs, index, index + 1) ;
        int waterMeterWorkVolt = ByteUtil.BCD2Int_LE(bs, index, index + 1) ;
        cdData.waterMeterWorkVolt = waterMeterWorkVolt/100.0D;
        index += 2 ;
        cdData.csq = ByteUtil.BCD2Int_BE(bs, index, index) ;
        cdData.csq = ByteUtil.BCD2Int_LE(bs, index, index) ;
    }
    /**
     * 分析功能93、A3和85数据
     * 分析功能85数据
     * @param bs
     * @param cdData
     * @throws Exception
     */
    public static void parseCd93A3And85(byte[] bs, DataCd93_A3_85Vo cdData) throws Exception {
    public static void parseCd85(byte[] bs, DataCd85Vo cdData) throws Exception {
        int index = ProtocolConstantV206V202404.dataIndex ;
        cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
        index++ ;
        cdData.projectNo = (int)bs[index];
        index ++ ;
        cdData.opType = bs[index];
        index++ ;
        cdData.icCardAddr = ByteUtil.bytes2Hex(bs, false, index, 4) ;
        index += 4 ;
        cdData.icCardNo = GlParse.parseIcCardNo(bs, index, 6, 2) ;
        index += 8 ;
        cdData.orderNo = ByteUtil.BCD2String_BE(bs, index, index + 7) ;
        index += 8 ;
        cdData.startDt  = GlParse.parseRtuDt(bs, index) ;
        index += 6 ;
        cdData.endDt  = GlParse.parseRtuDt(bs, index) ;
        index += 6 ;
        cdData.waterTotalAmount = ByteUtil.BCD2Long_LE(bs, index, index + 4)/100.0D ;
        index += 5 ;
        cdData.eleTotalAmount = ByteUtil.BCD2Long_LE(bs, index, index + 4)/100.0D ;
        index += 5 ;
        cdData.moneyRemain = ByteUtil.BCD2Long_LE(bs, index, index + 4)/100.0D ;
        index += 5 ;
        cdData.waterRemain = ByteUtil.BCD2Long_LE(bs, index, index + 4)/100.0D ;
        index += 5 ;
        cdData.thisEle = ByteUtil.BCD2Long_LE(bs, index, index + 3)/100.0D ;
        index += 4 ;
        cdData.thisWater = ByteUtil.BCD2Long_LE(bs, index, index + 3)/100.0D ;
        index += 4 ;
        cdData.thisMoney = ByteUtil.BCD2Long_LE(bs, index, index + 3)/100.0D ;
        index += 4 ;
        cdData.thisDuration = ByteUtil.BCD2Int_LE(bs, index, index + 1) ;
        index += 2 ;
        GlParse.parseAlarmAndState(bs, index, cdData) ;
    }
    /**
     * 分析功能93、A3数据
     * @param bs
     * @param cdData
     * @throws Exception
     */
    public static void parseCd93A3(byte[] bs, DataCd93_A3Vo cdData) throws Exception {
        int index = ProtocolConstantV206V202404.dataIndex ;
        cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
@@ -353,55 +304,41 @@
        index++ ;
        cdData.icCardAddr = ByteUtil.bytes2Hex(bs, false, index, 4) ;
        index += 8 ;
        index += 4 ;
        cdData.icCardNo = GlParse.parseIcCardNo(bs, index, 6, 2) ;
        index += 8 ;
        cdData.orderNo = ByteUtil.BCD2String_BE(bs, index, index + 7) ;
        index ++ ;
        String mm = ByteUtil.BCD2String_LE(bs, index, index) ;
        index ++ ;
        String HH = ByteUtil.BCD2String_LE(bs, index, index) ;
        index ++ ;
        String dd = ByteUtil.BCD2String_LE(bs, index, index) ;
        index ++ ;
        String MM = ByteUtil.BCD2String_LE(bs, index, index) ;
        cdData.startDt = MM + "月" + dd + "日" + HH + "时" + mm + "分" ;
        index += 8 ;
        cdData.startDt  = GlParse.parseRtuDt(bs, index) ;
        index ++ ;
        mm = ByteUtil.BCD2String_LE(bs, index, index) ;
        index ++ ;
        HH = ByteUtil.BCD2String_LE(bs, index, index) ;
        index ++ ;
        dd = ByteUtil.BCD2String_LE(bs, index, index) ;
        index ++ ;
        MM = ByteUtil.BCD2String_LE(bs, index, index) ;
        cdData.endDt = MM + "月" + dd + "日" + HH + "时" + mm + "分" ;
        index += 6 ;
        cdData.endDt  = GlParse.parseRtuDt(bs, index) ;
        index ++ ;
        cdData.waterTotalAmount = ByteUtil.BCD2Int_BE(bs, index, index + 4)/100.0D ;
        index += 6 ;
        cdData.waterTotalAmount = ByteUtil.BCD2Long_LE(bs, index, index + 4)/100.0D ;
        index += 5 ;
        cdData.eleTotalAmount = ByteUtil.BCD2Int_BE(bs, index, index + 4)/100.0D ;
        cdData.eleTotalAmount = ByteUtil.BCD2Long_LE(bs, index, index + 4)/100.0D ;
        index += 5 ;
        cdData.moneyRemain = ByteUtil.BCD2Int_BE(bs, index, index + 4)/100.0D ;
        cdData.moneyRemain = ByteUtil.BCD2Long_LE(bs, index, index + 4)/100.0D ;
        index += 5 ;
        cdData.waterRemain = ByteUtil.BCD2Int_BE(bs, index, index + 4)/100.0D ;
        cdData.waterRemain = ByteUtil.BCD2Long_LE(bs, index, index + 4)/100.0D ;
        index += 5 ;
        cdData.thisEle = ByteUtil.BCD2Int_BE(bs, index, index + 3)/100.0D ;
        cdData.thisEle = ByteUtil.BCD2Long_LE(bs, index, index + 3)/100.0D ;
        index += 4 ;
        cdData.thisWater = ByteUtil.BCD2Int_BE(bs, index, index + 3)/100.0D ;
        cdData.thisWater = ByteUtil.BCD2Long_LE(bs, index, index + 3)/100.0D ;
        index += 4 ;
        cdData.thisMoney = ByteUtil.BCD2Int_BE(bs, index, index + 3)/100.0D ;
        cdData.thisMoney = ByteUtil.BCD2Long_LE(bs, index, index + 3)/100.0D ;
        index += 4 ;
        cdData.thisDuration = ByteUtil.BCD2Int_BE(bs, index, index + 1) ;
        cdData.thisDuration = ByteUtil.BCD2Int_LE(bs, index, index + 1) ;
        index += 2 ;
        GlParse.parseAlarmAndState(bs, index, cdData) ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/AlarmVo.java
@@ -15,7 +15,7 @@
    public Byte alarmSteal ; //偷水报警    (1:绕开控制器用水报警 0:正常)
    public Byte alarmWaterMeterBreak ; //流量计损坏报警    (1:正常通讯但瞬时为0报警 0:正常)
    public Byte alarmEleMeterFault ; //电表故障报警    (1:和电表通讯断或数据不正常 0:正常)
    public Byte alarm0MoneyRemain ; //剩余金额为0关泵/阀    (1:剩余金额为0报警  0:正常)
    public Byte alarm0MoneyRemain ; //剩余金额为0    (1:剩余金额为0报警  0:正常)
    public Byte alarmInnerDoor ; //控制器内门报警    (1:内门打开报警    0:正常)
    public Byte alarmOuterDoor ; //控制器外门报警    (1:外门打开报警    0:正常)
    public Byte alarmEleMiss ; //交流缺项报警    (1:三相缺项报警    0:正常)
@@ -23,4 +23,55 @@
    public Byte alarmEleLowVolt ; //三相电欠压报警    (1:欠压报警        0:正常)
    public Byte stateIcEnable ; //IC卡使能    (1、IC有刷卡支持    0:不支持)
    public String toString(){
        StringBuffer sb = new StringBuffer() ;
        sb.append("      泵/阀状态 : ") ;
        sb.append(statePump == null?"未知":(statePump.byteValue()==1?"泵/阀开":(statePump.byteValue()==0?"泵/阀关":"未知"))) ;
        sb.append("\n") ;
        sb.append("      剩余水量报警 : ") ;
        sb.append(alarmWaterRemain == null?"未知":(alarmWaterRemain.byteValue() == 0 ? "正常":(alarmWaterRemain.byteValue() == 1 ? "报警":"未知"))) ;
        sb.append("\n") ;
        sb.append("      剩余水量为0关泵/阀 : ") ;
        sb.append(alarm0WaterRemain == null?"未知":(alarm0WaterRemain.byteValue() == 0 ? "正常":(alarm0WaterRemain.byteValue() == 1 ? "剩余水量为0关泵/阀":"未知"))) ;
        sb.append("\n") ;
        sb.append("      年度超采 : ") ;
        sb.append(alarmExceedYear == null?"未知":(alarmExceedYear.byteValue() == 0 ? "正常":(alarmExceedYear.byteValue() == 1 ? "报警":"未知"))) ;
        sb.append("\n") ;
        sb.append("      流量计故障 : ") ;
        sb.append(alarmWaterMeterFault == null?"未知":(alarmWaterMeterFault.byteValue() == 0 ? "正常":(alarmWaterMeterFault.byteValue() == 1 ? "报警":"未知"))) ;
        sb.append("\n") ;
        sb.append("      偷水 : ") ;
        sb.append(alarmSteal == null?"未知":(alarmSteal.byteValue() == 0 ? "正常":(alarmSteal.byteValue() == 1 ? "报警":"未知"))) ;
        sb.append("\n") ;
        sb.append("      流量计损坏 : ") ;
        sb.append(alarmWaterMeterBreak == null?"未知":(alarmWaterMeterBreak.byteValue() == 0 ? "正常":(alarmWaterMeterBreak.byteValue() == 1 ? "报警":"未知"))) ;
        sb.append("\n") ;
        sb.append("      电表故障 : ") ;
        sb.append(alarmEleMeterFault == null?"未知":(alarmEleMeterFault.byteValue() == 0 ? "正常":(alarmEleMeterFault.byteValue() == 1 ? "报警":"未知"))) ;
        sb.append("\n") ;
        sb.append("      剩余0金额 : ") ;
        sb.append(alarm0MoneyRemain == null?"未知":(alarm0MoneyRemain.byteValue() == 0 ? "正常":(alarm0MoneyRemain.byteValue() == 1 ? "报警":"未知"))) ;
        sb.append("\n") ;
        sb.append("      控制器内门 : ") ;
        sb.append(alarmInnerDoor == null?"未知":(alarmInnerDoor.byteValue() == 0 ? "正常":(alarmInnerDoor.byteValue() == 1 ? "报警":"未知"))) ;
        sb.append("\n") ;
        sb.append("      控制器外门 : ") ;
        sb.append(alarmOuterDoor == null?"未知":(alarmOuterDoor.byteValue() == 0 ? "正常":(alarmOuterDoor.byteValue() == 1 ? "报警":"未知"))) ;
        sb.append("\n") ;
        sb.append("      交流缺项 : ") ;
        sb.append(alarmEleMiss == null?"未知":(alarmEleMiss.byteValue() == 0 ? "正常":(alarmEleMiss.byteValue() == 1 ? "报警":"未知"))) ;
        sb.append("\n") ;
        sb.append("      交流过流 : ") ;
        sb.append(alarmEleExceed == null?"未知":(alarmEleExceed.byteValue() == 0 ? "正常":(alarmEleExceed.byteValue() == 1 ? "报警":"未知"))) ;
        sb.append("\n") ;
        sb.append("      三相电欠压 : ") ;
        sb.append(alarmEleLowVolt == null?"未知":(alarmEleLowVolt.byteValue() == 0 ? "正常":(alarmEleLowVolt.byteValue() == 1 ? "报警":"未知"))) ;
        sb.append("\n") ;
        sb.append("      IC卡使能 : ") ;
        sb.append(stateIcEnable == null?"未知":(stateIcEnable.byteValue() == 0 ? "支持":(stateIcEnable.byteValue() == 1 ? "不支持":"未知"))) ;
        sb.append("\n") ;
        return sb.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd80_5BVo.java
@@ -143,51 +143,7 @@
        sb.append("      水表工作电压 : ") ;
        sb.append(waterMeterWorkVolt == null?"未知":waterMeterWorkVolt) ;
        sb.append("\n") ;
        sb.append("      泵状态 : ") ;
        sb.append(statePump == null?"未知":(statePump.byteValue()==1?"泵/阀开":(statePump.byteValue()==0?"泵/阀关":"未知"))) ;
        sb.append("      剩余水量报警 : ") ;
        sb.append(alarmWaterRemain == null?"未知":(alarmWaterRemain.byteValue()==1?"小于报警上限":(alarmWaterRemain.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      剩余水量为0关泵/阀 : ") ;
        sb.append(alarm0WaterRemain == null?"未知":(alarm0WaterRemain.byteValue()==1?"归零关泵/阀":(alarm0WaterRemain.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      年度超采 : ") ;
        sb.append(alarmExceedYear == null?"未知":(alarmExceedYear.byteValue()==1?"报警":(alarmExceedYear.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      外部流量计故障 : ") ;
        sb.append(alarmWaterMeterFault == null?"未知":(alarmWaterMeterFault.byteValue()==1?"报警":(alarmWaterMeterFault.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      偷水 : ") ;
        sb.append(alarmSteal == null?"未知":(alarmSteal.byteValue()==1?"报警":(alarmSteal.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      流量计损坏 : ") ;
        sb.append(alarmWaterMeterBreak == null?"未知":(alarmWaterMeterBreak.byteValue()==1?"报警":(alarmWaterMeterBreak.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      电表故障 : ") ;
        sb.append(alarmEleMeterFault == null?"未知":(alarmEleMeterFault.byteValue()==1?"报警":(alarmEleMeterFault.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      剩余金额为0关泵/阀 : ") ;
        sb.append(alarm0MoneyRemain == null?"未知":(alarm0MoneyRemain.byteValue()==1?"报警":(alarm0MoneyRemain.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      控制器内门 : ") ;
        sb.append(alarmInnerDoor == null?"未知":(alarmInnerDoor.byteValue()==1?"报警":(alarmInnerDoor.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      控制器外门 : ") ;
        sb.append(alarmOuterDoor == null?"未知":(alarmOuterDoor.byteValue()==1?"报警":(alarmOuterDoor.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      交流缺项 : ") ;
        sb.append(alarmEleMiss == null?"未知":(alarmEleMiss.byteValue()==1?"报警":(alarmEleMiss.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      交流过流 : ") ;
        sb.append(alarmEleExceed == null?"未知":(alarmEleExceed.byteValue()==1?"报警":(alarmEleExceed.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      三相电欠压 : ") ;
        sb.append(alarmEleLowVolt == null?"未知":(alarmEleLowVolt.byteValue()==1?"报警":(alarmEleLowVolt.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      IC卡使能 : ") ;
        sb.append(stateIcEnable == null?"未知":(stateIcEnable.byteValue()==1?"支持":(stateIcEnable.byteValue()==0?"不支持":"未知"))) ;
        sb.append("\n") ;
        return sb.toString() ;
        return sb.toString() + super.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd81Vo.java
@@ -24,6 +24,7 @@
        sb.append("\n") ;
        sb.append("      泵状态 : ") ;
        sb.append(statePump == null?"未知":(statePump.byteValue()==1?"泵/阀开":(statePump.byteValue()==0?"泵/阀关":"未知"))) ;
        sb.append("\n") ;
        sb.append("      剩余水量报警 : ") ;
        sb.append(alarmWaterRemain == null?"未知":(alarmWaterRemain.byteValue()==1?"小于报警上限":(alarmWaterRemain.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd84Vo.java
@@ -50,51 +50,7 @@
        sb.append("      用户剩余水量 : ") ;
        sb.append(waterRemainUser == null?"未知":waterRemainUser) ;
        sb.append("\n") ;
        sb.append("      泵状态 : ") ;
        sb.append(statePump == null?"未知":(statePump.byteValue()==1?"泵/阀开":(statePump.byteValue()==0?"泵/阀关":"未知"))) ;
        sb.append("      剩余水量报警 : ") ;
        sb.append(alarmWaterRemain == null?"未知":(alarmWaterRemain.byteValue()==1?"小于报警上限":(alarmWaterRemain.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      剩余水量为0关泵/阀 : ") ;
        sb.append(alarm0WaterRemain == null?"未知":(alarm0WaterRemain.byteValue()==1?"归零关泵/阀":(alarm0WaterRemain.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      年度超采 : ") ;
        sb.append(alarmExceedYear == null?"未知":(alarmExceedYear.byteValue()==1?"报警":(alarmExceedYear.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      外部流量计故障 : ") ;
        sb.append(alarmWaterMeterFault == null?"未知":(alarmWaterMeterFault.byteValue()==1?"报警":(alarmWaterMeterFault.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      偷水 : ") ;
        sb.append(alarmSteal == null?"未知":(alarmSteal.byteValue()==1?"报警":(alarmSteal.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      流量计损坏 : ") ;
        sb.append(alarmWaterMeterBreak == null?"未知":(alarmWaterMeterBreak.byteValue()==1?"报警":(alarmWaterMeterBreak.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      电表故障 : ") ;
        sb.append(alarmEleMeterFault == null?"未知":(alarmEleMeterFault.byteValue()==1?"报警":(alarmEleMeterFault.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      剩余金额为0关泵/阀 : ") ;
        sb.append(alarm0MoneyRemain == null?"未知":(alarm0MoneyRemain.byteValue()==1?"报警":(alarm0MoneyRemain.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      控制器内门 : ") ;
        sb.append(alarmInnerDoor == null?"未知":(alarmInnerDoor.byteValue()==1?"报警":(alarmInnerDoor.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      控制器外门 : ") ;
        sb.append(alarmOuterDoor == null?"未知":(alarmOuterDoor.byteValue()==1?"报警":(alarmOuterDoor.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      交流缺项 : ") ;
        sb.append(alarmEleMiss == null?"未知":(alarmEleMiss.byteValue()==1?"报警":(alarmEleMiss.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      交流过流 : ") ;
        sb.append(alarmEleExceed == null?"未知":(alarmEleExceed.byteValue()==1?"报警":(alarmEleExceed.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      三相电欠压 : ") ;
        sb.append(alarmEleLowVolt == null?"未知":(alarmEleLowVolt.byteValue()==1?"报警":(alarmEleLowVolt.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      IC卡使能 : ") ;
        sb.append(stateIcEnable == null?"未知":(stateIcEnable.byteValue()==1?"支持":(stateIcEnable.byteValue()==0?"不支持":"未知"))) ;
        sb.append("\n") ;
        return sb.toString() ;
        return sb.toString() + super.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd85Vo.java
copy from pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd93_A3_85Vo.java copy to pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd85Vo.java
File was copied from pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd93_A3_85Vo.java
@@ -4,11 +4,10 @@
//平台/APP远程关闭水泵/阀门   +  刷卡关泵/阀上报
@Data
public class DataCd93_A3_85Vo extends AlarmVo {
public class DataCd85Vo extends AlarmVo {
    public String controllerType;//控制器类型 01(0x01):测控一体阀;57(0x57):井电控制器
    public Integer projectNo ;//控制器类型 0x01:测控一体阀;0x57:井电控制器
    public Byte opResult ;//关泵/阀结果: 0x00:成功 0x81:失败
    public Byte opType ;//关泵/阀方式:  0x00:刷卡闭 0x01:平台关 0x02:APP关  0x03:非法卡关 0x04:水表异常关 0x05:电表异常关 0x06:剩余水量不足关 0x07:剩余金额不足关 0x08:开泵/阀后管道没有流量关 0x09:掉电再上电。
    public String icCardAddr ;//IC卡地址(远程关闭时为0)
    public String icCardNo ;//IC卡编号(17位数字)
@@ -26,7 +25,7 @@
    public String comName ;//命令名称
    public DataCd93_A3_85Vo(String comName){
    public DataCd85Vo(String comName){
        this.comName = comName ;
    }
@@ -42,9 +41,6 @@
        sb.append("\n") ;
        sb.append("      关泵/阀类型 : ") ;
        sb.append(opType == null?"未知":(opType.byteValue() == 0x00 ? "刷卡":(opType.byteValue() == 0x01 ? "平台":(opType.byteValue() == 0x02 ? "APP":(opType.byteValue() == 0x03 ? "非法卡":(opType.byteValue() == 0x04 ? "水表异常":(opType.byteValue() == 0x05 ? "电表异常":(opType.byteValue() == 0x06 ? "剩余水量不足":(opType.byteValue() == 0x07 ? "剩余金额不足":(opType.byteValue() == 0x08 ? "无流量":(opType.byteValue() == 0x09 ? "掉电再上电":"未知"))))))))))) ;
        sb.append("\n") ;
        sb.append("      关启泵/阀结果 : ") ;
        sb.append(opResult == null?"未知":(opResult.byteValue() == 0x00 ? "成功":"失败")) ;
        sb.append("\n") ;
        sb.append("      IC卡地址 : ") ;
        sb.append(icCardAddr == null?"未知":icCardAddr) ;
@@ -85,7 +81,7 @@
        sb.append("      本次使用时间长 : ") ;
        sb.append(thisDuration == null?"未知": thisDuration) ;
        sb.append("\n") ;
        return sb.toString() ;
        return sb.toString() + super.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd93_A3Vo.java
File was renamed from pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd93_A3_85Vo.java
@@ -4,7 +4,7 @@
//平台/APP远程关闭水泵/阀门   +  刷卡关泵/阀上报
@Data
public class DataCd93_A3_85Vo extends AlarmVo {
public class DataCd93_A3Vo extends AlarmVo {
    public String controllerType;//控制器类型 01(0x01):测控一体阀;57(0x57):井电控制器
    public Integer projectNo ;//控制器类型 0x01:测控一体阀;0x57:井电控制器
@@ -26,7 +26,7 @@
    public String comName ;//命令名称
    public DataCd93_A3_85Vo(String comName){
    public DataCd93_A3Vo(String comName){
        this.comName = comName ;
    }
@@ -85,7 +85,7 @@
        sb.append("      本次使用时间长 : ") ;
        sb.append(thisDuration == null?"未知": thisDuration) ;
        sb.append("\n") ;
        return sb.toString() ;
        return sb.toString() + super.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCdC2Vo.java
@@ -34,7 +34,7 @@
        sb.append("      执行结果 : ") ;
        sb.append(success == null?"未知":(success?"成功":"失败")) ;
        sb.append("\n") ;
        return sb.toString() ;
        return sb.toString() + super.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/singleDataSource/DruidDataSourceConfig.java
New file
@@ -0,0 +1,28 @@
package com.dy.common.singleDataSource;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
import java.sql.SQLException;
@Configuration
public class DruidDataSourceConfig {
    //编写方法,注入DruidDataSource
    //还有说明一下为什么我们注入自己的DataSource , 默认的HiKariDatasource失效?
    //1. 默认的数据源 如配置? @ConditionalOnMissingBean({ DataSource.class, XADataSource.class })
    //  解读通过@ConditionalOnMissingBean({ DataSource.class}) 判断如果容器有DataSource Bean 就不注入默认的HiKariDatasource
    @ConfigurationProperties("spring.datasource")
    @Bean
    public DataSource dataSource() throws SQLException {
        //1. 配置了 @ConfigurationProperties("spring.datasource")
        //   就可以读取到application.yml的配置
        //2. 我们就不需要调用DruidDataSource 对象的setXxx, 会自动关联
        DruidDataSource druidDataSource = new DruidDataSource();
        return druidDataSource;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/springUtil/RestTemplateConfiguration.java
File was renamed from pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoRestTemplateConfiguration.java
@@ -1,14 +1,14 @@
package com.dy.common.aop;
package com.dy.common.springUtil;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
/**
 * 为SsoAspect访问单点登录系统提供 RestTemplate
 * 提供 RestTemplate
 */
@Configuration
public class SsoRestTemplateConfiguration {
public class RestTemplateConfiguration {
    @Bean
    public RestTemplate restTemplate(){
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/PipIrrMwRtuApplication.java
@@ -1,6 +1,5 @@
package com.dy.rtuMw;
import com.dy.common.multiDataSource.EnableMultiDataSource;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
@@ -12,13 +11,17 @@
@SpringBootApplication
@EnableAspectJAutoProxy
//@EnableAspectJAutoProxy(exposeProxy=true)//见https://blog.csdn.net/qq_32590703/article/details/109320381
@EnableMultiDataSource
@ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.rtuMw"},
        excludeFilters = {@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {
    excludeFilters = {
        @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {
                com.dy.common.apiDoc.SpringApiConfig.class
        }) })
//@ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.rtuMw"})
        }),
        @ComponentScan.Filter(type = FilterType.REGEX, pattern = {
            //以下写正则表达式,需要对目标类的完全限定名完全匹配,否则不生效
            "com.dy.common.multiDataSource..*"
        })
    }
)
@MapperScan(basePackages={"com.dy.pipIrrGlobal"})
public class PipIrrMwRtuApplication implements CommandLineRunner {
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java
@@ -87,6 +87,14 @@
    public void savePrConctrollerTramp(PrControllerTramp po){
        this.prControllerTrampMapperDao.insert(po) ;
    }
   /**
     * 保存流浪控制器
     * @param po
     */
    @Transactional(rollbackFor = Exception.class)
    public void updatePrConctrollerTramp(PrControllerTramp po){
        this.prControllerTrampMapperDao.updateByPrimaryKeySelective(po) ;
    }
    /////////////////////////////////////////////////
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealAlarmStatusV202404.java
File was renamed from pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealAlarmStatusV202405.java
@@ -14,12 +14,12 @@
 * @Author liurunyu
 * @Date 2024/5/8 14:18
 */
public class TkDealAlarmStatusV202405 extends TaskSurpport {
public class TkDealAlarmStatusV202404 extends TaskSurpport {
    private static final Logger log = LogManager.getLogger(TkDealAlarmStatusV202405.class.getName()) ;
    private static final Logger log = LogManager.getLogger(TkDealAlarmStatusV202404.class.getName()) ;
    //类ID,一定与Tree.xml配置文件中配置一致
    public static final String taskId = "TkDealAlarmStatusV202405" ;
    public static final String taskId = "TkDealAlarmStatusV202404" ;
    /**
     * 执行节点任务:报警及状态
@@ -35,7 +35,7 @@
                Object cdObj = dV202404.subData ;
                if(cdObj != null){
                    try{
                        Object[] objs = this.getTaskResults(TkPreGenObjsV202405.taskId) ;
                        Object[] objs = this.getTaskResults(TkPreGenObjsV202404.taskId) ;
                        DbSv sv = (DbSv)objs[0] ;
                        PrController controller = (PrController)objs[1] ;
                        if(cdObj instanceof DataCd81Vo){
@@ -48,9 +48,9 @@
                            DataCd80_5BVo cdData = (DataCd80_5BVo)(cdObj) ;
                            this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, null, null, null, null) ;
                            this.saveHistory(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, null, null, null, null) ;
                        }else if(cdObj instanceof DataCd93_A3_85Vo){
                        }else if(cdObj instanceof DataCd93_A3Vo){
                            //平台/APP远程关闭水泵/阀门   +  刷卡关泵/阀上报
                            DataCd93_A3_85Vo cdData = (DataCd93_A3_85Vo)(cdObj) ;
                            DataCd93_A3Vo cdData = (DataCd93_A3Vo)(cdObj) ;
                            this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.endDt, null, cdData, null, null, null) ;
                            this.saveHistory(sv, controller, d.getRtuAddr(), cdData.endDt, null, cdData, null, null, null) ;
                        }else if(cdObj instanceof DataCd84Vo){
@@ -86,7 +86,7 @@
                                  String rtuAddr,
                                  String rtuDt,
                                  DataCd80_5BVo vo80_5B,
                                  DataCd93_A3_85Vo vo93_A3_85,
                                  DataCd93_A3Vo vo93_A3_85,
                                  DataCd81Vo vo81,
                                  DataCd84Vo vo84,
                                  DataCdC2Vo voC2) throws Exception {
@@ -120,7 +120,7 @@
                             String rtuAddr,
                             String rtuDt,
                             DataCd80_5BVo vo80_5B,
                             DataCd93_A3_85Vo vo93_A3_85,
                             DataCd93_A3Vo vo93_A3_85,
                             DataCd81Vo vo81,
                             DataCd84Vo vo84,
                             DataCdC2Vo voC2) throws Exception {
@@ -138,7 +138,7 @@
                                    RmAlarmStateLast po,
                                    String rtuDt,
                                    DataCd80_5BVo vo80_5B,
                                    DataCd93_A3_85Vo vo93_A3_85,
                                    DataCd93_A3Vo vo93_A3_85,
                                    DataCd81Vo vo81,
                                    DataCd84Vo vo84,
                                    DataCdC2Vo voC2) throws Exception {
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealControllerNoTrampV202404.java
File was renamed from pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealControllerNoTrampV202405.java
@@ -9,12 +9,12 @@
 * @Date 2024/5/8 14:18
 * 处理非流浪控制器,此任务无具体业务逻辑,只是在任务xml配置文件中,框住其子任务节点
 */
public class TkDealControllerNoTrampV202405 extends TaskSurpport {
public class TkDealControllerNoTrampV202404 extends TaskSurpport {
    private static final Logger log = LogManager.getLogger(TkDealControllerNoTrampV202405.class.getName()) ;
    private static final Logger log = LogManager.getLogger(TkDealControllerNoTrampV202404.class.getName()) ;
    //类ID,一定与Tree.xml配置文件中配置一致
    public static final String taskId = "TkDealControllerNoTrampV202405" ;
    public static final String taskId = "TkDealControllerNoTrampV202404" ;
    /**
     * 执行节点任务
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealControllerTrampV202404.java
File was renamed from pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealControllerTrampV202405.java
@@ -3,19 +3,21 @@
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;
import java.util.Date;
/**
 * @Author liurunyu
 * @Date 2024/5/8 14:18
 */
public class TkDealControllerTrampV202405 extends TaskSurpport {
public class TkDealControllerTrampV202404 extends TaskSurpport {
    private static final Logger log = LogManager.getLogger(TkDealControllerTrampV202405.class.getName()) ;
    private static final Logger log = LogManager.getLogger(TkDealControllerTrampV202404.class.getName()) ;
    //类ID,一定与Tree.xml配置文件中配置一致
    public static final String taskId = "TkDealControllerTrampV202405" ;
    public static final String taskId = "TkDealControllerTrampV202404" ;
    /**
     * 执行节点任务
@@ -23,11 +25,17 @@
     */
    @Override
    public void execute(Object data) {
        Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ;
        Object[] objs = this.getTaskResults(TkPreGenObjsV202404.taskId) ;
        PrControllerTramp tramp = (PrControllerTramp)objs[2] ;
        if(tramp != null){
            DbSv sv = (DbSv)objs[0] ;
            if(tramp.id == null){
            sv.savePrConctrollerTramp(tramp);
            }else{
                tramp.findDt = new Date() ;
                sv.updatePrConctrollerTramp(tramp) ;
            }
        }
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkFindComResponseV202404.java
File was renamed from pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkFindComResponseV202405.java
@@ -10,12 +10,12 @@
 * @Date 2024/5/8 14:18
 * @Description  识别命令响应上报
 */
public class TkFindComResponseV202405 extends TaskSurpport {
public class TkFindComResponseV202404 extends TaskSurpport {
    private static final Logger log = LogManager.getLogger(TkFindComResponseV202405.class.getName()) ;
    private static final Logger log = LogManager.getLogger(TkFindComResponseV202404.class.getName()) ;
    //类ID,一定与Tree.xml配置文件中配置一致
    public static final String taskId = "TkFindComResponseV202405" ;
    public static final String taskId = "TkFindComResponseV202404" ;
    /**
     * 执行节点任务
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkFindReportV202404.java
File was renamed from pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkFindReportV202405.java
@@ -12,12 +12,12 @@
/**
 * 识别非命令应答
 */
public class TkFindReportV202405 extends TaskSurpport {
public class TkFindReportV202404 extends TaskSurpport {
    private static final Logger log = LogManager.getLogger(TkFindReportV202405.class.getName()) ;
    private static final Logger log = LogManager.getLogger(TkFindReportV202404.class.getName()) ;
    //类ID,一定与Tree.xml配置文件中配置一致
    public static final String taskId = "TkFindReportV202405" ;
    public static final String taskId = "TkFindReportV202404" ;
    /**
     * 执行节点任务
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkPreGenObjsV202404.java
File was renamed from pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkPreGenObjsV202405.java
@@ -15,12 +15,12 @@
 * @Author liurunyu
 * @Date 2024/5/8 14:18
 */
public class TkPreGenObjsV202405 extends TaskSurpport {
public class TkPreGenObjsV202404 extends TaskSurpport {
    private static final Logger log = LogManager.getLogger(TkPreGenObjsV202405.class.getName()) ;
    private static final Logger log = LogManager.getLogger(TkPreGenObjsV202404.class.getName()) ;
    //类ID,一定与Tree.xml配置文件中配置一致
    public static final String taskId = "TkPreGenObjsV202405" ;
    public static final String taskId = "TkPreGenObjsV202404" ;
    /**
     * 执行节点任务
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkRtuDealCommandResponseV202404.java
File was renamed from pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkRtuDealCommandResponseV202405.java
@@ -11,12 +11,12 @@
 * @Date 2024/5/8 14:18
 * @Description 处理命令响应上报
 */
public class TkRtuDealCommandResponseV202405 extends TaskSurpport {
public class TkRtuDealCommandResponseV202404 extends TaskSurpport {
    private static final Logger log = LogManager.getLogger(TkRtuDealCommandResponseV202405.class.getName()) ;
    private static final Logger log = LogManager.getLogger(TkRtuDealCommandResponseV202404.class.getName()) ;
    //类ID,一定与Tree.xml配置文件中配置一致
    public static final String taskId = "TkRtuDealCommandResponseV202405" ;
    public static final String taskId = "TkRtuDealCommandResponseV202404" ;
    /**
     * 执行节点任务:处理命令响应上报
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/RtuDataDealTree.xml
@@ -31,18 +31,18 @@
                </task>
            </task>
            <task id="TkFindP206V202404" name="识别P206V202404数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkFindP206V202404">
                <task id="TkPreGenObjsV202405" name="预先准备各对象并识别流浪控制器" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkPreGenObjsV202405">
                <task id="TkPreGenObjsV202404" name="预先准备各对象并识别流浪控制器" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkPreGenObjsV202404">
                    <!-- 处理流浪控制器 -->
                    <task id="TkDealControllerTrampV202405" name="处理流浪控制器" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealControllerTrampV202405" />
                    <task id="TkDealControllerTrampV202404" name="处理流浪控制器" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealControllerTrampV202404" />
                    <!-- 非流浪者RTU,必须放在TkDealControllerTramp后面 -->
                    <task id="TkDealControllerNoTrampV202405" name="非流浪者RTU" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealControllerNoTrampV202405">
                    <task id="TkDealControllerNoTrampV202404" name="非流浪者RTU" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealControllerNoTrampV202404">
                        <!-- 识别非命令应答上行数据 -->
                        <task id="TkFindReportV202405" name="识别非命令应答上行数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkFindReportV202405">
                            <task id="TkDealAlarmStatusV202405" name="控制器报警与状态数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealAlarmStatusV202405" />
                        <task id="TkFindReportV202404" name="识别非命令应答上行数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkFindReportV202404">
                            <task id="TkDealAlarmStatusV202404" name="控制器报警与状态数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealAlarmStatusV202404" />
                        </task>
                        <!-- 识别命令响应数据 -->
                        <task id="TkFindComResponseV202405" name="识别响应命令数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkFindComResponseV202405">
                            <task id="TkRtuDealCommandResponseV202405" name="RTU响应命令数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkRtuDealCommandResponseV202405" >
                        <task id="TkFindComResponseV202404" name="识别响应命令数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkFindComResponseV202404">
                            <task id="TkRtuDealCommandResponseV202404" name="RTU响应命令数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkRtuDealCommandResponseV202404" >
                            </task>
                        </task>
                    </task>
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/application-database.yml
@@ -1,8 +1,10 @@
# 数据源配置
spring:
    #多数据源需要配置
    main:
        allow-bean-definition-overriding: true #设置为true时,后定义的bean会覆盖之前定义的相同名称的bean
    datasource: #配置数据源
        #多个数据源名称在此配置,要求与spring。datasource。[ym][pj]中的一致
        names: ym
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://192.168.91.73:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
        username: root
        password: dysql,;.abc!@#
        druid:
        # 说明: 如果你没有指定useSSL=true ,启动项目会报红警告, 环境的问题,要灵活处理
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/application.yml
@@ -1,6 +1,6 @@
spring:
    profiles:
        include: global, database, database-ym
        include: global, database
#actutor的web端口
management:
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/.gitignore
New file
@@ -0,0 +1,33 @@
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/.mvn/wrapper/maven-wrapper.jar
Binary files differ
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/.mvn/wrapper/maven-wrapper.properties
New file
@@ -0,0 +1,2 @@
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.6/apache-maven-3.9.6-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/mvnw
New file
@@ -0,0 +1,308 @@
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#    https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
# Apache Maven Wrapper startup batch script, version 3.2.0
#
# Required ENV vars:
# ------------------
#   JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
#     e.g. to debug Maven itself, use
#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------
if [ -z "$MAVEN_SKIP_RC" ] ; then
  if [ -f /usr/local/etc/mavenrc ] ; then
    . /usr/local/etc/mavenrc
  fi
  if [ -f /etc/mavenrc ] ; then
    . /etc/mavenrc
  fi
  if [ -f "$HOME/.mavenrc" ] ; then
    . "$HOME/.mavenrc"
  fi
fi
# OS specific support.  $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false
case "$(uname)" in
  CYGWIN*) cygwin=true ;;
  MINGW*) mingw=true;;
  Darwin*) darwin=true
    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
    if [ -z "$JAVA_HOME" ]; then
      if [ -x "/usr/libexec/java_home" ]; then
        JAVA_HOME="$(/usr/libexec/java_home)"; export JAVA_HOME
      else
        JAVA_HOME="/Library/Java/Home"; export JAVA_HOME
      fi
    fi
    ;;
esac
if [ -z "$JAVA_HOME" ] ; then
  if [ -r /etc/gentoo-release ] ; then
    JAVA_HOME=$(java-config --jre-home)
  fi
fi
# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=$(cygpath --unix "$JAVA_HOME")
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=$(cygpath --path --unix "$CLASSPATH")
fi
# For Mingw, ensure paths are in UNIX format before anything is touched
if $mingw ; then
  [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] &&
    JAVA_HOME="$(cd "$JAVA_HOME" || (echo "cannot cd into $JAVA_HOME."; exit 1); pwd)"
fi
if [ -z "$JAVA_HOME" ]; then
  javaExecutable="$(which javac)"
  if [ -n "$javaExecutable" ] && ! [ "$(expr "\"$javaExecutable\"" : '\([^ ]*\)')" = "no" ]; then
    # readlink(1) is not available as standard on Solaris 10.
    readLink=$(which readlink)
    if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then
      if $darwin ; then
        javaHome="$(dirname "\"$javaExecutable\"")"
        javaExecutable="$(cd "\"$javaHome\"" && pwd -P)/javac"
      else
        javaExecutable="$(readlink -f "\"$javaExecutable\"")"
      fi
      javaHome="$(dirname "\"$javaExecutable\"")"
      javaHome=$(expr "$javaHome" : '\(.*\)/bin')
      JAVA_HOME="$javaHome"
      export JAVA_HOME
    fi
  fi
fi
if [ -z "$JAVACMD" ] ; then
  if [ -n "$JAVA_HOME"  ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
      # IBM's JDK on AIX uses strange locations for the executables
      JAVACMD="$JAVA_HOME/jre/sh/java"
    else
      JAVACMD="$JAVA_HOME/bin/java"
    fi
  else
    JAVACMD="$(\unset -f command 2>/dev/null; \command -v java)"
  fi
fi
if [ ! -x "$JAVACMD" ] ; then
  echo "Error: JAVA_HOME is not defined correctly." >&2
  echo "  We cannot execute $JAVACMD" >&2
  exit 1
fi
if [ -z "$JAVA_HOME" ] ; then
  echo "Warning: JAVA_HOME environment variable is not set."
fi
# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {
  if [ -z "$1" ]
  then
    echo "Path not specified to find_maven_basedir"
    return 1
  fi
  basedir="$1"
  wdir="$1"
  while [ "$wdir" != '/' ] ; do
    if [ -d "$wdir"/.mvn ] ; then
      basedir=$wdir
      break
    fi
    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
    if [ -d "${wdir}" ]; then
      wdir=$(cd "$wdir/.." || exit 1; pwd)
    fi
    # end of workaround
  done
  printf '%s' "$(cd "$basedir" || exit 1; pwd)"
}
# concatenates all lines of a file
concat_lines() {
  if [ -f "$1" ]; then
    # Remove \r in case we run on Windows within Git Bash
    # and check out the repository with auto CRLF management
    # enabled. Otherwise, we may read lines that are delimited with
    # \r\n and produce $'-Xarg\r' rather than -Xarg due to word
    # splitting rules.
    tr -s '\r\n' ' ' < "$1"
  fi
}
log() {
  if [ "$MVNW_VERBOSE" = true ]; then
    printf '%s\n' "$1"
  fi
}
BASE_DIR=$(find_maven_basedir "$(dirname "$0")")
if [ -z "$BASE_DIR" ]; then
  exit 1;
fi
MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR
log "$MAVEN_PROJECTBASEDIR"
##########################################################################################
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
# This allows using the maven wrapper in projects that prohibit checking in binary data.
##########################################################################################
wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar"
if [ -r "$wrapperJarPath" ]; then
    log "Found $wrapperJarPath"
else
    log "Couldn't find $wrapperJarPath, downloading it ..."
    if [ -n "$MVNW_REPOURL" ]; then
      wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
    else
      wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
    fi
    while IFS="=" read -r key value; do
      # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' )
      safeValue=$(echo "$value" | tr -d '\r')
      case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;;
      esac
    done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"
    log "Downloading from: $wrapperUrl"
    if $cygwin; then
      wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath")
    fi
    if command -v wget > /dev/null; then
        log "Found wget ... using wget"
        [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet"
        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
            wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
        else
            wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
        fi
    elif command -v curl > /dev/null; then
        log "Found curl ... using curl"
        [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent"
        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
            curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath"
        else
            curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath"
        fi
    else
        log "Falling back to using Java to download"
        javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java"
        javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class"
        # For Cygwin, switch paths to Windows format before running javac
        if $cygwin; then
          javaSource=$(cygpath --path --windows "$javaSource")
          javaClass=$(cygpath --path --windows "$javaClass")
        fi
        if [ -e "$javaSource" ]; then
            if [ ! -e "$javaClass" ]; then
                log " - Compiling MavenWrapperDownloader.java ..."
                ("$JAVA_HOME/bin/javac" "$javaSource")
            fi
            if [ -e "$javaClass" ]; then
                log " - Running MavenWrapperDownloader.java ..."
                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath"
            fi
        fi
    fi
fi
##########################################################################################
# End of extension
##########################################################################################
# If specified, validate the SHA-256 sum of the Maven wrapper jar file
wrapperSha256Sum=""
while IFS="=" read -r key value; do
  case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;;
  esac
done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"
if [ -n "$wrapperSha256Sum" ]; then
  wrapperSha256Result=false
  if command -v sha256sum > /dev/null; then
    if echo "$wrapperSha256Sum  $wrapperJarPath" | sha256sum -c > /dev/null 2>&1; then
      wrapperSha256Result=true
    fi
  elif command -v shasum > /dev/null; then
    if echo "$wrapperSha256Sum  $wrapperJarPath" | shasum -a 256 -c > /dev/null 2>&1; then
      wrapperSha256Result=true
    fi
  else
    echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available."
    echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties."
    exit 1
  fi
  if [ $wrapperSha256Result = false ]; then
    echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2
    echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2
    echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2
    exit 1
  fi
fi
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME")
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=$(cygpath --path --windows "$CLASSPATH")
  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
    MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR")
fi
# Provide a "standardized" way to retrieve the CLI args that will
# work with both Windows and non-Windows executions.
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*"
export MAVEN_CMD_LINE_ARGS
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
# shellcheck disable=SC2086 # safe args
exec "$JAVACMD" \
  $MAVEN_OPTS \
  $MAVEN_DEBUG_OPTS \
  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
  "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/mvnw.cmd
New file
@@ -0,0 +1,205 @@
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements.  See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership.  The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License.  You may obtain a copy of the License at
@REM
@REM    https://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied.  See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
@REM Apache Maven Wrapper startup batch script, version 3.2.0
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM     e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM set title of command window
title %0
@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%
@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
:skipRcPre
@setlocal
set ERROR_CODE=0
@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal
@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome
echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init
echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
@REM ==== END VALIDATION ====
:init
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.
set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir
:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir
:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"
:endDetectBaseDir
IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
:endReadAdditionalConfig
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
    IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B
)
@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
if exist %WRAPPER_JAR% (
    if "%MVNW_VERBOSE%" == "true" (
        echo Found %WRAPPER_JAR%
    )
) else (
    if not "%MVNW_REPOURL%" == "" (
        SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
    )
    if "%MVNW_VERBOSE%" == "true" (
        echo Couldn't find %WRAPPER_JAR%, downloading it ...
        echo Downloading from: %WRAPPER_URL%
    )
    powershell -Command "&{"^
        "$webclient = new-object System.Net.WebClient;"^
        "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
        "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
        "}"^
        "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^
        "}"
    if "%MVNW_VERBOSE%" == "true" (
        echo Finished downloading %WRAPPER_JAR%
    )
)
@REM End of extension
@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file
SET WRAPPER_SHA_256_SUM=""
FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
    IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B
)
IF NOT %WRAPPER_SHA_256_SUM%=="" (
    powershell -Command "&{"^
       "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^
       "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^
       "  Write-Output 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^
       "  Write-Output 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^
       "  Write-Output 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^
       "  exit 1;"^
       "}"^
       "}"
    if ERRORLEVEL 1 goto error
)
@REM Provide a "standardized" way to retrieve the CLI args that will
@REM work with both Windows and non-Windows executions.
set MAVEN_CMD_LINE_ARGS=%*
%MAVEN_JAVA_EXE% ^
  %JVM_CONFIG_MAVEN_PROPS% ^
  %MAVEN_OPTS% ^
  %MAVEN_DEBUG_OPTS% ^
  -classpath %WRAPPER_JAR% ^
  "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
  %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
if ERRORLEVEL 1 goto error
goto end
:error
set ERROR_CODE=1
:end
@endlocal & set ERROR_CODE=%ERROR_CODE%
if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
:skipRcPost
@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%"=="on" pause
if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
cmd /C exit /B %ERROR_CODE%
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/pom.xml
New file
@@ -0,0 +1,141 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>pipIrr-web</artifactId>
        <groupId>com.dy</groupId>
        <version>1.0.0</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <packaging>jar</packaging>
    <artifactId>pipIrr-mwTest-web</artifactId>
    <version>1.0.0</version>
    <name>pipIrr-mw-rtu</name>
    <description>通信中间件中心服务端下发命令测试</description>
    <dependencies>
    </dependencies>
    <build>
        <plugins>
            <!-- 生成不包含依赖jar的可执行jar包
            <plugin>
                !- spring boot提供的maven打包插件 -
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        !-
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                        -
                        <configuration>
                            !- 不加的话最终包名为: ${artifactId}-${version}.jar, 加了的话最终包名: ${artifactId}-${version}-${classifier}.jar  -
                            <classifier>execute</classifier>
                            !- 不指定生成路径的话, 默认保存在 ${build.directory} 下 -
                            <outputDirectory>${project.build.directory}/execute</outputDirectory>
                            <finalName>${artifactId}-${version}</finalName>
                            <layout>ZIP</layout>
                            <mainClass>com.dy.pipIrrBase.PipIrrBaseApplication</mainClass>
                            <includes>
                                <include>
                                    <groupId>com.dy</groupId>
                                    <artifactId>pipIrr-common</artifactId>
                                </include>
                                <include>
                                    <groupId>com.dy</groupId>
                                    <artifactId>pipIrr-global</artifactId>
                                </include>
                            </includes>
                            <excludes>
                                <exclude>
                                    <groupId>org.projectlombok</groupId>
                                    <artifactId>lombok</artifactId>
                                </exclude>
                            </excludes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            -->
            <!-- 拷贝依赖的jar包到lib目录-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <configuration>
                            <!-- 不加的话最终包名为: ${artifactId}-${version}.jar, 加了的话最终包名: ${artifactId}-${version}-${classifier}.jar
                            <classifier>execute</classifier>
                            -->
                            <!-- ${project.build.directory}是maven变量,内置的,表示target目录,如果不写,将在根目录下创建/lib -->
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                            <!-- excludeTransitive:是否不包含间接依赖包,比如我们依赖A,但是A又依赖了B,我们是否也要把B打进去 默认不打-->
                            <excludeTransitive>false</excludeTransitive>
                            <!-- 复制的jar文件去掉版本信息 -->
                            <stripVersion>false</stripVersion>
                            <finalName>${project.artifactId}-${project.version}</finalName>
                            <layout>ZIP</layout>
                            <mainClass>com.dy.rtuMw.PipIrrMwAcceptApplication</mainClass>
                            <includes>
                                <include>
                                    <groupId>com.dy</groupId>
                                    <artifactId>pipIrr-common</artifactId>
                                </include>
                                <include>
                                    <groupId>com.dy</groupId>
                                    <artifactId>pipIrr-global</artifactId>
                                </include>
                            </includes>
                            <excludes>
                                <exclude>
                                    <groupId>org.projectlombok</groupId>
                                    <artifactId>lombok</artifactId>
                                </exclude>
                            </excludes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <!-- 设置java编译版本,运行环境版本 -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <!-- source: 源代码编译版本;target: 目标平台编译版本;encoding: 字符集编码。 -->
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>${encoding}</encoding>
                </configuration>
            </plugin>
            <plugin>
                <!-- 解决资源文件的编码问题 -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <encoding>${encoding}</encoding>
                </configuration>
            </plugin>
            <plugin>
                <!-- maven里执行测试用例的插件 -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
            <plugin>
                <!-- 下面解决:当进行Maven Lifecycle package时报错:Could not find artifact org.apache.mina:mina-core:bundle:2.2.1 in maven (https://repo1.maven.org/maven2/)-->
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <extensions>true</extensions>
            </plugin>
        </plugins>
    </build>
</project>
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/PipIrrMwTestWebApplication.java
New file
@@ -0,0 +1,49 @@
package com.dy.pipIrrMwTestWeb;
import com.dy.common.webUtil.BaseResponse;
import com.dy.pipIrrMwTestWeb.test.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.FilterType;
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) //禁止启动数据库连接池
@ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.pipIrrMwTestWeb"},
        excludeFilters = {
                @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {
                        com.dy.common.apiDoc.SpringApiConfig.class //一种排除类的方式
                }),
                @ComponentScan.Filter(type = FilterType.REGEX, pattern = {
                        //二种排除类的方式,写正则表达式,需要对目标类的完全限定名完全匹配,否则不生效
                        "com.dy.common.aop..*",
                        "com.dy.common.apiDoc..*",
                        "com.dy.common.multiDataSource..*",
                        "com.dy.common.mybatis..*",
                        "com.dy.common.singleDataSource..*",
                        "com.dy.common.webFilter..*",
                        "com.dy.common.webListener..*"
                })
        }
)
public class PipIrrMwTestWebApplication implements CommandLineRunner {
    @Autowired
    private Test test ;
    public static void main(String[] args) {
        SpringApplication.run(PipIrrMwTestWebApplication.class, args);
    }
    /**
     * Spring容器启动完成后,执行下面方法
     * @param args 参数
     * @throws Exception 异常
     */
    @Override
    public void run(String... args) throws Exception {
        BaseResponse res = test.test() ;
        System.out.println(res.toString());
    }
}
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/Test.java
New file
@@ -0,0 +1,77 @@
package com.dy.pipIrrMwTestWeb.test;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.downVos.ComCd10Vo;
import com.dy.common.mw.protocol.p206V202404.downVos.ComCd15Vo;
import com.dy.common.mw.protocol.p206V202404.downVos.ComCd65Vo;
import com.dy.common.webUtil.BaseResponse;
import org.springframework.stereotype.Component;
/**
 * @Author: liurunyu
 * @Date: 2024/5/14 14:20
 * @Description
 */
@Component
public class Test extends TestSupport{
    /**
     * 连接通信中间件测试
     * @return
     */
    public BaseResponse test(){
        //return this.connect() ;
        return this.cd50() ;
    }
    /**
     * 测试连通性
     * @return
     */
    private BaseResponse connect(){
        return this.sendTest() ;
    }
    //设置终端地址(AFN=0x10H)
    private BaseResponse cd10(){
        ComCd10Vo comVo = new ComCd10Vo() ;
        comVo.controllerType = Test.controllerType ;
        comVo.projectNo = Test.projectNo  ;
        comVo.rtuNewAddr = Test.rtuAddr ;
        return this.sendCom2Mw(this.command(CodeV202404.cd_10, comVo, null)) ;
    }
    //查询设备终端地址(AFN=0x50H)
    private BaseResponse cd50(){
        return this.sendCom2Mw(this.command(CodeV202404.cd_50, this.comCdXyVo(), null)) ;
    }
    //查询设备终端实时值(AFN=0x5BH)
    private BaseResponse cd5B(){
        return this.sendCom2Mw(this.command(CodeV202404.cd_5B, this.comCdXyVo(), null)) ;
    }
    //查询设备终端用户用水记录(AFN=0x65H)
    private BaseResponse cd65(){
        ComCd65Vo comVo = new ComCd65Vo() ;
        comVo.controllerType = Test.controllerType ;
        comVo.projectNo = Test.projectNo  ;
        comVo.page = 1 ;
        return this.sendCom2Mw(this.command(CodeV202404.cd_65, comVo, null)) ;
    }
    //清除设备终端用户用水记录 (AFN=0x97H)
    private BaseResponse cd97(){
        return this.sendCom2Mw(this.command(CodeV202404.cd_97, this.comCdXyVo(), null)) ;
    }
    //远程用户充值 (AFN=0x15H)
    private BaseResponse cd15(){
        ComCd15Vo comVo = new ComCd15Vo() ;
        comVo.controllerType = Test.controllerType ;
        comVo.projectNo = Test.projectNo  ;
        comVo.icCardAddr = "" ;//IC卡地址(8位数字或字母)
        comVo.icCardNo = "" ;//用户卡序列号(17位数字)(6字节BCD,2字节HEX)
        comVo.chargeMoney = 123.45 ;//单位:元  2位小数点(最大值 99999999.99)
        comVo.chargeWater = 123.45 ;//单位:m3  2位小数点(最大值 99999999.99)
        comVo.flowNo = "" ;//流水号(12位数字)
        return this.sendCom2Mw(this.command(CodeV202404.cd_65, comVo, null)) ;
    }
}
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/TestSupport.java
New file
@@ -0,0 +1,107 @@
package com.dy.pipIrrMwTestWeb.test;
import com.dy.common.mw.protocol.Command;
import com.dy.common.mw.protocol.CommandType;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ProtocolConstantV206V202404;
import com.dy.common.mw.protocol.p206V202404.downVos.ComCdXyVo;
import com.dy.common.webUtil.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
/**
 * @Author: liurunyu
 * @Date: 2024/5/14 17:32
 * @Description
 */
public class TestSupport {
    protected static String mwUrlTest = "http://127.0.0.1:8070/rtuMw/com/test" ;
    protected static String mwUrlSendCom = "http://127.0.0.1:8070/rtuMw/com/send" ;
    protected static String rtuAddr = "37142501020100215" ;
    protected static String rtuResultSendWebUrl = "http://127.0.0.1:8080/test" ;
    protected static String controllerType = "57" ;
    protected static Integer projectNo = 10 ;
    protected static String icCardAddr = "04BEA5BB" ;
    protected static String icCardNo = "04BEA5BB" ;
    private RestTemplate restTemplate;
    @Autowired
    public void setRestTemplate(RestTemplate restTemplate){
        this.restTemplate = restTemplate ;
    }
    protected ComCdXyVo comCdXyVo(){
        ComCdXyVo comVo = new ComCdXyVo() ;
        comVo.controllerType = controllerType ;
        comVo.projectNo = projectNo  ;
        return comVo ;
    }
    protected Command command(String code, Object param, String comId){
        Command com = new Command() ;
        com.id = comId==null?Command.defaultId:(comId.trim().equals("")?Command.defaultId:comId) ;//实际应用中,替换成数据库记录id
        com.protocol = ProtocolConstantV206V202404.protocolName ;
        com.code = code ;
        com.rtuAddr = rtuAddr ;
        com.type = CommandType.outerCommand ;
        com.noRtMwDealRes = false ;
        com.rtuResultSendWebUrl = rtuResultSendWebUrl ;
        com.param = param ;
        return com ;
    }
    /**
     * 连接通信中间件测试
     * @return
     */
    protected BaseResponse sendTest(){
        String url = UriComponentsBuilder.fromUriString(mwUrlTest)
                .build()
                .toUriString();
        HttpHeaders headers = new HttpHeaders();
        HttpEntity<?> httpEntity = new HttpEntity<>(headers);
        ResponseEntity<BaseResponse> response = null;
        try {
            // 通过Get方式调用接口
            response = restTemplate.exchange(url, HttpMethod.GET, httpEntity, BaseResponse.class);
        } catch (Exception e) {
            e.printStackTrace();
        }
        assert response != null;
        return response.getBody();
    }
    /**
     * 发送命令
     * @return
     */
    protected BaseResponse sendCom2Mw(Command com){
        String url = UriComponentsBuilder.fromUriString(mwUrlSendCom)
                .build()
                .toUriString();
        HttpHeaders headers = new HttpHeaders();
        HttpEntity<Command> httpEntity = new HttpEntity<>(com, headers);
        ResponseEntity<BaseResponse> response = null;
        try {
            // 通过Post方式调用接口
            response = restTemplate.exchange(url, HttpMethod.POST, httpEntity, BaseResponse.class);
        } catch (Exception e) {
            e.printStackTrace();
        }
        assert response != null;
        return response.getBody();
    }
}
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/resources/application.yml
New file
@@ -0,0 +1,29 @@
logging:
    charset:
        console: UTF-8
    config:
        classpath: log4j2.yml
#web服务端口,tomcat默认是8080
server:
    error:
        whitelabel:
            enabled: false
    port: 65535
    servlet:
        context-path: /test/web #web访问上下文路径
        encoding:
            #取消默认的字符集编码
            enabled: true
            #设置强制使用指定字符编码集
            force: true
            #使用的字符编码
            charset: utf-8
#禁止启动数据库连接池
spring:
    #autoconfigure:
    #    exclude:
    #        - org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
    #        - org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration
    #        - org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/test/java/com/dy/pipIrrMwTestWeb/PipIrrMwTestWebApplicationTests.java
New file
@@ -0,0 +1,13 @@
package com.dy.pipIrrMwTestWeb;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class PipIrrMwTestWebApplicationTests {
    @Test
    void contextLoads() {
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/PipIrrBaseApplication.java
@@ -6,11 +6,18 @@
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.context.annotation.FilterType;
@SpringBootApplication
@EnableAspectJAutoProxy
@EnableMultiDataSource
@ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.pipIrrBase"})
@ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.pipIrrBase"},
        excludeFilters = {
                @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {
                        com.dy.common.singleDataSource.DruidDataSourceConfig.class //排除单数据源
                })
        }
)
@MapperScan(basePackages={"com.dy.pipIrrGlobal.daoBa"})
public class PipIrrBaseApplication {
pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/PipIrrDemoApplication.java
@@ -6,11 +6,18 @@
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.context.annotation.FilterType;
@SpringBootApplication
@EnableAspectJAutoProxy
@EnableMultiDataSource
@ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.pipIrrDemo"})
@ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.pipIrrDemo"},
        excludeFilters = {
                @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {
                        com.dy.common.singleDataSource.DruidDataSourceConfig.class //排除单数据源
                })
        }
)
@MapperScan(basePackages={"com.dy.pipIrrGlobal.daoDemo"})
public class PipIrrDemoApplication {
pipIrr-platform/pipIrr-web/pipIrr-web-gis/src/main/java/com/dy/pipIrrGis/PipIrrGisApplication.java
@@ -6,12 +6,19 @@
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.context.annotation.FilterType;
@SpringBootApplication
@EnableAspectJAutoProxy
@EnableMultiDataSource
@ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.pipIrrGis"})
@ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.pipIrrGis"},
        excludeFilters = {
                @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {
                        com.dy.common.singleDataSource.DruidDataSourceConfig.class //排除单数据源
                })
        }
)
@MapperScan(basePackages={"com.dy.pipIrrGlobal.daoBa"})
public class PipIrrGisApplication {
pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/java/com/dy/pipIrrIrrigate/PipIrrIrrigateApplication.java
@@ -6,11 +6,18 @@
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.context.annotation.FilterType;
@SpringBootApplication
@EnableAspectJAutoProxy
@EnableMultiDataSource
@ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.pipIrrIrrigate"})
@ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.pipIrrIrrigate"},
        excludeFilters = {
                @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {
                        com.dy.common.singleDataSource.DruidDataSourceConfig.class //排除单数据源
                })
        }
)
@MapperScan({"com.dy.pipIrrGlobal.daoIr", "com.dy.pipIrrGlobal.daoIr"})
public class PipIrrIrrigateApplication {
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/PipIrrProjectApplication.java
@@ -6,6 +6,7 @@
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.context.annotation.FilterType;
/**
 * @author ZhuBaoMin
@@ -17,7 +18,13 @@
@SpringBootApplication
@EnableAspectJAutoProxy
@EnableMultiDataSource
@ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.pipIrrProject"})
@ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.pipIrrProject"},
        excludeFilters = {
                @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {
                        com.dy.common.singleDataSource.DruidDataSourceConfig.class //排除单数据源
                })
        }
)
@MapperScan({"com.dy.pipIrrGlobal.daoPr", "com.dy.pipIrrGlobal.daoBa"})
public class PipIrrProjectApplication {
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/PipIrrRemoteApplication.java
@@ -6,11 +6,18 @@
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.context.annotation.FilterType;
@SpringBootApplication
@EnableAspectJAutoProxy
@EnableMultiDataSource
@ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.pipIrrRemote"})
@ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.pipIrrRemote"},
        excludeFilters = {
                @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {
                        com.dy.common.singleDataSource.DruidDataSourceConfig.class //排除单数据源
                })
        }
)
@MapperScan(basePackages={"com.dy.pipIrrGlobal.daoBa"})
public class PipIrrRemoteApplication {
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/PipIrrSellApplication.java
@@ -7,6 +7,7 @@
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.context.annotation.FilterType;
/**
 * @author ZhuBaoMin
@@ -19,7 +20,13 @@
@EnableAspectJAutoProxy
@EnableMultiDataSource
@EnableConfigurationProperties
@ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.pipIrrSell"})
@ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.pipIrrSell"},
        excludeFilters = {
                @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {
                        com.dy.common.singleDataSource.DruidDataSourceConfig.class //排除单数据源
                })
        }
)
@MapperScan({"com.dy.pipIrrGlobal.daoSe", "com.dy.pipIrrGlobal.daoBa"})
public class PipIrrSellApplication {
pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/PipIrrSsoApplication.java
@@ -8,12 +8,19 @@
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.context.annotation.FilterType;
@SpringBootApplication
@EnableAspectJAutoProxy
@EnableMultiDataSource
@EnableCaching//开启使用缓存
@ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.sso"})
@ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.sso"},
        excludeFilters = {
                @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {
                        com.dy.common.singleDataSource.DruidDataSourceConfig.class //排除单数据源
                })
        }
)
@MapperScan(basePackages={"com.dy.pipIrrGlobal.daoBa"})
@Slf4j
public class PipIrrSsoApplication {
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/PipIrrStatisticsApplication.java
@@ -6,11 +6,18 @@
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.context.annotation.FilterType;
@SpringBootApplication
@EnableAspectJAutoProxy
@EnableMultiDataSource
@ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.pipIrrStatistics"})
@ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.pipIrrStatistics"},
        excludeFilters = {
                @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {
                        com.dy.common.singleDataSource.DruidDataSourceConfig.class //排除单数据源
                })
        }
)
@MapperScan(basePackages={"com.dy.pipIrrGlobal.daoBa"})
public class PipIrrStatisticsApplication {
pipIrr-platform/pipIrr-web/pom.xml
@@ -18,6 +18,7 @@
    <description>此模块为其他web模块的局部全局模块,只定义依赖</description>
    <modules>
        <module>pipIrr-mwTest-web</module>
        <module>pipIrr-web-demo</module>
        <module>pipIrr-web-sso</module>
        <module>pipIrr-web-base</module>