liusuyi
2024-10-10 38f29e38fcc668171dc05c53d40a36b895c86102
ard-work/src/main/java/com/ruoyi/utils/tools/ArdTool.java
@@ -1,9 +1,8 @@
package com.ruoyi.utils.tools;
import com.ruoyi.common.core.redis.RedisCache;
import lombok.extern.slf4j.Slf4j;
import javax.annotation.Resource;
import java.io.*;
import java.lang.reflect.Field;
import java.text.DecimalFormat;
import java.time.LocalTime;
@@ -22,7 +21,7 @@
    /**
     * @描述 实体对象转Map
     * @参数 [entity]
     * @返回值 java.util.Map<java.lang.String,java.lang.Object>
     * @返回值 java.util.Map<java.lang.String, java.lang.Object>
     * @创建人 刘苏义
     * @创建时间 2023/6/2 14:35
     * @修改人和其它信息
@@ -41,6 +40,7 @@
        }
        return map;
    }
    /**
     * 求Map<K,V>中最小 Value 对应的Key值
     *
@@ -48,13 +48,14 @@
     * @return
     */
    public static String getKeyByMinValue(Map<String, Double> map) {
        if (map == null) return null;
        if (map == null || map.size() == 0) return null;
        List<Map.Entry<String, Double>> list = new ArrayList(map.entrySet());
        Collections.sort(list, (o1, o2) -> (o1.getValue().intValue() - o2.getValue().intValue()));
        String min = list.get(0).getKey();
//        String max = list.get(list.size() - 1).getKey();
        return min;
    }
    /**
     * @描述 通过日夜切换时间判断当前使用通道号
     * @参数 []
@@ -63,8 +64,7 @@
     * @创建时间 2023/6/17 13:50
     * @修改人和其它信息
     */
    public static Integer getChannelBydayNightTime(String dayNightTime)
    {
    public static Integer getChannelBydayNightTime(String dayNightTime) {
        try {
            // 获取当前时间
            LocalTime currentTime = LocalTime.now();
@@ -81,16 +81,16 @@
            } else {
                return 2;
            }
        }
        catch (Exception ex)
        {
            log.error("光电切换获取通道异常:"+ex.getMessage());
        } catch (Exception ex) {
            log.error("光电切换获取通道异常:" + ex.getMessage());
            return 1;
        }
    }
    /**
     * 文件大小智能转换
     * 会将文件大小转换为最大满足单位
     *
     * @param size(文件大小,单位为B)
     * @return 文件大小
     */
@@ -107,11 +107,13 @@
        }
        return sizeName;
    }
    /**
     * 文件大小智能转换
     * 会将文件大小转换为最大满足单位
     *
     * @param size(文件大小,单位为B)
     * @return   文件大小
     * @return 文件大小
     */
    public static String readableFileSize(long size) {
        if (size <= 0) {
@@ -121,4 +123,92 @@
        int digitGroups = (int) (Math.log10(size) / Math.log10(1024));
        return new DecimalFormat("#,###.##").format(size / Math.pow(1024, digitGroups)) + " " + units[digitGroups];
    }
    /**
     * byte数组转字符串
     * 刘苏义
     * 2023/10/18 8:42:59
     *
     * @param byteArray
     */
    public static String byteArrayToString(byte[] byteArray) {
        StringBuilder stringBuilder = new StringBuilder();
        for (byte b : byteArray) {
            stringBuilder.append(String.valueOf(b));
        }
        return stringBuilder.toString();
    }
    /**
     * 将数据写入txt文件
     * 刘苏义
     * 2024/3/8 12:58:39
     */
    public static void writeStringToFile(String data, String fileName) {
        try {
            File file = new File(fileName);
            File parentDir = file.getParentFile();
            if (!parentDir.exists()) {
                parentDir.mkdirs(); // 创建文件所在的目录,包括父目录
            }
            boolean fileExists = file.exists();
            boolean dataExists = false;
            if(fileExists) {
                // 读取文件内容
                BufferedReader reader = new BufferedReader(new FileReader(fileName));
                String line;
                while ((line = reader.readLine()) != null) {
                    if (line.equals(data)) {
                        dataExists = true;
                        break;
                    }
                }
                reader.close();
            }
            // 如果文件不存在或数据不存在,则追加到文件
            if (!fileExists || !dataExists) {
                FileWriter writer = new FileWriter(fileName, true);
                writer.write(data + System.lineSeparator());
                writer.close();
                if (!fileExists) {
                    log.debug("File created and data has been appended.");
                } else {
                    log.debug("Data has been appended to the file.");
                }
            } else {
                log.debug("Data already exists in the file. Not appending.");
            }
        } catch (IOException e) {
            log.error("An error occurred.");
            e.printStackTrace();
        }
    }
    /**
     *  通过反射对象填充
     * 刘苏义
     * 2024/4/2 11:50:57
     */
    public static void fillNullFields(Object source, Object target) {
        if (source == null || target == null) {
            return;
        }
        Field[] fields = source.getClass().getDeclaredFields();
        for (Field field : fields) {
            field.setAccessible(true);
            try {
                Object sourceValue = field.get(source);
                Object targetValue = field.get(target);
                if (targetValue == null && sourceValue != null) {
                    field.set(target, sourceValue);
                }
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
    }
}