zhubaomin
2025-04-08 95d8d3df562c8f7fca74ba994cddbbf41564488e
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V202404test/CommandP206V202404Ctrl.java
New file
@@ -0,0 +1,277 @@
package com.dy.pipIrrMwTestWeb.p206V202404test;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.downVos.*;
import com.dy.common.webUtil.BaseResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
/**
 * @Author: liurunyu
 * @Date: 2024/5/14 14:20
 * @Description
 */
@Slf4j
@RestController
@RequestMapping(path="comP206V202404")
@SuppressWarnings("unchecked")//java版本越高,对泛型约束越严,所以配置SuppressWarnings("unchecked")
public class CommandP206V202404Ctrl extends ComSupportP206V202404 {
    @GetMapping(path = "test")
    public BaseResponse<String> test(String rtuAddr, String com) {
        BaseResponse<String> rt = null ;
        if(rtuAddr == null || rtuAddr.trim().equals("")){
            rt = this.connect() ;//连接通信中间件测试
        }else{
            this.rtuAddr = rtuAddr ;
            if(com == null || com.trim().equals("")){
                rt = this.connect() ;//连接通信中间件测试
            }else{
                try{
                    if(com.equals("10")){
                        rt = this.cd10() ;
                    }else if(com.equals("15")){
                        rt = this.cd15() ;
                    }else if(com.equals("16")){
                        rt = this.cd16() ;
                    }else if(com.equals("21")){
                        rt = this.cd21() ;
                    }else if(com.equals("22")){
                        rt = this.cd22() ;
                    }else if(com.equals("23")){
                        rt = this.cd23() ;
                    }else if(com.equals("24")){
                        rt = this.cd24() ;
                    }else if(com.equals("26")){
                        rt = this.cd26() ;
                    }else if(com.equals("31")){
                        rt = this.cd31() ;
                    }else if(com.equals("55")){
                        rt = this.cd55(1) ;
                    }else if(com.equals("65")){
                        rt = this.cd65(1) ;
                    }else if(com.equals("86")){
                        rt = this.cd86() ;
                    }else if(com.equals("87")){
                        rt = this.cd87() ;
                    }else if(com.equals("92")){
                        rt = this.cd92() ;
                    }else if(com.equals("93")){
                        rt = this.cd93() ;
                    }else if(com.equals("9C")){
                        rt = this.cd9C() ;
                    }else if(com.equals("A2")){
                        rt = this.cdA2() ;
                    }else if(com.equals("A3")){
                        rt = this.cdA3() ;
                    }else{
                        rt = this.cdXY(com) ;//发送固定参数XY的命令, 例命令CodeV202404.cd_9C
                    }
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }
        return rt ;
    }
    /**
     * 测试连通性
     * @return
     */
    private BaseResponse connect(){
        return this.sendTest() ;
    }
    //发送固定参数的命令
    private BaseResponse cdXY(String code){
        return this.sendCom2Mw(this.command(code, this.comCdXyVo(), null)) ;
    }
    //设置终端地址(AFN=0x10H)
    private BaseResponse cd10(){
        ComCd10Vo comVo = new ComCd10Vo() ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.rtuNewAddr = CommandP206V202404Ctrl.rtuAddr ;
        return this.sendCom2Mw(this.command(CodeV202404.cd_10, comVo, null)) ;
    }
     //远程用户充值 (AFN=0x15H)
    private BaseResponse cd15(){
        ComCd15Vo comVo = new ComCd15Vo() ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.icCardAddr = CommandP206V202404Ctrl.icCardAddr ;//IC卡地址(8位数字或字母)
        comVo.icCardNo = CommandP206V202404Ctrl.icCardNo ;//用户卡序列号(17位数字)(6字节BCD,2字节HEX)
        comVo.chargeMoney = 20.0 ;//单位:元  2位小数点(最大值 99999999.99)
        comVo.chargeWater = 20.0 ;//单位:m3  2位小数点(最大值 99999999.99)
        comVo.flowNo = "123456789012" ;//流水号(12位数字)
        return this.sendCom2Mw(this.command(CodeV202404.cd_15, comVo, null)) ;
    }
    //设置设备终端剩余水量和剩余金额报警值 (AFN=0x16H)
    private BaseResponse cd16(){
        ComCd16Vo comVo = new ComCd16Vo() ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.waterAlarm = 100 ;//剩余水量报警值,单位:m3。整数,取值范围0~9999
        comVo.moneyAlarm = 3 ;//剩余金额报警值,单位:元。整数,取值范围0~9999
        return this.sendCom2Mw(this.command(CodeV202404.cd_16, comVo, null)) ;
    }
    //设置设备终端IP地址 (AFN=0x21H)
    private BaseResponse cd21(){
        ComCd21Vo comVo = new ComCd21Vo() ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.channel = 1 ;//IP通道号(取值范围 1、2).
        comVo.ip = "8.140.180.59" ;//IP(例如 125.235.35.89)
        comVo.port = 6001 ;///端口号(0~65536)
        return this.sendCom2Mw(this.command(CodeV202404.cd_21, comVo, null)) ;
    }
    //设置机井年最大开采量和水位下限 (AFN=0x22H)
    private BaseResponse cd22(){
        ComCd22Vo comVo = new ComCd22Vo() ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.maxAmountYear = 99998888 ;//机井年最大用水量单位:m3 整数,取值范围0~99999999
        comVo.limitLevel = 9978.60; //水位下限 单位:m 取值范围:0~9999.99
        return this.sendCom2Mw(this.command(CodeV202404.cd_22, comVo, null)) ;
    }
    //设置设备终端域名(AFN=0x23H)
    private BaseResponse cd23(){
        ComCd23Vo comVo = new ComCd23Vo() ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.channel = 1 ;//IP通道号(取值范围 1、2).
        comVo.domain = "dayuyanjiuyuan.top" ;//域名(例如 dayuyanjiuyuan.top),最大长度42字符
        comVo.port = 6001 ;///端口号(0~65536)
        return this.sendCom2Mw(this.command(CodeV202404.cd_23, comVo, null)) ;
    }
    //设置设备终端注册号(AFN=0x24H)
    private BaseResponse cd24(){
        ComCd24Vo comVo = new ComCd24Vo() ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.registerNo = "10203040506070809000" ;//
        return this.sendCom2Mw(this.command(CodeV202404.cd_24, comVo, null)) ;
    }
    //设置设备终端年用水量(AFN=0x24H)
    private BaseResponse cd26(){
        ComCd26Vo comVo = new ComCd26Vo() ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.maxAmountYear = 200  ;//设备终端年用水量 单位:m3 整数,取值范围0~99999999
        return this.sendCom2Mw(this.command(CodeV202404.cd_26, comVo, null)) ;
    }
    //设置设备终端用水有效(AFN=0x31H)
    private BaseResponse cd31(){
        ComCd31Vo comVo = new ComCd31Vo() ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.valid = false ;//有效性
        return this.sendCom2Mw(this.command(CodeV202404.cd_31, comVo, null)) ;
    }
    //查询遥测终端充值记录 (AFN=0x55H)
    private BaseResponse cd55(int page){
        ComCd55Vo comVo = new ComCd55Vo() ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.page = page ;//分页(取值范围1、2、3、4、5、6、7、8、9)
        return this.sendCom2Mw(this.command(CodeV202404.cd_55, comVo, null)) ;
    }
    //查询设备终端用户用水记录(AFN=0x65H)
    private BaseResponse cd65(int page){
        ComCd65Vo comVo = new ComCd65Vo() ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.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 = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.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 = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.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 = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        //comVo.icCardAddr = Test.icCardAddr ;//IC卡地址(8位数字或字母)
        comVo.icCardNo = CommandP206V202404Ctrl.icCardNo ;//用户卡序列号(17位数字)(6字节BCD,2字节HEX)
        comVo.waterRemain = 123.45 ;//单位:m3  2位小数点(最大值 99999999.99)
        comVo.moneyRemain = 12345.67 ;//单位:元  2位小数点(最大值 99999999.99)
        comVo.waterPrice = 0.8 ;//水量单价 单位:元, 2个小数点
        comVo.elePrice = 1.2 ;//电量单价 单位:元, 2个小数点
        comVo.orderNo = "1234567890123456" ;//订单号(16位数字)
        return this.sendCom2Mw(this.command(CodeV202404.cd_92, comVo, null)) ;
    }
    //平台/APP远程开启水泵/阀门(AFN=0x92H/AFN=0xA2H)
    private BaseResponse cdA2(){
        ComCd92_A2Vo comVo = new ComCd92_A2Vo() ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        //comVo.icCardAddr = Test.icCardAddr ;//IC卡地址(8位数字或字母)
        comVo.icCardNo = CommandP206V202404Ctrl.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个小数点
        comVo.elePrice = 1.2 ;//电量单价 单位:元, 2个小数点
        comVo.orderNo = "1234567890123456" ;//订单号(16位数字)
        return this.sendCom2Mw(this.command(CodeV202404.cd_A2, comVo, null)) ;
    }
   //平台/APP远程关闭水泵/阀门(AFN=0x93H/AFN=0xA3H)
    private BaseResponse cd93(){
        ComCd93_A3Vo comVo = new ComCd93_A3Vo() ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.icCardNo = CommandP206V202404Ctrl.icCardNo ;//用户卡序列号(17位数字)(6字节BCD,2字节HEX)
        comVo.orderNo = "1234567890123456" ;//订单号(16位数字)
        return this.sendCom2Mw(this.command(CodeV202404.cd_93, comVo, null)) ;
    }
   //平台/APP远程关闭水泵/阀门(AFN=0x93H/AFN=0xA3H)
    private BaseResponse cd9C(){
        ComCd9CVo comVo = new ComCd9CVo() ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.icCardAddr = "04BEA5BB" ;//
        return this.sendCom2Mw(this.command(CodeV202404.cd_9C, comVo, null)) ;
    }
    //平台/APP远程关闭水泵/阀门(AFN=0x93H/AFN=0xA3H)
    private BaseResponse cdA3(){
        ComCd93_A3Vo comVo = new ComCd93_A3Vo() ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.icCardNo = CommandP206V202404Ctrl.icCardNo ;//用户卡序列号(17位数字)(6字节BCD,2字节HEX)
        comVo.orderNo = "1234567890123456" ;//订单号(16位数字)
        return this.sendCom2Mw(this.command(CodeV202404.cd_A3, comVo, null)) ;
    }
}