1、靳总协议上行数据处理修改完善;
2、上行数据处理任务修改完善.
| | |
| | | public static final String cd_69 = "69" ;//查询电池电压报警值 |
| | | public static final String cd_6A = "6A" ;//查询阀门堵转电流值 |
| | | public static final String cd_6B = "6B" ;//查询阀门超时时间 |
| | | public static final String cd_6D = "6D" ;//查询阶梯水价(未实现) |
| | | public static final String cd_81 = "81" ;//随机自报报 |
| | | public static final String cd_83 = "83" ;//遥测站开关阀自报 |
| | | public static final String cd_84 = "84" ;//开阀工作报 |
| | | public static final String cd_6D = "6D" ;//查询阶梯水价 |
| | | public static final String cd_81 = "81" ;//随机自报报 ok |
| | | public static final String cd_83 = "83" ;//遥测站开关阀自报 ok |
| | | public static final String cd_84 = "84" ;//开阀工作报 ok |
| | | public static final String cd_91 = "91" ;//清空历史记录 |
| | | public static final String cd_92 = "92" ;//遥控启动阀门 |
| | | public static final String cd_93 = "93" ;//遥控关闭阀门 |
| | |
| | | public static final String cd_99 = "99" ;//定时关阀开阀 |
| | | public static final String cd_A0 = "A0" ;//定量关阀开阀 |
| | | public static final String cd_B0 = "B0" ;//查询实时数据(未实现) |
| | | public static final String cd_C0 = "C0" ;//遥测站整点上报实时数据 |
| | | public static final String cd_C0 = "C0" ;//遥测站整点上报实时数据 ok |
| | | |
| | | public static String getCodeName(String code) { |
| | | String name = (code.equals(cd_02) ? "链路检测" : |
| | |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | |
| | | //报警数据 |
| | | cdData.alarmVo = GlParse.parseAlarm(bs, index) ; |
| | | index += 2 ; |
| | | |
| | | if(bs.length == 28){ |
| | | //带瞬时流量 |
| | | index += 5 ;//瞬时流量 |
| | | } |
| | | |
| | | //状态数据 |
| | | cdData.stateVo = GlParse.parseState(bs, index) ; |
| | | index += 2 ; |
| | | |
| | | index += 2 ; |
| | | //控制器时钟 |
| | | cdData.rtuDt = GlParse.parseTp(bs, index) ; |
| | | |
| | |
| | | |
| | | short index = ProtocolConstantV206V1_0_0.dataIndex + 1 ; |
| | | //累计流量:5字节BCD码,取值范围0~99999999.99,单位为m3。 |
| | | cdData.totalAmount = 0.0D ; |
| | | int tpInt = ByteUtil.BCD2Int_LE(bs, index, index + 4) ; |
| | | cdData.totalAmount += tpInt/100.0 ; |
| | | cdData.totalAmount = tpInt/100.0 ; |
| | | |
| | | index += 5 ; |
| | | //用水户号数据格式:5字节BCD码低位在前高位在后。 |
| | |
| | | |
| | | index += 5 ; |
| | | //IC卡号格式:4字节HEX码低位在前高位在后。 |
| | | cdData.icCardAddr = ByteUtil.bytesToHex(bs, index, index + 3) ; |
| | | cdData.icCardAddr = ByteUtil.bytes2Hex_LE(bs, false, index, 4) ; |
| | | |
| | | index += 4 ; |
| | | //用水户余额:用户余额4字节BCD码,取值范围0.00~999999.99,单位为元。 |
| | | cdData.remainMoney = 0.0D ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index + 3) ; |
| | | cdData.remainMoney += tpInt/100.0 ; |
| | | cdData.remainMoney = tpInt/100.0 ; |
| | | |
| | | index += 4 ; |
| | | //用水户用水开始时间:6字节BCD码,顺序是年月日时分秒,其中公元年=2000+年。 |
| | |
| | | |
| | | short index = ProtocolConstantV206V1_0_0.dataIndex + 1 ; |
| | | //累计流量:5字节BCD码,取值范围0~9999999999,单位为m3。 |
| | | cdData.totalAmount = 0.0D ; |
| | | int tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.totalAmount += tpInt; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.totalAmount += tpInt * 100.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.totalAmount += tpInt * 10000.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.totalAmount += tpInt * 1000000.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.totalAmount += tpInt * 100000000.0 ; |
| | | int tpInt = ByteUtil.BCD2Int_LE(bs, index, index + 4) ; |
| | | cdData.totalAmount = tpInt/100.0 ; |
| | | |
| | | index += 5 ; |
| | | //用水户号数据格式:5字节BCD码低位在前高位在后。 |
| | | cdData.icCardNo = ByteUtil.BCD2String_LE(bs, index, index + 4) ; |
| | | |
| | | index += 5 ; |
| | | |
| | | //IC卡号格式:4字节HEX码低位在前高位在后。 |
| | | cdData.closeDt = ByteUtil.bytesToHex(bs, index, index + 3) ; |
| | | cdData.icCardAddr = ByteUtil.bytes2Hex_LE(bs, false, index, 4) ; |
| | | |
| | | index += 4 ; |
| | | |
| | | //用水户余额:用户余额4字节BCD码,取值范围0.00~999999.99,单位为元。 |
| | | cdData.remainMoney = 0.0D ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.remainMoney += tpInt/100.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.remainMoney += tpInt; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.remainMoney += tpInt * 100.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.remainMoney += tpInt * 10000.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index + 3) ; |
| | | cdData.remainMoney = tpInt/100.0 ; |
| | | |
| | | index += 4 ; |
| | | //用水户用水开始时间:6字节BCD码,顺序是年月日时分秒,其中公元年=2000+年。 |
| | | cdData.openDt = GlParse.parseTp(bs, index) ; |
| | | index += 6 ; |
| | | |
| | | index += 6 ; |
| | | //用水户用水结束时间:6字节BCD码,顺序是年月日时分秒,其中公元年=2000+年。 |
| | | cdData.closeDt = GlParse.parseTp(bs, index) ; |
| | | |
| | | index += 6 ; |
| | | |
| | | //用水户本次用水量:累计流量5字节BCD码,取值范围0~9999999999,单位为m3。 |
| | | cdData.thisAmount = 0.0D ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.thisAmount += tpInt/100.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.thisAmount += tpInt ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.thisAmount += tpInt * 100.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.thisAmount += tpInt * 10000.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.thisAmount += tpInt * 1000000.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index + 4) ; |
| | | cdData.thisAmount = tpInt/100.0 ; |
| | | |
| | | index += 5 ; |
| | | //用水户本次消费金额:用户余额4字节BCD码,取值范围0.00~999999.99,单位为元。 |
| | | cdData.thisMoney = 0.0D ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.thisMoney += tpInt/100.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.thisMoney += tpInt; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.thisMoney += tpInt * 100.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.thisMoney += tpInt * 10000.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index + 3) ; |
| | | cdData.thisMoney = tpInt/100.0 ; |
| | | |
| | | index += 4 ; |
| | | //用水户本次用水时长:用水时长2字节BCD码,取值范围0~9999,单位为分钟。 |
| | | cdData.thisTime = 0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.thisTime += tpInt; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.thisTime += tpInt * 100 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index + 1) ; |
| | | cdData.thisTime = tpInt; |
| | | |
| | | |
| | | index += 2 ; |
| | | cdData.priceType = bs[index] ; |
| | | |
| | | index++ ; |
| | | cdData.price = 0.0D ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.price += tpInt/100.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.price += tpInt; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index + 1) ; |
| | | cdData.price = tpInt/100.0 ; |
| | | |
| | | index += 2 ; |
| | | cdData.cardType = bs[index] ; |
| | | |
| | | index++ ; |
| | |
| | | dV1.subData = cdData ; |
| | | |
| | | short index = ProtocolConstantV206V1_0_0.dataIndex ; |
| | | //cdData.opType = bs[index] ; |
| | | cdData.opType = bs[index] ; |
| | | |
| | | //index++ ; |
| | | //cdData.cardType = bs[index] ; |
| | | index++ ; |
| | | cdData.cardType = bs[index] ; |
| | | |
| | | //index++ ; |
| | | //cdData.cardAddr = ByteUtil.bytes2Hex(bs, false, index, 4) ; |
| | | index++ ; |
| | | cdData.cardAddr = ByteUtil.bytes2Hex_LE(bs, false, index, 4) ; |
| | | |
| | | //index += 4 ; |
| | | index += 4 ; |
| | | //用水户号数据格式:5字节BCD码低位在前高位在后。 |
| | | cdData.cardNo = ByteUtil.BCD2String_LE(bs, index, index + 4) ; |
| | | |
| | | index += 5 ; |
| | | //用水户余额:用户余额4字节BCD码,取值范围0.00~999999.99,单位为元。 |
| | | cdData.remainMoney = 0.0D ; |
| | | int tpInt = ByteUtil.BCD2Int_LE(bs, index, index + 3) ; |
| | | cdData.remainMoney += tpInt/100.0 ; |
| | | cdData.remainMoney = tpInt/100.0 ; |
| | | |
| | | index += 4 ; |
| | | //累计流量:5字节BCD码,取值范围0~9999999999,单位为m3。 |
| | | cdData.totalAmount = 0.0D ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index + 4) ; |
| | | cdData.totalAmount += tpInt; |
| | | cdData.totalAmount = tpInt/100.0; |
| | | |
| | | index += 5 ; |
| | | //瞬时流量:5字节BCD码,取值范围0~9999999.999,单位为m3/h。 |
| | | cdData.instantAmount = 0.0D ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index + 4) ; |
| | | cdData.instantAmount += tpInt/1000.0 ; |
| | | cdData.instantAmount = tpInt/1000.0 ; |
| | | |
| | | index += 5 ; |
| | | cdData.alarmVo = GlParse.parseAlarm(bs, index) ; |
| | |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | |
| | | import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com97Vo; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com97Vo; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com98Vo; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com97Vo; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com99Vo; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com99Vo; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.downVos.ComA0Vo; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | |
| | | DataStateVo avo = new DataStateVo() ; |
| | | byte b = bs[index] ; |
| | | avo.icCard = (byte)((b & 0x4) >> 2) ; |
| | | avo.working = (byte)((b & 0x10) >> 4) ; |
| | | avo.valveState = (byte)((b & 0x10) >> 4) ; |
| | | avo.powerType = (byte)((b & 0x40) >> 6) ; |
| | | return avo ; |
| | | } |
| | |
| | | str.append(" 蓄电池电压:"); |
| | | str.append(batteryVolt==null?"":(batteryVolt==1?"报警":"正常")); |
| | | str.append("\n"); |
| | | str.append(" 漏损:"); |
| | | str.append(" 漏损: "); |
| | | str.append(loss==null?"":(loss==1?"报警":"正常")); |
| | | str.append("\n"); |
| | | str.append(" 流量计故障:"); |
| | | str.append(meter==null?"":(meter==1?"报警":"正常")); |
| | | str.append("\n"); |
| | | str.append(" 阀门:"); |
| | | str.append(" 阀门: "); |
| | | str.append(valve==null?"":(valve==1?"报警":"正常")); |
| | | return str.toString() ; |
| | | } |
| | |
| | | @Data |
| | | public class DataCd84Vo { |
| | | |
| | | //public Byte opType;//开关阀类型(1:刷卡开阀;2:刷卡关阀;3:中心站开阀;4:中心站关阀;5:欠费关阀;6:流量计故障关阀;7:紧急关闭;8:用户远程开阀;9:用户远程关阀;10:开关阀卡关阀;11:开关阀卡刷卡卡开阀;) |
| | | //public Byte cardType ;//卡类型(1:用户卡;2:管理员卡;3:调试卡;4:开关阀卡;5:清空卡) |
| | | //public String cardAddr ;//IC卡地址(8位字符) |
| | | public Byte opType;//开关阀类型(1:刷卡开阀;2:刷卡关阀;3:中心站开阀;4:中心站关阀;5:欠费关阀;6:流量计故障关阀;7:紧急关闭;8:用户远程开阀;9:用户远程关阀;10:开关阀卡关阀;11:开关阀卡刷卡卡开阀;) |
| | | public Byte cardType ;//卡类型(1:用户卡;2:管理员卡;3:调试卡;4:开关阀卡;5:清空卡) |
| | | public String cardAddr ;//IC卡地址(8位字符) |
| | | public String cardNo ;//IC卡编号 |
| | | public Double remainMoney ;//剩余金额:用户余额4字节BCD码,取值范围0.00~999999.99,单位为元 |
| | | public Double totalAmount; //累计流量(水表上的累计流量):5字节BCD码,取值范围0~9999999999,单位为m3。 |
| | |
| | | public String toString(){ |
| | | StringBuilder sb = new StringBuilder() ; |
| | | sb.append(" 终端开阀工作报:\n"); |
| | | // sb.append(" 开阀类型:"); |
| | | // sb.append(opType==null?"未知": CommonV1_0_1.openCloseValveType(opType)); |
| | | // sb.append("\n"); |
| | | // sb.append(" IC卡类型:"); |
| | | // sb.append(cardType==null?"未知":CommonV1_0_1.icCardType(cardType)) ; |
| | | // sb.append("\n"); |
| | | // sb.append(" IC卡地址:"); |
| | | // sb.append(cardAddr); |
| | | // sb.append("\n"); |
| | | sb.append(" 开阀类型:"); |
| | | sb.append(opType==null?"未知": CommonV1_0_1.openCloseValveType(opType)); |
| | | sb.append("\n"); |
| | | sb.append(" IC卡类型:"); |
| | | sb.append(cardType==null?"未知":CommonV1_0_1.icCardType(cardType)) ; |
| | | sb.append("\n"); |
| | | sb.append(" IC卡地址:"); |
| | | sb.append(cardAddr); |
| | | sb.append("\n"); |
| | | sb.append(" IC卡编号:"); |
| | | sb.append(cardNo); |
| | | sb.append("\n"); |
| | |
| | | @Data |
| | | public class DataStateVo { |
| | | public Byte icCard;// IC卡功能 |
| | | public Byte working;//工作状态 |
| | | public Byte valveState;//阀门状态 |
| | | public Byte powerType ;//电源状态(0:220V供电,1:畜电池供电) |
| | | |
| | | public String toString(){ |
| | | StringBuilder str = new StringBuilder() ; |
| | | str.append(" 状态:\n"); |
| | | str.append(" IC 卡功能:"); |
| | | str.append(icCard ==null?"":(icCard ==1?"有效":"无效")); |
| | | str.append(" IC卡功能:"); |
| | | str.append(icCard ==null?"":(icCard ==1?"有效(1)":"无效(0)")); |
| | | str.append("\n"); |
| | | str.append(" 工作状态:"); |
| | | str.append(working ==null?"":(working ==1?"启动":"停止")); |
| | | str.append(" 阀门状态:"); |
| | | str.append(valveState ==null?"":(valveState ==1?"关闭(1)":"打开(0)")); |
| | | str.append("\n"); |
| | | str.append(" 电源状态:"); |
| | | str.append(powerType==null?"":(powerType==1?"畜电池供电":"220V供电")); |
| | | str.append(powerType==null?"":(powerType==1?"畜电池供电(1)":"220V供电(0)")); |
| | | return str.toString() ; |
| | | } |
| | | } |
| | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.CodeV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404; |
| | | 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.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd16Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | import com.dy.common.util.NumUtil; |
| | | |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV202404.cd_16 |
| | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.CodeV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd16Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd22Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV202404.cd_22 |
| | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.CodeV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd21Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd23Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.CodeV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd23Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd24Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.NumUtil; |
| | | |
| | | import java.nio.charset.StandardCharsets; |
| | | |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV202404.cd_24 |
| | |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bs) ; |
| | | |
| | | byte[] bsRg = ByteUtil.hexToBytes(cvo.registerNo) ; |
| | | byte[] bsRg = ByteUtil.hex2Bytes(cvo.registerNo) ; |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsRg) ; |
| | | |
| | |
| | | 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; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCdXyVo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.CodeV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd22Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd26Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | |
| | | 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; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCdXyVo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | |
| | | 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; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCdXyVo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | |
| | | import com.dy.common.mw.protocol.p206V202404.CodeV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd55Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd65Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | |
| | | 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; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCdXyVo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd50Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd56Vo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | |
| | | 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; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCdXyVo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | |
| | | |
| | | 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.DataCd5CVo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | |
| | | 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; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCdXyVo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd68Vo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | |
| | | 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.DataCd02Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd83Vo; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | |
| | | 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.DataCd83Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd84Vo; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | |
| | | 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.DataCd83Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd84Vo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | |
| | | 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.DataCd85Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd93_A3Vo; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | | @AnnotationCodeDown(ifAny={ |
| | |
| | | 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.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; |
| | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.CodeV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd21Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd86Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd86Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd87Vo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | |
| | | 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; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd87Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCdXyVo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd87Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd88Vo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.CodeV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd22Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd92_A2Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd92_A2Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd92_A2Vo; |
| | | import com.dy.common.util.ByteUtil; |
| | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.CodeV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd92_A2Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd93_A3Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | |
| | | 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; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCdXyVo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | |
| | | 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; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCdXyVo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | |
| | | 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; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCdXyVo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | |
| | | 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; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCdXyVo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd9AVo; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCdXyVo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.CodeV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd15Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd9CVo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.NumUtil; |
| | | |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV202404.cd_9C |
| | |
| | | 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.DataCd02Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCdC2Vo; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | |
| | | 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.DataCd02Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCdC2Vo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | |
| | | * @return 返回 String |
| | | */ |
| | | public static String bytes2Hex(byte[] src, boolean hasBlank){ |
| | | StringBuilder stringBuilder = new StringBuilder(""); |
| | | if (src == null || src.length <= 0) { |
| | | return null; |
| | | } |
| | | for (int i = 0; i < src.length; i++) { |
| | | int v = src[i] & 0xFF; |
| | | String str = Integer.toHexString(v); |
| | | if (str.length() < 2) { |
| | | str = "0" + str; |
| | | } |
| | | if (hasBlank) { |
| | | if (i == 0) { |
| | | stringBuilder.append(str); |
| | | } else { |
| | | stringBuilder.append(" " + str); |
| | | } |
| | | } else { |
| | | stringBuilder.append(str); |
| | | } |
| | | } |
| | | return stringBuilder.toString().toUpperCase(Locale.US); |
| | | return bytes2Hex_BE(src, hasBlank) ; |
| | | } |
| | | |
| | | /** |
| | | * 字节数组转换成十六进制的字符串 |
| | | * |
| | | * @param src byte[] |
| | | * @param hasBlank 16进制是否用空格分隔 |
| | | * @return 返回 String |
| | | */ |
| | | public static String bytes2Hex_BE(byte[] src, boolean hasBlank){ |
| | | StringBuilder stringBuilder = new StringBuilder(""); |
| | | if (src == null || src.length <= 0) { |
| | | return null; |
| | | } |
| | | for (int i = 0; i < src.length; i++) { |
| | | int v = src[i] & 0xFF; |
| | | String str = Integer.toHexString(v); |
| | | if (str.length() < 2) { |
| | | str = "0" + str; |
| | | } |
| | | if (hasBlank) { |
| | | if (i == 0) { |
| | | stringBuilder.append(str); |
| | | } else { |
| | | stringBuilder.append(" " + str); |
| | | } |
| | | } else { |
| | | stringBuilder.append(str); |
| | | } |
| | | } |
| | | return stringBuilder.toString().toUpperCase(Locale.US); |
| | | } |
| | | /** |
| | | * 字节数组转换成十六进制的字符串 |
| | | * |
| | | * @param src byte[] |
| | | * @param hasBlank 16进制是否用空格分隔 |
| | | * @return 返回 String |
| | | */ |
| | | public static String bytes2Hex_LE(byte[] src, boolean hasBlank){ |
| | | StringBuilder stringBuilder = new StringBuilder(""); |
| | | if (src == null || src.length <= 0) { |
| | | return null; |
| | | } |
| | | for (int i = src.length - 1 ; i >= 0; i--) { |
| | | int v = src[i] & 0xFF; |
| | | String str = Integer.toHexString(v); |
| | | if (str.length() < 2) { |
| | | str = "0" + str; |
| | | } |
| | | if (hasBlank) { |
| | | if (i == 0) { |
| | | stringBuilder.append(str); |
| | | } else { |
| | | stringBuilder.append(" " + str); |
| | | } |
| | | } else { |
| | | stringBuilder.append(str); |
| | | } |
| | | } |
| | | return stringBuilder.toString().toUpperCase(Locale.US); |
| | | } |
| | | /** |
| | | * 字节数组转换成十六进制的字符串 |
| | | * |
| | | * @param src byte[] |
| | | * @param bs byte[] |
| | | * @param hasBlank 16进制是否用空格分隔 |
| | | * @param from 开始位 |
| | | * @param len 长度 |
| | | * @return 返回 String |
| | | */ |
| | | public static String bytes2Hex(byte[] src, boolean hasBlank, int from, int len){ |
| | | if (src == null || src.length <= 0 || src.length < from + len) { |
| | | public static String bytes2Hex(byte[] bs, boolean hasBlank, int from, int len){ |
| | | if (bs == null || bs.length <= 0 || bs.length < from + len) { |
| | | return null; |
| | | } |
| | | byte[] bb = new byte[len]; |
| | | for (int i = 0 ; i < len; i++) { |
| | | bb[i] = src[from + i]; |
| | | bb[i] = bs[from + i]; |
| | | } |
| | | return bytes2Hex(bb, hasBlank) ; |
| | | } |
| | | /** |
| | | * 字节数组转换成十六进制的字符串 |
| | | * |
| | | * @param bs byte[] |
| | | * @param hasBlank 16进制是否用空格分隔 |
| | | * @param from 开始位 |
| | | * @param len 长度 |
| | | * @return 返回 String |
| | | */ |
| | | public static String bytes2Hex_LE(byte[] bs, boolean hasBlank, int from, int len){ |
| | | if (bs == null || bs.length <= 0 || bs.length < from + len) { |
| | | return null; |
| | | } |
| | | byte[] bb = new byte[len]; |
| | | for (int i = 0 ; i < len; i++) { |
| | | bb[i] = bs[from + i]; |
| | | } |
| | | return bytes2Hex_LE(bb, hasBlank) ; |
| | | } |
| | | /** |
| | | * 十六进制转字节数组 |
| | | * @param hex the hex string |
| | |
| | | } |
| | | |
| | | private static final char[] HEX_CHAR = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; |
| | | /** |
| | | * 将byte[]转换为16进制字符串 |
| | | * |
| | | * @param bytes 待转换byte[] |
| | | * @return 返回 转换后的字符串 |
| | | */ |
| | | public static String bytesToHex(byte[] bytes) { |
| | | //一个byte为8位,可用两个十六进制位标识 |
| | | char[] buf = new char[bytes.length * 2]; |
| | | int a = 0; |
| | | int index = 0; |
| | | for (byte b : bytes) { // 使用除与取余进行转换 |
| | | if (b < 0) { |
| | | a = 256 + b; |
| | | } else { |
| | | a = b; |
| | | } |
| | | |
| | | buf[index++] = HEX_CHAR[a / 16]; |
| | | buf[index++] = HEX_CHAR[a % 16]; |
| | | } |
| | | return new String(buf); |
| | | } |
| | | /** |
| | | * 将byte[]转换为16进制字符串 |
| | | * |
| | | * @param bytes 待转换byte[] |
| | | * @return 返回 转换后的字符串 |
| | | */ |
| | | public static String bytesToHex(byte[] bytes, int startIndex, int endIndex) { |
| | | byte[] bs = new byte[endIndex - startIndex + 1] ; |
| | | byte j = 0 ; |
| | | for(int i = startIndex; i <= endIndex; i++){ |
| | | bs[j++] = bytes[i] ; |
| | | } |
| | | //一个byte为8位,可用两个十六进制位标识 |
| | | char[] buf = new char[bs.length * 2]; |
| | | int a = 0; |
| | | int index = 0; |
| | | for (byte b : bs) { // 使用除与取余进行转换 |
| | | if (b < 0) { |
| | | a = 256 + b; |
| | | } else { |
| | | a = b; |
| | | } |
| | | |
| | | buf[index++] = HEX_CHAR[a / 16]; |
| | | buf[index++] = HEX_CHAR[a % 16]; |
| | | } |
| | | return new String(buf); |
| | | } |
| | | |
| | | /** |
| | | * 将16进制字符串转换为byte[] |
| | | * |
| | | * @param str 待转换字符串 |
| | | * @return 返回 转换后的byte[] |
| | | */ |
| | | public static byte[] hexToBytes(String str) { |
| | | if (str == null || "".equals(str.trim())) { |
| | | return new byte[0]; |
| | | } |
| | | |
| | | byte[] bytes = new byte[str.length() / 2]; |
| | | for (int i = 0; i < str.length() / 2; i++) { |
| | | String subStr = str.substring(i * 2, i * 2 + 2); |
| | | bytes[i] = (byte) Integer.parseInt(subStr, 16); |
| | | } |
| | | |
| | | return bytes; |
| | | } |
| | | // /** |
| | | // * 将byte[]转换为16进制字符串 |
| | | // * |
| | | // * @param bytes 待转换byte[] |
| | | // * @return 返回 转换后的字符串 |
| | | // */ |
| | | // public static String bytesToHex(byte[] bytes) { |
| | | // //一个byte为8位,可用两个十六进制位标识 |
| | | // char[] buf = new char[bytes.length * 2]; |
| | | // int a = 0; |
| | | // int index = 0; |
| | | // for (byte b : bytes) { // 使用除与取余进行转换 |
| | | // if (b < 0) { |
| | | // a = 256 + b; |
| | | // } else { |
| | | // a = b; |
| | | // } |
| | | // |
| | | // buf[index++] = HEX_CHAR[a / 16]; |
| | | // buf[index++] = HEX_CHAR[a % 16]; |
| | | // } |
| | | // return new String(buf); |
| | | // } |
| | | // /** |
| | | // * 将byte[]转换为16进制字符串 |
| | | // * |
| | | // * @param bytes 待转换byte[] |
| | | // * @return 返回 转换后的字符串 |
| | | // */ |
| | | // public static String bytesToHex_BE(byte[] bytes, int startIndex, int endIndex) { |
| | | // byte[] bs = new byte[endIndex - startIndex + 1] ; |
| | | // byte j = 0 ; |
| | | // for(int i = startIndex; i <= endIndex; i++){ |
| | | // bs[j++] = bytes[i] ; |
| | | // } |
| | | // //一个byte为8位,可用两个十六进制位标识 |
| | | // char[] buf = new char[bs.length * 2]; |
| | | // int a = 0; |
| | | // int index = 0; |
| | | // for (byte b : bs) { // 使用除与取余进行转换 |
| | | // if (b < 0) { |
| | | // a = 256 + b; |
| | | // } else { |
| | | // a = b; |
| | | // } |
| | | // |
| | | // buf[index++] = HEX_CHAR[a / 16]; |
| | | // buf[index++] = HEX_CHAR[a % 16]; |
| | | // } |
| | | // return new String(buf); |
| | | // } |
| | | // |
| | | // /** |
| | | // * 将byte[]转换为16进制字符串 |
| | | // * |
| | | // * @param bytes 待转换byte[] |
| | | // * @return 返回 转换后的字符串 |
| | | // */ |
| | | // public static String bytesToHex_LE(byte[] bytes, int startIndex, int endIndex) { |
| | | // byte[] bs = new byte[endIndex - startIndex + 1] ; |
| | | // byte j = 0 ; |
| | | // for(int i = endIndex; i >= startIndex; i--){ |
| | | // bs[j++] = bytes[i] ; |
| | | // } |
| | | // //一个byte为8位,可用两个十六进制位标识 |
| | | // char[] buf = new char[bs.length * 2]; |
| | | // int a = 0; |
| | | // int index = 0; |
| | | // for (byte b : bs) { // 使用除与取余进行转换 |
| | | // if (b < 0) { |
| | | // a = 256 + b; |
| | | // } else { |
| | | // a = b; |
| | | // } |
| | | // |
| | | // buf[index++] = HEX_CHAR[a / 16]; |
| | | // buf[index++] = HEX_CHAR[a % 16]; |
| | | // } |
| | | // return new String(buf); |
| | | // } |
| | | // |
| | | // /** |
| | | // * 将16进制字符串转换为byte[] |
| | | // * |
| | | // * @param str 待转换字符串 |
| | | // * @return 返回 转换后的byte[] |
| | | // */ |
| | | // public static byte[] hexToBytes(String str) { |
| | | // if (str == null || "".equals(str.trim())) { |
| | | // return new byte[0]; |
| | | // } |
| | | // |
| | | // byte[] bytes = new byte[str.length() / 2]; |
| | | // for (int i = 0; i < str.length() / 2; i++) { |
| | | // String subStr = str.substring(i * 2, i * 2 + 2); |
| | | // bytes[i] = (byte) Integer.parseInt(subStr, 16); |
| | | // } |
| | | // |
| | | // return bytes; |
| | | // } |
| | | |
| | | /** |
| | | * Convert char to byte |
| | |
| | | package com.dy.common.util; |
| | | |
| | | import java.security.MessageDigest; |
| | | import java.security.NoSuchAlgorithmException; |
| | | |
| | | public class MD5 { |
| | | /** |
| | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.DataV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataAlarmVo; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataStateVo; |
| | | import com.dy.common.po.BaseEntity; |
| | | import com.dy.common.util.DateTime; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.*; |
| | |
| | | */ |
| | | public Byte alarmValve; |
| | | |
| | | /** |
| | | * 供电方式(0: 220V,1:蓄电池) |
| | | */ |
| | | public Byte powerType; |
| | | |
| | | |
| | | public void valueFrom(DataV1_0_1 dV1_0_1, String rtuDt, DataAlarmVo alarmVo, DataStateVo stateVo) throws Exception{ |
| | | this.dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt) ; |
| | | this.rtuDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(rtuDt) ; |
| | | this.valveState = stateVo==null?null:stateVo.valveState; //状态-阀门/泵(1打开、0关闭 |
| | | this.alarmRemainWater = (byte)0; //剩余水量报警 (1:小于报警上限报警 0:正常) |
| | | this.alarm0WaterRemain = (byte)0; //剩余水量为0关泵/阀 (1:剩余水量为0关泵 0:正常) |
| | | this.alarmExceedYear = (byte)0; //年用水量大于限制水量报警(1:报警 0:正常) |
| | | this.alarmWaterMeterFault = alarmVo==null?null:alarmVo.meter; // 流量计故障(1:报警,0:正常) |
| | | this.alarmLoss = alarmVo==null?null:alarmVo.loss; // 漏损(偷水)报警(1:报警, 0:正常) |
| | | this.alarmWaterMeterBreak = (byte)0; //流量计损坏(正常通讯但瞬时为0)报警(1:报警,0:正常) |
| | | this.alarmEleMeterFault = (byte)0; //电表故障报警(1:报警,0:正常) |
| | | this.alarm0MoneyRemain = (byte)0; //剩余金额为0(1:报警,0:正常) |
| | | this.alarmInnerDoor = (byte)0; //控制器内门报警(1:报警,0:正常) |
| | | this.alarmOuterDoor = (byte)0; //控制器外门打开报警(1:报警,0:正常) |
| | | this.alarmEleMiss = (byte)0; //交流缺项报警(1:报警,0:正常) |
| | | this.alarmEleExceed = (byte)0; //交流过流报警(1:报警,0:正常) |
| | | this.alarmEleLowVolt = (byte)0; //三相电欠压报警(1:报警,0:正常) |
| | | this.stateIcEnable = stateVo==null?null:stateVo.icCard; //IC卡状态(1、有效,0:无效) |
| | | this.alarmBatteryVolt = alarmVo==null?null:alarmVo.batteryVolt; //电池电压(1:报警,0:正常) |
| | | this.alarmValve = alarmVo==null?null:alarmVo.valve; //阀门报警(1:报警,0:正常) |
| | | this.powerType = stateVo==null?null:stateVo.powerType; //供电方式(0: 220V,1:蓄电池) |
| | | } |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.DataV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataAlarmVo; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataStateVo; |
| | | import com.dy.common.po.BaseEntity; |
| | | import com.dy.common.util.DateTime; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.*; |
| | |
| | | public Date rtuDt; |
| | | |
| | | /** |
| | | * 状态-阀门/泵(1打开、0关闭) |
| | | * 状态-阀门/泵(0打开、1关闭) |
| | | */ |
| | | public Byte valveState; |
| | | |
| | |
| | | */ |
| | | public Byte alarmValve; |
| | | |
| | | /** |
| | | * 供电方式(0: 220V,1:蓄电池) |
| | | */ |
| | | public Byte powerType; |
| | | |
| | | public void valueFrom(DataV1_0_1 dV1_0_1, String rtuDt, DataAlarmVo alarmVo, DataStateVo stateVo) throws Exception{ |
| | | this.dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt) ; |
| | | this.rtuDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(rtuDt) ; |
| | | this.valveState = stateVo==null?null:stateVo.valveState; //状态-阀门/泵(1打开、0关闭 |
| | | this.alarmRemainWater = (byte)0; //剩余水量报警 (1:小于报警上限报警 0:正常) |
| | | this.alarm0WaterRemain = (byte)0; //剩余水量为0关泵/阀 (1:剩余水量为0关泵 0:正常) |
| | | this.alarmExceedYear = (byte)0; //年用水量大于限制水量报警(1:报警 0:正常) |
| | | this.alarmWaterMeterFault = alarmVo==null?null:alarmVo.meter; // 流量计故障(1:报警,0:正常) |
| | | this.alarmLoss = alarmVo==null?null:alarmVo.loss; // 漏损(偷水)报警(1:报警, 0:正常) |
| | | this.alarmWaterMeterBreak = (byte)0; //流量计损坏(正常通讯但瞬时为0)报警(1:报警,0:正常) |
| | | this.alarmEleMeterFault = (byte)0; //电表故障报警(1:报警,0:正常) |
| | | this.alarm0MoneyRemain = (byte)0; //剩余金额为0(1:报警,0:正常) |
| | | this.alarmInnerDoor = (byte)0; //控制器内门报警(1:报警,0:正常) |
| | | this.alarmOuterDoor = (byte)0; //控制器外门打开报警(1:报警,0:正常) |
| | | this.alarmEleMiss = (byte)0; //交流缺项报警(1:报警,0:正常) |
| | | this.alarmEleExceed = (byte)0; //交流过流报警(1:报警,0:正常) |
| | | this.alarmEleLowVolt = (byte)0; //三相电欠压报警(1:报警,0:正常) |
| | | this.stateIcEnable = stateVo==null?null:stateVo.icCard; //IC卡状态(1、有效,0:无效) |
| | | this.alarmBatteryVolt = alarmVo==null?null:alarmVo.batteryVolt; //电池电压(1:报警,0:正常) |
| | | this.alarmValve = alarmVo==null?null:alarmVo.valve; //阀门报警(1:报警,0:正常) |
| | | this.powerType = stateVo==null?null:stateVo.powerType; //供电方式(0: 220V,1:蓄电池) |
| | | } |
| | | |
| | | public void updateFrom(DataV1_0_1 dV1_0_1, String rtuDt, DataAlarmVo alarmVo, DataStateVo stateVo) throws Exception{ |
| | | this.dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt) ; |
| | | this.rtuDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(rtuDt) ; |
| | | if(alarmVo != null){ |
| | | this.alarmBatteryVolt = alarmVo.batteryVolt ; |
| | | this.alarmLoss = alarmVo.loss ; |
| | | this.alarmWaterMeterBreak = alarmVo.meter ; |
| | | this.alarmValve = alarmVo.valve ; |
| | | }/*else{ |
| | | this.alarmBatteryVolt = null ; |
| | | this.alarmLoss = null ; |
| | | this.alarmWaterMeterBreak = null ; |
| | | this.alarmValve = null ; |
| | | }*/ |
| | | if(stateVo != null){ |
| | | this.stateIcEnable = stateVo.icCard ; |
| | | this.valveState = stateVo.valveState; |
| | | this.powerType = stateVo.powerType; |
| | | //this.valveState = stateVo.valve ; |
| | | }/*else{ |
| | | this.stateIcEnable = null ; |
| | | this.valveState = null ; |
| | | this.powerType = null ; |
| | | //this.valveState = null ; |
| | | }*/ |
| | | } |
| | | } |
| | |
| | | /** |
| | | * 开阀数据接收日期时间 |
| | | */ |
| | | @Schema(description = "数据接收日期时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED) |
| | | @Schema(description = "开阀数据接收日期时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | public Date opDt; |
| | | |
| | |
| | | this.dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt); |
| | | this.rtuDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt); |
| | | //this.orderNo = cdData.orderNo ; |
| | | //this.icCardAddr = cdData.icCardAddr ; |
| | | this.icCardAddr = cdData.cardAddr ; |
| | | this.icCardNo = cdData.cardNo ; |
| | | //this.waterLevel = cdData.waterLevel ; |
| | | //this.waterPress = cdData.waterPress ; |
| | |
| | | this.dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt); |
| | | this.rtuDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt); |
| | | //this.orderNo = cdData.orderNo ; |
| | | //this.icCardAddr = cdData.icCardAddr ; |
| | | this.icCardAddr = cdData.cardAddr ; |
| | | this.icCardNo = cdData.cardNo ; |
| | | //this.waterLevel = cdData.waterLevel ; |
| | | //this.waterPress = cdData.waterPress ; |
| | |
| | | <result column="state_ic_enable" jdbcType="TINYINT" property="stateIcEnable" /> |
| | | <result column="alarm_battery_volt" jdbcType="TINYINT" property="alarmBatteryVolt" /> |
| | | <result column="alarm_valve" jdbcType="TINYINT" property="alarmValve" /> |
| | | <result column="power_type" jdbcType="TINYINT" property="powerType" /> |
| | | </resultMap> |
| | | <sql id="Base_Column_List"> |
| | | <!--@mbg.generated--> |
| | | id, controller_id, intake_id, rtu_addr, dt, rtu_dt, valve_state, alarm_remain_water, |
| | | alarm0_water_remain, alarm_exceed_year, alarm_water_meter_fault, alarm_loss, alarm_water_meter_break, |
| | | alarm_ele_meter_fault, alarm0_money_remain, alarm_inner_door, alarm_outer_door, alarm_ele_miss, |
| | | alarm_ele_exceed, alarm_ele_low_volt, state_ic_enable,alarm_battery_volt,alarm_valve |
| | | alarm_ele_exceed, alarm_ele_low_volt, state_ic_enable,alarm_battery_volt,alarm_valve,power_type |
| | | </sql> |
| | | <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> |
| | | <!--@mbg.generated--> |
| | |
| | | alarm_loss, alarm_water_meter_break, alarm_ele_meter_fault, |
| | | alarm0_money_remain, alarm_inner_door, alarm_outer_door, |
| | | alarm_ele_miss, alarm_ele_exceed, alarm_ele_low_volt, |
| | | state_ic_enable,alarm_battery_volt,alarm_valve) |
| | | state_ic_enable,alarm_battery_volt,alarm_valve,power_type) |
| | | values (#{id,jdbcType=BIGINT}, #{controllerId,jdbcType=BIGINT}, #{intakeId,jdbcType=BIGINT}, |
| | | #{rtuAddr,jdbcType=VARCHAR}, #{dt,jdbcType=TIMESTAMP}, #{rtuDt,jdbcType=TIMESTAMP}, |
| | | #{valveState,jdbcType=TINYINT}, #{alarmRemainWater,jdbcType=TINYINT}, #{alarm0WaterRemain,jdbcType=TINYINT}, |
| | |
| | | #{alarmLoss,jdbcType=TINYINT}, #{alarmWaterMeterBreak,jdbcType=TINYINT}, #{alarmEleMeterFault,jdbcType=TINYINT}, |
| | | #{alarm0MoneyRemain,jdbcType=TINYINT}, #{alarmInnerDoor,jdbcType=TINYINT}, #{alarmOuterDoor,jdbcType=TINYINT}, |
| | | #{alarmEleMiss,jdbcType=TINYINT}, #{alarmEleExceed,jdbcType=TINYINT}, #{alarmEleLowVolt,jdbcType=TINYINT}, |
| | | #{stateIcEnable,jdbcType=TINYINT}, #{alarmBatteryVolt,jdbcType=TINYINT}, #{alarmValve,jdbcType=TINYINT}) |
| | | #{stateIcEnable,jdbcType=TINYINT}, #{alarmBatteryVolt,jdbcType=TINYINT}, #{alarmValve,jdbcType=TINYINT}, |
| | | #{powerType,jdbcType=TINYINT}) |
| | | </insert> |
| | | <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAlarmStateHistory"> |
| | | <!--@mbg.generated--> |
| | |
| | | <if test="alarmValve != null"> |
| | | alarm_valve, |
| | | </if> |
| | | <if test="powerType != null"> |
| | | power_type, |
| | | </if> |
| | | </trim> |
| | | <trim prefix="values (" suffix=")" suffixOverrides=","> |
| | | <if test="id != null"> |
| | |
| | | </if> |
| | | <if test="alarmValve != null"> |
| | | #{alarmValve,jdbcType=TINYINT}, |
| | | </if> |
| | | <if test="powerType != null"> |
| | | #{powerType,jdbcType=TINYINT}, |
| | | </if> |
| | | </trim> |
| | | </insert> |
| | |
| | | <if test="alarmValve != null"> |
| | | alarm_valve = #{alarmValve,jdbcType=TINYINT}, |
| | | </if> |
| | | <if test="powerType != null"> |
| | | power_type = #{powerType,jdbcType=TINYINT}, |
| | | </if> |
| | | </set> |
| | | where id = #{id,jdbcType=BIGINT} |
| | | </update> |
| | |
| | | state_ic_enable = #{stateIcEnable,jdbcType=TINYINT}, |
| | | alarm_battery_volt = #{alarmBatteryVolt,jdbcType=TINYINT}, |
| | | alarm_valve = #{alarmValve,jdbcType=TINYINT}, |
| | | power_type = #{powerType,jdbcType=TINYINT} |
| | | where id = #{id,jdbcType=BIGINT} |
| | | </update> |
| | | </mapper> |
| | |
| | | <result column="state_ic_enable" jdbcType="TINYINT" property="stateIcEnable" /> |
| | | <result column="alarm_battery_volt" jdbcType="TINYINT" property="alarmBatteryVolt" /> |
| | | <result column="alarm_valve" jdbcType="TINYINT" property="alarmValve" /> |
| | | <result column="power_type" jdbcType="TINYINT" property="alarmValve" /> |
| | | </resultMap> |
| | | <sql id="Base_Column_List"> |
| | | <!--@mbg.generated--> |
| | | id, controller_id, intake_id, rtu_addr, dt, rtu_dt, valve_state, alarm_remain_water, |
| | | alarm0_water_remain, alarm_exceed_year, alarm_water_meter_fault, alarm_loss, alarm_water_meter_break, |
| | | alarm_ele_meter_fault, alarm0_money_remain, alarm_inner_door, alarm_outer_door, alarm_ele_miss, |
| | | alarm_ele_exceed, alarm_ele_low_volt, state_ic_enable,alarm_battery_volt,alarm_valve |
| | | alarm_ele_exceed, alarm_ele_low_volt, state_ic_enable,alarm_battery_volt,alarm_valve,power_type |
| | | </sql> |
| | | <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> |
| | | <!--@mbg.generated--> |
| | |
| | | alarm_loss, alarm_water_meter_break, alarm_ele_meter_fault, |
| | | alarm0_money_remain, alarm_inner_door, alarm_outer_door, |
| | | alarm_ele_miss, alarm_ele_exceed, alarm_ele_low_volt, |
| | | state_ic_enable,alarm_battery_volt,alarm_valve) |
| | | state_ic_enable,alarm_battery_volt,alarm_valve,power_type) |
| | | values (#{id,jdbcType=BIGINT}, #{controllerId,jdbcType=BIGINT}, #{intakeId,jdbcType=BIGINT}, |
| | | #{rtuAddr,jdbcType=VARCHAR}, #{dt,jdbcType=TIMESTAMP}, #{rtuDt,jdbcType=TIMESTAMP}, |
| | | #{valveState,jdbcType=TINYINT}, #{alarmRemainWater,jdbcType=TINYINT}, #{alarm0WaterRemain,jdbcType=TINYINT}, |
| | |
| | | #{alarmLoss,jdbcType=TINYINT}, #{alarmWaterMeterBreak,jdbcType=TINYINT}, #{alarmEleMeterFault,jdbcType=TINYINT}, |
| | | #{alarm0MoneyRemain,jdbcType=TINYINT}, #{alarmInnerDoor,jdbcType=TINYINT}, #{alarmOuterDoor,jdbcType=TINYINT}, |
| | | #{alarmEleMiss,jdbcType=TINYINT}, #{alarmEleExceed,jdbcType=TINYINT}, #{alarmEleLowVolt,jdbcType=TINYINT}, |
| | | #{stateIcEnable,jdbcType=TINYINT}, #{alarmBatteryVolt,jdbcType=TINYINT}, #{alarmValve,jdbcType=TINYINT}) |
| | | #{stateIcEnable,jdbcType=TINYINT}, #{alarmBatteryVolt,jdbcType=TINYINT}, #{alarmValve,jdbcType=TINYINT}, |
| | | #{powerType,jdbcType=TINYINT}) |
| | | </insert> |
| | | <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAlarmStateLast"> |
| | | <!--@mbg.generated--> |
| | |
| | | <if test="alarmValve != null"> |
| | | alarm_valve, |
| | | </if> |
| | | <if test="powerType != null"> |
| | | power_type, |
| | | </if> |
| | | </trim> |
| | | <trim prefix="values (" suffix=")" suffixOverrides=","> |
| | | <if test="id != null"> |
| | |
| | | </if> |
| | | <if test="alarmValve != null"> |
| | | #{alarmValve,jdbcType=TINYINT}, |
| | | </if> |
| | | <if test="powerType != null"> |
| | | #{powerType,jdbcType=TINYINT}, |
| | | </if> |
| | | </trim> |
| | | </insert> |
| | |
| | | <if test="alarmValve != null"> |
| | | alarm_valve = #{alarmValve,jdbcType=TINYINT}, |
| | | </if> |
| | | <if test="powerType != null"> |
| | | power_type = #{powerType,jdbcType=TINYINT}, |
| | | </if> |
| | | </set> |
| | | where id = #{id,jdbcType=BIGINT} |
| | | </update> |
| | |
| | | state_ic_enable = #{stateIcEnable,jdbcType=TINYINT}, |
| | | alarm_battery_volt = #{alarmBatteryVolt,jdbcType=TINYINT}, |
| | | alarm_valve = #{alarmValve,jdbcType=TINYINT}, |
| | | power_type = #{powerType,jdbcType=TINYINT} |
| | | where id = #{id,jdbcType=BIGINT} |
| | | </update> |
| | | </mapper> |
| | |
| | | water_meter_work_volt = #{waterMeterWorkVolt,jdbcType=FLOAT} |
| | | where id = #{id,jdbcType=BIGINT} |
| | | </update> |
| | | <select id="selectByRtuAddr" parameterType="java.lang.String" resultMap="BaseResultMap"> |
| | | <!--@mbg.generated--> |
| | | select |
| | | <include refid="Base_Column_List" /> |
| | | from rm_work_report_last |
| | | where rtu_addr = #{rtuAddr,jdbcType=VARCHAR} |
| | | </select> |
| | | </mapper> |
| | |
| | | private void saveOrUpdateLast(DbSv sv, PrController controller, String rtuAddr, String rtuDt, DataV1_0_1 dV1_0_1, DataAlarmVo alarmVo, DataStateVo stateVo) throws Exception { |
| | | RmAlarmStateLast po = sv.getRmAlarmStateLast(rtuAddr) ; |
| | | if(po == null){ |
| | | po = new RmAlarmStateLast(null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(), |
| | | rtuAddr, |
| | | DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt), |
| | | DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(rtuDt), |
| | | stateVo==null?null:stateVo.working,//状态-阀门/泵(1打开、0关闭) |
| | | (byte)0,//剩余水量报警 (1:小于报警上限报警 0:正常) |
| | | (byte)0,//剩余水量为0关泵/阀 (1:剩余水量为0关泵 0:正常) |
| | | (byte)0,//年用水量大于限制水量报警(1:报警 0:正常) |
| | | alarmVo==null?null:alarmVo.meter,// 流量计故障(1:报警,0:正常) |
| | | alarmVo==null?null:alarmVo.loss,// 漏损(偷水)报警(1:报警, 0:正常) |
| | | (byte)0,//流量计损坏(正常通讯但瞬时为0)报警(1:报警,0:正常) |
| | | (byte)0,//电表故障报警(1:报警,0:正常) |
| | | (byte)0,//剩余金额为0(1:报警,0:正常) |
| | | (byte)0,//控制器内门报警(1:报警,0:正常) |
| | | (byte)0,//控制器外门打开报警(1:报警,0:正常) |
| | | (byte)0,//交流缺项报警(1:报警,0:正常) |
| | | (byte)0,//交流过流报警(1:报警,0:正常) |
| | | (byte)0,//三相电欠压报警(1:报警,0:正常) |
| | | stateVo==null?null:stateVo.icCard,//IC卡状态(1、有效,0:无效) ; |
| | | alarmVo==null?null:alarmVo.batteryVolt,//电池电压(1:报警,0:正常) |
| | | alarmVo==null?null:alarmVo.valve//阀门报警(1:报警,0:正常) |
| | | ); |
| | | po = new RmAlarmStateLast(); |
| | | po.controllerId = controller==null?null:controller.getId() ; |
| | | po.intakeId = controller==null?null:controller.getIntakeId() ; |
| | | po.rtuAddr = rtuAddr ; |
| | | po.valueFrom(dV1_0_1, rtuDt, alarmVo, stateVo); |
| | | sv.saveRmAlarmStateLast(po) ; |
| | | }else{ |
| | | po = this.update(controller, po, rtuDt, dV1_0_1, alarmVo, stateVo) ; |
| | |
| | | * @param stateVo 状态对象 |
| | | */ |
| | | private void saveHistory(DbSv sv, PrController controller, String rtuAddr, String rtuDt, DataV1_0_1 dV1_0_1, DataAlarmVo alarmVo, DataStateVo stateVo) throws Exception { |
| | | RmAlarmStateHistory po = new RmAlarmStateHistory(null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(), |
| | | rtuAddr, |
| | | DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt), |
| | | DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(rtuDt), |
| | | stateVo==null?null:stateVo.working,//状态-阀门/泵(1打开、0关闭) |
| | | (byte)0,//剩余水量报警 (1:小于报警上限报警 0:正常) |
| | | (byte)0,//剩余水量为0关泵/阀 (1:剩余水量为0关泵 0:正常) |
| | | (byte)0,//年用水量大于限制水量报警(1:报警 0:正常) |
| | | alarmVo==null?null:alarmVo.meter,// 流量计故障(1:报警,0:正常) |
| | | alarmVo==null?null:alarmVo.loss,// 漏损(偷水)报警(1:报警, 0:正常) |
| | | (byte)0,//流量计损坏(正常通讯但瞬时为0)报警(1:报警,0:正常) |
| | | (byte)0,//电表故障报警(1:报警,0:正常) |
| | | (byte)0,//剩余金额为0(1:报警,0:正常) |
| | | (byte)0,//控制器内门报警(1:报警,0:正常) |
| | | (byte)0,//控制器外门打开报警(1:报警,0:正常) |
| | | (byte)0,//交流缺项报警(1:报警,0:正常) |
| | | (byte)0,//交流过流报警(1:报警,0:正常) |
| | | (byte)0,//三相电欠压报警(1:报警,0:正常) |
| | | stateVo==null?null:stateVo.icCard,//IC卡状态(1、有效,0:无效) ; |
| | | alarmVo==null?null:alarmVo.batteryVolt,//电池电压(1:报警,0:正常) |
| | | alarmVo==null?null:alarmVo.valve//阀门报警(1:报警,0:正常) |
| | | ); |
| | | RmAlarmStateHistory po = new RmAlarmStateHistory() ; |
| | | po.controllerId = controller==null?null:controller.getId() ; |
| | | po.intakeId = controller==null?null:controller.getIntakeId() ; |
| | | po.rtuAddr = rtuAddr ; |
| | | po.valueFrom(dV1_0_1, rtuDt, alarmVo, stateVo); |
| | | sv.saveRmAlarmStateHistory(po) ; |
| | | } |
| | | |
| | |
| | | po.controllerId = controller==null?null:controller.getId() ; |
| | | po.intakeId = controller==null?null:controller.getIntakeId() ; |
| | | |
| | | po.dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt) ; |
| | | po.rtuDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(rtuDt) ; |
| | | if(alarmVo != null){ |
| | | po.alarmBatteryVolt = alarmVo.batteryVolt ; |
| | | po.alarmLoss = alarmVo.loss ; |
| | | po.alarmWaterMeterBreak = alarmVo.meter ; |
| | | po.alarmValve = alarmVo.valve ; |
| | | }/*else{ |
| | | po.alarmBatteryVolt = null ; |
| | | po.alarmLoss = null ; |
| | | po.alarmWaterMeterBreak = null ; |
| | | po.alarmValve = null ; |
| | | }*/ |
| | | if(stateVo != null){ |
| | | po.stateIcEnable = stateVo.icCard ; |
| | | po.valveState = stateVo.working ; |
| | | //po.valvestate = stateVo.valve ; |
| | | }/*else{ |
| | | po.stateIcEnable = null ; |
| | | po.valveState = null ; |
| | | //po.valvestate = null ; |
| | | }*/ |
| | | po.updateFrom(dV1_0_1, rtuDt, alarmVo, stateVo); |
| | | return po ; |
| | | |
| | | } |
| | |
| | | PrController controller, |
| | | DataStateVo stateVo){ |
| | | if(stateVo != null){ |
| | | if(stateVo.working != null && stateVo.working.byteValue() == 0){ |
| | | if(stateVo.valveState != null && stateVo.valveState.byteValue() == 0){ |
| | | //阀门关闭状态 |
| | | if(controller != null && controller.getIntakeId() != null){ |
| | | //虚拟卡在取水中的占用状态改为非应用状态 |
| | |
| | | sv.saveRmOpenCloseValveLast(poLast); |
| | | }else{ |
| | | if(poLast.clType == null){ |
| | | //原记录不存在关阀数据,所以当前关阀上报是新的一次关阀,保留原记录中的开阀数据 |
| | | this.updateCloseValve(controller, poLast, null, dV1_0_1, dataCd83CloseVo, false) ; |
| | | //原记录不存在关阀数据,所以当前关阀上报是新的一次关阀 |
| | | if(poLast.opType == null){ |
| | | //原记录中不存在开阀数据,没办法进行匹配 |
| | | //生成并保存新的关阀上报历史数据记录 |
| | |
| | | if(poLast.lastHistoryId != null){ |
| | | poHistory = sv.getRmOpenCloseValveHistory(poLast.lastHistoryId) ; |
| | | if(poHistory != null){ |
| | | //当前关阀上报是新的一次关阀,保留原记录中的开阀数据 |
| | | this.updateCloseValve(controller, poLast, poHistory, dV1_0_1, dataCd83CloseVo, false) ; |
| | | sv.updateRmOpenCloseValveHistory(poHistory); |
| | | }else{ |
| | | //没有历史数据,生成并保存新的关阀上报历史数据记录 |
| | |
| | | //重复上报了,不进行处理 |
| | | }else { |
| | | //当前上报的关阀数据晚于原来的关阀数据,是新的上报关阀数据 |
| | | this.updateCloseValve(controller, poLast, null, dV1_0_1, dataCd83CloseVo, false) ; |
| | | this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast); |
| | | } |
| | | }else{ |
| | | //if(po.opType == null) |
| | | //原记录不存在开阀数据也不存在关阀数据,这种情况不存在,但为安全也进行处理 |
| | | this.updateCloseValve(controller,poLast, null, dV1_0_1, dataCd83CloseVo, false) ; |
| | | this.updateCloseValve(controller, poLast, null, dV1_0_1, dataCd83CloseVo, false) ; |
| | | //生成并保存新的关阀上报历史数据记录 |
| | | this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast); |
| | | } |
| | |
| | | //新的日期 |
| | | poLast = this.newRmLossLast(controller, rtuAddr, dV1_0_1, dataCdC0Vo); |
| | | this.newAndSaveHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCdC0Vo, poLast); |
| | | sv.saveRmLossLast(poLast); |
| | | sv.updateRmLossLast(poLast); |
| | | }else{ |
| | | //这种情况不存在(RTU时钟早于本地记录中的RTU时钟(RTU穿越回过去了,可能时钟重置了),此种情况不处理) |
| | | } |
| | |
| | | alarmVo==null?null:alarmVo.alarmEleLowVolt, |
| | | alarmVo==null?null:alarmVo.stateIcEnable, |
| | | (byte)0,//电池电压(1:报警,0:正常) |
| | | (byte)0//阀门报警(1:报警,0:正常) |
| | | (byte)0,//阀门报警(1:报警,0:正常) |
| | | (byte)0//供电方式(0: 220V,1:蓄电池) |
| | | ) ; |
| | | sv.saveRmAlarmStateLast(po) ; |
| | | }else{ |
| | |
| | | alarmVo==null?null:alarmVo.alarmEleLowVolt, |
| | | alarmVo==null?null:alarmVo.stateIcEnable, |
| | | (byte)0,//电池电压(1:报警,0:正常) |
| | | (byte)0//阀门报警(1:报警,0:正常) |
| | | (byte)0,//阀门报警(1:报警,0:正常) |
| | | (byte)0//供电方式(0: 220V,1:蓄电池) |
| | | ) ; |
| | | sv.saveRmAlarmStateHistory(po) ; |
| | | } |