From 757f7e5256ef3cd48cb7887f4e1f8fd4ecff1b14 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: Mon, 12 Jun 2023 15:31:23 +0800
Subject: [PATCH] 修复sdk错误码56的错误 相机登录修改为异步登录
---
ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/LoginResultCallBack.java | 47 +++++++++
ard-work/src/main/resources/templates/test.html | 2
ard-work/src/main/java/com/ruoyi/device/camera/controller/ArdCamerasController.java | 17 ---
ard-work/src/main/java/com/ruoyi/device/camera/domain/ArdCameras.java | 1
pom.xml | 1
ruoyi-admin/src/main/resources/application.yml | 2
ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java | 2
ard-work/pom.xml | 10 --
ard-work/src/main/java/com/ruoyi/constant/sdkPriority.java | 1
/dev/null | 94 ------------------
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/PatrolInspectionTask.java | 2
ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java | 94 ++++++++++++------
ruoyi-admin/src/main/resources/application-ard.yml | 2
13 files changed, 120 insertions(+), 155 deletions(-)
diff --git a/ard-work/pom.xml b/ard-work/pom.xml
index 004fd48..4df3ac9 100644
--- a/ard-work/pom.xml
+++ b/ard-work/pom.xml
@@ -30,21 +30,11 @@
<groupId>net.java.jna</groupId>
<artifactId>jna</artifactId>
<version>1.0.0</version>
-<!-- <groupId>com.sun.jna</groupId>-->
-<!-- <artifactId>yx</artifactId>-->
-<!-- <version>0.0.1</version>-->
-<!-- <scope>system</scope>-->
-<!-- <systemPath>${project.basedir}/lib/jna.jar</systemPath>-->
</dependency>
<dependency>
<groupId>net.java.examples</groupId>
<artifactId>examples</artifactId>
<version>1.0.0</version>
-<!-- <groupId>com.sun.jna.examples</groupId>-->
-<!-- <artifactId>yx</artifactId>-->
-<!-- <version>0.0.1</version>-->
-<!-- <scope>system</scope>-->
-<!-- <systemPath>${project.basedir}/lib/examples.jar</systemPath>-->
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
diff --git a/ard-work/src/main/java/com/ruoyi/constant/sdkPriority.java b/ard-work/src/main/java/com/ruoyi/constant/sdkPriority.java
index 9a271b0..dec4799 100644
--- a/ard-work/src/main/java/com/ruoyi/constant/sdkPriority.java
+++ b/ard-work/src/main/java/com/ruoyi/constant/sdkPriority.java
@@ -14,5 +14,6 @@
public static Map<String,Object> priorityMap=new HashMap<>();
static {
priorityMap.put("sys_radar_fire",999);
+ priorityMap.put("sys_tube_leak",998);
}
}
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/controller/ArdCamerasController.java b/ard-work/src/main/java/com/ruoyi/device/camera/controller/ArdCamerasController.java
index b62c1b4..1e98e6f 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/controller/ArdCamerasController.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/controller/ArdCamerasController.java
@@ -97,14 +97,7 @@
//注销
sdk.loginOut(camera.getId());
//登录
- camera = sdk.login(camera);
- if (camera.getLoginId() >= 0) {
- log.info("相机" + camera.getIp() + ":" + camera.getPort() + "登录成功:" + camera.getLoginId());
- camera.setUpdateBy(SecurityUtils.getUsername());
- ardCamerasService.updateArdCameras(camera);
- } else {
- log.info("相机" + camera.getIp() + ":" + camera.getPort() + "登录失败:" + camera.getLoginId());
- }
+ sdk.login(camera);
return toAjax(ardCamerasService.insertArdCameras(camera));
}
@@ -120,13 +113,7 @@
if (i > 0) {
ArdCameras cameras = ardCamerasService.selectArdCamerasById(camera.getId());
sdk.loginOut(cameras.getId());
- camera = sdk.login(cameras);
- if (camera.getLoginId() >= 0) {
- log.info("相机" + camera.getIp() + ":" + camera.getPort() + "登录成功:" + camera.getLoginId());
- ardCamerasService.updateArdCameras(camera);
- } else {
- log.info("相机" + camera.getIp() + ":" + camera.getPort() + "登录失败:" + camera.getLoginId());
- }
+ sdk.login(cameras);
}
return toAjax(i);
}
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/domain/ArdCameras.java b/ard-work/src/main/java/com/ruoyi/device/camera/domain/ArdCameras.java
index 897cf88..1102b9f 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/domain/ArdCameras.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/domain/ArdCameras.java
@@ -1,5 +1,6 @@
package com.ruoyi.device.camera.domain;
+import com.sun.jna.Structure;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java
index ab13ecc..620712e 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java
@@ -17,7 +17,7 @@
void loadHCNetSDKLib();
//登录
- ArdCameras login(ArdCameras cameras);
+ void login(ArdCameras cameras);
//登录所有相机
void loginAll();
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
index 0d5e498..e2e2290 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
@@ -16,6 +16,7 @@
import com.ruoyi.device.hiksdk.util.hikSdkUtil.GisUtil;
import com.ruoyi.device.hiksdk.util.hikSdkUtil.HCNetSDK;
import com.ruoyi.device.hiksdk.service.IHikClientService;
+import com.ruoyi.device.hiksdk.util.hikSdkUtil.LoginResultCallBack;
import com.ruoyi.device.hiksdk.util.minio.MinioUtils;
import com.ruoyi.system.mapper.SysUserMapper;
import com.sun.jna.Native;
@@ -98,15 +99,14 @@
}
/**
- * @描述 注册登录
+ * @描述 注册登录 只支持同步登陆,且官方不建议直接在此接口下写耗时操作
* @参数 [dvrLogin]
* @返回值 java.lang.Integer
* @创建人 刘苏义
* @创建时间 2023/1/17 16:12
* @修改人和其它信息
*/
- @Override
- public ArdCameras login(ArdCameras camera) {
+ public ArdCameras login1(ArdCameras camera) {
// 初始化
if (!hCNetSDK.NET_DVR_Init()) {
log.error("SDK初始化失败");
@@ -114,9 +114,9 @@
//打印海康sdk日志
if (Platform.isWindows()) {
String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator;
- hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, false);
+ hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true);
} else {
- hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", false);
+ hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true);
}
String m_sDeviceIP = camera.getIp();
String m_sUsername = camera.getUsername();
@@ -144,6 +144,60 @@
}
/**
+ * @描述 注册登录 集成于NET_DVR_Login_V30,支持同步和异步登录
+ * @参数 [dvrLogin]
+ * @返回值 java.lang.Integer
+ * @创建人 刘苏义
+ * @创建时间 2023/1/17 16:12
+ * @修改人和其它信息
+ */
+ @Override
+ public void login(ArdCameras camera) {
+ // 初始化
+ if (!hCNetSDK.NET_DVR_Init()) {
+ log.error("SDK初始化失败");
+ }
+ //打印海康sdk日志
+ if (Platform.isWindows()) {
+ String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator;
+ hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true);
+ } else {
+ hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true);
+ }
+ String m_sDeviceIP = camera.getIp();
+ String m_sUsername = camera.getUsername();
+ String m_sPassword = camera.getPassword();
+ short m_sPort = camera.getPort().shortValue();
+ //设置连接时间与重连时间
+ hCNetSDK.NET_DVR_SetConnectTime(2000, 1);
+ hCNetSDK.NET_DVR_SetReconnect(100000, true);
+ //设备信息, 输出参数
+ HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();
+ HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();
+
+ // 注册设备-登录参数,包括设备地址、登录用户、密码等
+ m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN];
+ System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length());
+ m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN];
+ System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length());
+ m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN];
+ System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length());
+ m_strLoginInfo.wPort = m_sPort;
+ m_strLoginInfo.byVerifyMode = 0;
+ m_strLoginInfo.byLoginMode=0;
+ //是否异步登录:0- 否,1- 是 windowsSDK里是true和false
+ m_strLoginInfo.bUseAsynLogin = true;
+ //异步登录回调
+ m_strLoginInfo.cbLoginResult = new LoginResultCallBack(camera);
+ m_strLoginInfo.write();
+ int i = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
+ if (i < 0) {
+ int errorCode = hCNetSDK.NET_DVR_GetLastError();
+ log.info("登录异常:" + errorCode);
+ }
+ }
+
+ /**
* @描述 登录所有相机
* @参数 []
* @返回值 void
@@ -152,32 +206,12 @@
* @修改人和其它信息
*/
@Override
- @Async("loginExecutor")
public void loginAll() {
try {
log.debug("加载lib完成!");
- List<ArdCameras> ardCameras = ardCamerasMapper.selectArdCamerasList(new ArdCameras());
+ List<ArdCameras> ardCameras = ardCamerasMapper.selectArdCamerasListNoDataScope(new ArdCameras());
for (ArdCameras camera : ardCameras) {
- camera = login(camera);
- if (camera.getLoginId() >= 0) {
- log.info("相机" + camera.getIp() + ":" + camera.getPort() + "登录成功:" + camera.getLoginId());
- ardCamerasMapper.updateArdCameras(camera);
- } else {
- log.info("相机" + camera.getIp() + ":" + camera.getPort() + "登录失败:" + camera.getLoginId());
- }
-// if (!globalVariable.loginMap.containsKey(camera.getId())) {
-// camera = login(camera);
-// if (camera.getLoginId() >= 0) {
-// log.info("相机" + camera.getIp() + ":" + camera.getPort() + "登录成功:" + camera.getLoginId());
-// globalVariable.loginMap.put(camera.getId(), camera.getLoginId());
-// ardCamerasService.updateArdCameras(camera);
-// } else {
-// log.info("相机" + camera.getIp() + ":" + camera.getPort() + "登录失败:" + camera.getLoginId());
-// }
-// } else {
-// Integer userid = globalVariable.loginMap.get(camera.getId());
-// log.info("当前相机:" + camera.getId() + "已登录,ID:" + userid);
-// }
+ login(camera);
}
} catch (Exception ex) {
log.error("初始化登录相机异常:" + ex.getMessage());
@@ -1310,7 +1344,7 @@
netDvrIFrame.byStreamType = 0;
netDvrIFrame.dwSize = netDvrIFrame.size();
netDvrIFrame.write();
- if(!hCNetSDK.NET_DVR_RemoteControl(userId,3402,netDvrIFrame.getPointer(),netDvrIFrame.dwSize)){
+ if (!hCNetSDK.NET_DVR_RemoteControl(userId, 3402, netDvrIFrame.getPointer(), netDvrIFrame.dwSize)) {
log.error("强制I帧 错误码为: " + hCNetSDK.NET_DVR_GetLastError());
}
//预览参数
@@ -1333,7 +1367,7 @@
}
log.info("取流成功");
- String path= FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4");
+ String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4");
recordInfo info = new recordInfo();
info.setLRealHandle(lRealHandle);
info.setRecordPath(path);
@@ -1352,7 +1386,7 @@
}
hCNetSDK.NET_DVR_StopRealPlay(info.getLRealHandle());
log.info("录像停止");
- if(cmd.isUploadMinio()) {
+ if (cmd.isUploadMinio()) {
//存入minio
String BucketName = cmd.getRecordBucketName();
String ObjectName = cmd.getRecordObjectName();
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/MapCoordinateToPTZ.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/MapCoordinateToPTZ.java
deleted file mode 100644
index aef08a2..0000000
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/MapCoordinateToPTZ.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package com.ruoyi.device.hiksdk.service.impl;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @ClassName: MapCoordinateToPTZ
- * @Description:
- * @Author: Administrator
- * @Date: 2023年02月08日 8:19
- * @Version: 1.0
- **/
-
-
-public class MapCoordinateToPTZ {
-
- public static void main(String[] args) {
- double height = 90;
- double zoom=5;
- String cameraGps = "125.160097,46.566593";
- String targetGps = "125.156863,46.566648";
- double cameraLongitude = Double.parseDouble(cameraGps.split(",")[0]);
- double cameraLatitude = Double.parseDouble(cameraGps.split(",")[1]);
- double targetLongitude = Double.parseDouble(targetGps.split(",")[0]);
- double targetLatitude = Double.parseDouble(targetGps.split(",")[1]);
- Map<String, Object> map = GpsToPTZ(height,zoom, cameraLongitude, cameraLatitude, targetLongitude, targetLatitude);
- System.out.println(map);
- double angley = Math.atan2((targetLongitude-cameraLongitude),(targetLatitude-cameraLatitude)); //与Y轴的夹角
- System.out.println(angley*(180/Math.PI));
- }
-
- /**
- * @描述 gps坐标映射ptz
- * @参数 [height球机高度, anglePInit球机初始水平角度, x1球机经度, y1球机纬度, x2目标经度, y2目标纬度]
- * @返回值 java.util.Map<java.lang.String, java.lang.Object>
- * @创建人 刘苏义
- * @创建时间 2023/2/8 15:47
- * @修改人和其它信息
- */
- public static Map<String, Object> GpsToPTZ(double height,double Zoom, double x1, double y1, double x2, double y2) {
- //定义球机云台转动角度变量
- double angle = 0;//定义正右
- // 计算球机云台转动的角度
- // 通过正切公式计算出来的角度分正负,正数为逆时针旋转角度,负数为顺时针宣传角度
- angle = Math.atan2(x2 - x1,y2 - y1) * 180 / Math.PI;
- // 输出球机云台需要旋转的夹角
- System.out.println("球机需要水平旋转的夹角为:" + (angle) + "°");
- if (angle < 0) {
- angle = (360 + angle);
- }
- int pAngle = new Double(Math.round(angle)).intValue();
- System.out.println("当前P值为:" + pAngle + "°");
- // 计算球机云台俯仰的角度
- double distance = distance(x1, y1, x2, y2);
- System.out.println("两点距离:" + distance + "m");
- angle = (Math.atan(distance / height) * 180) / Math.PI;
- System.out.println("球机需要垂直旋转的夹角为:" + (angle) + "°");
- //云台水平时T值为0,向上为正值,向下为负值,且有上下限正负45度。
- //T值正常计算公式:向上为角度正值,向下为360+(角度负值)。
- //按实际使用情况,基本上排除向上正值的情况(可视范围内的坐标不会与相机水平)
- //通过正切公式计算出来角度,在相机里这个角度实际为负值,因此直接360-夹角就得到相机的T值
- //由于相机的T值向下的下限最大360-45=315度,也就是说计算出来的夹角必须大于315,小于415的也就必须时315
- double tValue = 360 - angle;
- if (tValue <= 315) {
- tValue = 315;
- }
- int tAngle = new Double(Math.round(tValue)).intValue();
- System.out.println("当前T值为:" + tAngle + "°");
- Map<String, Object> ptzMap = new HashMap<>();
- ptzMap.put("p", pAngle);
- ptzMap.put("t", tAngle);
- ptzMap.put("z", Zoom);
- return ptzMap;
- }
-
- /**
- * @描述 通过2个经纬度计算距离
- * @参数 [lat1, lng1, lat2, lng2]
- * @返回值 double
- * @创建人 刘苏义
- * @创建时间 2023/2/8 15:40
- * @修改人和其它信息
- */
- private static final double EARTH_RADIUS_WGS84 = 6378137.0;
- private static double distance(double lat1, double lng1, double lat2, double lng2) {
- double radLat1 = Math.toRadians(lat1);
- double radLat2 = Math.toRadians(lat2);
- double a = radLat1 - radLat2;
- double b = Math.toRadians(lng1) - Math.toRadians(lng2);
- double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
- return Math.round(s * EARTH_RADIUS_WGS84);
- }
-
-}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/LoginResultCallBack.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/LoginResultCallBack.java
new file mode 100644
index 0000000..b3c34c7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/LoginResultCallBack.java
@@ -0,0 +1,47 @@
+package com.ruoyi.device.hiksdk.util.hikSdkUtil;
+
+import com.ruoyi.common.utils.spring.SpringUtils;
+import com.ruoyi.device.camera.domain.ArdCameras;
+import com.ruoyi.device.camera.mapper.ArdCamerasMapper;
+import com.ruoyi.device.hiksdk.common.GlobalVariable;
+import com.sun.jna.Pointer;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+/**
+ * @Description: 异步登录回调
+ * @ClassName: FLoginResultCallBack
+ * @Author: 刘苏义
+ * @Date: 2023年06月12日13:34
+ * @Version: 1.0
+ **/
+@Slf4j(topic = "hikSdk")
+public class LoginResultCallBack implements HCNetSDK.FLoginResultCallBack {
+
+ private ArdCameras camera;
+ public LoginResultCallBack(ArdCameras camera) {
+ this.camera = camera;
+ }
+
+ @Override
+ public int invoke(int lUserID, int dwResult, HCNetSDK.NET_DVR_DEVICEINFO_V30 lpDeviceinfo, Pointer pUser) {
+ if (GlobalVariable.loginMap.containsKey(camera.getId())) {
+ GlobalVariable.loginMap.remove(camera.getId());
+ }
+ if (dwResult == 1) {
+ GlobalVariable.loginMap.put(camera.getId(), lUserID);
+ log.info(camera.getIp() + ":" + camera.getPort() + "登录成功");
+ camera.setLoginId(lUserID);
+ camera.setChannel((int) lpDeviceinfo.byChanNum);
+ } else {
+ log.info(camera.getIp() + ":" + camera.getPort() + "登录失败");
+ camera.setChannel(0);
+ camera.setLoginId(-1);
+ }
+ ArdCamerasMapper ardCamerasMapper = SpringUtils.getBean(ArdCamerasMapper.class);
+ ardCamerasMapper.updateArdCameras(camera);
+ return 1;
+ }
+}
diff --git a/ard-work/src/main/resources/templates/test.html b/ard-work/src/main/resources/templates/test.html
index bc58555..fbe56d5 100644
--- a/ard-work/src/main/resources/templates/test.html
+++ b/ard-work/src/main/resources/templates/test.html
@@ -162,7 +162,7 @@
}
})
- opt = {"username": "admin", "password": "admin123"};
+ opt = {"username": "liusuyi", "password": "5959932"};
$.ajax({
headers: {
'Accept': 'application/json',
diff --git a/pom.xml b/pom.xml
index d2eb8d9..8d152d0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,7 +37,6 @@
<!-- 依赖声明 -->
<dependencyManagement>
<dependencies>
-
<!-- SpringBoot的依赖配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
diff --git a/ruoyi-admin/src/main/resources/application-ard.yml b/ruoyi-admin/src/main/resources/application-ard.yml
index 0e8fe6a..905414f 100644
--- a/ruoyi-admin/src/main/resources/application-ard.yml
+++ b/ruoyi-admin/src/main/resources/application-ard.yml
@@ -17,7 +17,7 @@
#mqtt
mqtt:
host: tcp://192.168.1.15:1883
- clientId: m3
+ clientId: m3c
username: admin
password: xzx12345
topic: tube
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index b54f333..7341f19 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -67,7 +67,7 @@
devtools:
restart:
# 热部署开关
- enabled: true
+ enabled: false
# redis 配置
redis:
# 地址
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/PatrolInspectionTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/PatrolInspectionTask.java
index 9d6d45b..542133a 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/PatrolInspectionTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/PatrolInspectionTask.java
@@ -38,6 +38,6 @@
//巡检任务
public void scanRun() {
- /* ardVideoInspectTaskService.autoTaskRun();*/
+ ardVideoInspectTaskService.autoTaskRun();
}
}
--
Gitblit v1.9.3