package com.cbsd.client.check; import com.cbsd.client.check.ICheckInterface; import java.util.List; import java.util.Map; public class Check_12ddd0fdb0dc4312975a9007d9ad3f79 implements ICheckInterface { /** * 检查 * @param originalCommand 原始指令数据 * @param preTreatmentCommand 预处理指令数据,若无预处理,则为原始指令数据 * @param repeatCount 重复次数 * @param hitCount 命中次数 * @param latestHitTime 最后命中时间 * @param dataMap 数据集合,key为协议字段属性名(label),value为物理值 * @return 日志信息列表 */ @Override public List check(String originalCommand, String preTreatmentCommand, int repeatCount, int hitCount, String latestHitTime, Map dataMap) { java.util.List result = new java.util.ArrayList<>(); String commandPart = ""; //指令内容的后两位 if (originalCommand != null && originalCommand.length() >= 2) { commandPart = originalCommand.substring(originalCommand.length() - 2); } else if (originalCommand != null) { // 如果指令长度不足2位,用0补齐 commandPart = String.format("%2s", originalCommand).replace(' ', '0'); } else { commandPart = "00"; } String preCommandPart = ""; if (originalCommand != null && preTreatmentCommand.length() >= 2) { preCommandPart = preTreatmentCommand.substring(preTreatmentCommand.length() - 2); } else if (preTreatmentCommand != null) { // 如果指令长度不足2位,用0补齐 preCommandPart = String.format("%2s", preTreatmentCommand).replace(' ', '0'); } else { preCommandPart = "00"; } String repeatCountStr = String.format("%02d", repeatCount % 100); String hitCountStr = String.format("%02d", hitCount % 100); String dataMapPart = "00"; // 默认值 if (dataMap != null && !dataMap.isEmpty()) { // 遍历dataMap的所有值,拼接成一个字符串 StringBuilder allValues = new StringBuilder(); for (Map.Entry entry : dataMap.entrySet()) { String value = entry.getValue(); if (value != null) { allValues.append(value); } } String allValuesStr = allValues.toString(); if (allValuesStr.length() >= 2) { // 取最后2位 dataMapPart = allValuesStr.substring(0, 2); } else if (allValuesStr.length() == 1) { // 如果只有1位,前面补0 dataMapPart = "0" + allValuesStr; } // 如果为空,保持默认值"00" } if (latestHitTime != null && latestHitTime.length() >= 19) { // 提取所有数字字符 StringBuilder numbers = new StringBuilder(); for (int i = 0; i < latestHitTime.length(); i++) { char c = latestHitTime.charAt(i); if (Character.isDigit(c)) { numbers.append(c); } } // 检查是否提取到了足够的数字(至少14位:yyyyMMddHHmmss) if (numbers.length() >= 14) { // 取前14位数字(年月日时分秒) String timeDigits = numbers.substring(6, 14); // 在最前面补两个0,形成8字节(16个字符)的十六进制表示 result.add("检查脚本0----" + preCommandPart + hitCountStr + repeatCountStr +dataMapPart + timeDigits); return result; } } // 如果latestHitTime格式不正确,返回默认值 result.add("检查脚本1----" + commandPart + "00000000"); return result; } /** * 描述 * * @return 描述内容 */ @Override public String comment() { return ""; } }