球机查看不用流

上传云端关注channel
海康同步登录
dongguan-huaweiyun
LAPTOP-S9HJSOEB\昊天 2 years ago
parent f55b5e0f29
commit 713efac677

@ -51,7 +51,7 @@ public class CameraRecord {
@LicenseHandler @LicenseHandler
public Result<Record> record(@RequestBody Record record) { public Result<Record> record(@RequestBody Record record) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-M-dd"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-M-d");
LocalDate today = LocalDate.parse(record.getDate(), formatter); LocalDate today = LocalDate.parse(record.getDate(), formatter);
@ -100,4 +100,12 @@ public class CameraRecord {
Duration duration = Duration.between(midnight, dateTime); Duration duration = Duration.between(midnight, dateTime);
return duration.getSeconds(); return duration.getSeconds();
} }
public static void main(String[] args) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-M-dd");
LocalDate today = LocalDate.parse("2024-8-6", formatter);
System.out.printf(today.toString());
}
} }

@ -4,6 +4,7 @@ import com.leaper.web.lib.joyware.NetSDKLib;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/** /**
* camera login handler * camera login handler
@ -14,13 +15,13 @@ public class CameraConnMap {
* key :cameraId * key :cameraId
* value: loginId * value: loginId
*/ */
public static Map<Integer, NetSDKLib.LLong> cameraMap = new HashMap<>(); public static Map<Integer, NetSDKLib.LLong> cameraMap = new ConcurrentHashMap<>();
/** /**
* key:loginId * key:loginId
* value: cameraId * value: cameraId
*/ */
public static Map<NetSDKLib.LLong,Integer> loginMap = new HashMap<>(); public static Map<NetSDKLib.LLong,Integer> loginMap = new ConcurrentHashMap<>();
public static void conn(Integer cameraId,NetSDKLib.LLong handlerId){ public static void conn(Integer cameraId,NetSDKLib.LLong handlerId){
synchronized (cameraId.toString().intern()){ synchronized (cameraId.toString().intern()){

@ -92,7 +92,7 @@ public class HikLoginModuleImpl implements CameraControlLoginModule {
m_strLoginInfo.wPort = (short) m_nPort; m_strLoginInfo.wPort = (short) m_nPort;
m_strLoginInfo.bUseAsynLogin = true; //是否异步登录0- 否1- 是 m_strLoginInfo.bUseAsynLogin = false; //是否异步登录0- 否1- 是
m_strLoginInfo.write(); m_strLoginInfo.write();
HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo30 = new HCNetSDK.NET_DVR_DEVICEINFO_V30();//设备信息 HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo30 = new HCNetSDK.NET_DVR_DEVICEINFO_V30();//设备信息

@ -33,9 +33,10 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.IOException; import java.io.IOException;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service @Service
@ -114,30 +115,58 @@ public class CameraService {
Assert.isTrue(count == null || count == 0, "球机已被绑定"); Assert.isTrue(count == null || count == 0, "球机已被绑定");
cameraMapper.deleteById(id); cameraMapper.deleteById(id);
} }
ExecutorService executor = Executors.newFixedThreadPool(20);
public PageInfo<Camera> cameras(StreetSearch streetSearch) { public PageInfo<Camera> cameras(StreetSearch streetSearch) {
PageHelper.startPage(streetSearch.getPageNum(), streetSearch.getPageSize()); PageHelper.startPage(streetSearch.getPageNum(), streetSearch.getPageSize());
List<Camera> cameras = cameraMapper.selectByMap(new HashMap<>(0)); List<Camera> cameras = cameraMapper.selectByMap(new HashMap<>(0));
List<Camera> collect = cameras.parallelStream().peek(camera -> { if(cameras.size() > 0){
CountDownLatch latch = new CountDownLatch(cameras.size());
Boolean ok = false; cameras.forEach(camera -> {
if(CameraConnMap.getConnId(camera.getId())!=null){ StatusThread statusThread = new StatusThread(camera,latch);
if (configProperties.getCameraConfig().getCameraType() == ConfigProperties.HIK_CAMERA) { statusThread.start();
});
ok = HikLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()).intValue()); try {
} else { latch.await();
ok = JoywareLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId())); } catch (InterruptedException e) {
} e.printStackTrace();
}
if (ok) {
camera.setStatus("连接正常");
} else {
//CameraConnMap.disConn(camera.getId());
camera.setStatus("未连接");
cameraLogin(camera);
} }
}).collect(Collectors.toList()); }
return new PageInfo<>(collect); // List<Future<Boolean>> futureTasks = new ArrayList<>();
// for(Camera camera : cameras){
//
// FutureTask<Boolean> futureTask = new FutureTask<>(() -> {
// Boolean ok = false;
// if(CameraConnMap.getConnId(camera.getId())!=null){
// if (configProperties.getCameraConfig().getCameraType() == ConfigProperties.HIK_CAMERA) {
//
// ok = HikLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()).intValue());
// } else {
// ok = JoywareLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()));
// }
// }
// if (ok) {
// camera.setStatus("连接正常");
// } else {
// //CameraConnMap.disConn(camera.getId());
// camera.setStatus("未连接");
// cameraLogin(camera);
// }
// return ok;
// });
// futureTasks.add(futureTask);
// executor.execute(futureTask);
// }
// for (Future<Boolean> f :futureTasks){
// try {
// f.get();
// } catch (InterruptedException e) {
// throw new RuntimeException(e);
// } catch (ExecutionException e) {
// throw new RuntimeException(e);
// }
// }
return new PageInfo<>(cameras);
} }
public class StatusThread extends Thread { public class StatusThread extends Thread {
@ -154,7 +183,7 @@ public class CameraService {
try { try {
Boolean ok = false; Boolean ok = false;
if (configProperties.getCameraConfig().getCameraType() == ConfigProperties.HIK_CAMERA) { if (configProperties.getCameraConfig().getCameraType() == ConfigProperties.HIK_CAMERA) {
if(CameraConnMap.getConnId(camera.getId()) ==null){ if(CameraConnMap.getConnId(camera.getId()) == null){
cameraLogin(camera); cameraLogin(camera);
} }
ok = HikLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()).intValue()); ok = HikLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()).intValue());

@ -157,6 +157,9 @@ public class CronTab {
LocalDateTime previousMinuteStart = now.minusMinutes(3).withSecond(0).withNano(0); LocalDateTime previousMinuteStart = now.minusMinutes(3).withSecond(0).withNano(0);
String formattedDate = currentDate.format(formatter); String formattedDate = currentDate.format(formatter);
for (Camera camera : cameras){ for (Camera camera : cameras){
if(camera.getChannel() != 1){
continue;
}
String url = formattedDate + "/" +UUID.randomUUID(); String url = formattedDate + "/" +UUID.randomUUID();
boolean ok =cameraControlModule.downloadMp4Stream(camera.getId(), "D:\\" + url, previousMinuteStart, currentMinuteStart, camera.getChannel()); boolean ok =cameraControlModule.downloadMp4Stream(camera.getId(), "D:\\" + url, previousMinuteStart, currentMinuteStart, camera.getChannel());
if(ok) { if(ok) {

@ -94,6 +94,8 @@ public class InitService implements ApplicationRunner {
loginThread.start(); loginThread.start();
}); });
LPLicense.createLicKeyIfNotExist(); LPLicense.createLicKeyIfNotExist();
TaskDelayExecutor.runMp4DownloadExecutor();
//plc连接 //plc连接
if(configProperties.getServerMode() == 0){ if(configProperties.getServerMode() == 0){
log.info("PLC TCP MODE"); log.info("PLC TCP MODE");
@ -123,7 +125,6 @@ public class InitService implements ApplicationRunner {
log.error("ksec no config"); log.error("ksec no config");
} }
} }
TaskDelayExecutor.runMp4DownloadExecutor();
} }
class LoginThread extends Thread{ class LoginThread extends Thread{

Loading…
Cancel
Save