工具类修改 #158

Merged
p95fco63j merged 1 commits from junmao_branch into develop 2 weeks ago

@ -554,4 +554,250 @@ public class CommonUtils {
default -> "普通";
};
}
/**
* MAC12/线
*/
public static boolean validateMacAddress(String mac) {
if (isBlankWithFullWidth(mac)) {
return false;
}
// 去除分隔符转为纯12位十六进制字符串
String pureMac = mac.replace(":", "").replace("-", "").trim().toLowerCase();
if (pureMac.length() != 12) {
return false;
}
return pureMac.matches("[0-9a-f]+");
}
/**
* IPIPv4
*/
public static boolean validateIpv4Address(String ip) {
if (isBlankWithFullWidth(ip)) {
return false;
}
String[] ipSegments = ip.split("\\.");
if (ipSegments.length != 4) {
return false;
}
try {
for (String segment : ipSegments) {
int num = Integer.parseInt(segment);
if (num < 0 || num > 255) {
return false;
}
}
return true;
} catch (NumberFormatException e) {
log.warn("IP地址格式错误{}", ip);
return false;
}
}
/**
* IDID
*/
public static List<String> batchValidateDeviceId(List<String> deviceIdList) {
List<String> invalidIds = new ArrayList<>();
if (isEmpty(deviceIdList)) {
return invalidIds;
}
for (String deviceId : deviceIdList) {
if (!validateDeviceId(deviceId)) {
invalidIds.add(deviceId);
}
}
return invalidIds;
}
/**
* /
*/
public static String convertCnToDeviceStatus(String cnStatus) {
if (isBlankWithFullWidth(cnStatus)) {
return "unknown";
}
return switch (cnStatus.trim()) {
case "在线" -> "online";
case "离线" -> "offline";
case "故障" -> "fault";
default -> "unknown";
};
}
/**
* MPaBar1MPa=10Bar
*/
public static BigDecimal convertMpaToBar(BigDecimal mpa) {
if (!validateSensorValue(mpa)) {
return BigDecimal.ZERO;
}
return mpa.multiply(new BigDecimal("10")).setScale(2, RoundingMode.HALF_UP);
}
/**
* BarMPa
*/
public static BigDecimal convertBarToMpa(BigDecimal bar) {
if (!validateSensorValue(bar)) {
return BigDecimal.ZERO;
}
return bar.divide(new BigDecimal("10"), 2, RoundingMode.HALF_UP);
}
/**
* 0-100寿/
*/
public static String convertNumToCn(Integer num) {
if (num == null || num < 0 || num > 100) {
return "零";
}
String[] cnNums = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"};
if (num <= 10) {
return cnNums[num];
} else if (num < 20) {
return "十" + cnNums[num - 10];
} else if (num % 10 == 0) {
return cnNums[num / 10] + "十";
} else {
return cnNums[num / 10] + "十" + cnNums[num % 10];
}
}
/**
*
*/
public static String convertOrderStatusToCn(String status) {
if (isBlankWithFullWidth(status)) {
return "未知状态";
}
return switch (status.toLowerCase()) {
case "pending" -> "待处理";
case "processing" -> "处理中";
case "completed" -> "已完成";
case "cancelled" -> "已取消";
default -> "未知状态";
};
}
/**
*
*/
public static String convertOrderTypeToCn(String type) {
if (isBlankWithFullWidth(type)) {
return "未知类型";
}
return switch (type.toLowerCase()) {
case "repair" -> "故障维修";
case "maintenance" -> "定期保养";
case "inspection" -> "设备巡检";
default -> "未知类型";
};
}
/**
*
*/
public static String generateMockAlertMessage(DeviceType type) {
String[] makerAlerts = {
"原水TDS值过高超出阈值",
"纯水TDS值异常滤芯可能失效",
"水压过低,设备无法正常制水",
"设备检测到漏水,需紧急处理",
"滤芯寿命不足,需尽快更换"
};
String[] supplyAlerts = {
"水位过低,需及时补水",
"水压异常,供水不稳定",
"水温过高,设备散热异常",
"出水流量过低,可能堵塞",
"设备离线,通信中断"
};
Random random = new Random();
if (DeviceType.water_maker.equals(type)) {
return makerAlerts[random.nextInt(makerAlerts.length)];
} else {
return supplyAlerts[random.nextInt(supplyAlerts.length)];
}
}
/**
* nm*
*/
public static String desensitizeString(String str, int keepPrefix, int keepSuffix) {
if (isBlankWithFullWidth(str)) {
return str;
}
int length = str.length();
if (length <= keepPrefix + keepSuffix) {
return str;
}
StringBuilder sb = new StringBuilder();
sb.append(str.substring(0, keepPrefix));
for (int i = 0; i < length - keepPrefix - keepSuffix; i++) {
sb.append("*");
}
sb.append(str.substring(length - keepSuffix));
return sb.toString();
}
/**
*
*/
public static <T> List<T> batchDefaultIfNull(List<T> list, T defaultValue) {
List<T> result = new ArrayList<>();
if (isEmpty(list)) {
return result;
}
for (T item : list) {
result.add(defaultIfNull(item, defaultValue));
}
return result;
}
/**
*
*/
public static String generateRandomNumStr(int length) {
if (length <= 0) {
return "";
}
Random random = new Random();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++) {
sb.append(random.nextInt(10));
}
return sb.toString();
}
/**
*
*/
public static String generateRandomLetterStr(int length) {
if (length <= 0) {
return "";
}
Random random = new Random();
StringBuilder sb = new StringBuilder();
String letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
for (int i = 0; i < length; i++) {
sb.append(letters.charAt(random.nextInt(letters.length())));
}
return sb.toString();
}
/**
*
*/
public static long calculateDayInterval(Date start, Date end) {
if (start == null || end == null) {
return 0;
}
long millisDiff = Math.abs(end.getTime() - start.getTime());
return millisDiff / (24 * 60 * 60 * 1000);
}
}
Loading…
Cancel
Save