1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
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 ;//单位:元  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_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)) ;
    }
 
 
}