liurunyu
2024-05-18 d50b97408847b6b0f8532a7b6bbf3d2dbb228df8
1、完善协议实现代码;
2、增加命令结果接收Controller。
2 文件已重命名
4个文件已修改
1个文件已添加
138 ■■■■■ 已修改文件
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/comResult/CommandResultDeal.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/PipIrrMwTestWebApplication.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/ComSupport.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/Command.java 93 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/CommandResultCtrl.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/comResult/CommandResultDeal.java
@@ -29,7 +29,7 @@
    }
    public void deal(Data data) {
        if (data.rtuResultSendWebUrl != null && data.rtuResultSendWebUrl.trim().equals("")) {
        if (data.rtuResultSendWebUrl != null && !data.rtuResultSendWebUrl.trim().equals("")) {
            String url = UriComponentsBuilder.fromUriString(data.rtuResultSendWebUrl)
                    .build()
                    .toUriString();
@@ -42,7 +42,7 @@
            } catch (Exception e) {
                e.printStackTrace();
            }
            assert response != null;
            //assert response != null;
        } else {
            log.error("严重错误,在com.dy.aceMw.web.comResult.CommandResultDeal里,处理的是RTU命令结果Node,但数据中rtuResultSendWebUrl为空");
        }
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml
@@ -20,7 +20,7 @@
        <base 
            isLowPower="false"
            onlyOneProtocol="true"
            downComandMaxResendTimes="3"
            downComandMaxResendTimes="1"
            commandSendInterval="3"
            cachWaitResultTimeout="60"
            offLineCachTimeout="86400"
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/PipIrrMwTestWebApplication.java
@@ -1,7 +1,7 @@
package com.dy.pipIrrMwTestWeb;
import com.dy.common.webUtil.BaseResponse;
import com.dy.pipIrrMwTestWeb.test.Test;
import com.dy.pipIrrMwTestWeb.test.Command;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
@@ -31,7 +31,7 @@
public class PipIrrMwTestWebApplication implements CommandLineRunner {
    @Autowired
    private Test test ;
    private Command test ;
    public static void main(String[] args) {
        SpringApplication.run(PipIrrMwTestWebApplication.class, args);
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/ComSupport.java
File was renamed from pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/TestSupport.java
@@ -19,12 +19,12 @@
 * @Date: 2024/5/14 17:32
 * @Description
 */
public class TestSupport {
public class ComSupport {
    protected static String mwUrlTest = "http://127.0.0.1:8070/rtuMw/com/test" ;
    protected static String mwUrlSendCom = "http://127.0.0.1:8070/rtuMw/com/send" ;
    protected static String rtuAddr = "37142501020100215" ;
    protected static String rtuResultSendWebUrl = "http://127.0.0.1:8080/test" ;
    protected static String rtuResultSendWebUrl = "http://127.0.0.1:65535/test/comRes/receive" ;
    protected static String controllerType = "57" ;//控制器类型
    protected static Integer projectNo = 10 ;//项目编码
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/Command.java
File was renamed from pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/Test.java
@@ -11,7 +11,7 @@
 * @Description
 */
@Component
public class Test extends TestSupport{
public class Command extends ComSupport {
    /**
     * 连接通信中间件测试
@@ -19,8 +19,9 @@
     */
    public BaseResponse test(){
        //return this.connect() ;//连接通信中间件测试
        //return this.cdXY(CodeV202404.cd_50) ;//发送固定参数的命令
        return this.cd65(2) ;
        //return this.cdXY(CodeV202404.cd_97) ;//发送固定参数的命令
        //return this.cd65(1) ;
        return this.cd15() ;
    }
    /**
@@ -39,20 +40,20 @@
    //设置终端地址(AFN=0x10H)
    private BaseResponse cd10(){
        ComCd10Vo comVo = new ComCd10Vo() ;
        comVo.controllerType = Test.controllerType ;
        comVo.projectNo = Test.projectNo  ;
        comVo.rtuNewAddr = Test.rtuAddr ;
        comVo.controllerType = Command.controllerType ;
        comVo.projectNo = Command.projectNo  ;
        comVo.rtuNewAddr = Command.rtuAddr ;
        return this.sendCom2Mw(this.command(CodeV202404.cd_10, comVo, null)) ;
    }
     //远程用户充值 (AFN=0x15H)
    private BaseResponse cd15(){
        ComCd15Vo comVo = new ComCd15Vo() ;
        comVo.controllerType = Test.controllerType ;
        comVo.projectNo = Test.projectNo  ;
        comVo.icCardAddr = Test.icCardAddr ;//IC卡地址(8位数字或字母)
        comVo.icCardNo = Test.icCardNo ;//用户卡序列号(17位数字)(6字节BCD,2字节HEX)
        comVo.chargeMoney = 123.45 ;//单位:元  2位小数点(最大值 99999999.99)
        comVo.chargeWater = 234.56 ;//单位:m3  2位小数点(最大值 99999999.99)
        comVo.controllerType = Command.controllerType ;
        comVo.projectNo = Command.projectNo  ;
        comVo.icCardAddr = Command.icCardAddr ;//IC卡地址(8位数字或字母)
        comVo.icCardNo = Command.icCardNo ;//用户卡序列号(17位数字)(6字节BCD,2字节HEX)
        comVo.chargeMoney = 12.34 ;//单位:元  2位小数点(最大值 99999999.99)
        comVo.chargeWater = 43.21 ;//单位:m3  2位小数点(最大值 99999999.99)
        comVo.flowNo = "123456789012" ;//流水号(12位数字)
        return this.sendCom2Mw(this.command(CodeV202404.cd_15, comVo, null)) ;
@@ -60,8 +61,8 @@
    //设置设备终端剩余水量和剩余金额报警值 (AFN=0x16H)
    private BaseResponse cd16(){
        ComCd16Vo comVo = new ComCd16Vo() ;
        comVo.controllerType = Test.controllerType ;
        comVo.projectNo = Test.projectNo  ;
        comVo.controllerType = Command.controllerType ;
        comVo.projectNo = Command.projectNo  ;
        comVo.waterAlarm = 10 ;//剩余水量报警值,单位:m3。整数,取值范围0~9999
        comVo.moneyAlarm = 11 ;//剩余金额报警值,单位:元。整数,取值范围0~9999
@@ -70,8 +71,8 @@
    //设置设备终端IP地址 (AFN=0x21H)
    private BaseResponse cd21(){
        ComCd21Vo comVo = new ComCd21Vo() ;
        comVo.controllerType = Test.controllerType ;
        comVo.projectNo = Test.projectNo  ;
        comVo.controllerType = Command.controllerType ;
        comVo.projectNo = Command.projectNo  ;
        comVo.channel = 1 ;//IP通道号(取值范围 1、2).
        comVo.ip = "111.222.123.321" ;//IP(例如 125.235.35.89)
        comVo.port = 60000 ;///端口号(0~65536)
@@ -81,8 +82,8 @@
    //设置机井年最大开采量和水位下限 (AFN=0x22H)
    private BaseResponse cd22(){
        ComCd22Vo comVo = new ComCd22Vo() ;
        comVo.controllerType = Test.controllerType ;
        comVo.projectNo = Test.projectNo  ;
        comVo.controllerType = Command.controllerType ;
        comVo.projectNo = Command.projectNo  ;
        comVo.maxAmountYear = 12345 ;//机井年最大用水量单位:m3 整数,取值范围0~99999999
        comVo.limitLevel = 123.4; //水位下限 单位:m 取值范围:0~9999.99
@@ -91,8 +92,8 @@
    //设置设备终端域名(AFN=0x23H)
    private BaseResponse cd23(){
        ComCd23Vo comVo = new ComCd23Vo() ;
        comVo.controllerType = Test.controllerType ;
        comVo.projectNo = Test.projectNo  ;
        comVo.controllerType = Command.controllerType ;
        comVo.projectNo = Command.projectNo  ;
        comVo.channel = 1 ;//IP通道号(取值范围 1、2).
        comVo.domain = "www.baidu.com" ;//域名(例如 dayuyanjiuyuan.to),最大长度42字符
        comVo.port = 60000 ;///端口号(0~65536)
@@ -102,8 +103,8 @@
    //设置设备终端注册号(AFN=0x24H)
    private BaseResponse cd24(){
        ComCd24Vo comVo = new ComCd24Vo() ;
        comVo.controllerType = Test.controllerType ;
        comVo.projectNo = Test.projectNo  ;
        comVo.controllerType = Command.controllerType ;
        comVo.projectNo = Command.projectNo  ;
        comVo.registerNo = "102030405060708090" ;//域名(例如 dayuyanjiuyuan.to),最大长度42字符
        return this.sendCom2Mw(this.command(CodeV202404.cd_24, comVo, null)) ;
@@ -111,8 +112,8 @@
    //设置设备终端年用水量(AFN=0x24H)
    private BaseResponse cd26(){
        ComCd26Vo comVo = new ComCd26Vo() ;
        comVo.controllerType = Test.controllerType ;
        comVo.projectNo = Test.projectNo  ;
        comVo.controllerType = Command.controllerType ;
        comVo.projectNo = Command.projectNo  ;
        comVo.ipChannel = 1  ;//IP通道号 0x01:1通道 0x02:2通道.
        comVo.maxAmountYear = 123456  ;//设备终端年用水量 单位:m3 整数,取值范围0~99999999
@@ -121,8 +122,8 @@
    //设置设备终端用水有效(AFN=0x31H)
    private BaseResponse cd31(){
        ComCd31Vo comVo = new ComCd31Vo() ;
        comVo.controllerType = Test.controllerType ;
        comVo.projectNo = Test.projectNo  ;
        comVo.controllerType = Command.controllerType ;
        comVo.projectNo = Command.projectNo  ;
        comVo.valid = false ;//有效性
        return this.sendCom2Mw(this.command(CodeV202404.cd_31, comVo, null)) ;
@@ -130,8 +131,8 @@
    //查询遥测终端充值记录 (AFN=0x55H)
    private BaseResponse cd55(int page){
        ComCd55Vo comVo = new ComCd55Vo() ;
        comVo.controllerType = Test.controllerType ;
        comVo.projectNo = Test.projectNo  ;
        comVo.controllerType = Command.controllerType ;
        comVo.projectNo = Command.projectNo  ;
        comVo.page = page ;//分页(取值范围1、2、3、4、5、6、7、8、9)
        return this.sendCom2Mw(this.command(CodeV202404.cd_55, comVo, null)) ;
@@ -139,34 +140,34 @@
    //查询设备终端用户用水记录(AFN=0x65H)
    private BaseResponse cd65(int page){
        ComCd65Vo comVo = new ComCd65Vo() ;
        comVo.controllerType = Test.controllerType ;
        comVo.projectNo = Test.projectNo  ;
        comVo.controllerType = Command.controllerType ;
        comVo.projectNo = Command.projectNo  ;
        comVo.page = page ;
        return this.sendCom2Mw(this.command(CodeV202404.cd_65, comVo, null)) ;
    }
    //查询控制器IP地址(AFN=0x86H)
    private BaseResponse cd86(){
        ComCd86Vo comVo = new ComCd86Vo() ;
        comVo.controllerType = Test.controllerType ;
        comVo.projectNo = Test.projectNo  ;
        comVo.controllerType = Command.controllerType ;
        comVo.projectNo = Command.projectNo  ;
        comVo.channel = 1 ;//IP通道号(取值范围 1、2).
        return this.sendCom2Mw(this.command(CodeV202404.cd_86, comVo, null)) ;
    }
    //查询控制器域名(AFN=0x87H)
    private BaseResponse cd87(){
        ComCd87Vo comVo = new ComCd87Vo() ;
        comVo.controllerType = Test.controllerType ;
        comVo.projectNo = Test.projectNo  ;
        comVo.controllerType = Command.controllerType ;
        comVo.projectNo = Command.projectNo  ;
        comVo.channel = 1 ;//IP通道号(取值范围 1、2).
        return this.sendCom2Mw(this.command(CodeV202404.cd_87, comVo, null)) ;
    }
    //平台/APP远程开启水泵/阀门(AFN=0x92H/AFN=0xA2H)
    private BaseResponse cd92(){
        ComCd92_A2Vo comVo = new ComCd92_A2Vo() ;
        comVo.controllerType = Test.controllerType ;
        comVo.projectNo = Test.projectNo  ;
        comVo.controllerType = Command.controllerType ;
        comVo.projectNo = Command.projectNo  ;
        //comVo.icCardAddr = Test.icCardAddr ;//IC卡地址(8位数字或字母)
        comVo.icCardNo = Test.icCardNo ;//用户卡序列号(17位数字)(6字节BCD,2字节HEX)
        comVo.icCardNo = Command.icCardNo ;//用户卡序列号(17位数字)(6字节BCD,2字节HEX)
        comVo.waterRemain = 123.45 ;//单位:元  2位小数点(最大值 99999999.99)
        comVo.moneyRemain = 234.56 ;//单位:m3  2位小数点(最大值 99999999.99)
        comVo.waterPrice = 0.8 ;//水量单价 单位:元, 2个小数点
@@ -178,10 +179,10 @@
    //平台/APP远程开启水泵/阀门(AFN=0x92H/AFN=0xA2H)
    private BaseResponse cdA2(){
        ComCd92_A2Vo comVo = new ComCd92_A2Vo() ;
        comVo.controllerType = Test.controllerType ;
        comVo.projectNo = Test.projectNo  ;
        comVo.controllerType = Command.controllerType ;
        comVo.projectNo = Command.projectNo  ;
        //comVo.icCardAddr = Test.icCardAddr ;//IC卡地址(8位数字或字母)
        comVo.icCardNo = Test.icCardNo ;//用户卡序列号(17位数字)(6字节BCD,2字节HEX)
        comVo.icCardNo = Command.icCardNo ;//用户卡序列号(17位数字)(6字节BCD,2字节HEX)
        comVo.waterRemain = 123.45 ;//单位:元  2位小数点(最大值 99999999.99)
        comVo.moneyRemain = 234.56 ;//单位:m3  2位小数点(最大值 99999999.99)
        comVo.waterPrice = 0.8 ;//水量单价 单位:元, 2个小数点
@@ -194,9 +195,9 @@
   //平台/APP远程关闭水泵/阀门(AFN=0x93H/AFN=0xA3H)
    private BaseResponse cd93(){
        ComCd93_A3Vo comVo = new ComCd93_A3Vo() ;
        comVo.controllerType = Test.controllerType ;
        comVo.projectNo = Test.projectNo  ;
        comVo.icCardNo = Test.icCardNo ;//用户卡序列号(17位数字)(6字节BCD,2字节HEX)
        comVo.controllerType = Command.controllerType ;
        comVo.projectNo = Command.projectNo  ;
        comVo.icCardNo = Command.icCardNo ;//用户卡序列号(17位数字)(6字节BCD,2字节HEX)
        comVo.orderNo = "1234567890123456" ;//订单号(16位数字)
        return this.sendCom2Mw(this.command(CodeV202404.cd_93, comVo, null)) ;
@@ -204,9 +205,9 @@
    //平台/APP远程关闭水泵/阀门(AFN=0x93H/AFN=0xA3H)
    private BaseResponse cdA3(){
        ComCd93_A3Vo comVo = new ComCd93_A3Vo() ;
        comVo.controllerType = Test.controllerType ;
        comVo.projectNo = Test.projectNo  ;
        comVo.icCardNo = Test.icCardNo ;//用户卡序列号(17位数字)(6字节BCD,2字节HEX)
        comVo.controllerType = Command.controllerType ;
        comVo.projectNo = Command.projectNo  ;
        comVo.icCardNo = Command.icCardNo ;//用户卡序列号(17位数字)(6字节BCD,2字节HEX)
        comVo.orderNo = "1234567890123456" ;//订单号(16位数字)
        return this.sendCom2Mw(this.command(CodeV202404.cd_A3, comVo, null)) ;
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/CommandResultCtrl.java
New file
@@ -0,0 +1,29 @@
package com.dy.pipIrrMwTestWeb.test;
import com.dy.common.mw.protocol.Data;
import com.dy.common.webUtil.BaseResponse;
import com.dy.common.webUtil.BaseResponseUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * @Author: liurunyu
 * @Date: 2024/5/18 11:04
 * @Description
 */
@Slf4j
@RestController
@RequestMapping(path="comRes")
@SuppressWarnings("unchecked")//java版本越高,对泛型约束越严,所以配置SuppressWarnings("unchecked")
public class CommandResultCtrl {
    @PostMapping(path = "receive", consumes = MediaType.APPLICATION_JSON_VALUE)
    public BaseResponse<String> receive(@RequestBody Data data) {
        log.info(data.toString()) ;
        return BaseResponseUtils.buildSuccess("ok");
    }
}
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/resources/application.yml
@@ -11,7 +11,7 @@
            enabled: false
    port: 65535
    servlet:
        context-path: /test/web #web访问上下文路径
        context-path: /test #web访问上下文路径
        encoding:
            #取消默认的字符集编码
            enabled: true