#init
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
package com.fastbee.utils;
|
||||
|
||||
import com.fastbee.common.utils.json.JsonUtils;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
@Component
|
||||
public class CommandUtils {
|
||||
|
||||
|
||||
public static void buildCommand(ByteBuf buf, Object json, byte command) {
|
||||
buf.writeShort(0xABAA);
|
||||
buf.writeByte(command);//推送tcp消息指令
|
||||
if (json != null) {
|
||||
String jsonStr = JsonUtils.toJsonString(json);
|
||||
byte[] jsonBytes = jsonStr.getBytes(StandardCharsets.UTF_8);
|
||||
//写入JSON数据的字节数组
|
||||
buf.writeBytes(jsonBytes);
|
||||
}
|
||||
buf.writeByte(0x00);
|
||||
buf.writeByte(0x00);
|
||||
buf.writeShort(0xAAAB);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
package com.fastbee.utils;
|
||||
|
||||
import com.fastbee.enums.CompareEnum;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
/**
|
||||
* 比较工具类
|
||||
* 提供基于比较操作符的通用比较功能
|
||||
*/
|
||||
@Slf4j
|
||||
public class CompareUtils {
|
||||
|
||||
/**
|
||||
* 比较两个值是否满足指定的操作符条件
|
||||
*
|
||||
* @param operator 比较操作符
|
||||
* @param targetValue 目标值(用于比较的值)
|
||||
* @param compareValue 比较值(要比较的值)
|
||||
* @return 是否满足条件
|
||||
*/
|
||||
public static boolean compare(CompareEnum operator, String targetValue, String compareValue) {
|
||||
if (operator == null || targetValue == null || compareValue == null) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
// 根据操作符执行不同的比较逻辑
|
||||
switch (operator) {
|
||||
case EQ:
|
||||
return compareValue.equals(targetValue);
|
||||
case NEQ:
|
||||
return !compareValue.equals(targetValue);
|
||||
case GT:
|
||||
return isNumeric(compareValue) && isNumeric(targetValue) &&
|
||||
Double.parseDouble(compareValue) > Double.parseDouble(targetValue);
|
||||
case LT:
|
||||
return isNumeric(compareValue) && isNumeric(targetValue) &&
|
||||
Double.parseDouble(compareValue) < Double.parseDouble(targetValue);
|
||||
case GTE:
|
||||
return isNumeric(compareValue) && isNumeric(targetValue) &&
|
||||
Double.parseDouble(compareValue) >= Double.parseDouble(targetValue);
|
||||
case LTE:
|
||||
return isNumeric(compareValue) && isNumeric(targetValue) &&
|
||||
Double.parseDouble(compareValue) <= Double.parseDouble(targetValue);
|
||||
case BETWEEN:
|
||||
// 范围值用英文中划线分割
|
||||
String[] rangeValues = targetValue.split("-");
|
||||
if (rangeValues.length != 2) {
|
||||
return false;
|
||||
}
|
||||
return isNumeric(compareValue) && isNumeric(rangeValues[0]) && isNumeric(rangeValues[1]) &&
|
||||
Double.parseDouble(compareValue) >= Double.parseDouble(rangeValues[0]) &&
|
||||
Double.parseDouble(compareValue) <= Double.parseDouble(rangeValues[1]);
|
||||
case NOT_BETWEEN:
|
||||
// 范围值用英文中划线分割
|
||||
String[] notRangeValues = targetValue.split("-");
|
||||
if (notRangeValues.length != 2) {
|
||||
return false;
|
||||
}
|
||||
return isNumeric(compareValue) && isNumeric(notRangeValues[0]) && isNumeric(notRangeValues[1]) &&
|
||||
(Double.parseDouble(compareValue) < Double.parseDouble(notRangeValues[0]) ||
|
||||
Double.parseDouble(compareValue) > Double.parseDouble(notRangeValues[1]));
|
||||
case CONTAIN:
|
||||
return compareValue.contains(targetValue);
|
||||
case NOT_CONTAIN:
|
||||
return !compareValue.contains(targetValue);
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("比较操作失败,操作符: {}, 目标值: {}, 比较值: {}", operator.getValue(), targetValue, compareValue, e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断字符串是否为数字
|
||||
*
|
||||
* @param str 要判断的字符串
|
||||
* @return 是否为数字
|
||||
*/
|
||||
private static boolean isNumeric(String str) {
|
||||
if (str == null || str.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
// 使用正则表达式判断是否为数字
|
||||
return str.matches("^[+-]?\\d*(\\.\\d+)?$");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user