package com.iailab.module.data.job.task;
|
|
import com.iailab.module.data.dev.controller.admin.camera.vo.DevCameraPageReqVO;
|
import com.iailab.module.data.dev.dahua.DHCapturePictureClient;
|
import com.iailab.module.data.dev.dahua.DHClientFactory;
|
import com.iailab.module.data.dev.dto.DevCameraDTO;
|
import com.iailab.module.data.dev.enums.CaptureTypeEnum;
|
import com.iailab.module.data.dev.service.DevCameraService;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.stereotype.Component;
|
import org.springframework.util.CollectionUtils;
|
|
import javax.annotation.Resource;
|
import java.time.LocalDateTime;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
|
/**
|
* 大华摄像头截图定时任务
|
*
|
* @author Houzhongjian
|
* @Description
|
* @createTime 2024年10月30日
|
*/
|
@Component("devCameraDahuaTask")
|
public class DevCameraDahuaTask implements ITask {
|
private Logger logger = LoggerFactory.getLogger(getClass());
|
|
@Resource
|
private DevCameraService devCameraService;
|
|
@Resource
|
private DHClientFactory dhClientFactory;
|
|
@Override
|
public void run(String params) {
|
logger.info("devCameraDahuaTask定时任务正在执行,参数为:{}", params);
|
try {
|
DevCameraPageReqVO cameraPageReqVO = new DevCameraPageReqVO();
|
List<DevCameraDTO> list = devCameraService.list(cameraPageReqVO);
|
if (CollectionUtils.isEmpty(list)) {
|
logger.info("Alarm List 为空");
|
return;
|
}
|
Map<String, List<DevCameraDTO>> alarmGroup = list.stream().collect(Collectors.groupingBy(DevCameraDTO::getNvrId));
|
for (Map.Entry<String, List<DevCameraDTO>> nvr : alarmGroup.entrySet()) {
|
DHCapturePictureClient client = dhClientFactory.getClient(nvr.getKey());
|
try {
|
if(!client.isLogin()) {
|
dhClientFactory.reLogin(client, nvr.getKey());
|
}
|
if(!client.isLogin()) {
|
continue;
|
}
|
List<DevCameraDTO> cameraList = nvr.getValue();
|
for (int i = 0; i < cameraList.size(); i++) {
|
DevCameraDTO camera = cameraList.get(i);
|
boolean captureResult = false;
|
if (CaptureTypeEnum.LOCAL.getCode().equals(camera.getCaptureType())) {
|
captureResult = client.localCapturePicture(camera.getChannel(), camera.getCode());
|
} else {
|
captureResult = client.remoteCapturePicture(camera.getChannel(), camera.getCode());
|
}
|
logger.info(camera.getCode() + ":captureResult = " + captureResult);
|
Thread.sleep(100);
|
}
|
} catch (Exception ex) {
|
logger.info("item:" + ex.getMessage());
|
}
|
}
|
logger.info("devCameraDahuaTask定时任务执行完成:" + LocalDateTime.now());
|
|
} catch (Exception ex) {
|
ex.printStackTrace();
|
logger.info("devCameraDahuaTask定时任务失败时间:" + LocalDateTime.now());
|
}
|
}
|
}
|