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