You've already forked FrameTour-BE
几个高频/轮询接口迁走了
This commit is contained in:
@ -1,6 +1,8 @@
|
||||
package com.ycwl.basic.device.operator;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ycwl.basic.device.entity.common.FileObject;
|
||||
import com.ycwl.basic.device.entity.vpt_passive.VptPassiveStorageConfig;
|
||||
import com.ycwl.basic.device.entity.wvp_passive.WvpPassiveStorageConfig;
|
||||
@ -9,6 +11,7 @@ import com.ycwl.basic.storage.utils.StorageUtil;
|
||||
import com.ycwl.basic.utils.SnowFlakeUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
@ -16,6 +19,7 @@ import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@ -25,12 +29,18 @@ public class VptPassiveStorageOperator extends ADeviceStorageOperator {
|
||||
public Long scenicId;
|
||||
public Long deviceId;
|
||||
public String deviceNo;
|
||||
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
public Date startTime;
|
||||
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
public Date endTime;
|
||||
}
|
||||
|
||||
private static List<Task> taskList = new CopyOnWriteArrayList<>();
|
||||
private static ConcurrentHashMap<Long, FileObject> fileListMap = new ConcurrentHashMap<>();
|
||||
private static RedisTemplate<String, String> redisTemplate = null;
|
||||
private static final String TASK_KEY = "vpt:task:s%s:d%s:";
|
||||
|
||||
private VptPassiveStorageConfig config;
|
||||
|
||||
@ -38,6 +48,10 @@ public class VptPassiveStorageOperator extends ADeviceStorageOperator {
|
||||
loadConfig(configJson);
|
||||
}
|
||||
|
||||
public static void setRedisTemplate(RedisTemplate<String, String> redisTemplate) {
|
||||
VptPassiveStorageOperator.redisTemplate = redisTemplate;
|
||||
}
|
||||
|
||||
public static void onReceiveResult(Long taskId, FileObject fileObject) {
|
||||
if (fileObject == null) {
|
||||
log.info("任务{}获取视频失败!", taskId);
|
||||
@ -77,7 +91,11 @@ public class VptPassiveStorageOperator extends ADeviceStorageOperator {
|
||||
}
|
||||
task.startTime = startDate;
|
||||
task.endTime = endDate;
|
||||
taskList.add(task);
|
||||
if (redisTemplate == null) {
|
||||
taskList.add(task);
|
||||
} else {
|
||||
redisTemplate.opsForValue().set(String.format(TASK_KEY, task.scenicId, task.deviceNo) + task.taskId, JSON.toJSONString(task), 10 * 60L, TimeUnit.SECONDS);
|
||||
}
|
||||
log.info("任务{}获取视频开始!共{}", task.taskId, taskList.size());
|
||||
Date taskStartTime = new Date();
|
||||
while (true) {
|
||||
|
@ -1,12 +1,15 @@
|
||||
package com.ycwl.basic.device.operator;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ycwl.basic.device.entity.common.FileObject;
|
||||
import com.ycwl.basic.device.entity.wvp_passive.WvpPassiveStorageConfig;
|
||||
import com.ycwl.basic.storage.utils.StorageUtil;
|
||||
import com.ycwl.basic.utils.SnowFlakeUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
@ -14,21 +17,29 @@ import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
public class WvpPassiveStorageOperator extends ADeviceStorageOperator {
|
||||
|
||||
public static class Task {
|
||||
public Long taskId;
|
||||
public Long scenicId;
|
||||
public Long deviceId;
|
||||
public String deviceNo;
|
||||
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
public Date startTime;
|
||||
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
public Date endTime;
|
||||
}
|
||||
|
||||
private static List<Task> taskList = new CopyOnWriteArrayList<>();
|
||||
private static ConcurrentHashMap<Long, FileObject> fileListMap = new ConcurrentHashMap<>();
|
||||
private static RedisTemplate<String, String> redisTemplate = null;
|
||||
private static final String TASK_KEY = "wvp:task:s%s:d%s:";
|
||||
|
||||
private WvpPassiveStorageConfig config;
|
||||
|
||||
@ -36,6 +47,11 @@ public class WvpPassiveStorageOperator extends ADeviceStorageOperator {
|
||||
loadConfig(configJson);
|
||||
}
|
||||
|
||||
|
||||
public static void setRedisTemplate(RedisTemplate<String, String> redisTemplate) {
|
||||
WvpPassiveStorageOperator.redisTemplate = redisTemplate;
|
||||
}
|
||||
|
||||
public static void onReceiveResult(Long taskId, FileObject fileObject) {
|
||||
if (fileObject == null) {
|
||||
log.info("任务{}获取视频失败!", taskId);
|
||||
@ -72,7 +88,11 @@ public class WvpPassiveStorageOperator extends ADeviceStorageOperator {
|
||||
}
|
||||
task.startTime = startDate;
|
||||
task.endTime = endDate;
|
||||
taskList.add(task);
|
||||
if (redisTemplate == null) {
|
||||
taskList.add(task);
|
||||
} else {
|
||||
redisTemplate.opsForValue().set(String.format(TASK_KEY, task.scenicId, task.deviceNo) + task.taskId, JSON.toJSONString(task), 10 * 60L, TimeUnit.SECONDS);
|
||||
}
|
||||
Date taskStartTime = new Date();
|
||||
while (true) {
|
||||
if (new Date().getTime() - taskStartTime.getTime() > 60000L) {
|
||||
|
@ -0,0 +1,20 @@
|
||||
package com.ycwl.basic.device.starter;
|
||||
|
||||
import com.ycwl.basic.device.operator.VptPassiveStorageOperator;
|
||||
import com.ycwl.basic.device.operator.WvpPassiveStorageOperator;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
|
||||
@Configuration
|
||||
public class DeviceStorageOperatorStarter implements InitializingBean {
|
||||
@Autowired
|
||||
private RedisTemplate<String, String> redisTemplate;
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
WvpPassiveStorageOperator.setRedisTemplate(redisTemplate);
|
||||
VptPassiveStorageOperator.setRedisTemplate(redisTemplate);
|
||||
}
|
||||
}
|
@ -4,8 +4,8 @@ import com.ycwl.basic.annotation.IgnoreToken;
|
||||
import com.ycwl.basic.stats.dto.AddTraceReq;
|
||||
import com.ycwl.basic.stats.service.StatsService;
|
||||
import com.ycwl.basic.stats.util.StatsUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
@ -38,6 +38,9 @@ public class TraceController {
|
||||
traceId = StatsUtil.createUuid();
|
||||
response.setHeader("Set-TraceId", traceId);
|
||||
}
|
||||
if (StringUtils.isEmpty(req.getParams())) {
|
||||
req.setParams(null);
|
||||
}
|
||||
statsService.addRecord(traceId, req.getAction(), req.getIdentifier(), req.getParams());
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user