#
Junjie
10 天以前 12493116268785c43f534b3ab9bd45014b1229bb
#
1个文件已删除
5个文件已修改
80 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/mapper/DeviceDataLogMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/DeviceDataLogService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/DeviceDataLogServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/ClearDeviceDataLogScheduler.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/task/DeviceLogScheduler.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/DeviceDataLogMapper.java
@@ -12,8 +12,8 @@
@Repository
public interface DeviceDataLogMapper extends BaseMapper<DeviceDataLog> {
    @Delete("delete from wcs_device_data_log where create_time < FROM_UNIXTIME(UNIX_TIMESTAMP() - (24 * 60 * 60)) limit 50000")
    int clearLog();
    @Delete("delete from wcs_device_data_log where create_time < FROM_UNIXTIME(UNIX_TIMESTAMP() - (#{days} * 24 * 60 * 60)) limit 50000")
    int clearLog(@Param("days") int days);
    int insertBatch(@Param("list") List<DeviceDataLog> list);
src/main/java/com/zy/asrs/service/DeviceDataLogService.java
@@ -5,7 +5,7 @@
public interface DeviceDataLogService extends IService<DeviceDataLog> {
    int clearLog();//清理超过24小时日志数据
    int clearLog(int expireDays);
    boolean saveBatch(java.util.List<DeviceDataLog> list);
}
src/main/java/com/zy/asrs/service/impl/DeviceDataLogServiceImpl.java
@@ -10,8 +10,8 @@
public class DeviceDataLogServiceImpl extends ServiceImpl<DeviceDataLogMapper, DeviceDataLog> implements DeviceDataLogService {
    @Override
    public int clearLog() {
        return this.baseMapper.clearLog();
    public int clearLog(int expireDays) {
        return this.baseMapper.clearLog(expireDays);
    }
    @Override
src/main/java/com/zy/asrs/task/ClearDeviceDataLogScheduler.java
File was deleted
src/main/java/com/zy/core/task/DeviceLogScheduler.java
@@ -36,10 +36,23 @@
    private String storageType;
    @Value("${deviceLogStorage.loggingPath}")
    private String loggingPath;
    @Value("${deviceLogStorage.expireDays}")
    private Integer expireDays;
    @Autowired
    private DeviceDataLogService deviceDataLogService;
    @Autowired
    private RedisUtil redisUtil;
    @Scheduled(cron = "0/3 * * * * ? ")
    public void delDeviceLog() {
        if ("mysql".equals(storageType)) {
            deviceDataLogService.clearLog(expireDays == null ? 1 : expireDays);
        }else if ("file".equals(storageType)) {
            clearFileLog(expireDays == null ? 1 : expireDays);
        }else {
            log.error("未定义的存储类型:{}", storageType);
        }
    }
    @Scheduled(cron = "0/3 * * * * ? ")
    public void execute() {
@@ -151,4 +164,32 @@
        return candidate;
    }
    private void clearFileLog(int days) {
        try {
            Path baseDir = Paths.get(loggingPath);
            if (!Files.exists(baseDir)) {
                return;
            }
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
            long cutoff = System.currentTimeMillis() - (long) days * 24 * 60 * 60 * 1000;
            List<Path> dirs = Files.list(baseDir).filter(Files::isDirectory).collect(Collectors.toList());
            for (Path dir : dirs) {
                String name = dir.getFileName().toString();
                if (name.length() == 8 && name.chars().allMatch(Character::isDigit)) {
                    Date d = sdf.parse(name);
                    if (d.getTime() < cutoff) {
                        List<Path> all = Files.walk(dir).sorted(Comparator.reverseOrder()).collect(Collectors.toList());
                        for (Path p : all) {
                            try {
                                Files.deleteIfExists(p);
                            } catch (Exception ignored) {}
                        }
                    }
                }
            }
        } catch (Exception e) {
            log.error("设备日志文件清理失败", e);
        }
    }
}
src/main/resources/application.yml
@@ -50,7 +50,10 @@
mainProcessPlugin: FakeProcess
# 设备日志存储方式 mysql file
deviceLogStorage:
  # 设备日志存储方式 mysql file
  type: file
  # file类型存储地址
  loggingPath: ./stock/out/@pom.build.finalName@/deviceLogs
  # 日志过期时间 单位天
  expireDays: 7