From 12493116268785c43f534b3ab9bd45014b1229bb Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期五, 28 十一月 2025 16:08:29 +0800
Subject: [PATCH] #
---
/dev/null | 24 ------------
src/main/java/com/zy/asrs/mapper/DeviceDataLogMapper.java | 4 +-
src/main/java/com/zy/asrs/service/impl/DeviceDataLogServiceImpl.java | 4 +-
src/main/java/com/zy/asrs/service/DeviceDataLogService.java | 2
src/main/java/com/zy/core/task/DeviceLogScheduler.java | 41 ++++++++++++++++++++
src/main/resources/application.yml | 5 ++
6 files changed, 50 insertions(+), 30 deletions(-)
diff --git a/src/main/java/com/zy/asrs/mapper/DeviceDataLogMapper.java b/src/main/java/com/zy/asrs/mapper/DeviceDataLogMapper.java
index dbcb282..4ec399f 100644
--- a/src/main/java/com/zy/asrs/mapper/DeviceDataLogMapper.java
+++ b/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);
diff --git a/src/main/java/com/zy/asrs/service/DeviceDataLogService.java b/src/main/java/com/zy/asrs/service/DeviceDataLogService.java
index 7275436..9295bd8 100644
--- a/src/main/java/com/zy/asrs/service/DeviceDataLogService.java
+++ b/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);
}
diff --git a/src/main/java/com/zy/asrs/service/impl/DeviceDataLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/DeviceDataLogServiceImpl.java
index cf4a92f..5b5460e 100644
--- a/src/main/java/com/zy/asrs/service/impl/DeviceDataLogServiceImpl.java
+++ b/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
diff --git a/src/main/java/com/zy/asrs/task/ClearDeviceDataLogScheduler.java b/src/main/java/com/zy/asrs/task/ClearDeviceDataLogScheduler.java
deleted file mode 100644
index 1cc2cac..0000000
--- a/src/main/java/com/zy/asrs/task/ClearDeviceDataLogScheduler.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.zy.asrs.task;
-
-import com.zy.asrs.service.DeviceDataLogService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-@Component
-@Slf4j
-public class ClearDeviceDataLogScheduler {
-
- @Autowired
- private DeviceDataLogService deviceDataLogService;
-
- /**
- * 姣忓垎閽熸竻鐞�24灏忔椂涔嬪墠鐨勬棩蹇�
- */
- @Scheduled(cron = "1 * * * * ? ")
- public void clear() {
- deviceDataLogService.clearLog();
- }
-
-}
diff --git a/src/main/java/com/zy/core/task/DeviceLogScheduler.java b/src/main/java/com/zy/core/task/DeviceLogScheduler.java
index a18a6bf..0f0d4f7 100644
--- a/src/main/java/com/zy/core/task/DeviceLogScheduler.java
+++ b/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);
+ }
+ }
+
}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index d01825c..e5ab53d 100644
--- a/src/main/resources/application.yml
+++ b/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
--
Gitblit v1.9.1