球机查看不用流

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

@ -51,7 +51,7 @@ public class CameraRecord {
@LicenseHandler
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);
@ -100,4 +100,12 @@ public class CameraRecord {
Duration duration = Duration.between(midnight, dateTime);
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.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* camera login handler
@ -14,13 +15,13 @@ public class CameraConnMap {
* key :cameraId
* value: loginId
*/
public static Map<Integer, NetSDKLib.LLong> cameraMap = new HashMap<>();
public static Map<Integer, NetSDKLib.LLong> cameraMap = new ConcurrentHashMap<>();
/**
* key:loginId
* 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){
synchronized (cameraId.toString().intern()){

@ -92,7 +92,7 @@ public class HikLoginModuleImpl implements CameraControlLoginModule {
m_strLoginInfo.wPort = (short) m_nPort;
m_strLoginInfo.bUseAsynLogin = true; //是否异步登录0- 否1- 是
m_strLoginInfo.bUseAsynLogin = false; //是否异步登录0- 否1- 是
m_strLoginInfo.write();
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 java.io.IOException;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.*;
import java.util.stream.Collectors;
@Service
@ -114,30 +115,58 @@ public class CameraService {
Assert.isTrue(count == null || count == 0, "球机已被绑定");
cameraMapper.deleteById(id);
}
ExecutorService executor = Executors.newFixedThreadPool(20);
public PageInfo<Camera> cameras(StreetSearch streetSearch) {
PageHelper.startPage(streetSearch.getPageNum(), streetSearch.getPageSize());
List<Camera> cameras = cameraMapper.selectByMap(new HashMap<>(0));
List<Camera> collect = cameras.parallelStream().peek(camera -> {
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);
if(cameras.size() > 0){
CountDownLatch latch = new CountDownLatch(cameras.size());
cameras.forEach(camera -> {
StatusThread statusThread = new StatusThread(camera,latch);
statusThread.start();
});
try {
latch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
}).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 {
@ -154,7 +183,7 @@ public class CameraService {
try {
Boolean ok = false;
if (configProperties.getCameraConfig().getCameraType() == ConfigProperties.HIK_CAMERA) {
if(CameraConnMap.getConnId(camera.getId()) ==null){
if(CameraConnMap.getConnId(camera.getId()) == null){
cameraLogin(camera);
}
ok = HikLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()).intValue());

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

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

Loading…
Cancel
Save