This commit is contained in:
2025-07-27 08:59:08 +08:00
parent e9f44dd851
commit 563d83f849
35 changed files with 482 additions and 255 deletions

View File

@@ -1,6 +1,6 @@
package com.ycwl.basic.device.checker.helper;
import com.alibaba.fastjson.JSON;
import com.ycwl.basic.utils.JacksonUtil;
import com.ycwl.basic.model.pc.device.entity.DeviceConfigEntity;
import com.ycwl.basic.model.pc.device.entity.DeviceEntity;
import lombok.Setter;
@@ -13,7 +13,7 @@ public abstract class CommonDeviceChecker<C> {
protected DeviceConfigEntity deviceConfig;
public CommonDeviceChecker(String configJson) {
config = JSON.parseObject(configJson, getConfigClass());
config = JacksonUtil.parseObject(configJson, getConfigClass());
}
@SuppressWarnings("unchecked")

View File

@@ -1,7 +1,7 @@
package com.ycwl.basic.device.operator;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.ycwl.basic.utils.JacksonUtil;
import com.ycwl.basic.device.entity.common.FileObject;
import com.ycwl.basic.storage.StorageFactory;
import com.ycwl.basic.storage.adapters.IStorageAdapter;
@@ -28,7 +28,7 @@ public class AliOssStorageOperator extends ADeviceStorageOperator {
@Override
public void loadConfig(String configJson) {
AliOssStorageConfig config = JSON.parseObject(configJson, AliOssStorageConfig.class);
AliOssStorageConfig config = JacksonUtil.parseObject(configJson, AliOssStorageConfig.class);
adapter = StorageFactory.get(StorageType.ALI_OSS, config);
}

View File

@@ -1,7 +1,6 @@
package com.ycwl.basic.device.operator;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.annotation.JSONField;
import com.ycwl.basic.utils.JacksonUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ycwl.basic.device.entity.common.FileObject;
import com.ycwl.basic.device.entity.vpt_passive.VptPassiveStorageConfig;
@@ -29,10 +28,8 @@ 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;
}
@@ -75,7 +72,7 @@ public class VptPassiveStorageOperator extends ADeviceStorageOperator {
@Override
public void loadConfig(String configJson) {
this.config = JSON.parseObject(configJson, VptPassiveStorageConfig.class);
this.config = JacksonUtil.parseObject(configJson, VptPassiveStorageConfig.class);
}
@Override
@@ -94,7 +91,7 @@ public class VptPassiveStorageOperator extends ADeviceStorageOperator {
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);
redisTemplate.opsForValue().set(String.format(TASK_KEY, task.scenicId, task.deviceNo) + task.taskId, JacksonUtil.toJSONString(task), 10 * 60L, TimeUnit.SECONDS);
}
log.info("任务{}获取视频开始!共{}", task.taskId, taskList.size());
Date taskStartTime = new Date();

View File

@@ -3,8 +3,8 @@ package com.ycwl.basic.device.operator;
import cn.hutool.crypto.digest.MD5;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ycwl.basic.utils.JacksonUtil;
import com.fasterxml.jackson.core.type.TypeReference;
import com.ycwl.basic.device.entity.common.FileObject;
import com.ycwl.basic.device.entity.wvp_active.WvpActiveStorageConfig;
import com.ycwl.basic.storage.exceptions.StorageConfigException;
@@ -30,7 +30,7 @@ public class WvpActiveStorageOperator extends ADeviceStorageOperator {
@Override
public void loadConfig(String configJson) {
this.config = JSON.parseObject(configJson, WvpActiveStorageConfig.class);
this.config = JacksonUtil.parseObject(configJson, WvpActiveStorageConfig.class);
}
@Override
@@ -55,13 +55,14 @@ public class WvpActiveStorageOperator extends ADeviceStorageOperator {
String password = MD5.create().digestHex(this.config.getLoginPassword());
params.put("password", password);
String jsonResult = HttpUtil.get(url, params);
JSONObject result = JSON.parseObject(jsonResult);
if (result.getInteger("code") == 0) {
JSONObject data = result.getJSONObject("data");
this.token = data.getString("accessToken");
Map<String, Object> result = JacksonUtil.parseObject(jsonResult, Map.class);
Integer code = (Integer) result.get("code");
if (code != null && code == 0) {
Map<String, Object> data = (Map<String, Object>) result.get("data");
this.token = (String) data.get("accessToken");
return this.token;
} else {
throw new StorageConfigException("获取token失败,原因为:" + result.getString("msg"));
throw new StorageConfigException("获取token失败,原因为:" + result.get("msg"));
}
}
public List<FileObject> listDirByDtRange(Date startDate, Date endDate) {
@@ -75,19 +76,23 @@ public class WvpActiveStorageOperator extends ADeviceStorageOperator {
params.put("page", 1);
params.put("count", 100);
String jsonResult = HttpRequest.get(url).form(params).header("Access-Token", getToken()).execute().body();
JSONObject result = JSON.parseObject(jsonResult);
if (result.getInteger("code") == 0) {
JSONObject data = result.getJSONObject("data");
List<JSONObject> recordList = data.getJSONArray("list").toJavaList(JSONObject.class);
Map<String, Object> result = JacksonUtil.parseObject(jsonResult, Map.class);
Integer code = (Integer) result.get("code");
if (code != null && code == 0) {
Map<String, Object> data = (Map<String, Object>) result.get("data");
List<Map<String, Object>> recordList = JacksonUtil.parseObject(JacksonUtil.toJSONString(((Map<String, Object>) result.get("data")).get("list")), new TypeReference<List<Map<String, Object>>>() {});
return recordList.stream()
.map(record -> {
FileObject object = new FileObject();
object.setName(record.getString("id"));
object.setPath(record.getString("folder"));
object.setUrl(getUrlForDownload(record.getInteger("id")));
object.setName((String) record.get("id"));
object.setPath((String) record.get("folder"));
Integer recordId = (Integer) record.get("id");
object.setUrl(getUrlForDownload(recordId != null ? recordId : 0));
object.setNeedDownload(true);
object.setCreateTime(new Date(record.getLongValue("startTime")));
object.setEndTime(new Date(record.getLongValue("endTime")));
Number startTime = (Number) record.get("startTime");
Number endTime = (Number) record.get("endTime");
object.setCreateTime(new Date(startTime != null ? startTime.longValue() : 0));
object.setEndTime(new Date(endTime != null ? endTime.longValue() : 0));
return object;
})
.sorted(Comparator.comparing(FileObject::getCreateTime))
@@ -100,10 +105,11 @@ public class WvpActiveStorageOperator extends ADeviceStorageOperator {
// assume path is recordId
String url = this.config.getHost() + "/api/cloud/record/play/path?recordId=" + id;
String jsonResult = HttpRequest.get(url).header("Access-Token", getToken()).execute().body();
JSONObject result = JSON.parseObject(jsonResult);
if (result.getInteger("code") == 0) {
JSONObject data = result.getJSONObject("data");
String httpPath = data.getString("httpPath");
Map<String, Object> result = JacksonUtil.parseObject(jsonResult, Map.class);
Integer code = (Integer) result.get("code");
if (code != null && code == 0) {
Map<String, Object> data = (Map<String, Object>) result.get("data");
String httpPath = (String) data.get("httpPath");
if (StringUtils.isBlank(this.config.getZlmHost())) {
return httpPath;
}
@@ -114,7 +120,7 @@ public class WvpActiveStorageOperator extends ADeviceStorageOperator {
}
return this.config.getZlmHost() + uri.getPath() + "?" + uri.getQuery();
} else {
throw new StorageUnsupportedException("获取播放地址失败,原因为:" + result.getString("msg"));
throw new StorageUnsupportedException("获取播放地址失败,原因为:" + result.get("msg"));
}
}

View File

@@ -1,7 +1,6 @@
package com.ycwl.basic.device.operator;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.annotation.JSONField;
import com.ycwl.basic.utils.JacksonUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ycwl.basic.device.entity.common.FileObject;
import com.ycwl.basic.device.entity.wvp_passive.WvpPassiveStorageConfig;
@@ -28,10 +27,8 @@ public class WvpPassiveStorageOperator 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;
}
@@ -72,7 +69,7 @@ public class WvpPassiveStorageOperator extends ADeviceStorageOperator {
@Override
public void loadConfig(String configJson) {
this.config = JSON.parseObject(configJson, WvpPassiveStorageConfig.class);
this.config = JacksonUtil.parseObject(configJson, WvpPassiveStorageConfig.class);
}
@Override
@@ -91,7 +88,7 @@ public class WvpPassiveStorageOperator extends ADeviceStorageOperator {
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);
redisTemplate.opsForValue().set(String.format(TASK_KEY, task.scenicId, task.deviceNo) + task.taskId, JacksonUtil.toJSONString(task), 10 * 60L, TimeUnit.SECONDS);
}
Date taskStartTime = new Date();
while (true) {