From f075d7780ec9ce91afd2d3a383d3ef3db518e05b Mon Sep 17 00:00:00 2001 From: wangshilong Date: Sun, 1 Dec 2024 15:26:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8C=81=E4=B9=85=E5=8C=96=E7=BD=91=E5=85=B3?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E8=A7=A3=E6=9E=90=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/Redis2DBPersistenceService.java | 9 +++-- .../com/isu/gaswellwatch/utils/HexUtil.java | 33 +++++++++++++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/isu/gaswellwatch/utils/HexUtil.java diff --git a/src/main/java/com/isu/gaswellwatch/modbus/data/Redis2DBPersistenceService.java b/src/main/java/com/isu/gaswellwatch/modbus/data/Redis2DBPersistenceService.java index 5a04522..4c09afb 100644 --- a/src/main/java/com/isu/gaswellwatch/modbus/data/Redis2DBPersistenceService.java +++ b/src/main/java/com/isu/gaswellwatch/modbus/data/Redis2DBPersistenceService.java @@ -4,6 +4,7 @@ import cn.hutool.core.map.MapUtil; import cn.hutool.json.JSONUtil; import com.isu.gaswellwatch.entity.Response; import com.isu.gaswellwatch.modbus.data.listener.Queues; +import com.isu.gaswellwatch.utils.HexUtil; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; @@ -122,8 +123,12 @@ public class Redis2DBPersistenceService { } List> idGatewayMappingList = this.jdbcTemplate.queryForList("select id, gateway_sn" + " from device where gateway_sn in (" - + response.getBody().getData().stream().map(value -> "'" - + value + "'").collect(Collectors.joining(",")) + ")"); + + response.getBody() + .getData() + .stream() + .map(value -> new String(HexUtil.hexStringToBytes(value))) + .map(value -> "'" + value + "'") + .collect(Collectors.joining(",")) + ")"); if (ObjectUtils.isEmpty(idGatewayMappingList)) { return null; } diff --git a/src/main/java/com/isu/gaswellwatch/utils/HexUtil.java b/src/main/java/com/isu/gaswellwatch/utils/HexUtil.java new file mode 100644 index 0000000..fccb20e --- /dev/null +++ b/src/main/java/com/isu/gaswellwatch/utils/HexUtil.java @@ -0,0 +1,33 @@ +package com.isu.gaswellwatch.utils; + +public class HexUtil { + + public static byte[] hexStringToBytes(String src) { + int l = src.length() / 2; + byte[] ret = new byte[l]; + for (int i = 0; i < l; i++) { + ret[i] = (byte) Integer.valueOf(src.substring(i * 2, i * 2 + 2), 16).byteValue(); + } + return ret; + } + + public static String bytesToHexString(byte[] src) { + String strHex = ""; + StringBuilder sb = new StringBuilder(""); + for (int n = 0; n < src.length; n++) { + strHex = Integer.toHexString(src[n] & 0xFF); + // 每个字节由两个字符表示,位数不够,高位补0 + sb.append((strHex.length() == 1) ? "0" + strHex : strHex); + } + return sb.toString().trim().toUpperCase(); + } + + public static int hashPartition(String key, int partition) { + return Math.abs(key.hashCode() % partition); + } + + public static void main(String[] args) { + System.out.println(hexStringToBytes("0D")); + System.out.println(new byte[]{(byte) Integer.parseInt("0D", 16)}); + } +}