|
|
|
|
@ -1,34 +1,23 @@
|
|
|
|
|
package com.sz.admin.monitor.service.impl;
|
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
|
|
|
import com.fasterxml.jackson.databind.JsonNode;
|
|
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
|
|
import com.mybatisflex.core.logicdelete.LogicDeleteManager;
|
|
|
|
|
import com.mybatisflex.core.paginate.Page;
|
|
|
|
|
import com.mybatisflex.core.query.QueryWrapper;
|
|
|
|
|
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
|
|
|
|
import com.sz.admin.monitor.enums.HKPTZPreEnum;
|
|
|
|
|
import com.sz.admin.monitor.listener.mode.CameraDeleteEvent;
|
|
|
|
|
import com.sz.admin.monitor.mapper.*;
|
|
|
|
|
import com.sz.admin.monitor.pojo.dto.camera.CameraListDTO;
|
|
|
|
|
import com.sz.admin.monitor.pojo.dto.camera.CameraUpdateDTO;
|
|
|
|
|
import com.sz.admin.monitor.pojo.po.AlgorithmTask;
|
|
|
|
|
import com.sz.admin.monitor.pojo.po.Camera;
|
|
|
|
|
import com.sz.admin.monitor.pojo.po.EdgeBox;
|
|
|
|
|
import com.sz.admin.monitor.pojo.po.Nvr;
|
|
|
|
|
import com.sz.admin.monitor.pojo.po.table.CameraTableDef;
|
|
|
|
|
import com.sz.admin.monitor.pojo.vo.camera.CameraVO;
|
|
|
|
|
import com.sz.admin.monitor.pojo.vo.camerasnapshot.CameraSnapshotVO;
|
|
|
|
|
import com.sz.admin.monitor.pojo.vo.edgebox.AlgorithmTaskVO;
|
|
|
|
|
import com.sz.admin.monitor.pojo.vo.preset.PresetVO;
|
|
|
|
|
import com.sz.admin.monitor.sdk.ManageNVR;
|
|
|
|
|
import com.sz.admin.monitor.enums.HCPlayControlEnum;
|
|
|
|
|
import com.sz.admin.monitor.service.*;
|
|
|
|
|
import com.sz.admin.monitor.service.AlgorithmTaskService;
|
|
|
|
|
import com.sz.admin.monitor.service.CameraService;
|
|
|
|
|
import com.sz.admin.monitor.utils.AiBoxRequestUtil;
|
|
|
|
|
import com.sz.admin.monitor.utils.RtspUtil;
|
|
|
|
|
import com.sz.admin.monitor.utils.ZLMediaKitUtils;
|
|
|
|
|
import com.sz.admin.teacher.pojo.po.TeacherStatistics;
|
|
|
|
|
import com.sz.admin.teacher.pojo.vo.TeacherStatisticsVO;
|
|
|
|
|
import com.sz.core.common.entity.PageResult;
|
|
|
|
|
import com.sz.core.common.entity.SelectIdsDTO;
|
|
|
|
|
import com.sz.core.common.enums.CommonResponseEnum;
|
|
|
|
|
@ -38,10 +27,10 @@ import com.sz.core.util.BeanCopyUtils;
|
|
|
|
|
import com.sz.core.util.PageUtils;
|
|
|
|
|
import com.sz.core.util.Utils;
|
|
|
|
|
import com.sz.platform.enums.AdminResponseEnum;
|
|
|
|
|
import com.sz.security.core.util.LoginUtils;
|
|
|
|
|
import jakarta.annotation.Resource;
|
|
|
|
|
import lombok.SneakyThrows;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.context.ApplicationEventPublisher;
|
|
|
|
|
import org.springframework.context.annotation.Lazy;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
@ -49,7 +38,6 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
import java.io.Serializable;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
|
|
|
|
|
|
|
|
import static com.sz.admin.monitor.pojo.po.table.NvrTableDef.NVR;
|
|
|
|
|
|
|
|
|
|
@ -75,6 +63,8 @@ public class CameraServiceImpl extends ServiceImpl<CameraMapper, Camera> impleme
|
|
|
|
|
private AiBoxRequestUtil aiBoxRequestUtil;
|
|
|
|
|
@Resource
|
|
|
|
|
private EdgeBoxMapper edgeBoxMapper;
|
|
|
|
|
@Resource
|
|
|
|
|
private ApplicationEventPublisher applicationEventPublisher;
|
|
|
|
|
// 自己注入自己
|
|
|
|
|
@Resource
|
|
|
|
|
@Lazy
|
|
|
|
|
@ -136,37 +126,45 @@ public class CameraServiceImpl extends ServiceImpl<CameraMapper, Camera> impleme
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public void remove(SelectIdsDTO dto) {
|
|
|
|
|
CommonResponseEnum.INVALID_ID.assertTrue(dto.getIds().isEmpty());
|
|
|
|
|
List<Camera> cameraList = listByIds(dto.getIds());
|
|
|
|
|
if (cameraList.isEmpty()) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
List<AlgorithmTaskVO> taskList = algorithmTaskService.listByCameraIds(dto.getIds());
|
|
|
|
|
for (AlgorithmTaskVO task : taskList) {
|
|
|
|
|
if (task != null && task.getAlgTaskSession() != null) {
|
|
|
|
|
try {
|
|
|
|
|
Long cameraId = task.getCameraId();
|
|
|
|
|
Camera camera = this.getById(cameraId);
|
|
|
|
|
Long boxId = camera.getBoxId();
|
|
|
|
|
EdgeBox edgeBox = edgeBoxMapper.selectOneById(boxId);
|
|
|
|
|
// 删除任务
|
|
|
|
|
aiBoxRequestUtil.controlTask(edgeBox.getIp(), edgeBox.getPort(), task.getAlgTaskSession(), 0);
|
|
|
|
|
aiBoxRequestUtil.deleteTask(edgeBox.getIp(), edgeBox.getPort(), task.getAlgTaskSession());
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
log.error("清理 AI 盒子任务失败,摄像机ID: {}, Session: {}", task.getCameraId(), task.getAlgTaskSession(), e);
|
|
|
|
|
throw new BusinessException(AdminResponseEnum.OPERATION_FAIL,null,"同步清理设备算法任务失败,请检查网络后重试");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
for (Camera camera : cameraList) {
|
|
|
|
|
// 删除通道
|
|
|
|
|
Long boxId = camera.getBoxId();
|
|
|
|
|
EdgeBox edgeBox = edgeBoxMapper.selectOneById(boxId);
|
|
|
|
|
aiBoxRequestUtil.deleteVideoChannel(edgeBox.getIp(), edgeBox.getPort(), camera.getId().toString());
|
|
|
|
|
}
|
|
|
|
|
cameraService.batchDeleteLocalData(dto.getIds(), taskList);
|
|
|
|
|
// 直接删除摄像头
|
|
|
|
|
cameraMapper.deleteBatchByIds(dto.getIds());
|
|
|
|
|
// 发布事件
|
|
|
|
|
applicationEventPublisher.publishEvent(new CameraDeleteEvent((List<Long>) dto.getIds()));
|
|
|
|
|
// List<AlgorithmTaskVO> taskList = algorithmTaskService.listByCameraIds(dto.getIds());
|
|
|
|
|
// for (AlgorithmTaskVO task : taskList) {
|
|
|
|
|
// if (task != null && task.getAlgTaskSession() != null) {
|
|
|
|
|
// try {
|
|
|
|
|
// Long cameraId = task.getCameraId();
|
|
|
|
|
// Camera camera = this.getById(cameraId);
|
|
|
|
|
// Long boxId = camera.getBoxId();
|
|
|
|
|
// EdgeBox edgeBox = edgeBoxMapper.selectOneById(boxId);
|
|
|
|
|
// // 删除任务
|
|
|
|
|
// aiBoxRequestUtil.controlTask(edgeBox.getIp(), edgeBox.getPort(), task.getAlgTaskSession(), 0);
|
|
|
|
|
// aiBoxRequestUtil.deleteTask(edgeBox.getIp(), edgeBox.getPort(), task.getAlgTaskSession());
|
|
|
|
|
// } catch (Exception e) {
|
|
|
|
|
// log.error("清理 AI 盒子任务失败,摄像机ID: {}, Session: {}", task.getCameraId(), task.getAlgTaskSession(), e);
|
|
|
|
|
// throw new BusinessException(AdminResponseEnum.OPERATION_FAIL,null,"同步清理设备算法任务失败,请检查网络后重试");
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// for (Camera camera : cameraList) {
|
|
|
|
|
// // 删除通道
|
|
|
|
|
// Long boxId = camera.getBoxId();
|
|
|
|
|
// if (boxId == null)
|
|
|
|
|
// continue;
|
|
|
|
|
// EdgeBox edgeBox = edgeBoxMapper.selectOneById(boxId);
|
|
|
|
|
// aiBoxRequestUtil.deleteVideoChannel(edgeBox.getIp(), edgeBox.getPort(), camera.getId().toString());
|
|
|
|
|
// }
|
|
|
|
|
// cameraService.batchDeleteLocalData(dto.getIds(), taskList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public void batchDeleteLocalData(List<? extends Serializable> cameraIds, List<AlgorithmTaskVO> taskList) {
|
|
|
|
|
// 1. 批量删除预置位
|
|
|
|
|
|