From caddcd9fd93803dae3f270ad4a888f758f83d506 Mon Sep 17 00:00:00 2001 From: Lemon Date: Thu, 29 Jun 2023 09:16:50 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BF=AE=E6=94=B9crc=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jsowell/common/util/YKCUtils.java | 20 +++++++++---- .../service/impl/PileSimInfoServiceImpl.java | 28 +++++++++---------- 2 files changed, 29 insertions(+), 19 deletions(-) diff --git a/jsowell-common/src/main/java/com/jsowell/common/util/YKCUtils.java b/jsowell-common/src/main/java/com/jsowell/common/util/YKCUtils.java index f7d5c7ab4..b692ea6f9 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/util/YKCUtils.java +++ b/jsowell-common/src/main/java/com/jsowell/common/util/YKCUtils.java @@ -49,12 +49,17 @@ public class YKCUtils { String sourceCRC = String.format("%04x", BytesUtil.bytesToInt(crcByte, 0)); String targetCRC = String.format("%04x", CRC16Util.calcCrc16(data)); String oldTargetCRC = String.format("%04x", CRC16Util.calcCrc16Old(data)); - if (!sourceCRC.equalsIgnoreCase(targetCRC)) { - log.error("CRC校验不通过, 源crc:{}, 计算得出crc:{}, 老crc计算:{}, 帧类型:{}, 报文:{}, msg:{}" - , sourceCRC, targetCRC, oldTargetCRC, YKCUtils.frameType2Str(frameType), BytesUtil.binary(msg, 16), Arrays.toString(msg)); - return false; + // 将高低位位置反转,得出新的crc + String lowString = StringUtils.substring(targetCRC, 0, 2); + String highString = StringUtils.substring(targetCRC, 2, 4); + String crc = highString + lowString; + // 若目标crc和高低位反转前/后的crc都不一致,则校验不通过 + if (sourceCRC.equalsIgnoreCase(targetCRC) || sourceCRC.equalsIgnoreCase(crc)) { + return true; } - return true; + log.error("CRC校验不通过, 源crc:{}, 计算得出crc:{}, 老crc计算:{}, 高低位反转后crc:{}, 帧类型:{}, 报文:{}, msg:{}" + , sourceCRC, targetCRC, oldTargetCRC, crc, YKCUtils.frameType2Str(frameType), BytesUtil.binary(msg, 16), Arrays.toString(msg)); + return false; } /** @@ -127,6 +132,11 @@ public class YKCUtils { // System.out.println(binary); // System.out.println(aaa); + String targetCRC = "0abb"; + String substring = StringUtils.substring(targetCRC, 0, 2); + String substring1 = StringUtils.substring(targetCRC, 2, 4); + String crc = substring1 + substring; + String hexString = "4f"; byte[] bytes = new byte[]{0x4f}; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileSimInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileSimInfoServiceImpl.java index 7e92a9463..46405c44e 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileSimInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileSimInfoServiceImpl.java @@ -74,20 +74,20 @@ public class PileSimInfoServiceImpl implements IPileSimInfoService { } dto.setExpiredTime(expiredTime); List simInfoList = pileSimInfoMapper.getSimInfoList(dto); - if (expiredTime == null) { - // 为空说明后管查询列表页没有选择筛选条件 - List iccids = simInfoList.stream() - .map(SimCardInfoVO::getIccId) - .collect(Collectors.toList()); - // 查出最新的卡信息 - List simCardList = simCardService.searchByLoop(iccids); - if (CollectionUtils.isNotEmpty(simCardList)) { - // 批量修改存库 - pileSimInfoMapper.updateSimCardInfoBatch(simCardList); - - simInfoList = pileSimInfoMapper.getSimInfoList(dto); - } - } + // if (expiredTime == null) { + // // 为空说明后管查询列表页没有选择筛选条件 + // List iccids = simInfoList.stream() + // .map(SimCardInfoVO::getIccId) + // .collect(Collectors.toList()); + // // 查出最新的卡信息 + // List simCardList = simCardService.searchByLoop(iccids); + // if (CollectionUtils.isNotEmpty(simCardList)) { + // // 批量修改存库 + // pileSimInfoMapper.updateSimCardInfoBatch(simCardList); + // + // simInfoList = pileSimInfoMapper.getSimInfoList(dto); + // } + // } if (CollectionUtils.isEmpty(simInfoList)) { return new ArrayList<>();