Administrator
2024-07-02 854e951894deaa54b26590f8575474ed7a5f5b88
Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV
5 文件已重命名
31个文件已修改
16个文件已添加
13个文件已删除
3855 ■■■■■ 已修改文件
pipIrr-platform/pipIrr-common/pom.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/Com21Vo.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/Com37Vo.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/Com38Vo.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/Com39Vo.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/Com3AVo.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/Com3BVo.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/Com3CVo.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_21_Down.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_37_Down.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_38_Down.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_39_Down.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_3A_Down.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_3B_Down.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_3C_Down.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_51_Down.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_51_Up.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_5E_Down.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_5E_Up.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_B0_Down.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd51Vo.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd5EVo.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd84Vo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_84_Up.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd84Vo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webFilter/UserTokenFilter.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webFilter/UserTokenNoFilter.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaPrivilegeMapper.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaRolePrivilegeMapper.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseHistoryMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseLastMapper.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveHistoryMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveLastMapper.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaPrivilege.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaRolePrivilege.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmOpenCloseHistory.java 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmOpenCloseLast.java 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmOpenCloseValveHistory.java 234 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmOpenCloseValveLast.java 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaPrivilegeMapper.xml 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaRolePrivilegeMapper.xml 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseHistoryMapper.xml 375 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseLastMapper.xml 383 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveLastMapper.xml 127 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealOpenValveReport.java 79 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealAlarmStatusV202404.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealCloseValveReportV202404.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealOpenValveReportV202404.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/PipIrrMwTestWebApplication.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/common/CodeLocal.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/common/CommandResultCtrl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/ComSupportP206V1_0_0.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/CommandP206V1_0_0Ctrl.java 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V202404test/ComSupportP206V202404.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V202404test/CommandP206V202404Ctrl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/CommandP206V100Ctrl.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/log4j2.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/config/WebListenerConfiguration.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pom.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pom.xml 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/pom.xml
@@ -31,7 +31,11 @@
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java
@@ -8,20 +8,20 @@
    public static final String cd_12 = "12" ;//设置工作模式(未实现)
    public static final String cd_1F = "1F" ;//设置流量参数上限值(未实现)
    public static final String cd_21 = "21" ;//设置服务端IP和端口
    public static final String cd_36 = "36" ;//设置主信道IP和端口
    public static final String cd_36 = "36" ;//设置主信道IP和端口(无此命令)
    public static final String cd_37 = "37" ;//设置流量采集周期
    public static final String cd_38 = "38" ;//设置用户余额报警值
    public static final String cd_39 = "39" ;//设置电池电压报警值
    public static final String cd_3A = "3A" ;//设置阀门堵转电流
    public static final String cd_3B = "3B" ;//设置阀门超时时间
    public static final String cd_3C = "3C" ;//设置自报周期
    public static final String cd_3D = "3D" ;//设置阶梯水价
    public static final String cd_3D = "3D" ;//设置阶梯水价(RTU未实现)
    public static final String cd_3E = "3E" ;//设置黑名单(未实现)
    public static final String cd_50 = "50" ;//查询遥测站终端地址
    public static final String cd_51 = "51" ;//查询时钟(未实现)
    public static final String cd_51 = "51" ;//查询时钟
    public static final String cd_52 = "52" ;//查询工作模式(未实现)
    public static final String cd_53 = "53" ;//查询自报种类及时间间隔(未实现)
    public static final String cd_5E = "5E" ;//查询终端状态和报警状态(未实现)
    public static final String cd_5E = "5E" ;//查询终端状态和报警状态
    public static final String cd_65 = "65" ;//查询自报周期
    public static final String cd_66 = "66" ;//查询IP和端口
    public static final String cd_67 = "67" ;//查询流量采集周期
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java
@@ -153,6 +153,7 @@
     */
    public static String icCardType(byte type){
        return switch (type) {
            case 0 -> "无卡";
            case 1 -> "用户卡";
            case 2 -> "管理员卡";
            case 3 -> "调试卡";
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/Com21Vo.java
New file
@@ -0,0 +1,14 @@
package com.dy.common.mw.protocol.p206V1_0_0.downVos;
import lombok.Data;
/**
 * @Author: liurunyu
 * @Date: 2024/6/29 7:00
 * @Description
 */
@Data
public class Com21Vo {
    public String ip ;//IP(例如 125.235.35.89)
    public Integer port ;//端口号(0~65536)
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/Com37Vo.java
New file
@@ -0,0 +1,10 @@
package com.dy.common.mw.protocol.p206V1_0_0.downVos;
/**
 * @Author: liurunyu
 * @Date: 2024/6/29 7:08
 * @Description
 */
public class Com37Vo {
    public Integer seconds ;//流量采集周期(秒)(大于1)
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/Com38Vo.java
New file
@@ -0,0 +1,10 @@
package com.dy.common.mw.protocol.p206V1_0_0.downVos;
/**
 * @Author: liurunyu
 * @Date: 2024/6/29 7:08
 * @Description
 */
public class Com38Vo {
    public Double remainMoneyAlarm ;//用户余额报警值(大于1.0)
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/Com39Vo.java
New file
@@ -0,0 +1,10 @@
package com.dy.common.mw.protocol.p206V1_0_0.downVos;
/**
 * @Author: liurunyu
 * @Date: 2024/6/29 7:08
 * @Description
 */
public class Com39Vo {
    public Double batteryVoltAlarm ;//电池电压报警值(大于0.1)
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/Com3AVo.java
New file
@@ -0,0 +1,10 @@
package com.dy.common.mw.protocol.p206V1_0_0.downVos;
/**
 * @Author: liurunyu
 * @Date: 2024/6/29 7:08
 * @Description
 */
public class Com3AVo {
    public Double current ;//阀门堵转电流(大于0)
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/Com3BVo.java
New file
@@ -0,0 +1,10 @@
package com.dy.common.mw.protocol.p206V1_0_0.downVos;
/**
 * @Author: liurunyu
 * @Date: 2024/6/29 7:08
 * @Description
 */
public class Com3BVo {
    public Integer second ;//阀门超时时间(秒)(大于1)
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/Com3CVo.java
New file
@@ -0,0 +1,10 @@
package com.dy.common.mw.protocol.p206V1_0_0.downVos;
/**
 * @Author: liurunyu
 * @Date: 2024/6/29 7:08
 * @Description
 */
public class Com3CVo {
    public Integer minute ;//自报周期(分钟)(大于0)
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_21_Down.java
@@ -1,11 +1,15 @@
package com.dy.common.mw.protocol.p206V1_0_0.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0;
import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com21Vo;
import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate;
import com.dy.common.mw.protocol.p206V202404.downVos.ComCd21Vo;
import com.dy.common.util.ByteUtil;
import com.dy.common.util.ByteUtilUnsigned;
@@ -52,57 +56,69 @@
     * @throws Exception 异常
     */
    public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception {
        CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ;
        byte[] bytes ;
        byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ;
        byte index = 0 ;
        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
        index++ ;
        bsHead[index] = 0 ;//帧长度
        index++ ;
        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
        index++ ;
        bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ;
        index++ ;
        GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
        index += 5 ;
        ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ;
        /*
        参数格式: ip1,ip2,ip3,ip4,port
         */
        if(para.param == null){
            throw new Exception("未提供命令参数数据,不能构造功能码为" + para.commandCode + "的下行命令") ;
        if(para.param == null) {
            throw new Exception("命令参数为null") ;
        }else{
            JSONObject obj = (JSONObject) para.param;
            String json = obj.toJSONString();
            Com21Vo cvo = JSON.parseObject(json, Com21Vo.class);
            if(cvo == null){
                throw new Exception("json转Com21Vo为null") ;
            }
            if(cvo.ip == null || cvo.ip.equals("")){
                throw new Exception("IP不能为空") ;
            }
            if(cvo.ip.length() > 15){
                throw new Exception("IP最大长度是15个字符") ;
            }
            if(cvo.port < 0 || cvo.port > 65535){
                throw new Exception("端口号必须是0~65535范围内的整数") ;
            }
            CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ;
            byte[] bytes ;
            byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ;
            byte index = 0 ;
            bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
            index++ ;
            bsHead[index] = 0 ;//帧长度
            index++ ;
            bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
            index++ ;
            bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ;
            index++ ;
            GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
            index += 5 ;
            ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ;
            index = 0 ;
            byte[] bs = new byte[13] ;
            String ipPort = (String)para.param ;
            String[] ipPorts = ipPort.split(",") ;
            String[] ipPorts = cvo.ip.split(".") ;
            ByteUtilUnsigned.short2Bytes_LE(bs, (byte) Integer.parseInt(ipPorts[0]), index++);
            ByteUtilUnsigned.short2Bytes_LE(bs, (byte) Integer.parseInt(ipPorts[1]), index++);
            ByteUtilUnsigned.short2Bytes_LE(bs, (byte) Integer.parseInt(ipPorts[2]), index++);
            ByteUtilUnsigned.short2Bytes_LE(bs, (byte) Integer.parseInt(ipPorts[3]), index++);
            ByteUtilUnsigned.short2Bytes_LE(bs, Integer.parseInt(ipPorts[4]), index);
            ByteUtilUnsigned.short2Bytes_LE(bs, cvo.port, index);
            index += 2 ;
            GlCreate.createPw(bs, index);
            index += 2 ;
            GlCreate.createTp(bs, index);
            bytes = ByteUtil.bytesMerge(bsHead, bs) ;
            GlCreate.createLen(bytes);//长度放字节数组中
            byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC和尾叠加字节数组中
            bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
            return bytes ;
        }
        GlCreate.createLen(bytes);//长度放字节数组中
        byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC和尾叠加字节数组中
        bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
        return bytes ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_37_Down.java
@@ -1,10 +1,14 @@
package com.dy.common.mw.protocol.p206V1_0_0.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0;
import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com21Vo;
import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com37Vo;
import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate;
import com.dy.common.util.ByteUtil;
import com.dy.common.util.ByteUtilUnsigned;
@@ -52,48 +56,59 @@
     * @throws Exception 异常
     */
    public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception {
        CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ;
        byte[] bytes ;
        byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ;
        byte index = 0 ;
        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
        if(para.param == null) {
            throw new Exception("命令参数为null") ;
        }else {
            JSONObject obj = (JSONObject) para.param;
            String json = obj.toJSONString();
            Com37Vo cvo = JSON.parseObject(json, Com37Vo.class);
            if (cvo == null) {
                throw new Exception("json转Com21Vo为null");
            }
            if (cvo.seconds == null) {
                throw new Exception("采集周期不能为空");
            }
            if (cvo.seconds < 1) {
                throw new Exception("采集周期不能小于1");
            }
            CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1();
            byte[] bytes;
            byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code];
            byte index = 0;
            bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte;
        index++ ;
        bsHead[index] = 0 ;//帧长度
            index++;
            bsHead[index] = 0;//帧长度
        index++ ;
        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
            index++;
            bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte;
        index++ ;
        bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ;
            index++;
            bsHead[index] = commonV1_0_1.createCtrl((byte) 0, (byte) 0);
        index++ ;
        GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
        index += 5 ;
            index++;
            GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
            index += 5;
        ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ;
            ByteUtil.hex2Bytes(para.commandCode, bsHead, index);
        if(para.param == null){
            throw new Exception("未提供命令参数数据,不能构造功能码为" + para.commandCode + "的下行命令") ;
        }else{
            index = 0 ;
            byte[] bs = new byte[10] ;
            Integer second = (Integer)para.param ;
            ByteUtilUnsigned.short2Bytes_LE(bs, second.shortValue(), index);
            index += 2 ;
            index = 0;
            byte[] bs = new byte[10];
            ByteUtilUnsigned.short2Bytes_LE(bs, cvo.seconds.shortValue(), index);
            index += 2;
            GlCreate.createPw(bs, index);
            index += 2 ;
            index += 2;
            GlCreate.createTp(bs, index);
            bytes = ByteUtil.bytesMerge(bsHead, bs) ;
            bytes = ByteUtil.bytesMerge(bsHead, bs);
            GlCreate.createLen(bytes);//长度放字节数组中
            byte[] bsTail = GlCreate.createCrcTail(bytes);//CRC和尾叠加字节数组中
            bytes = ByteUtil.bytesMerge(bytes, bsTail);
            return bytes;
        }
        GlCreate.createLen(bytes);//长度放字节数组中
        byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC和尾叠加字节数组中
        bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
        return bytes ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_38_Down.java
@@ -1,10 +1,13 @@
package com.dy.common.mw.protocol.p206V1_0_0.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0;
import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com38Vo;
import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate;
import com.dy.common.util.ByteUtil;
import com.dy.common.util.ByteUtilUnsigned;
@@ -52,49 +55,61 @@
     * @throws Exception 异常
     */
    public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception {
        CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ;
        byte[] bytes ;
        byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ;
        byte index = 0 ;
        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
        if(para.param == null) {
            throw new Exception("命令参数为null") ;
        }else {
            JSONObject obj = (JSONObject) para.param;
            String json = obj.toJSONString();
            Com38Vo cvo = JSON.parseObject(json, Com38Vo.class);
            if (cvo == null) {
                throw new Exception("json转Com21Vo为null");
            }
            if (cvo.remainMoneyAlarm == null) {
                throw new Exception("用户余额报警值不能为空");
            }
            if (cvo.remainMoneyAlarm < 1.0) {
                throw new Exception("用户余额报警值不能小于1.0");
            }
            CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1();
            byte[] bytes;
            byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code];
            byte index = 0;
            bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte;
        index++ ;
        bsHead[index] = 0 ;//帧长度
            index++;
            bsHead[index] = 0;//帧长度
        index++ ;
        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
            index++;
            bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte;
        index++ ;
        bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ;
            index++;
            bsHead[index] = commonV1_0_1.createCtrl((byte) 0, (byte) 0);
        index++ ;
        GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
        index += 5 ;
            index++;
            GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
            index += 5;
        ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ;
            ByteUtil.hex2Bytes(para.commandCode, bsHead, index);
        if(para.param == null){
            throw new Exception("未提供命令参数数据,不能构造功能码为" + para.commandCode + "的下行命令") ;
        }else{
            index = 0 ;
            byte[] bs = new byte[10] ;
            Double remainMoneyAlarmDb = ((Double)para.param) * 100 ;
            Integer remainMoneyAlarmInt = remainMoneyAlarmDb.intValue() ;
            index = 0;
            byte[] bs = new byte[10];
            Double remainMoneyAlarmDb = cvo.remainMoneyAlarm * 100.0;
            Integer remainMoneyAlarmInt = remainMoneyAlarmDb.intValue();
            ByteUtilUnsigned.short2Bytes_LE(bs, remainMoneyAlarmInt.shortValue(), index);
            index += 2 ;
            index += 2;
            GlCreate.createPw(bs, index);
            index += 2 ;
            index += 2;
            GlCreate.createTp(bs, index);
            bytes = ByteUtil.bytesMerge(bsHead, bs) ;
            bytes = ByteUtil.bytesMerge(bsHead, bs);
            GlCreate.createLen(bytes);//长度放字节数组中
            byte[] bsTail = GlCreate.createCrcTail(bytes);//CRC和尾叠加字节数组中
            bytes = ByteUtil.bytesMerge(bytes, bsTail);
            return bytes;
        }
        GlCreate.createLen(bytes);//长度放字节数组中
        byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC和尾叠加字节数组中
        bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
        return bytes ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_39_Down.java
@@ -1,10 +1,14 @@
package com.dy.common.mw.protocol.p206V1_0_0.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0;
import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com38Vo;
import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com39Vo;
import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate;
import com.dy.common.util.ByteUtil;
import com.dy.common.util.ByteUtilUnsigned;
@@ -52,49 +56,61 @@
     * @throws Exception 异常
     */
    public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception {
        CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ;
        byte[] bytes ;
        byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ;
        byte index = 0 ;
        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
        if(para.param == null) {
            throw new Exception("命令参数为null") ;
        }else {
            JSONObject obj = (JSONObject) para.param;
            String json = obj.toJSONString();
            Com39Vo cvo = JSON.parseObject(json, Com39Vo.class);
            if (cvo == null) {
                throw new Exception("json转Com21Vo为null");
            }
            if (cvo.batteryVoltAlarm == null) {
                throw new Exception("电池电压报警值不能为空");
            }
            if (cvo.batteryVoltAlarm < 0.1) {
                throw new Exception("电池电压报警值不能小于0.1");
            }
            CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1();
            byte[] bytes;
            byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code];
            byte index = 0;
            bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte;
        index++ ;
        bsHead[index] = 0 ;//帧长度
            index++;
            bsHead[index] = 0;//帧长度
        index++ ;
        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
            index++;
            bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte;
        index++ ;
        bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ;
            index++;
            bsHead[index] = commonV1_0_1.createCtrl((byte) 0, (byte) 0);
        index++ ;
        GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
        index += 5 ;
            index++;
            GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
            index += 5;
        ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ;
            ByteUtil.hex2Bytes(para.commandCode, bsHead, index);
        if(para.param == null){
            throw new Exception("未提供命令参数数据,不能构造功能码为" + para.commandCode + "的下行命令") ;
        }else{
            index = 0 ;
            byte[] bs = new byte[10] ;
            Double batteryvoltAlarmDb = ((Double)para.param) * 100 ;
            Integer batteryvoltAlarmInt = batteryvoltAlarmDb.intValue() ;
            index = 0;
            byte[] bs = new byte[10];
            Double batteryvoltAlarmDb = cvo.batteryVoltAlarm * 100;
            Integer batteryvoltAlarmInt = batteryvoltAlarmDb.intValue();
            ByteUtilUnsigned.short2Bytes_LE(bs, batteryvoltAlarmInt.shortValue(), index);
            index += 2 ;
            index += 2;
            GlCreate.createPw(bs, index);
            index += 2 ;
            index += 2;
            GlCreate.createTp(bs, index);
            bytes = ByteUtil.bytesMerge(bsHead, bs) ;
            bytes = ByteUtil.bytesMerge(bsHead, bs);
            GlCreate.createLen(bytes);//长度放字节数组中
            byte[] bsTail = GlCreate.createCrcTail(bytes);//CRC和尾叠加字节数组中
            bytes = ByteUtil.bytesMerge(bytes, bsTail);
            return bytes;
        }
        GlCreate.createLen(bytes);//长度放字节数组中
        byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC和尾叠加字节数组中
        bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
        return bytes ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_3A_Down.java
@@ -1,10 +1,14 @@
package com.dy.common.mw.protocol.p206V1_0_0.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0;
import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com39Vo;
import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com3AVo;
import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate;
import com.dy.common.util.ByteUtil;
import com.dy.common.util.ByteUtilUnsigned;
@@ -52,49 +56,61 @@
     * @throws Exception 异常
     */
    public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception {
        CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ;
        byte[] bytes ;
        byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ;
        byte index = 0 ;
        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
        if(para.param == null) {
            throw new Exception("命令参数为null") ;
        }else {
            JSONObject obj = (JSONObject) para.param;
            String json = obj.toJSONString();
            Com3AVo cvo = JSON.parseObject(json, Com3AVo.class);
            if (cvo == null) {
                throw new Exception("json转Com21Vo为null");
            }
            if (cvo.current == null) {
                throw new Exception("阀门堵转电流不能为空");
            }
            if (cvo.current < 0) {
                throw new Exception("阀门堵转电流不能小于0");
            }
            CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1();
            byte[] bytes;
            byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code];
            byte index = 0;
            bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte;
        index++ ;
        bsHead[index] = 0 ;//帧长度
            index++;
            bsHead[index] = 0;//帧长度
        index++ ;
        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
            index++;
            bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte;
        index++ ;
        bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ;
            index++;
            bsHead[index] = commonV1_0_1.createCtrl((byte) 0, (byte) 0);
        index++ ;
        GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
        index += 5 ;
            index++;
            GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
            index += 5;
        ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ;
            ByteUtil.hex2Bytes(para.commandCode, bsHead, index);
        if(para.param == null){
            throw new Exception("未提供命令参数数据,不能构造功能码为" + para.commandCode + "的下行命令") ;
        }else{
            index = 0 ;
            byte[] bs = new byte[11] ;
            Double currentDb = ((Double)para.param) * 100 ;
            Integer currentInt = currentDb.intValue() ;
            index = 0;
            byte[] bs = new byte[11];
            Double currentDb = cvo.current * 100;
            Integer currentInt = currentDb.intValue();
            ByteUtilUnsigned.int2Bytes_LE(bs, currentInt.shortValue(), index);
            index += 3 ;//上面是三byte的数值
            index += 3;//上面是三byte的数值
            GlCreate.createPw(bs, index);
            index += 2 ;
            index += 2;
            GlCreate.createTp(bs, index);
            bytes = ByteUtil.bytesMerge(bsHead, bs) ;
            bytes = ByteUtil.bytesMerge(bsHead, bs);
            GlCreate.createLen(bytes);//长度放字节数组中
            byte[] bsTail = GlCreate.createCrcTail(bytes);//CRC和尾叠加字节数组中
            bytes = ByteUtil.bytesMerge(bytes, bsTail);
            return bytes;
        }
        GlCreate.createLen(bytes);//长度放字节数组中
        byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC和尾叠加字节数组中
        bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
        return bytes ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_3B_Down.java
@@ -1,10 +1,14 @@
package com.dy.common.mw.protocol.p206V1_0_0.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0;
import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com3AVo;
import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com3BVo;
import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate;
import com.dy.common.util.ByteUtil;
import com.dy.common.util.ByteUtilUnsigned;
@@ -52,48 +56,59 @@
     * @throws Exception 异常
     */
    public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception {
        CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ;
        byte[] bytes ;
        byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ;
        byte index = 0 ;
        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
        if(para.param == null) {
            throw new Exception("命令参数为null") ;
        }else {
            JSONObject obj = (JSONObject) para.param;
            String json = obj.toJSONString();
            Com3BVo cvo = JSON.parseObject(json, Com3BVo.class);
            if (cvo == null) {
                throw new Exception("json转Com21Vo为null");
            }
            if (cvo.second == null) {
                throw new Exception("阀门超时时间不能为空");
            }
            if (cvo.second < 1) {
                throw new Exception("阀门超时时间不能小于0");
            }
            CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1();
            byte[] bytes;
            byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code];
            byte index = 0;
            bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte;
        index++ ;
        bsHead[index] = 0 ;//帧长度
            index++;
            bsHead[index] = 0;//帧长度
        index++ ;
        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
            index++;
            bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte;
        index++ ;
        bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ;
            index++;
            bsHead[index] = commonV1_0_1.createCtrl((byte) 0, (byte) 0);
        index++ ;
        GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
        index += 5 ;
            index++;
            GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
            index += 5;
        ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ;
            ByteUtil.hex2Bytes(para.commandCode, bsHead, index);
        if(para.param == null){
            throw new Exception("未提供命令参数数据,不能构造功能码为" + para.commandCode + "的下行命令") ;
        }else{
            index = 0 ;
            byte[] bs = new byte[10] ;
            Integer second = (Integer)para.param;
            ByteUtilUnsigned.short2Bytes_LE(bs, second.shortValue(), index);
            index += 2 ;
            index = 0;
            byte[] bs = new byte[10];
            ByteUtilUnsigned.short2Bytes_LE(bs, cvo.second.shortValue(), index);
            index += 2;
            GlCreate.createPw(bs, index);
            index += 2 ;
            index += 2;
            GlCreate.createTp(bs, index);
            bytes = ByteUtil.bytesMerge(bsHead, bs) ;
            bytes = ByteUtil.bytesMerge(bsHead, bs);
            GlCreate.createLen(bytes);//长度放字节数组中
            byte[] bsTail = GlCreate.createCrcTail(bytes);//CRC和尾叠加字节数组中
            bytes = ByteUtil.bytesMerge(bytes, bsTail);
            return bytes;
        }
        GlCreate.createLen(bytes);//长度放字节数组中
        byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC和尾叠加字节数组中
        bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
        return bytes ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_3C_Down.java
@@ -1,10 +1,14 @@
package com.dy.common.mw.protocol.p206V1_0_0.parse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0;
import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com3BVo;
import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com3CVo;
import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate;
import com.dy.common.util.ByteUtil;
import com.dy.common.util.ByteUtilUnsigned;
@@ -52,48 +56,59 @@
     * @throws Exception 异常
     */
    public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception {
        CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ;
        byte[] bytes ;
        byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ;
        byte index = 0 ;
        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
        if(para.param == null) {
            throw new Exception("命令参数为null") ;
        }else {
            JSONObject obj = (JSONObject) para.param;
            String json = obj.toJSONString();
            Com3CVo cvo = JSON.parseObject(json, Com3CVo.class);
            if (cvo == null) {
                throw new Exception("json转Com21Vo为null");
            }
            if (cvo.minute == null) {
                throw new Exception("自报周期不能为空");
            }
            if (cvo.minute < 1) {
                throw new Exception("自报周期不能小于1");
            }
            CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1();
            byte[] bytes;
            byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code];
            byte index = 0;
            bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte;
        index++ ;
        bsHead[index] = 0 ;//帧长度
            index++;
            bsHead[index] = 0;//帧长度
        index++ ;
        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
            index++;
            bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte;
        index++ ;
        bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ;
            index++;
            bsHead[index] = commonV1_0_1.createCtrl((byte) 0, (byte) 0);
        index++ ;
        GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
        index += 5 ;
            index++;
            GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
            index += 5;
        ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ;
            ByteUtil.hex2Bytes(para.commandCode, bsHead, index);
        if(para.param == null){
            throw new Exception("未提供命令参数数据,不能构造功能码为" + para.commandCode + "的下行命令") ;
        }else{
            index = 0 ;
            byte[] bs = new byte[10] ;
            Integer minute = (Integer)para.param ;
            ByteUtilUnsigned.short2Bytes_LE(bs, minute.shortValue(), index);
            index += 2 ;
            index = 0;
            byte[] bs = new byte[10];
            ByteUtilUnsigned.short2Bytes_LE(bs, cvo.minute.shortValue(), index);
            index += 2;
            GlCreate.createPw(bs, index);
            index += 2 ;
            index += 2;
            GlCreate.createTp(bs, index);
            bytes = ByteUtil.bytesMerge(bsHead, bs) ;
            bytes = ByteUtil.bytesMerge(bsHead, bs);
            GlCreate.createLen(bytes);//长度放字节数组中
            byte[] bsTail = GlCreate.createCrcTail(bytes);//CRC和尾叠加字节数组中
            bytes = ByteUtil.bytesMerge(bytes, bsTail);
            return bytes;
        }
        GlCreate.createLen(bytes);//长度放字节数组中
        byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC和尾叠加字节数组中
        bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
        return bytes ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_51_Down.java
New file
@@ -0,0 +1,86 @@
package com.dy.common.mw.protocol.p206V1_0_0.parse;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0;
import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate;
import com.dy.common.util.ByteUtil;
/**
 * @Author liurunyu
 * @Date 2024/4/10 18:51
 * @LastEditTime 2024/4/10 18:51
 * @Description
 */
@AnnotationCodeDown(ifAny={
        CodeV1_0_1.cd_51
})
public class Cd_51_Down implements CodeParse {
    @Override
    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
        ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ;
        byte[] bs = this.doParse(para) ;
        MidResultToRtu midRs = new MidResultToRtu() ;
        midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL
        midRs.protocolName = para.protocolName ;//协议名称
        midRs.rtuAddr = para.rtuAddr ;//Rtu地址
        midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果
        midRs.downCode = para.commandCode ;//下行命令功能码;
        midRs.downBuffer = bs ;//下行命令数据
        midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//下行命令数据十六进制形式
        midRs.hasResponse = true ;//是否有应答
        midRs.maxSendTimes = null ;//命令最大发送次数(当收不到应答时,将重发),如果不设置,命令缓存器进行补充设置
        midRs.isCachForOffLine = false ;//RTU不在线,命令是否缓存,低功耗时为true
        if(isLowPower != null && isLowPower.booleanValue()){
            //低功耗时,尽快发送
            midRs.isQuickSend = true ;
        }
        return new MidResult[]{midRs} ;
    }
    /**
     * 构造下行数据
     * @param para 参数
     * @return 字节数组
     * @throws Exception 异常
     */
    public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception {
        CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ;
        byte[] bytes ;
        byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ;
        byte index = 0 ;
        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
        index++ ;
        bsHead[index] = 0 ;//帧长度
        index++ ;
        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
        index++ ;
        bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ;
        index++ ;
        GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
        index += 5 ;
        ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ;
        bytes = bsHead ;
        GlCreate.createLen(bytes);//长度放字节数组中
        byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC和尾叠加字节数组中
        bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
        return bytes ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_51_Up.java
New file
@@ -0,0 +1,67 @@
package com.dy.common.mw.protocol.p206V1_0_0.parse;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V1_0_0.*;
import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCd51Vo;
import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse;
import com.dy.common.util.ByteUtilUnsigned;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
 * @Author liurunyu
 * @Date 2024/4/10 18:42
 * @LastEditTime 2024/4/10 18:42
 * @Description
 */
@AnnotationCodeUp(ifAny={
        CodeV1_0_1.cd_51
})
public class Cd_51_Up implements CodeParse {
    private static final Logger log = LogManager.getLogger(Cd_51_Up.class);
    /**
     * 分析上行数据
     */
    @Override
    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
        ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ;
        int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ;
        if(bsLen > 0){
            this.doParse(para.upBuffer,
                    bsLen,
                    para.upCode,
                    para.data) ;
        }
        log.info("分析命令应答数据<" + CodeV1_0_1.getCodeName(para.upCode) + " RTU地址=" + para.rtuAddr + ">:\n" + para.data.toString());
        MidResultFromRtu midRs = new MidResultFromRtu() ;
        midRs.protocolName = para.protocolName ;//协议名称
        midRs.rtuAddr = para.rtuAddr ;//Rtu地址
        midRs.upCode = para.upCode ;//上行数据中的功能码
        midRs.upHex = para.upHex ;//上行数据十六进制形式
        midRs.upBuffer = para.upBuffer ;//上行数据字节数组
        midRs.data = para.data ;//解析后的数据
        midRs.reportOrResponse_trueOrFalse = false ;//命令应答
        callback.callback(midRs.reportOrResponse_trueOrFalse);
        return new MidResult[]{midRs} ;
    }
    /**
     * 执行分析
     * @param bs 字节数组
     * @param bsLen 字节长度(总包长,包括包头和包尾)
     * @param dataCode 功能码
     * @param data 数据
     * @throws Exception 异常
     */
    protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
        DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ;
        DataCd51Vo cdData = new DataCd51Vo() ;
        dV1.subData = cdData ;
        cdData.rtuDt = GlParse.parseRtuDt(bs, ProtocolConstantV206V1_0_0.dataIndex) ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_5E_Down.java
New file
@@ -0,0 +1,86 @@
package com.dy.common.mw.protocol.p206V1_0_0.parse;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0;
import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate;
import com.dy.common.util.ByteUtil;
/**
 * @Author liurunyu
 * @Date 2024/4/10 18:51
 * @LastEditTime 2024/4/10 18:51
 * @Description
 */
@AnnotationCodeDown(ifAny={
        CodeV1_0_1.cd_5E
})
public class Cd_5E_Down implements CodeParse {
    @Override
    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
        ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ;
        byte[] bs = this.doParse(para) ;
        MidResultToRtu midRs = new MidResultToRtu() ;
        midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL
        midRs.protocolName = para.protocolName ;//协议名称
        midRs.rtuAddr = para.rtuAddr ;//Rtu地址
        midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果
        midRs.downCode = para.commandCode ;//下行命令功能码;
        midRs.downBuffer = bs ;//下行命令数据
        midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//下行命令数据十六进制形式
        midRs.hasResponse = true ;//是否有应答
        midRs.maxSendTimes = null ;//命令最大发送次数(当收不到应答时,将重发),如果不设置,命令缓存器进行补充设置
        midRs.isCachForOffLine = false ;//RTU不在线,命令是否缓存,低功耗时为true
        if(isLowPower != null && isLowPower.booleanValue()){
            //低功耗时,尽快发送
            midRs.isQuickSend = true ;
        }
        return new MidResult[]{midRs} ;
    }
    /**
     * 构造下行数据
     * @param para 参数
     * @return 字节数组
     * @throws Exception 异常
     */
    public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception {
        CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ;
        byte[] bytes ;
        byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ;
        byte index = 0 ;
        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
        index++ ;
        bsHead[index] = 0 ;//帧长度
        index++ ;
        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
        index++ ;
        bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ;
        index++ ;
        GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
        index += 5 ;
        ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ;
        bytes = bsHead ;
        GlCreate.createLen(bytes);//长度放字节数组中
        byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC和尾叠加字节数组中
        bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
        return bytes ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_5E_Up.java
New file
@@ -0,0 +1,70 @@
package com.dy.common.mw.protocol.p206V1_0_0.parse;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V1_0_0.*;
import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCd51Vo;
import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCd5EVo;
import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
 * @Author liurunyu
 * @Date 2024/4/10 18:42
 * @LastEditTime 2024/4/10 18:42
 * @Description
 */
@AnnotationCodeUp(ifAny={
        CodeV1_0_1.cd_5E
})
public class Cd_5E_Up implements CodeParse {
    private static final Logger log = LogManager.getLogger(Cd_5E_Up.class);
    /**
     * 分析上行数据
     */
    @Override
    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
        ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ;
        int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ;
        if(bsLen > 0){
            this.doParse(para.upBuffer,
                    bsLen,
                    para.upCode,
                    para.data) ;
        }
        log.info("分析命令应答数据<" + CodeV1_0_1.getCodeName(para.upCode) + " RTU地址=" + para.rtuAddr + ">:\n" + para.data.toString());
        MidResultFromRtu midRs = new MidResultFromRtu() ;
        midRs.protocolName = para.protocolName ;//协议名称
        midRs.rtuAddr = para.rtuAddr ;//Rtu地址
        midRs.upCode = para.upCode ;//上行数据中的功能码
        midRs.upHex = para.upHex ;//上行数据十六进制形式
        midRs.upBuffer = para.upBuffer ;//上行数据字节数组
        midRs.data = para.data ;//解析后的数据
        midRs.reportOrResponse_trueOrFalse = false ;//命令应答
        callback.callback(midRs.reportOrResponse_trueOrFalse);
        return new MidResult[]{midRs} ;
    }
    /**
     * 执行分析
     * @param bs 字节数组
     * @param bsLen 字节长度(总包长,包括包头和包尾)
     * @param dataCode 功能码
     * @param data 数据
     * @throws Exception 异常
     */
    protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
        DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ;
        DataCd5EVo cdData = new DataCd5EVo() ;
        dV1.subData = cdData ;
        short index = ProtocolConstantV206V1_0_0.dataIndex ;
        cdData.alarmVo = com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlParse.parseAlarm(bs, index) ;
        index += 2 ;
        cdData.stateVo = com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlParse.parseState(bs, index) ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_B0_Down.java
New file
@@ -0,0 +1,93 @@
package com.dy.common.mw.protocol.p206V1_0_0.parse;
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0;
import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate;
import com.dy.common.util.ByteUtil;
/**
 * @Author liurunyu
 * @Date 2024/06/29 7:55
 * @LastEditTime 2024/06/29 7:55
 * @Description
 */
@AnnotationCodeDown(ifAny={
        CodeV1_0_1.cd_B0
})
public class Cd_B0_Down implements CodeParse {
    @Override
    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
        ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ;
        byte[] bs = this.doParse(para) ;
        MidResultToRtu midRs = new MidResultToRtu() ;
        midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL
        midRs.protocolName = para.protocolName ;//协议名称
        midRs.rtuAddr = para.rtuAddr ;//Rtu地址
        midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果
        midRs.downCode = para.commandCode ;//下行命令功能码;
        midRs.downBuffer = bs ;//下行命令数据
        midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//下行命令数据十六进制形式
        midRs.hasResponse = true ;//是否有应答
        midRs.maxSendTimes = null ;//命令最大发送次数(当收不到应答时,将重发),如果不设置,命令缓存器进行补充设置
        midRs.isCachForOffLine = false ;//RTU不在线,命令是否缓存,低功耗时为true
        if(isLowPower != null && isLowPower.booleanValue()){
            //低功耗时,尽快发送
            midRs.isQuickSend = true ;
        }
        return new MidResult[]{midRs} ;
    }
    /**
     * 构造下行数据
     * @param para 参数
     * @return 字节数组
     * @throws Exception 异常
     */
    public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception {
        CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ;
        byte[] bytes ;
        byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ;
        byte index = 0 ;
        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
        index++ ;
        bsHead[index] = 0 ;//帧长度
        index++ ;
        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
        index++ ;
        bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ;
        index++ ;
        GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
        index += 5 ;
        ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ;
        byte index1 = 0 ;
        byte[] bs = new byte[9] ;
        bs[index1++] = (byte)0xF0 ;
        GlCreate.createPw(bs, index1);
        index1 += 2 ;
        GlCreate.createTp(bs, index1);
        bytes = ByteUtil.bytesMerge(bsHead, bs) ;
        GlCreate.createLen(bytes);//长度放字节数组中
        byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC和尾叠加字节数组中
        bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
        return bytes ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd51Vo.java
New file
@@ -0,0 +1,24 @@
package com.dy.common.mw.protocol.p206V1_0_0.upVos;
import lombok.Data;
/**
 * @Author liurunyu
 * @Date 2024/4/10 18:44
 * @LastEditTime 2024/4/10 18:44
 * @Description
 */
@Data
public class DataCd51Vo {
    public String rtuDt ;
    public String toString(){
        StringBuilder sb = new StringBuilder() ;
        sb.append("   查询终端时钟应答:\n");
        sb.append("      时钟:");
        sb.append(rtuDt);
        sb.append("\n");
        return sb.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd5EVo.java
New file
@@ -0,0 +1,30 @@
package com.dy.common.mw.protocol.p206V1_0_0.upVos;
import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1;
import lombok.Data;
/**
 * @Author liurunyu
 * @Date 2024/4/10 18:44
 * @LastEditTime 2024/4/10 18:44
 * @Description
 */
@Data
public class DataCd5EVo {
    public DataAlarmVo alarmVo ;
    public DataStateVo stateVo ;
    public String toString(){
        StringBuilder sb = new StringBuilder() ;
        sb.append("   查询终端状态和报警状态应答:\n");
        if(alarmVo != null){
            sb.append(alarmVo.toString());
            sb.append("\n");
        }
        if(stateVo != null){
            sb.append(stateVo.toString());
            sb.append("\n");
        }
        return sb.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd84Vo.java
@@ -10,7 +10,7 @@
public class DataCd84Vo {
    public Byte opType;//开关阀类型(1:刷卡开阀;2:刷卡关阀;3:中心站开阀;4:中心站关阀;5:欠费关阀;6:流量计故障关阀;7:紧急关闭;8:用户远程开阀;9:用户远程关阀;10:开关阀卡关阀;11:开关阀卡刷卡卡开阀;)
    public Byte cardType ;//卡类型(1:用户卡;2:管理员卡;3:调试卡;4:开关阀卡;5:清空卡)
    public Byte cardType ;//卡类型(0:无卡;1:用户卡;2:管理员卡;3:调试卡;4:开关阀卡;5:清空卡)
    public String cardAddr ;//IC卡地址(8位字符)
    public String cardNo ;//IC卡编号
    public Double remainMoney ;//剩余金额:用户余额4字节BCD码,取值范围0.00~999999.99,单位为元
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_84_Up.java
@@ -106,7 +106,7 @@
        cdData.orderNo = ByteUtil.BCD2String_BE(bs, index, index + 7) ;
        index += 8 ;
        cdData.opDt = GlParse.parseRtuDt(bs, index) ;
        cdData.openDt = GlParse.parseRtuDt(bs, index) ;
        index += 6 ;
        cdData.waterTotalAmount = ByteUtil.BCD2Long_LE(bs, index, index + 4)/100.0D ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd84Vo.java
@@ -8,10 +8,10 @@
    public String controllerType;//控制器类型 01(0x01):测控一体阀;57(0x57):井电控制器
    public Integer projectNo ;//控制器类型 0x01:测控一体阀;0x57:井电控制器
    public String openDt;//开泵/阀时间(yyyy-mm-dd HH:MM:SS)
    public String icCardAddr ;//IC卡地址(远程关闭时为0)
    public String icCardNo ;//IC卡编号(17位数字)
    public String orderNo ;//订单号(16位数字)
    public String opDt ;//开泵/阀时间(yyyy-mm-dd HH:MM:SS)
    public Double waterTotalAmount ;//水表累计水量,单位0.01立方米
    public Double eleTotalAmount ;//电表累计电量,单位0.01度
    public Double moneyRemainUser ;//用户剩余金额, 单位0.01元
@@ -42,7 +42,7 @@
        sb.append(orderNo == null?"未知":orderNo) ;
        sb.append("\n") ;
        sb.append("      开泵/阀时间 : ") ;
        sb.append(opDt == null?"未知":opDt) ;
        sb.append(openDt == null?"未知": openDt) ;
        sb.append("\n") ;
        sb.append("      水表累计水量 : ") ;
        sb.append(waterTotalAmount == null?"未知":waterTotalAmount) ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webFilter/UserTokenFilter.java
@@ -9,43 +9,53 @@
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
import java.io.PrintWriter;
@Slf4j
public class UserTokenFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        String token = request.getHeader(Constant.UserTokenKeyInHeader);
        if(!StringUtils.isNullOrEmpty(token)){
            UserTokenContext.set(token);
        HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
        String requestURI = httpRequest.getRequestURI();
        // 检查请求是否为非过滤项
        if (UserTokenNoFilter.urls != null && UserTokenNoFilter.urls.stream().anyMatch(url -> requestURI.startsWith(url))) {
            // 如果是非过滤项,直接调用下一个过滤器或servlet
            filterChain.doFilter(servletRequest, servletResponse);
        }else{
            PrintWriter pw = null ;
            try {
                BaseResponse<?> res = BaseResponseUtils.buildToLogin() ;
                String jsonString = JSON.toJSONString(res);
                response.setCharacterEncoding("UTF-8");
                response.setContentType("application/json; charset=utf-8");
                pw = response.getWriter() ;
                pw.write(jsonString);
                pw.flush();
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                if(pw != null){
                    pw.close();
        } else {
            // 如果不是非过滤项,执行过滤逻辑
            HttpServletRequest request = (HttpServletRequest) servletRequest;
            HttpServletResponse response = (HttpServletResponse) servletResponse;
            String token = request.getHeader(Constant.UserTokenKeyInHeader);
            if(!StringUtils.isNullOrEmpty(token)){
                UserTokenContext.set(token);
                filterChain.doFilter(servletRequest, servletResponse);
            }else{
                PrintWriter pw = null ;
                try {
                    BaseResponse<?> res = BaseResponseUtils.buildToLogin() ;
                    String jsonString = JSON.toJSONString(res);
                    response.setCharacterEncoding("UTF-8");
                    response.setContentType("application/json; charset=utf-8");
                    pw = response.getWriter() ;
                    pw.write(jsonString);
                    pw.flush();
                } catch (IOException e) {
                    e.printStackTrace();
                }finally {
                    if(pw != null){
                        pw.close();
                    }
                }
                //request.setAttribute(Constant.ErrorKeyInRequest, "未得到用户token");
                //response.sendRedirect("/error");
            }
            //request.setAttribute(Constant.ErrorKeyInRequest, "未得到用户token");
            //response.sendRedirect("/error");
        }
    }
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webFilter/UserTokenNoFilter.java
New file
@@ -0,0 +1,27 @@
package com.dy.common.webFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import java.util.List;
/**
 * @Author: liurunyu
 * @Date: 2024/7/1 14:01
 * @Description
 */
@Configuration
@ConfigurationProperties(prefix = "tokennofilter")
public class UserTokenNoFilter {
    public static List<String> urls ;
    public List<String> getUrls(){
        return urls ;
    }
    public void setUrls(List<String> urls){
        UserTokenNoFilter.urls = urls ;
    }
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaPrivilegeMapper.java
File was deleted
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaRolePrivilegeMapper.java
File was deleted
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseHistoryMapper.java
File was deleted
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseLastMapper.java
File was deleted
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveHistoryMapper.java
@@ -4,9 +4,8 @@
import org.apache.ibatis.annotations.Mapper;
/**
 * @Author liurunyu
 * @Date 2024/2/23 15:42
 * @LastEditTime 2024/2/23 15:42
 * @Author: liurunyu
 * @Date: 2024/7/1 15:28
 * @Description
 */
@Mapper
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveLastMapper.java
@@ -6,15 +6,15 @@
import java.util.List;
/**
 * @Author liurunyu
 * @Date 2024/2/23 16:00
 * @LastEditTime 2024/2/23 16:00
 * @Author: liurunyu
 * @Date: 2024/7/1 15:29
 * @Description
 */
 */
@Mapper
public interface RmOpenCloseValveLastMapper {
    /**
     * delete by primary key
     *
     * @param id primaryKey
     * @return deleteCount
     */
@@ -22,6 +22,7 @@
    /**
     * insert record to table
     *
     * @param record the record
     * @return insert count
     */
@@ -29,6 +30,7 @@
    /**
     * insert record to table selective
     *
     * @param record the record
     * @return insert count
     */
@@ -36,20 +38,15 @@
    /**
     * select by primary key
     *
     * @param id primary key
     * @return object by primary key
     */
    RmOpenCloseValveLast selectByPrimaryKey(Long id);
    /**
     * select by rtuAddr
     * @param rtuAddr rtuAddr
     * @return object by rtuAddr
     */
    List<RmOpenCloseValveLast> selectByRtuAddr(String rtuAddr);
    /**
     * update record selective
     *
     * @param record the updated record
     * @return update count
     */
@@ -57,8 +54,17 @@
    /**
     * update record
     *
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKey(RmOpenCloseValveLast record);
    /**
     * select by rtuAddr
     *
     * @param rtuAddr rtuAddr
     * @return object by rtuAddr
     */
    List<RmOpenCloseValveLast> selectByRtuAddr(String rtuAddr);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaPrivilege.java
File was deleted
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaRolePrivilege.java
File was deleted
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmOpenCloseHistory.java
File was deleted
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmOpenCloseLast.java
File was deleted
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmOpenCloseValveHistory.java
@@ -1,5 +1,12 @@
package com.dy.pipIrrGlobal.pojoRm;
import com.dy.common.mw.protocol.p206V1_0_0.DataV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCd83OpenVo;
import com.dy.common.mw.protocol.p206V202404.DataV202404;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd84Vo;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd85Vo;
import com.dy.common.util.DateTime;
import java.util.Date;
import com.alibaba.fastjson2.annotation.JSONField;
import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -11,6 +18,12 @@
import lombok.*;
import java.util.Date;
/**
 * @Author: liurunyu
 * @Date: 2024/7/1 15:28
 * @Description
 */
/**
 * @Author liurunyu
@@ -36,132 +49,267 @@
    @TableId(type = IdType.INPUT)
    public Long id;
    /**
    * 控制器实体ID(外键)
    */
     * 控制器实体ID(外键)
     */
    @Schema(description = "控制器实体外键", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    public Long controllerId;
    /**
    * 取水口实体ID(外键)
    */
     * 取水口实体ID(外键)
     */
    @Schema(description = "取水口实体外键", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    public Long intakeId;
    /**
    * 控制器地址
    */
     * 控制器地址
     */
    @Schema(description = "控制器地址", requiredMode = Schema.RequiredMode.REQUIRED)
    public String rtuAddr;
    /**
    * 开阀数据接收日期时间
    */
    @Schema(description = "数据接收日期时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
     * 开阀数据接收日期时间
     */
    @Schema(description = "开阀数据接收日期时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date opDt;
    /**
    * 开阀类型
    */
     * 开阀类型
     */
    @Schema(description = "开阀类型", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Byte opType;
    /**
    * 开阀时累计流量
    */
     * 开阀时累计流量
     */
    @Schema(description = "开阀时累计流量", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double opTotalAmount;
    /**
    * 开阀IC卡编号
    */
     * 开阀IC卡编号
     */
    @Schema(description = "开阀IC卡编号", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public String opIcCardNo;
    /**
    * 开阀ic卡地址
    */
     * 开阀ic卡地址
     */
    @Schema(description = "开阀ic卡地址", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public String opIcCardAddr;
    /**
    * 开阀时剩余金额
    */
     * 开阀时剩余金额
     */
    @Schema(description = "开阀时剩余金额", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double opRemainMoney;
    /**
    * 开阀时控制器时钟
    */
     * 开阀订单号
     */
    @Schema(description = "开阀订单号", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public String opOrderNo;
    /**
     * 开阀时电表累计电量
     */
    @Schema(description = "开阀时电表累计电量", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double opEleTotalAmount;
    /**
     * 开阀时用水户剩余水量
     */
    @Schema(description = "开阀时用水户剩余水量", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double opWaterRemainUser;
    /**
     * 开阀时控制器时钟
     */
    @Schema(description = "开阀时控制器时钟", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Date openDt;
    /**
    * 关阀数据接收日期时间
    */
     * 关阀数据接收日期时间
     */
    @Schema(description = "关阀数据接收日期时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Date clDt;
    /**
    * 关阀类型
    */
     * 关阀类型
     */
    @Schema(description = "关阀类型", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Byte clType;
    /**
    * 关阀时累计流量
    */
     * 关阀时累计流量
     */
    @Schema(description = "关阀时累计流量", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double clTotalAmount;
    /**
    * 关阀时IC卡编号
    */
     * 关阀时IC卡编号
     */
    @Schema(description = "关阀时IC卡编号", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public String clIcCardNo;
    /**
    * 关阀时IC卡地址
    */
     * 关阀时IC卡地址
     */
    @Schema(description = "关阀时IC卡地址", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public String clIcCardAddr;
    /**
    * 关阀时剩余金额
    */
     * 关阀时剩余金额
     */
    @Schema(description = "关阀时剩余金额", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double clRemainMoney;
    /**
    * 关阀报中本次用水量
    */
     * 关阀报中本次用水量
     */
    @Schema(description = "关阀时本次用水量", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double clThisAmount;
    /**
    * 关阀报中本次消费金额
    */
     * 关阀报中本次消费金额
     */
    @Schema(description = "关阀时本次消费金额", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double clThisMoney;
    /**
    * 关阀报中本次用水时长(分钟)
    */
     * 关阀报中本次用水时长(分钟)
     */
    @Schema(description = "关阀时本次用水时长(分钟)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Integer clThisTime;
    /**
    * 关阀报中的开阀时控制器时钟
    */
     * 关阀报中的开阀时控制器时钟
     */
    @Schema(description = "关阀报中的开阀时控制器时钟", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Date clOpenDt;
    /**
    * 关阀时控制器时钟
    */
     * 关阀时控制器时钟
     */
    @Schema(description = "关阀时控制器时钟", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Date closeDt;
    /**
     * 关阀订单号(16位数字)
     */
    public String clOrderNo;
    /**
     * 电表累计电量
     */
    public Double clEleTotalAmount;
    /**
     * 用户剩余水量
     */
    public Double clWaterRemainUser;
    /**
     * 本次使用电量
     */
    public Double thisEle;
    public void valueFrom(DataV1_0_1 dV1_0_1, DataCd83OpenVo dataCd83OpenVo) throws Exception {
        this.opDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt);
        this.opType = dataCd83OpenVo.type;
        this.opTotalAmount = dataCd83OpenVo.totalAmount;
        this.opIcCardNo = dataCd83OpenVo.icCardNo;
        this.opIcCardAddr = dataCd83OpenVo.icCardAddr;
        this.opRemainMoney = dataCd83OpenVo.remainMoney;
        this.opOrderNo = null; //江海协议特有
        this.opEleTotalAmount = null; //江海协议特有
        this.opWaterRemainUser = null; //江海协议特有
        this.openDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt);
        this.clDt = null;
        this.clType = null;
        this.clTotalAmount = null;
        this.clIcCardNo = null;
        this.clIcCardAddr = null;
        this.clRemainMoney = null;
        this.clThisAmount = null;
        this.clThisMoney = null;
        this.clThisTime = null;
        this.clOpenDt = null;
        this.closeDt = null;
        this.clOrderNo = null;//江海协议特有
        this.clEleTotalAmount = null;//江海协议特有
        this.clWaterRemainUser = null;//江海协议特有
        this.thisEle = null;//江海协议特有
    }
    public void valueFrom84(DataV202404 dataV202404, DataCd84Vo cdData) throws Exception {
        this.opDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataV202404.dt);
        this.opType = null;
        this.opTotalAmount = cdData.waterTotalAmount;
        this.opIcCardNo = cdData.icCardNo;
        this.opIcCardAddr = cdData.icCardAddr;
        this.opRemainMoney = cdData.moneyRemainUser;
        this.opOrderNo = cdData.orderNo; //江海协议特有
        this.opEleTotalAmount = cdData.eleTotalAmount; //江海协议特有
        this.opWaterRemainUser = cdData.waterRemainUser; //江海协议特有
        this.openDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.openDt);
        this.clDt = null;
        this.clType = null;
        this.clTotalAmount = null;
        this.clIcCardNo = null;
        this.clIcCardAddr = null;
        this.clRemainMoney = null;
        this.clThisAmount = null;
        this.clThisMoney = null;
        this.clThisTime = null;
        this.clOpenDt = null;
        this.closeDt = null;
        this.clOrderNo = null;//江海协议特有
        this.clEleTotalAmount = null;//江海协议特有
        this.clWaterRemainUser = null;//江海协议特有
        this.thisEle = null;//江海协议特有
    }
    public void valueFrom85(DataV202404 dataV202404, DataCd85Vo cdData) throws Exception {
        this.clOpenDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.startDt);
        this.closeDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.endDt);
        this.opType = cdData.opType;
        this.clIcCardAddr = cdData.icCardAddr;
        this.clIcCardNo = cdData.icCardNo;
        this.clTotalAmount = cdData.waterTotalAmount;
        this.clRemainMoney = cdData.moneyRemain;
        this.clThisAmount = cdData.thisWater;
        this.clThisMoney = cdData.thisMoney;
        this.clThisTime = cdData.thisDuration;
        this.clOrderNo = cdData.orderNo;
        this.clEleTotalAmount = cdData.eleTotalAmount;
        this.clWaterRemainUser = cdData.waterRemain;
        this.thisEle = cdData.thisEle;
    }
    public void updateFrom(DataV1_0_1 dV1_0_1, DataCd83OpenVo dataCd83OpenVo, boolean clearCloseValve) throws Exception {
        this.opDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt);
        this.opType = dataCd83OpenVo.type;
        this.opTotalAmount = dataCd83OpenVo.totalAmount;
        this.opIcCardNo = dataCd83OpenVo.icCardNo;
        this.opIcCardAddr = dataCd83OpenVo.icCardAddr;
        this.opRemainMoney = dataCd83OpenVo.remainMoney;
        this.openDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt);
        if (clearCloseValve) {
            this.clDt = null;
            this.clType = null;
            this.clTotalAmount = null;
            this.clIcCardNo = null;
            this.clIcCardAddr = null;
            this.clRemainMoney = null;
            this.clThisAmount = null;
            this.clThisMoney = null;
            this.clThisTime = null;
            this.clOpenDt = null;
            this.closeDt = null;
        }
    }
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmOpenCloseValveLast.java
@@ -5,7 +5,13 @@
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dy.common.mw.protocol.p206V1_0_0.DataV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCd83OpenVo;
import com.dy.common.mw.protocol.p206V202404.DataV202404;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd84Vo;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd85Vo;
import com.dy.common.po.BaseEntity;
import com.dy.common.util.DateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
@@ -13,9 +19,8 @@
import java.util.Date;
/**
 * @Author liurunyu
 * @Date 2024/2/23 16:00
 * @LastEditTime 2024/2/23 16:00
 * @Author: liurunyu
 * @Date: 2024/7/1 15:29
 * @Description
 */
@TableName(value="rm_open_close_valve_last", autoResultMap = true)
@@ -102,6 +107,24 @@
    public Double opRemainMoney;
    /**
     * 开阀订单号
     */
    @Schema(description = "开阀订单号", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public String opOrderNo;
    /**
     * 开阀时电表累计电量
     */
    @Schema(description = "开阀时电表累计电量", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double opEleTotalAmount;
    /**
     * 开阀时用水户剩余水量
     */
    @Schema(description = "开阀时用水户剩余水量", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double opWaterRemainUser;
    /**
     * 开阀时控制器时钟
     */
    @Schema(description = "开阀时控制器时钟", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
@@ -173,4 +196,122 @@
    @Schema(description = "关阀时控制器时钟", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Date closeDt;
    /**
     * 关阀订单号(16位数字)
     */
    public String clOrderNo;
    /**
     * 电表累计电量
     */
    public Double clEleTotalAmount;
    /**
     * 用户剩余水量
     */
    public Double clWaterRemainUser;
    /**
     * 本次使用电量
     */
    public Double thisEle;
    public void valueFrom(DataV1_0_1 dV1_0_1, DataCd83OpenVo dataCd83OpenVo) throws Exception {
        this.opDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt);
        this.opType = dataCd83OpenVo.type;
        this.opTotalAmount = dataCd83OpenVo.totalAmount;
        this.opIcCardNo = dataCd83OpenVo.icCardNo;
        this.opIcCardAddr = dataCd83OpenVo.icCardAddr;
        this.opRemainMoney = dataCd83OpenVo.remainMoney;
        this.opOrderNo = null; //江海协议特有
        this.opEleTotalAmount = null; //江海协议特有
        this.opWaterRemainUser = null; //江海协议特有
        this.openDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt);
        this.clDt = null;
        this.clType = null;
        this.clTotalAmount = null;
        this.clIcCardNo = null;
        this.clIcCardAddr = null;
        this.clRemainMoney = null;
        this.clThisAmount = null;
        this.clThisMoney = null;
        this.clThisTime = null;
        this.clOpenDt = null;
        this.closeDt = null;
        this.clOrderNo = null;//江海协议特有
        this.clEleTotalAmount = null;//江海协议特有
        this.clWaterRemainUser = null;//江海协议特有
        this.thisEle = null;//江海协议特有
    }
    public void valueFrom84(DataV202404 dataV202404, DataCd84Vo cdData) throws Exception {
        this.opDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataV202404.dt);
        this.opType = null;
        this.opTotalAmount = cdData.waterTotalAmount;
        this.opIcCardNo = cdData.icCardNo;
        this.opIcCardAddr = cdData.icCardAddr;
        this.opRemainMoney = cdData.moneyRemainUser;
        this.opOrderNo = cdData.orderNo; //江海协议特有
        this.opEleTotalAmount = cdData.eleTotalAmount; //江海协议特有
        this.opWaterRemainUser = cdData.waterRemainUser; //江海协议特有
        this.openDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.openDt);
        this.clDt = null;
        this.clType = null;
        this.clTotalAmount = null;
        this.clIcCardNo = null;
        this.clIcCardAddr = null;
        this.clRemainMoney = null;
        this.clThisAmount = null;
        this.clThisMoney = null;
        this.clThisTime = null;
        this.clOpenDt = null;
        this.closeDt = null;
        this.clOrderNo = null;//江海协议特有
        this.clEleTotalAmount = null;//江海协议特有
        this.clWaterRemainUser = null;//江海协议特有
        this.thisEle = null;//江海协议特有
    }
    public void valueFrom85(DataV202404 dataV202404, DataCd85Vo cdData) throws Exception {
        this.clOpenDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.startDt);
        this.closeDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.endDt);
        this.opType = cdData.opType;
        this.clIcCardAddr = cdData.icCardAddr;
        this.clIcCardNo = cdData.icCardNo;
        this.clTotalAmount = cdData.waterTotalAmount;
        this.clRemainMoney = cdData.moneyRemain;
        this.clThisAmount = cdData.thisWater;
        this.clThisMoney = cdData.thisMoney;
        this.clThisTime = cdData.thisDuration;
        this.clOrderNo = cdData.orderNo;
        this.clEleTotalAmount = cdData.eleTotalAmount;
        this.clWaterRemainUser = cdData.waterRemain;
        this.thisEle = cdData.thisEle;
    }
    public void updateFrom(DataV1_0_1 dV1_0_1, DataCd83OpenVo dataCd83OpenVo, boolean clearCloseValve) throws Exception {
        this.opDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt);
        this.opType = dataCd83OpenVo.type;
        this.opTotalAmount = dataCd83OpenVo.totalAmount;
        this.opIcCardNo = dataCd83OpenVo.icCardNo;
        this.opIcCardAddr = dataCd83OpenVo.icCardAddr;
        this.opRemainMoney = dataCd83OpenVo.remainMoney;
        this.openDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt);
        if (clearCloseValve) {
            this.clDt = null;
            this.clType = null;
            this.clTotalAmount = null;
            this.clIcCardNo = null;
            this.clIcCardAddr = null;
            this.clRemainMoney = null;
            this.clThisAmount = null;
            this.clThisMoney = null;
            this.clThisTime = null;
            this.clOpenDt = null;
            this.closeDt = null;
        }
    }
}
pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
@@ -72,7 +72,7 @@
pipIrr:
    global:
        dev: true   #是否开发阶段,true或false
        dev: false   #是否开发阶段,true或false
        dsName: ym  #开发阶段,设置临时的数据库名称
    mw:
        webPort: 8070
@@ -138,4 +138,9 @@
    #监测控制模块回调地址
    rtuCallbackUrl_rm: "http://127.0.0.1:8081/remote/comRes/receive"
    #微信小程序回调地址
    rtuCallbackUrl_wx: "http://127.0.0.1:8087/wx/comRes/receive"
    rtuCallbackUrl_wx: "http://127.0.0.1:8087/wx/comRes/receive"
#不进行userToken过滤的URL,@ConfigurationProperties要求tokennofilter中所有字母都小写
tokennofilter:
    urls:
        - /sso/sso
pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaPrivilegeMapper.xml
File was deleted
pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaRolePrivilegeMapper.xml
File was deleted
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseHistoryMapper.xml
File was deleted
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseLastMapper.xml
File was deleted
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml
@@ -15,6 +15,9 @@
    <result column="op_ic_card_addr" jdbcType="VARCHAR" property="opIcCardAddr" />
    <result column="op_remain_money" jdbcType="DOUBLE" property="opRemainMoney" />
    <result column="open_dt" jdbcType="TIMESTAMP" property="openDt" />
    <result column="op_order_no" jdbcType="VARCHAR" property="opOrderNo" />
    <result column="op_ele_total_amount" jdbcType="FLOAT" property="opEleTotalAmount" />
    <result column="op_water_remain_user" jdbcType="FLOAT" property="opWaterRemainUser" />
    <result column="cl_dt" jdbcType="TIMESTAMP" property="clDt" />
    <result column="cl_type" jdbcType="TINYINT" property="clType" />
    <result column="cl_total_amount" jdbcType="DOUBLE" property="clTotalAmount" />
@@ -26,13 +29,18 @@
    <result column="cl_this_time" jdbcType="INTEGER" property="clThisTime" />
    <result column="cl_open_dt" jdbcType="TIMESTAMP" property="clOpenDt" />
    <result column="close_dt" jdbcType="TIMESTAMP" property="closeDt" />
    <result column="cl_order_no" jdbcType="VARCHAR" property="clOrderNo" />
    <result column="cl_ele_total_amount" jdbcType="FLOAT" property="clEleTotalAmount" />
    <result column="cl_water_remain_user" jdbcType="FLOAT" property="clWaterRemainUser" />
    <result column="cl_this_ele" jdbcType="FLOAT" property="clThisEle" />
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, controller_id, intake_id, rtu_addr, op_dt, op_type, op_total_amount, op_ic_card_no, 
    op_ic_card_addr, op_remain_money, open_dt, cl_dt, cl_type, cl_total_amount, cl_ic_card_no,
    cl_ic_card_addr, cl_remain_money, cl_this_amount, cl_this_money, cl_this_time, cl_open_dt,
    close_dt
    op_ic_card_addr, op_remain_money, open_dt, op_order_no, op_ele_total_amount, op_water_remain_user,
    cl_dt, cl_type, cl_total_amount, cl_ic_card_no, cl_ic_card_addr, cl_remain_money,
    cl_this_amount, cl_this_money, cl_this_time, cl_open_dt, close_dt, cl_order_no, cl_ele_total_amount,
    cl_water_remain_user, cl_this_ele
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
@@ -51,19 +59,23 @@
    insert into rm_open_close_valve_history (id, controller_id, intake_id, 
      rtu_addr, op_dt, op_type, 
      op_total_amount, op_ic_card_no, op_ic_card_addr, 
      op_remain_money, open_dt, cl_dt,
      op_remain_money, open_dt, op_order_no,
      op_ele_total_amount, op_water_remain_user, cl_dt,
      cl_type, cl_total_amount, cl_ic_card_no, 
      cl_ic_card_addr, cl_remain_money, cl_this_amount, 
      cl_this_money, cl_this_time, cl_open_dt, 
      close_dt)
      close_dt, cl_order_no, cl_ele_total_amount,
      cl_water_remain_user, cl_this_ele)
    values (#{id,jdbcType=BIGINT}, #{controllerId,jdbcType=BIGINT}, #{intakeId,jdbcType=BIGINT}, 
      #{rtuAddr,jdbcType=VARCHAR}, #{opDt,jdbcType=TIMESTAMP}, #{opType,jdbcType=TINYINT},
      #{rtuAddr,jdbcType=VARCHAR}, #{opDt,jdbcType=TIMESTAMP}, #{opType,jdbcType=TINYINT},
      #{opTotalAmount,jdbcType=DOUBLE}, #{opIcCardNo,jdbcType=VARCHAR}, #{opIcCardAddr,jdbcType=VARCHAR}, 
      #{opRemainMoney,jdbcType=DOUBLE}, #{openDt,jdbcType=TIMESTAMP}, #{clDt,jdbcType=TIMESTAMP},
      #{opRemainMoney,jdbcType=DOUBLE}, #{openDt,jdbcType=TIMESTAMP}, #{opOrderNo,jdbcType=VARCHAR},
      #{opEleTotalAmount,jdbcType=FLOAT}, #{opWaterRemainUser,jdbcType=FLOAT}, #{clDt,jdbcType=TIMESTAMP},
      #{clType,jdbcType=TINYINT}, #{clTotalAmount,jdbcType=DOUBLE}, #{clIcCardNo,jdbcType=VARCHAR}, 
      #{clIcCardAddr,jdbcType=VARCHAR}, #{clRemainMoney,jdbcType=DOUBLE}, #{clThisAmount,jdbcType=DOUBLE}, 
      #{clThisMoney,jdbcType=DOUBLE}, #{clThisTime,jdbcType=INTEGER}, #{clOpenDt,jdbcType=TIMESTAMP},
      #{closeDt,jdbcType=TIMESTAMP})
      #{clThisMoney,jdbcType=DOUBLE}, #{clThisTime,jdbcType=INTEGER}, #{clOpenDt,jdbcType=TIMESTAMP},
      #{closeDt,jdbcType=TIMESTAMP}, #{clOrderNo,jdbcType=VARCHAR}, #{clEleTotalAmount,jdbcType=FLOAT},
      #{clWaterRemainUser,jdbcType=FLOAT}, #{clThisEle,jdbcType=FLOAT})
  </insert>
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory">
    <!--@mbg.generated-->
@@ -102,6 +114,15 @@
      <if test="openDt != null">
        open_dt,
      </if>
      <if test="opOrderNo != null">
        op_order_no,
      </if>
      <if test="opEleTotalAmount != null">
        op_ele_total_amount,
      </if>
      <if test="opWaterRemainUser != null">
        op_water_remain_user,
      </if>
      <if test="clDt != null">
        cl_dt,
      </if>
@@ -134,6 +155,18 @@
      </if>
      <if test="closeDt != null">
        close_dt,
      </if>
      <if test="clOrderNo != null">
        cl_order_no,
      </if>
      <if test="clEleTotalAmount != null">
        cl_ele_total_amount,
      </if>
      <if test="clWaterRemainUser != null">
        cl_water_remain_user,
      </if>
      <if test="clThisEle != null">
        cl_this_ele,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
@@ -170,6 +203,15 @@
      <if test="openDt != null">
        #{openDt,jdbcType=TIMESTAMP},
      </if>
      <if test="opOrderNo != null">
        #{opOrderNo,jdbcType=VARCHAR},
      </if>
      <if test="opEleTotalAmount != null">
        #{opEleTotalAmount,jdbcType=FLOAT},
      </if>
      <if test="opWaterRemainUser != null">
        #{opWaterRemainUser,jdbcType=FLOAT},
      </if>
      <if test="clDt != null">
        #{clDt,jdbcType=TIMESTAMP},
      </if>
@@ -202,6 +244,18 @@
      </if>
      <if test="closeDt != null">
        #{closeDt,jdbcType=TIMESTAMP},
      </if>
      <if test="clOrderNo != null">
        #{clOrderNo,jdbcType=VARCHAR},
      </if>
      <if test="clEleTotalAmount != null">
        #{clEleTotalAmount,jdbcType=FLOAT},
      </if>
      <if test="clWaterRemainUser != null">
        #{clWaterRemainUser,jdbcType=FLOAT},
      </if>
      <if test="clThisEle != null">
        #{clThisEle,jdbcType=FLOAT},
      </if>
    </trim>
  </insert>
@@ -239,6 +293,15 @@
      <if test="openDt != null">
        open_dt = #{openDt,jdbcType=TIMESTAMP},
      </if>
      <if test="opOrderNo != null">
        op_order_no = #{opOrderNo,jdbcType=VARCHAR},
      </if>
      <if test="opEleTotalAmount != null">
        op_ele_total_amount = #{opEleTotalAmount,jdbcType=FLOAT},
      </if>
      <if test="opWaterRemainUser != null">
        op_water_remain_user = #{opWaterRemainUser,jdbcType=FLOAT},
      </if>
      <if test="clDt != null">
        cl_dt = #{clDt,jdbcType=TIMESTAMP},
      </if>
@@ -272,6 +335,18 @@
      <if test="closeDt != null">
        close_dt = #{closeDt,jdbcType=TIMESTAMP},
      </if>
      <if test="clOrderNo != null">
        cl_order_no = #{clOrderNo,jdbcType=VARCHAR},
      </if>
      <if test="clEleTotalAmount != null">
        cl_ele_total_amount = #{clEleTotalAmount,jdbcType=FLOAT},
      </if>
      <if test="clWaterRemainUser != null">
        cl_water_remain_user = #{clWaterRemainUser,jdbcType=FLOAT},
      </if>
      <if test="clThisEle != null">
        cl_this_ele = #{clThisEle,jdbcType=FLOAT},
      </if>
    </set>
    where id = #{id,jdbcType=BIGINT}
  </update>
@@ -288,6 +363,9 @@
      op_ic_card_addr = #{opIcCardAddr,jdbcType=VARCHAR},
      op_remain_money = #{opRemainMoney,jdbcType=DOUBLE},
      open_dt = #{openDt,jdbcType=TIMESTAMP},
      op_order_no = #{opOrderNo,jdbcType=VARCHAR},
      op_ele_total_amount = #{opEleTotalAmount,jdbcType=FLOAT},
      op_water_remain_user = #{opWaterRemainUser,jdbcType=FLOAT},
      cl_dt = #{clDt,jdbcType=TIMESTAMP},
      cl_type = #{clType,jdbcType=TINYINT},
      cl_total_amount = #{clTotalAmount,jdbcType=DOUBLE},
@@ -298,7 +376,11 @@
      cl_this_money = #{clThisMoney,jdbcType=DOUBLE},
      cl_this_time = #{clThisTime,jdbcType=INTEGER},
      cl_open_dt = #{clOpenDt,jdbcType=TIMESTAMP},
      close_dt = #{closeDt,jdbcType=TIMESTAMP}
      close_dt = #{closeDt,jdbcType=TIMESTAMP},
      cl_order_no = #{clOrderNo,jdbcType=VARCHAR},
      cl_ele_total_amount = #{clEleTotalAmount,jdbcType=FLOAT},
      cl_water_remain_user = #{clWaterRemainUser,jdbcType=FLOAT},
      cl_this_ele = #{clThisEle,jdbcType=FLOAT}
    where id = #{id,jdbcType=BIGINT}
  </update>
</mapper>
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveLastMapper.xml
@@ -16,6 +16,9 @@
    <result column="op_ic_card_addr" jdbcType="VARCHAR" property="opIcCardAddr" />
    <result column="op_remain_money" jdbcType="DOUBLE" property="opRemainMoney" />
    <result column="open_dt" jdbcType="TIMESTAMP" property="openDt" />
    <result column="op_order_no" jdbcType="VARCHAR" property="opOrderNo" />
    <result column="op_ele_total_amount" jdbcType="FLOAT" property="opEleTotalAmount" />
    <result column="op_water_remain_user" jdbcType="FLOAT" property="opWaterRemainUser" />
    <result column="cl_dt" jdbcType="TIMESTAMP" property="clDt" />
    <result column="cl_type" jdbcType="TINYINT" property="clType" />
    <result column="cl_total_amount" jdbcType="DOUBLE" property="clTotalAmount" />
@@ -27,13 +30,18 @@
    <result column="cl_this_time" jdbcType="INTEGER" property="clThisTime" />
    <result column="cl_open_dt" jdbcType="TIMESTAMP" property="clOpenDt" />
    <result column="close_dt" jdbcType="TIMESTAMP" property="closeDt" />
    <result column="cl_order_no" jdbcType="VARCHAR" property="clOrderNo" />
    <result column="cl_ele_total_amount" jdbcType="FLOAT" property="clEleTotalAmount" />
    <result column="cl_water_remain_user" jdbcType="FLOAT" property="clWaterRemainUser" />
    <result column="cl_this_ele" jdbcType="FLOAT" property="clThisEle" />
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, last_history_id, controller_id, intake_id, rtu_addr, op_dt, op_type, op_total_amount, op_ic_card_no,
    op_ic_card_addr, op_remain_money, open_dt, cl_dt, cl_type, cl_total_amount, cl_ic_card_no,
    cl_ic_card_addr, cl_remain_money, cl_this_amount, cl_this_money, cl_this_time, cl_open_dt,
    close_dt
    id, last_history_id, controller_id, intake_id, rtu_addr, op_dt, op_type, op_total_amount,
    op_ic_card_no, op_ic_card_addr, op_remain_money, open_dt, op_order_no, op_ele_total_amount,
    op_water_remain_user, cl_dt, cl_type, cl_total_amount, cl_ic_card_no, cl_ic_card_addr,
    cl_remain_money, cl_this_amount, cl_this_money, cl_this_time, cl_open_dt, close_dt,
    cl_order_no, cl_ele_total_amount, cl_water_remain_user, cl_this_ele
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
@@ -42,7 +50,6 @@
    from rm_open_close_valve_last
    where id = #{id,jdbcType=BIGINT}
  </select>
  <select id="selectByRtuAddr" parameterType="java.lang.String" resultMap="BaseResultMap">
    <!--@mbg.generated-->
    select
@@ -57,22 +64,28 @@
  </delete>
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast">
    <!--@mbg.generated-->
    insert into rm_open_close_valve_last (id, last_history_id, controller_id, intake_id,
      rtu_addr, op_dt, op_type,
      op_total_amount, op_ic_card_no, op_ic_card_addr,
      op_remain_money, open_dt, cl_dt,
      cl_type, cl_total_amount, cl_ic_card_no,
      cl_ic_card_addr, cl_remain_money, cl_this_amount,
      cl_this_money, cl_this_time, cl_open_dt,
      close_dt)
    values (#{id,jdbcType=BIGINT}, #{lastHistoryId,jdbcType=BIGINT}, #{controllerId,jdbcType=BIGINT},
      #{intakeId,jdbcType=BIGINT}, #{rtuAddr,jdbcType=VARCHAR}, #{opDt,jdbcType=TIMESTAMP},
      #{opType,jdbcType=TINYINT}, #{opTotalAmount,jdbcType=DOUBLE}, #{opIcCardNo,jdbcType=VARCHAR},
      #{opIcCardAddr,jdbcType=VARCHAR}, #{opRemainMoney,jdbcType=DOUBLE}, #{openDt,jdbcType=TIMESTAMP},
      #{clDt,jdbcType=TIMESTAMP}, #{clType,jdbcType=TINYINT}, #{clTotalAmount,jdbcType=DOUBLE},
      #{clIcCardNo,jdbcType=VARCHAR}, #{clIcCardAddr,jdbcType=VARCHAR}, #{clRemainMoney,jdbcType=DOUBLE},
      #{clThisAmount,jdbcType=DOUBLE}, #{clThisMoney,jdbcType=DOUBLE}, #{clThisTime,jdbcType=INTEGER},
      #{clOpenDt,jdbcType=TIMESTAMP}, #{closeDt,jdbcType=TIMESTAMP})
    insert into rm_open_close_valve_last (id, last_history_id, controller_id,
      intake_id, rtu_addr, op_dt,
      op_type, op_total_amount, op_ic_card_no,
      op_ic_card_addr, op_remain_money, open_dt,
      op_order_no, op_ele_total_amount, op_water_remain_user,
      cl_dt, cl_type, cl_total_amount,
      cl_ic_card_no, cl_ic_card_addr, cl_remain_money,
      cl_this_amount, cl_this_money, cl_this_time,
      cl_open_dt, close_dt, cl_order_no,
      cl_ele_total_amount, cl_water_remain_user, cl_this_ele
      )
    values (#{id,jdbcType=BIGINT}, #{lastHistoryId,jdbcType=BIGINT}, #{controllerId,jdbcType=BIGINT},
      #{intakeId,jdbcType=BIGINT}, #{rtuAddr,jdbcType=VARCHAR}, #{opDt,jdbcType=TIMESTAMP},
      #{opType,jdbcType=TINYINT}, #{opTotalAmount,jdbcType=DOUBLE}, #{opIcCardNo,jdbcType=VARCHAR},
      #{opIcCardAddr,jdbcType=VARCHAR}, #{opRemainMoney,jdbcType=DOUBLE}, #{openDt,jdbcType=TIMESTAMP},
      #{opOrderNo,jdbcType=VARCHAR}, #{opEleTotalAmount,jdbcType=FLOAT}, #{opWaterRemainUser,jdbcType=FLOAT},
      #{clDt,jdbcType=TIMESTAMP}, #{clType,jdbcType=TINYINT}, #{clTotalAmount,jdbcType=DOUBLE},
      #{clIcCardNo,jdbcType=VARCHAR}, #{clIcCardAddr,jdbcType=VARCHAR}, #{clRemainMoney,jdbcType=DOUBLE},
      #{clThisAmount,jdbcType=DOUBLE}, #{clThisMoney,jdbcType=DOUBLE}, #{clThisTime,jdbcType=INTEGER},
      #{clOpenDt,jdbcType=TIMESTAMP}, #{closeDt,jdbcType=TIMESTAMP}, #{clOrderNo,jdbcType=VARCHAR},
      #{clEleTotalAmount,jdbcType=FLOAT}, #{clWaterRemainUser,jdbcType=FLOAT}, #{clThisEle,jdbcType=FLOAT}
      )
  </insert>
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast">
    <!--@mbg.generated-->
@@ -114,6 +127,15 @@
      <if test="openDt != null">
        open_dt,
      </if>
      <if test="opOrderNo != null">
        op_order_no,
      </if>
      <if test="opEleTotalAmount != null">
        op_ele_total_amount,
      </if>
      <if test="opWaterRemainUser != null">
        op_water_remain_user,
      </if>
      <if test="clDt != null">
        cl_dt,
      </if>
@@ -146,6 +168,18 @@
      </if>
      <if test="closeDt != null">
        close_dt,
      </if>
      <if test="clOrderNo != null">
        cl_order_no,
      </if>
      <if test="clEleTotalAmount != null">
        cl_ele_total_amount,
      </if>
      <if test="clWaterRemainUser != null">
        cl_water_remain_user,
      </if>
      <if test="clThisEle != null">
        cl_this_ele,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
@@ -185,6 +219,15 @@
      <if test="openDt != null">
        #{openDt,jdbcType=TIMESTAMP},
      </if>
      <if test="opOrderNo != null">
        #{opOrderNo,jdbcType=VARCHAR},
      </if>
      <if test="opEleTotalAmount != null">
        #{opEleTotalAmount,jdbcType=FLOAT},
      </if>
      <if test="opWaterRemainUser != null">
        #{opWaterRemainUser,jdbcType=FLOAT},
      </if>
      <if test="clDt != null">
        #{clDt,jdbcType=TIMESTAMP},
      </if>
@@ -217,6 +260,18 @@
      </if>
      <if test="closeDt != null">
        #{closeDt,jdbcType=TIMESTAMP},
      </if>
      <if test="clOrderNo != null">
        #{clOrderNo,jdbcType=VARCHAR},
      </if>
      <if test="clEleTotalAmount != null">
        #{clEleTotalAmount,jdbcType=FLOAT},
      </if>
      <if test="clWaterRemainUser != null">
        #{clWaterRemainUser,jdbcType=FLOAT},
      </if>
      <if test="clThisEle != null">
        #{clThisEle,jdbcType=FLOAT},
      </if>
    </trim>
  </insert>
@@ -257,6 +312,15 @@
      <if test="openDt != null">
        open_dt = #{openDt,jdbcType=TIMESTAMP},
      </if>
      <if test="opOrderNo != null">
        op_order_no = #{opOrderNo,jdbcType=VARCHAR},
      </if>
      <if test="opEleTotalAmount != null">
        op_ele_total_amount = #{opEleTotalAmount,jdbcType=FLOAT},
      </if>
      <if test="opWaterRemainUser != null">
        op_water_remain_user = #{opWaterRemainUser,jdbcType=FLOAT},
      </if>
      <if test="clDt != null">
        cl_dt = #{clDt,jdbcType=TIMESTAMP},
      </if>
@@ -290,6 +354,18 @@
      <if test="closeDt != null">
        close_dt = #{closeDt,jdbcType=TIMESTAMP},
      </if>
      <if test="clOrderNo != null">
        cl_order_no = #{clOrderNo,jdbcType=VARCHAR},
      </if>
      <if test="clEleTotalAmount != null">
        cl_ele_total_amount = #{clEleTotalAmount,jdbcType=FLOAT},
      </if>
      <if test="clWaterRemainUser != null">
        cl_water_remain_user = #{clWaterRemainUser,jdbcType=FLOAT},
      </if>
      <if test="clThisEle != null">
        cl_this_ele = #{clThisEle,jdbcType=FLOAT},
      </if>
    </set>
    where id = #{id,jdbcType=BIGINT}
  </update>
@@ -307,6 +383,9 @@
      op_ic_card_addr = #{opIcCardAddr,jdbcType=VARCHAR},
      op_remain_money = #{opRemainMoney,jdbcType=DOUBLE},
      open_dt = #{openDt,jdbcType=TIMESTAMP},
      op_order_no = #{opOrderNo,jdbcType=VARCHAR},
      op_ele_total_amount = #{opEleTotalAmount,jdbcType=FLOAT},
      op_water_remain_user = #{opWaterRemainUser,jdbcType=FLOAT},
      cl_dt = #{clDt,jdbcType=TIMESTAMP},
      cl_type = #{clType,jdbcType=TINYINT},
      cl_total_amount = #{clTotalAmount,jdbcType=DOUBLE},
@@ -317,7 +396,11 @@
      cl_this_money = #{clThisMoney,jdbcType=DOUBLE},
      cl_this_time = #{clThisTime,jdbcType=INTEGER},
      cl_open_dt = #{clOpenDt,jdbcType=TIMESTAMP},
      close_dt = #{closeDt,jdbcType=TIMESTAMP}
      close_dt = #{closeDt,jdbcType=TIMESTAMP},
      cl_order_no = #{clOrderNo,jdbcType=VARCHAR},
      cl_ele_total_amount = #{clEleTotalAmount,jdbcType=FLOAT},
      cl_water_remain_user = #{clWaterRemainUser,jdbcType=FLOAT},
      cl_this_ele = #{clThisEle,jdbcType=FLOAT}
    where id = #{id,jdbcType=BIGINT}
  </update>
</mapper>
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java
@@ -57,11 +57,6 @@
    @Autowired
    private RmOnHourReportLastMapper rmOnHourReportLastDao; // 整点上报最新数据DAO
    @Autowired
    private RmOpenCloseHistoryMapper rmOpenCloseHistoryDao;
    @Autowired
    private RmOpenCloseLastMapper rmOpenCloseLastDao;
    //@Autowired
    //@Lazy
    //private DbSv sv ;
@@ -317,46 +312,6 @@
    @Transactional(rollbackFor = Exception.class)
    public void updateRmOpenCloseValveHistory(RmOpenCloseValveHistory po){
        this.rmOpenCloseValveHistoryMapperDao.updateByPrimaryKeySelective(po) ;
    }
    /**
     * 保存控制器开关阀上报数据最新记录(202404)
     * @param po
     */
    @Transactional(rollbackFor = Exception.class)
    public void saveRmOpenCloseLast(RmOpenCloseLast po){
        this.rmOpenCloseLastDao.insert(po) ;
    }
    /**
     * 保存控制器开关阀上报数据历史记录(202404)
     * @param po
     */
    @Transactional(rollbackFor = Exception.class)
    public void saveRmOpenCloseHistory(RmOpenCloseHistory po){
        this.rmOpenCloseHistoryDao.insert(po) ;
    }
    /**
     * 得到控制器开关阀上报数据最新记录(202404)
     * @param rtuAddr
     * @return
     */
    public RmOpenCloseLast getRmOpenCloseLast(String rtuAddr){
        List<RmOpenCloseLast> list = rmOpenCloseLastDao.getRmOpenCloseReportLast(rtuAddr);
        if(list != null && list.size() > 0){
            return list.get(0) ;
        }
        return null ;
    }
    /**
     * 保存控制器开关阀上报数据最新记录(202404)
     * @param po
     */
    @Transactional(rollbackFor = Exception.class)
    public void updateRmOpenCloseLast(RmOpenCloseLast po){
        this.rmOpenCloseLastDao.updateByPrimaryKeySelective(po);
    }
    /////////////////////////////////////////////////
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealOpenValveReport.java
@@ -67,6 +67,7 @@
            //数据库中存在该控制器的开关阀数据
            if(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt).equals(poLast.openDt)){
                //时间一致,重复上报数据,不进行任何处理
                //log.error("测试开阀日期一致");
            }else{
                if(poLast.opType != null){
                    //原记录存在开阀数据,首先进行时间对比
@@ -149,16 +150,11 @@
     * @throws Exception
     */
    private RmOpenCloseValveLast newRmOpenCloseValveLast(PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd83OpenVo dataCd83OpenVo)throws Exception {
        RmOpenCloseValveLast po = new RmOpenCloseValveLast(null, null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(),
                rtuAddr,
                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
                dataCd83OpenVo.type,
                dataCd83OpenVo.totalAmount,
                dataCd83OpenVo.icCardNo,
                dataCd83OpenVo.icCardAddr,
                dataCd83OpenVo.remainMoney,
                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt),
                null, null, null, null, null, null, null, null, null, null, null) ;
        RmOpenCloseValveLast po = new RmOpenCloseValveLast() ;
        po.controllerId = controller==null?null:controller.getId() ;
        po.intakeId = controller==null?null:controller.getIntakeId() ;
        po.rtuAddr = rtuAddr ;
        po.valueFrom(dV1_0_1, dataCd83OpenVo);
        return po ;
    }
@@ -173,16 +169,11 @@
     * @throws Exception
     */
    private RmOpenCloseValveHistory newRmOpenCloseValveHistory(PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd83OpenVo dataCd83OpenVo)throws Exception {
        RmOpenCloseValveHistory po = new RmOpenCloseValveHistory(null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(),
                rtuAddr,
                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
                dataCd83OpenVo.type,
                dataCd83OpenVo.totalAmount,
                dataCd83OpenVo.icCardNo,
                dataCd83OpenVo.icCardAddr,
                dataCd83OpenVo.remainMoney,
                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt),
                null, null, null, null, null, null, null, null, null, null, null) ;
        RmOpenCloseValveHistory po = new RmOpenCloseValveHistory() ;
        po.controllerId = controller==null?null:controller.getId() ;
        po.intakeId = controller==null?null:controller.getIntakeId() ;
        po.rtuAddr = rtuAddr ;
        po.valueFrom(dV1_0_1, dataCd83OpenVo);
        return po ;
    }
@@ -200,56 +191,12 @@
    private void updateOpenValve(PrController controller, RmOpenCloseValveLast poLast, RmOpenCloseValveHistory poHistory, DataV1_0_1 dV1_0_1, DataCd83OpenVo dataCd83OpenVo, boolean clearCloseValve) throws Exception {
        poLast.controllerId = controller==null?null:controller.getId();
        poLast.intakeId = controller==null?null:controller.getIntakeId();
        poLast.opDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt);
        poLast.opType = dataCd83OpenVo.type ;
        poLast.opTotalAmount = dataCd83OpenVo.totalAmount ;
        poLast.opIcCardNo = dataCd83OpenVo.icCardNo ;
        poLast.opIcCardAddr = dataCd83OpenVo.icCardAddr ;
        poLast.opRemainMoney = dataCd83OpenVo.remainMoney ;
        poLast.openDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt) ;
        poLast.updateFrom(dV1_0_1, dataCd83OpenVo, clearCloseValve);
        if(poHistory != null){
            poHistory.controllerId = controller==null?null:controller.getId();
            poHistory.intakeId = controller==null?null:controller.getIntakeId();
            poHistory.opDt = poLast.opDt;
            poHistory.opType = dataCd83OpenVo.type ;
            poHistory.opTotalAmount = dataCd83OpenVo.totalAmount ;
            poHistory.opIcCardNo = dataCd83OpenVo.icCardNo ;
            poHistory.opIcCardAddr = dataCd83OpenVo.icCardAddr ;
            poHistory.opRemainMoney = dataCd83OpenVo.remainMoney ;
            poHistory.openDt = poLast.openDt ;
            poHistory.updateFrom(dV1_0_1, dataCd83OpenVo, clearCloseValve);
        }
        if(clearCloseValve){
            poLast.clDt = null ;
            poLast.clType = null ;
            poLast.clTotalAmount = null ;
            poLast.clIcCardNo = null ;
            poLast.clIcCardAddr = null ;
            poLast.clRemainMoney = null ;
            poLast.clThisAmount = null ;
            poLast.clThisMoney = null ;
            poLast.clThisTime = null ;
            poLast.clOpenDt = null ;
            poLast.closeDt = null ;
            if(poHistory != null) {
                poHistory.clDt = null;
                poHistory.clType = null;
                poHistory.clTotalAmount = null;
                poHistory.clIcCardNo = null;
                poHistory.clIcCardAddr = null;
                poHistory.clRemainMoney = null;
                poHistory.clThisAmount = null;
                poHistory.clThisMoney = null;
                poHistory.clThisTime = null;
                poHistory.clOpenDt = null;
                poHistory.closeDt = null;
            }
        }
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealAlarmStatusV202404.java
@@ -55,8 +55,8 @@
            }else if(cdObj instanceof DataCd84Vo){
                //设备终端刷卡开泵/阀上报
                DataCd84Vo cdData = (DataCd84Vo)(cdObj) ;
                this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.opDt, cdData, dV202404.dt) ;
                this.saveHistory(sv, controller, d.getRtuAddr(), cdData.opDt, cdData, dV202404.dt) ;
                this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.openDt, cdData, dV202404.dt) ;
                this.saveHistory(sv, controller, d.getRtuAddr(), cdData.openDt, cdData, dV202404.dt) ;
            }else if(cdObj instanceof DataCdC2Vo){
                //设备终端开关水泵/阀门成功/失败上报
                DataCdC2Vo cdData = (DataCdC2Vo)(cdObj) ;
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealCloseValveReportV202404.java
@@ -4,8 +4,8 @@
import com.dy.common.mw.protocol.p206V202404.DataV202404;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd85Vo;
import com.dy.pipIrrGlobal.pojoPr.PrController;
import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseHistory;
import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseLast;
import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory;
import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast;
import com.dy.rtuMw.server.rtuData.TaskSurpport;
import com.dy.rtuMw.server.rtuData.dbSv.DbSv;
import org.apache.logging.log4j.LogManager;
@@ -69,19 +69,19 @@
     * @param cdData 功能数据
     */
    private void saveOrUpdateLast(DbSv sv, PrController controller, String rtuAddr, DataV202404 dataV202404, DataCd85Vo cdData)throws Exception {
        RmOpenCloseLast po = sv.getRmOpenCloseLast(rtuAddr);
        RmOpenCloseValveLast po = sv.getRmOpenCloseValveLast(rtuAddr);
        if(po == null){
            po = new RmOpenCloseLast();
            po = new RmOpenCloseValveLast();
            po.controllerId = controller==null?null:controller.getId();
            po.intakeId = controller==null?null:controller.getIntakeId();
            po.rtuAddr = rtuAddr;
            po.valueFrom85(dataV202404, cdData);
            sv.saveRmOpenCloseLast(po);
            sv.saveRmOpenCloseValveLast(po);
        }else{
            po.controllerId = controller==null?null:controller.getId();
            po.intakeId = controller==null?null:controller.getIntakeId();
            po.valueFrom85(dataV202404, cdData);
            sv.updateRmOpenCloseLast(po);
            sv.updateRmOpenCloseValveLast(po);
        }
    }
@@ -94,11 +94,11 @@
     * @param cdData 功能数据
     */
    private void saveHistory(DbSv sv, PrController controller, String rtuAddr, DataV202404 dataV202404, DataCd85Vo cdData)throws Exception {
        RmOpenCloseHistory po = new RmOpenCloseHistory();
        RmOpenCloseValveHistory po = new RmOpenCloseValveHistory();
        po.controllerId = controller==null?null:controller.getId();
        po.intakeId = controller==null?null:controller.getIntakeId();
        po.rtuAddr = rtuAddr;
        po.valueFrom85(dataV202404, cdData);
        sv.saveRmOpenCloseHistory(po); ;
        sv.saveRmOpenCloseValveHistory(po); ;
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealOpenValveReportV202404.java
@@ -4,8 +4,8 @@
import com.dy.common.mw.protocol.p206V202404.DataV202404;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd84Vo;
import com.dy.pipIrrGlobal.pojoPr.PrController;
import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseHistory;
import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseLast;
import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory;
import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast;
import com.dy.rtuMw.server.rtuData.TaskSurpport;
import com.dy.rtuMw.server.rtuData.dbSv.DbSv;
import org.apache.logging.log4j.LogManager;
@@ -69,19 +69,19 @@
     * @param cdData 功能数据
     */
    private void saveOrUpdateLast(DbSv sv, PrController controller, String rtuAddr, DataV202404 dataV202404, DataCd84Vo cdData)throws Exception {
        RmOpenCloseLast po = sv.getRmOpenCloseLast(rtuAddr);
        RmOpenCloseValveLast po = sv.getRmOpenCloseValveLast(rtuAddr);
        if(po == null){
            po = new RmOpenCloseLast();
            po = new RmOpenCloseValveLast();
            po.controllerId = controller==null?null:controller.getId();
            po.intakeId = controller==null?null:controller.getIntakeId();
            po.rtuAddr = rtuAddr;
            po.valueFrom84(dataV202404, cdData);
            sv.saveRmOpenCloseLast(po);
            sv.saveRmOpenCloseValveLast(po);
        }else{
            po.controllerId = controller==null?null:controller.getId();
            po.intakeId = controller==null?null:controller.getIntakeId();
            po.valueFrom84(dataV202404, cdData);
            sv.updateRmOpenCloseLast(po);
            sv.updateRmOpenCloseValveLast(po);
        }
    }
@@ -94,11 +94,11 @@
     * @param cdData 功能数据
     */
    private void saveHistory(DbSv sv, PrController controller, String rtuAddr, DataV202404 dataV202404, DataCd84Vo cdData)throws Exception {
        RmOpenCloseHistory po = new RmOpenCloseHistory();
        RmOpenCloseValveHistory po = new RmOpenCloseValveHistory();
        po.controllerId = controller==null?null:controller.getId();
        po.intakeId = controller==null?null:controller.getIntakeId();
        po.rtuAddr = rtuAddr;
        po.valueFrom84(dataV202404, cdData);
        sv.saveRmOpenCloseHistory(po); ;
        sv.saveRmOpenCloseValveHistory(po); ;
    }
}
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/PipIrrMwTestWebApplication.java
@@ -1,6 +1,6 @@
package com.dy.pipIrrMwTestWeb;
import com.dy.pipIrrMwTestWeb.test.CommandP206V202404Ctrl;
import com.dy.pipIrrMwTestWeb.p206V202404test.CommandP206V202404Ctrl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/common/CodeLocal.java
File was renamed from pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/CodeLocal.java
@@ -1,4 +1,4 @@
package com.dy.pipIrrMwTestWeb.test;
package com.dy.pipIrrMwTestWeb.common;
public class CodeLocal {
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/common/CommandResultCtrl.java
File was renamed from pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/CommandResultCtrl.java
@@ -1,4 +1,4 @@
package com.dy.pipIrrMwTestWeb.test;
package com.dy.pipIrrMwTestWeb.common;
import com.dy.common.mw.protocol.Data;
import com.dy.common.webUtil.BaseResponse;
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/ComSupportP206V1_0_0.java
File was renamed from pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/ComSupportP206V100.java
@@ -1,4 +1,4 @@
package com.dy.pipIrrMwTestWeb.test;
package com.dy.pipIrrMwTestWeb.p206V1_0_0;
import com.dy.common.mw.protocol.Command;
import com.dy.common.mw.protocol.CommandType;
@@ -14,16 +14,16 @@
/**
 * @Author: liurunyu
 * @Date: 2024/5/14 17:32
 * @Date: 2024/6/29 6:47
 * @Description
 */
public class ComSupportP206V100 {
public class ComSupportP206V1_0_0 {
    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 = "620201000029" ;
    protected static String rtuAddr = "532328059995" ;
    protected static String rtuResultSendWebUrl = "http://127.0.0.1:65535/test/comRes/receive" ;
    protected static String icCardNo = "37142501020500001" ;//IC卡编号(用户卡序列号)
    protected static String icCardNo = "7044010686" ;//IC卡编号(用户卡序列号)
    @Autowired
@@ -84,4 +84,4 @@
        return response.getBody();
    }
}
}
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/CommandP206V1_0_0Ctrl.java
New file
@@ -0,0 +1,152 @@
package com.dy.pipIrrMwTestWeb.p206V1_0_0;
import com.dy.common.mw.protocol.Command;
import com.dy.common.mw.protocol.CommandType;
import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0;
import com.dy.common.mw.protocol.p206V1_0_0.downVos.*;
import com.dy.common.webUtil.BaseResponse;
import com.dy.pipIrrMwTestWeb.common.CodeLocal;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * @Author: liurunyu
 * @Date: 2024/6/29 6:46
 * @Description
 */
@Slf4j
@RestController
@RequestMapping(path="comP206V1_0_0")
@SuppressWarnings("unchecked")//java版本越高,对泛型约束越严,所以配置SuppressWarnings("unchecked")
public class CommandP206V1_0_0Ctrl extends ComSupportP206V1_0_0 {
    @GetMapping(path = "test")
    public BaseResponse<String> test(String com) {
        BaseResponse<String> rt = null ;
        if(com == null){
            rt = this.connect() ;//连接通信中间件测试
        }else{
            if(com.equals("21")){
                rt = this.cd21() ;
            }else if(com.equals("37")){
                rt = this.cd37() ;
            }else if(com.equals("38")){
                rt = this.cd38() ;
            }else if(com.equals("39")){
                rt = this.cd39() ;
            }else if(com.equals("3A")){
                rt = this.cd3A() ;
            }else if(com.equals("3B")){
                rt = this.cd3B() ;
            }else if(com.equals("3C")){
                rt = this.cd3C() ;
            }else if(com.equals("92")){
                rt = this.cd92() ;
            }else if(com.equals("93")){
                rt = this.cd93() ;
            }else if(com.equals("97")){
                rt = this.cd97() ;
            }else if(com.equals("98")){
                rt = this.cd98() ;
            }else if(com.equals("B0")){
                rt = this.cdB0() ;
            }
        }
        return rt ;
    }
    /**
     * 测试连通性
     * @return
     */
    private BaseResponse connect(){
        return this.sendTest() ;
    }
    private BaseResponse cd21(){
        Com21Vo comVo = new Com21Vo() ;
        comVo.ip = "8.140.180.59" ;//IP(例如 125.235.35.89)
        comVo.port = 6001 ;///端口号(0~65536)
        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_21, comVo, null)) ;
    }
    private BaseResponse cd37(){
        Com37Vo comVo = new Com37Vo() ;
        comVo.seconds = 20 ;
        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_37, comVo, null)) ;
    }
    private BaseResponse cd38(){
        Com38Vo comVo = new Com38Vo() ;
        comVo.remainMoneyAlarm = 10.0 ;//用户余额报警值(大于1.0)
        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_38, comVo, null)) ;
    }
    private BaseResponse cd39(){
        Com39Vo comVo = new Com39Vo() ;
        comVo.batteryVoltAlarm = 1.0 ;//电池电压报警值(大于0.1)
        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_39, comVo, null)) ;
    }
    private BaseResponse cd3A(){
        Com3AVo comVo = new Com3AVo() ;
        comVo.current = 1.0 ;//阀门堵转电流(大于0)
        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_3A, comVo, null)) ;
    }
    private BaseResponse cd3B(){
        Com3BVo comVo = new Com3BVo() ;
        comVo.second = 30 ;//阀门超时时间(秒)(大于1)
        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_3B, comVo, null)) ;
    }
    private BaseResponse cd3C(){
        Com3CVo comVo = new Com3CVo() ;
        comVo.minute = 10 ;//自报周期(分钟)(大于0)
        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_3C, comVo, null)) ;
    }
    private BaseResponse cd92(){
        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_92, null, null)) ;
    }
    private BaseResponse cd93(){
        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_93, null, null)) ;
    }
    //APP远程开阀
    private BaseResponse cd97(){
        Com97Vo comVo = new Com97Vo() ;
        comVo.icCardNo = CommandP206V1_0_0Ctrl.icCardNo ;
        comVo.moneyRemain = 234.56 ;
        comVo.waterPrice = 1.2 ;
        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_97, comVo, null)) ;
    }
    //APP远程关阀
    private BaseResponse cd98(){
        Com98Vo comVo = new Com98Vo() ;
        comVo.icCardNo = CommandP206V1_0_0Ctrl.icCardNo ;
        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_98, comVo, null)) ;
    }
    private BaseResponse cdB0(){
        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_B0, null, null)) ;
    }
    //在线情况
    private BaseResponse online(){
        Command com = new Command() ;
        com.id = Command.defaultId;//实际应用中,替换成数据库记录id
        com.protocol = ProtocolConstantV206V1_0_0.protocolName ;
        com.code = CodeLocal.onLine ;
        com.type = CommandType.innerCommand ;
        com.rtuResultSendWebUrl = rtuResultSendWebUrl ;
        return this.sendCom2Mw(com) ;
    }
}
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V202404test/ComSupportP206V202404.java
File was renamed from pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/ComSupportP206V202404.java
@@ -1,8 +1,7 @@
package com.dy.pipIrrMwTestWeb.test;
package com.dy.pipIrrMwTestWeb.p206V202404test;
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;
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V202404test/CommandP206V202404Ctrl.java
File was renamed from pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/CommandP206V202404Ctrl.java
@@ -1,4 +1,4 @@
package com.dy.pipIrrMwTestWeb.test;
package com.dy.pipIrrMwTestWeb.p206V202404test;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.downVos.*;
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/CommandP206V100Ctrl.java
File was deleted
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/log4j2.yml
@@ -65,7 +65,7 @@
    # 为包配置特殊的Log级别,方便调试,
    # 不受Loggers.Root.level限制
    Logger:
      - name: com.dy.pipIrrGlobal.daoSe
      - name: com.dy.pipIrrGlobal.daoPr
        additivity: false #去除重复的log
        level: debug #输出日志级别
        AppenderRef:
pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/config/WebListenerConfiguration.java
@@ -1,7 +1,6 @@
package com.dy.sso.config;
import com.dy.common.webListener.ConfigListener;
import com.dy.sso.util.SsoListener;
import jakarta.servlet.ServletContextListener;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.context.annotation.Bean;
pipIrr-platform/pipIrr-web/pom.xml
@@ -64,6 +64,11 @@
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
        </dependency>
pipIrr-platform/pom.xml
@@ -74,7 +74,14 @@
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <version>3.1.3</version>
                <type>pom</type>
                <scope>import</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>