diff --git a/stwzhj-modules/stwzhj-data2es/pom.xml b/stwzhj-modules/stwzhj-data2es/pom.xml
index 51890e0c..3b25df35 100644
--- a/stwzhj-modules/stwzhj-data2es/pom.xml
+++ b/stwzhj-modules/stwzhj-data2es/pom.xml
@@ -53,6 +53,11 @@
stwzhj-common-mybatis
+
+ org.dromara
+ stwzhj-common-job
+
+
org.dromara
stwzhj-common-dubbo
diff --git a/stwzhj-modules/stwzhj-data2es/src/main/java/org/dromara/data2es/schedule/RedisOnlineUserSchedule.java b/stwzhj-modules/stwzhj-data2es/src/main/java/org/dromara/data2es/schedule/RedisOnlineUserSchedule.java
deleted file mode 100644
index 17bc52d3..00000000
--- a/stwzhj-modules/stwzhj-data2es/src/main/java/org/dromara/data2es/schedule/RedisOnlineUserSchedule.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package org.dromara.data2es.schedule;
-
-import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.date.DateUnit;
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.json.JSONObject;
-import org.dromara.common.redis.utils.RedisUtils;
-import org.dromara.data2es.domain.EsGpsInfoVO2;
-import org.dromara.data2es.service.IGpsService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.scheduling.annotation.Scheduled;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-/**
- * description:
- *
- * @author chenle
- * @date 2021-05-18 18:23
- */
-
-@Configuration
-public class RedisOnlineUserSchedule {
-
- @Autowired
- IGpsService gpsService;
-
- @Scheduled(cron = "0 0/20 * * * ?")
- public void redisTimeOutRemove(){
- List jlist = RedisUtils.searchAndGetKeysValues("online_users:*");
- List gpsInfoVO2s = new ArrayList<>();
- for (JSONObject job : jlist) {
- String deviceType = job.getStr("deviceType");
- if ("05".equals(deviceType)){
- continue;
- }
- Integer online = job.getInt("online");
- if (0 == online){
- continue;
- }
- EsGpsInfoVO2 vo2 = BeanUtil.toBean(job, EsGpsInfoVO2.class);
- if (1 == vo2.getOnline() && DateUtil.between(vo2.getGpsTime(), new Date(), DateUnit.SECOND) > 1800L){
- vo2.setOnline(0);
- gpsInfoVO2s.add(vo2);
- }
- }
- if (gpsInfoVO2s.size() > 0){
- gpsService.updateDataStatus(gpsInfoVO2s);
- }
- }
-
-
-}
diff --git a/stwzhj-modules/stwzhj-data2es/src/main/java/org/dromara/data2es/schedule/RedisOnlineUserTimeoutExecutor.java b/stwzhj-modules/stwzhj-data2es/src/main/java/org/dromara/data2es/schedule/RedisOnlineUserTimeoutExecutor.java
new file mode 100644
index 00000000..216905c5
--- /dev/null
+++ b/stwzhj-modules/stwzhj-data2es/src/main/java/org/dromara/data2es/schedule/RedisOnlineUserTimeoutExecutor.java
@@ -0,0 +1,83 @@
+package org.dromara.data2es.schedule;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateUnit;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.json.JSONObject;
+import com.aizuda.snailjob.client.job.core.annotation.JobExecutor;
+import com.aizuda.snailjob.client.job.core.dto.JobArgs;
+import com.aizuda.snailjob.client.model.ExecuteResult;
+import com.aizuda.snailjob.common.core.model.JobContext;
+import com.aizuda.snailjob.common.log.SnailJobLog;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.redis.utils.RedisUtils;
+import org.dromara.data2es.domain.EsGpsInfoVO2;
+import org.dromara.data2es.service.IGpsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * description:
+ *
+ */
+
+@Slf4j
+@Component
+@JobExecutor(name = "redisOnlineUserTimeoutRemove") // 任务执行器名称,需与控制台一致
+public class RedisOnlineUserTimeoutExecutor {
+
+ @Autowired
+ private IGpsService gpsService;
+
+ public ExecuteResult jobExecute(JobArgs jobArgs) {
+ try {
+ SnailJobLog.LOCAL.info("开始执行 Redis 在线用户超时清理任务");
+
+ List jlist = RedisUtils.searchAndGetKeysValues("online_users:*");
+ List gpsInfoVO2s = new ArrayList<>();
+
+ for (JSONObject job : jlist) {
+ String deviceType = job.getStr("deviceType");
+
+ Integer online = job.getInt("online");
+ if (0 == online) {
+ continue;
+ }
+ EsGpsInfoVO2 vo2 = BeanUtil.toBean(job, EsGpsInfoVO2.class);
+ if ("05".equals(deviceType)) {
+ if (1 == vo2.getOnline() && DateUtil.between(vo2.getGpsTime(), new Date(), DateUnit.SECOND) > 86400L) {
+ vo2.setOnline(0);
+ gpsInfoVO2s.add(vo2);
+ }
+ }else {
+ if (1 == vo2.getOnline() && DateUtil.between(vo2.getGpsTime(), new Date(), DateUnit.SECOND) > 1800L) {
+ vo2.setOnline(0);
+ gpsInfoVO2s.add(vo2);
+ }
+ }
+
+ }
+
+ if (!gpsInfoVO2s.isEmpty()) {
+ gpsService.updateDataStatus(gpsInfoVO2s);
+ String msg = "成功更新 " + gpsInfoVO2s.size() + " 个超时设备为离线状态";
+ SnailJobLog.LOCAL.info(msg);
+ return ExecuteResult.success(msg);
+ } else {
+ SnailJobLog.LOCAL.info("无超时设备需要处理");
+ return ExecuteResult.success("无超时设备");
+ }
+
+ } catch (Exception e) {
+ String errorMsg = "Redis在线用户清理任务异常: " + e.getMessage();
+ SnailJobLog.LOCAL.error(errorMsg, e);
+ return ExecuteResult.failure(errorMsg);
+ }
+ }
+}
diff --git a/stwzhj-modules/stwzhj-data2es/src/main/java/org/dromara/data2es/service/impl/GpsServiceImpl.java b/stwzhj-modules/stwzhj-data2es/src/main/java/org/dromara/data2es/service/impl/GpsServiceImpl.java
index 662cae16..087c518a 100644
--- a/stwzhj-modules/stwzhj-data2es/src/main/java/org/dromara/data2es/service/impl/GpsServiceImpl.java
+++ b/stwzhj-modules/stwzhj-data2es/src/main/java/org/dromara/data2es/service/impl/GpsServiceImpl.java
@@ -124,7 +124,7 @@ public class GpsServiceImpl implements IGpsService {
requestHandler.sendToKafka(info);
}
- requestHandler.redisOnlineUserBatch(onlineUserDataMap, 864000); //存放30天
+ requestHandler.redisOnlineUserBatch(onlineUserDataMap, 864000); //存放10天
requestHandler.redisOnlineUserBatch(orgCodeDataMap, 1800); //此处和buildRedisMap方法判断在线的时间一直
// requestHandler.redisDeleteBatch(deleteKeys); //此处换成了数据库的模式 所以这个就不用了
diff --git a/stwzhj-modules/stwzhj-system/src/main/java/org/dromara/system/schedule/DeviceRedisSchedule.java b/stwzhj-modules/stwzhj-system/src/main/java/org/dromara/system/schedule/DeviceRedisSchedule.java
index 802b2531..5dd50530 100644
--- a/stwzhj-modules/stwzhj-system/src/main/java/org/dromara/system/schedule/DeviceRedisSchedule.java
+++ b/stwzhj-modules/stwzhj-system/src/main/java/org/dromara/system/schedule/DeviceRedisSchedule.java
@@ -46,7 +46,7 @@ public class DeviceRedisSchedule {
}
@PostConstruct
- @Scheduled(cron = "0 0 0/2 * * ?")
+ @Scheduled(cron = "0 0 0/1 * * ?")
public void handleDeviceInfoToRedis(){
if (null == lastUpdateTime || "".equals(lastUpdateTime)){
log.error("lastUpdateTime=null");
diff --git a/stwzhj-visual/stwzhj-snailjob-server/src/main/resources/logback-plus.xml b/stwzhj-visual/stwzhj-snailjob-server/src/main/resources/logback-plus.xml
index ff21c65d..4b86cd7a 100644
--- a/stwzhj-visual/stwzhj-snailjob-server/src/main/resources/logback-plus.xml
+++ b/stwzhj-visual/stwzhj-snailjob-server/src/main/resources/logback-plus.xml
@@ -1,26 +1,44 @@
-
-
+
+
+
+
-
-
-
-
+
+
+ ${log.path}/info.${log.file}.log
+
+ INFO
+ ACCEPT
+ DENY
+
+
+ ${log.path}/info/info.${log.file}.%d{yyyy-MM-dd}.%i.log.gz
+ ${MAX_FILE_SIZE}
+ ${MAX_HISTORY}
+
- ${console.log.pattern}
- utf-8
+ %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
-
-
-
-
-
-
+
+
+ ${log.path}/error.${log.file}.log
+
+ ERROR
+
+
+ ${log.path}/error/error.${log.file}.%d{yyyy-MM-dd}.%i.log.gz
+ ${MAX_FILE_SIZE}
+ ${MAX_HISTORY}
+
+
+ %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
+
+
@@ -28,7 +46,8 @@
-
+
+