Browse Source

视频监控

master
刘力 2 years ago
parent
commit
44847c7271
  1. 51
      storeroom/src/main/java/com/storeroom/modules/device/controller/CameraController.java
  2. 28
      storeroom/src/main/java/com/storeroom/modules/device/controller/VideoMonitoringController.java
  3. 9
      storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceCamerBind.java
  4. 67
      storeroom/src/main/java/com/storeroom/modules/device/domain/VideoMonitoring.java
  5. 17
      storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceCamerBindRepository.java
  6. 8
      storeroom/src/main/java/com/storeroom/modules/device/repository/VideoMonitoringRepository.java
  7. 39
      storeroom/src/main/java/com/storeroom/modules/device/service/DeviceCamerBindService.java
  8. 19
      storeroom/src/main/java/com/storeroom/modules/device/service/VideoMonitoringService.java
  9. 20
      storeroom/src/main/java/com/storeroom/modules/device/service/dto/DeviceCamerBindCrieria.java
  10. 20
      storeroom/src/main/java/com/storeroom/modules/device/service/dto/VideoMonitoringCrieria.java
  11. 71
      storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceCamerBindImpl.java
  12. 27
      storeroom/src/main/java/com/storeroom/modules/device/service/impl/VideoMonitoringImpl.java
  13. 12
      storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/DeviceCamerBindService.java
  14. 22
      storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/DeviceCamerBindImpl.java

51
storeroom/src/main/java/com/storeroom/modules/device/controller/CameraController.java

@ -1,10 +1,15 @@
package com.storeroom.modules.device.controller;
import com.storeroom.annotaion.rest.AnonymousDeleteMapping;
import com.storeroom.annotaion.rest.AnonymousGetMapping;
import com.storeroom.annotaion.rest.AnonymousPostMapping;
import com.storeroom.annotaion.rest.AnonymousPutMapping;
import com.storeroom.exception.BaseException;
import com.storeroom.modules.device.domain.DeviceCamerBind;
import com.storeroom.modules.device.service.DeviceCamerBindService;
import com.storeroom.modules.device.service.DeviceService;
import com.storeroom.modules.device.service.dto.DeviceCamerBindCrieria;
import com.storeroom.modules.device.service.dto.DeviceInfoDto;
import com.storeroom.utils.ApiResponse;
import com.storeroom.utils.StringUtils;
@ -12,10 +17,15 @@ import com.storeroom.utils.enums.ResponseStatus;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Pageable;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Set;
@RestController
@RequiredArgsConstructor
@Api(tags = "摄像机管理")
@ -24,6 +34,7 @@ public class CameraController {
private final DeviceService deviceService;
private final DeviceCamerBindService deviceCamerBindService;
@ApiOperation("创建摄像机")
@ -39,7 +50,7 @@ public class CameraController {
@ApiOperation("修改摄像机")
@AnonymousPutMapping("update")
public ApiResponse<Object> update(@RequestBody DeviceInfoDto deviceInfoDto){
public ApiResponse<Object> update(@RequestBody DeviceInfoDto deviceInfoDto) {
if (StringUtils.isEmpty(deviceInfoDto.getId())) {
throw new BaseException("id不能为空");
}
@ -48,6 +59,44 @@ public class CameraController {
return ApiResponse.success(ResponseStatus.SUCCESS);
}
@ApiOperation("设备绑定")
@AnonymousPostMapping("bind")
public ApiResponse<Object> bind(@RequestBody List<DeviceCamerBind> deviceCamerBind) {
if (!ObjectUtils.isEmpty(deviceCamerBind.size())) {
for (DeviceCamerBind d : deviceCamerBind) {
if (!StringUtils.isEmpty(d.getId())) {
throw new BaseException("id必须为空");
}
}
}
deviceCamerBindService.bind(deviceCamerBind);
return ApiResponse.success(ResponseStatus.SUCCESS);
}
@ApiOperation("获取设备摄像头绑定列表")
@AnonymousGetMapping("list")
public ApiResponse<Object> queryBindList(DeviceCamerBindCrieria crieria, Pageable pageable) {
return ApiResponse.success(deviceCamerBindService.queryAll(crieria, pageable));
}
@ApiOperation("获取未绑定下拉列表")
@AnonymousGetMapping("device")
public ApiResponse<Object> deviceList() {
return ApiResponse.success(deviceCamerBindService.deviceBindList());
}
@ApiOperation("删除绑定")
@AnonymousDeleteMapping("delete")
public ApiResponse<Object> delBind(@RequestBody Set<String> ids) {
if (ObjectUtils.isEmpty(ids)) {
throw new BaseException("id不能为空");
}
deviceCamerBindService.deleteBind(ids);
return ApiResponse.success(ResponseStatus.SUCCESS);
}
/**
* 验证必填值
*

28
storeroom/src/main/java/com/storeroom/modules/device/controller/VideoMonitoringController.java

@ -0,0 +1,28 @@
package com.storeroom.modules.device.controller;
import com.storeroom.annotaion.rest.AnonymousGetMapping;
import com.storeroom.modules.device.service.VideoMonitoringService;
import com.storeroom.modules.device.service.dto.VideoMonitoringCrieria;
import com.storeroom.utils.ApiResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequiredArgsConstructor
@Api(tags = "视频监控")
@RequestMapping("/api/videomonitorng/")
public class VideoMonitoringController {
private final VideoMonitoringService videoMonitoringService;
@ApiOperation("视频监控列表")
@AnonymousGetMapping("list")
public ApiResponse<Object> getList(VideoMonitoringCrieria crieria, Pageable pageable) {
return ApiResponse.success(videoMonitoringService.queryAll(crieria, pageable));
}
}

9
storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceCamerBind.java

@ -30,7 +30,11 @@ public class DeviceCamerBind extends BaseEntity implements Serializable {
@Column(name = "storeroom_name")
@ApiModelProperty(value = "库房名称")
private String StoreroomName;
private String storeroomName;
@Column(name = "device_name")
@ApiModelProperty(value = "设备名称")
private String deviceName;
@Column(name = "camera_id")
@ApiModelProperty(value = "摄像头id")
@ -40,9 +44,6 @@ public class DeviceCamerBind extends BaseEntity implements Serializable {
@ApiModelProperty(value = "视频时长")
private String timeSize;
@Column(name = "bind_state")
@ApiModelProperty(value = "绑定状态")
private Integer bindState;
@Override
public boolean equals(Object o) {

67
storeroom/src/main/java/com/storeroom/modules/device/domain/VideoMonitoring.java

@ -0,0 +1,67 @@
package com.storeroom.modules.device.domain;
import com.storeroom.base.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Objects;
@Entity
@Getter
@Setter
public class VideoMonitoring extends BaseEntity implements Serializable {
@Id
@Column(name = "id")
@NotNull(groups = BaseEntity.Update.class)
@ApiModelProperty(value = "ID", hidden = true)
private String id;
@Column(name = "download_state")
@ApiModelProperty(value = "下载状态")
private Boolean downloadState;
@Column(name = "storeroom_name")
@ApiModelProperty(value = "库房名称")
private String storeroomName;
@Column(name = "device_name")
@ApiModelProperty(value = "设备名称")
private String deviceName;
@Column(name = "camer_name")
@ApiModelProperty(value = "摄像头名称")
private String camerName;
@Column(name = "alarm_event")
@ApiModelProperty(value = "报警事件")
private String alarmEvent;
@Column(name = "video_url")
@ApiModelProperty(value = "下载视频地址")
private String videoUrl;
@Column(name = "description")
@ApiModelProperty(value = "描述")
private String description;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
VideoMonitoring that = (VideoMonitoring) o;
return Objects.equals(id, that.id) && Objects.equals(downloadState, that.downloadState) && Objects.equals(storeroomName, that.storeroomName) && Objects.equals(deviceName, that.deviceName) && Objects.equals(camerName, that.camerName);
}
@Override
public int hashCode() {
return Objects.hash(id, downloadState, storeroomName, deviceName, camerName);
}
}

17
storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceCamerBindRepository.java

@ -4,5 +4,20 @@ import com.storeroom.modules.device.domain.DeviceCamerBind;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
public interface DeviceCamerBindRepository extends JpaRepository<DeviceCamerBind,String> , JpaSpecificationExecutor<DeviceCamerBind> {
public interface DeviceCamerBindRepository extends JpaRepository<DeviceCamerBind,String>, JpaSpecificationExecutor<DeviceCamerBind> {
/**
* 获取绑定数量
* @param deviceInfoId 获取设备id
* @return /
*/
Integer countByDeviceInfoId(String deviceInfoId);
/**
* 根据设备id 查询绑定情况
* @param deviceInfoId
* @return
*/
DeviceCamerBind findByDeviceInfoId(String deviceInfoId);
}

8
storeroom/src/main/java/com/storeroom/modules/device/repository/VideoMonitoringRepository.java

@ -0,0 +1,8 @@
package com.storeroom.modules.device.repository;
import com.storeroom.modules.device.domain.VideoMonitoring;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
public interface VideoMonitoringRepository extends JpaRepository<VideoMonitoring,String> , JpaSpecificationExecutor<VideoMonitoring> {
}

39
storeroom/src/main/java/com/storeroom/modules/device/service/DeviceCamerBindService.java

@ -0,0 +1,39 @@
package com.storeroom.modules.device.service;
import com.storeroom.modules.device.domain.DeviceCamerBind;
import com.storeroom.modules.device.domain.DeviceInfo;
import com.storeroom.modules.device.service.dto.DeviceCamerBindCrieria;
import org.springframework.data.domain.Pageable;
import java.util.List;
import java.util.Set;
public interface DeviceCamerBindService {
/**
* 设备摄像头绑定
*/
void bind(List<DeviceCamerBind> deviceCamerBind);
/**
* 查询摄像头绑定列表
*
* @return /
*/
Object queryAll(DeviceCamerBindCrieria crieria, Pageable pageable);
/**
* 绑定设备下拉列表
* @return
*/
List<DeviceInfo> deviceBindList();
/**
* 删除绑定
* @param id
*/
void deleteBind(Set<String> id);
}

19
storeroom/src/main/java/com/storeroom/modules/device/service/VideoMonitoringService.java

@ -0,0 +1,19 @@
package com.storeroom.modules.device.service;
import com.storeroom.modules.device.service.dto.VideoMonitoringCrieria;
import org.springframework.data.domain.Pageable;
public interface VideoMonitoringService {
/**
* 获取视频监控列表
* @param crieria
* @param pageable
* @return
*/
Object queryAll(VideoMonitoringCrieria crieria, Pageable pageable);
}

20
storeroom/src/main/java/com/storeroom/modules/device/service/dto/DeviceCamerBindCrieria.java

@ -0,0 +1,20 @@
package com.storeroom.modules.device.service.dto;
import com.storeroom.annotaion.Query;
import lombok.Data;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.List;
@Data
public class DeviceCamerBindCrieria implements Serializable {
@Query(blurry = "storeroomName,timeSize,deviceName")
private String blurry;
@Query(type = Query.Type.BETWEEN)
private List<Timestamp> createTime;
}

20
storeroom/src/main/java/com/storeroom/modules/device/service/dto/VideoMonitoringCrieria.java

@ -0,0 +1,20 @@
package com.storeroom.modules.device.service.dto;
import com.storeroom.annotaion.Query;
import lombok.Data;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.List;
@Data
public class VideoMonitoringCrieria implements Serializable {
@Query
private String alarmEvent;
@Query(type = Query.Type.BETWEEN)
private List<Timestamp> createTime;
}

71
storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceCamerBindImpl.java

@ -0,0 +1,71 @@
package com.storeroom.modules.device.service.impl;
import com.storeroom.exception.BaseException;
import com.storeroom.modules.device.domain.DeviceCamerBind;
import com.storeroom.modules.device.domain.DeviceInfo;
import com.storeroom.modules.device.repository.DeviceCamerBindRepository;
import com.storeroom.modules.device.repository.DeviceInfoRepository;
import com.storeroom.modules.device.service.DeviceCamerBindService;
import com.storeroom.modules.device.service.dto.DeviceCamerBindCrieria;
import com.storeroom.utils.NanoIdUtils;
import com.storeroom.utils.PageUtil;
import com.storeroom.utils.QueryHelp;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@Service
@RequiredArgsConstructor
public class DeviceCamerBindImpl implements DeviceCamerBindService {
private final DeviceCamerBindRepository deviceCamerBindRepository;
private final DeviceInfoRepository deviceInfoRepository;
@Override
public void bind(List<DeviceCamerBind> deviceCamerBind) {
for (DeviceCamerBind d : deviceCamerBind) {
Integer num = deviceCamerBindRepository.countByDeviceInfoId(d.getDeviceInfoId());
if (num > 4) {
throw new BaseException("同一种设备不能绑定超过四个以上的摄像头");
}
d.setId(NanoIdUtils.randomNanoId());
}
deviceCamerBindRepository.saveAll(deviceCamerBind);
}
@Override
public Object queryAll(DeviceCamerBindCrieria crieria, Pageable pageable) {
Page<DeviceCamerBind> page = deviceCamerBindRepository.findAll((root, query, criteriaBuilder) -> QueryHelp.getPredicate(root, crieria, criteriaBuilder), pageable);
return PageUtil.toPage(page);
}
@Override
public List<DeviceInfo> deviceBindList() {
List<DeviceInfo> deviceInfoList = deviceInfoRepository.findByDeviceTypeId("65D1886B0F864291766421");
List<DeviceInfo> deviceInfoList1 = deviceInfoRepository.findByDeviceTypeId("DD656054BE3D1DF1E2F1FC");
List<DeviceInfo> deviceinfoAll = new ArrayList<>();
deviceinfoAll.addAll(deviceInfoList);
deviceinfoAll.addAll(deviceInfoList1);
for (DeviceInfo d : deviceinfoAll) {
DeviceCamerBind deviceCamerBind = deviceCamerBindRepository.findByDeviceInfoId(d.getDeviceTypeId().getId());
if (ObjectUtils.isEmpty(deviceCamerBind)) {
deviceinfoAll.remove(d);
}
}
return deviceinfoAll;
}
@Override
public void deleteBind(Set<String> id) {
deviceCamerBindRepository.deleteAllById(id);
}
}

27
storeroom/src/main/java/com/storeroom/modules/device/service/impl/VideoMonitoringImpl.java

@ -0,0 +1,27 @@
package com.storeroom.modules.device.service.impl;
import com.storeroom.modules.device.domain.VideoMonitoring;
import com.storeroom.modules.device.repository.VideoMonitoringRepository;
import com.storeroom.modules.device.service.VideoMonitoringService;
import com.storeroom.modules.device.service.dto.VideoMonitoringCrieria;
import com.storeroom.utils.PageUtil;
import com.storeroom.utils.QueryHelp;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor
public class VideoMonitoringImpl implements VideoMonitoringService {
private final VideoMonitoringRepository videoMonitoringRepository;
@Override
public Object queryAll(VideoMonitoringCrieria crieria, Pageable pageable) {
Page<VideoMonitoring> page = videoMonitoringRepository.findAll((root, query, criteriaBuilder) -> QueryHelp.getPredicate(root, crieria, criteriaBuilder), pageable);
return PageUtil.toPage(page);
}
}

12
storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/DeviceCamerBindService.java

@ -1,12 +0,0 @@
package com.storeroom.modules.storeroom3d.service;
import com.storeroom.modules.device.domain.DeviceCamerBind;
public interface DeviceCamerBindService {
/**
* 设备摄像头绑定
*/
void bind(DeviceCamerBind deviceCamerBind);
}

22
storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/DeviceCamerBindImpl.java

@ -1,22 +0,0 @@
package com.storeroom.modules.storeroom3d.service.impl;
import com.storeroom.modules.device.domain.DeviceCamerBind;
import com.storeroom.modules.device.repository.DeviceCamerBindRepository;
import com.storeroom.modules.storeroom3d.service.DeviceCamerBindService;
import com.storeroom.utils.NanoIdUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor
public class DeviceCamerBindImpl implements DeviceCamerBindService {
private final DeviceCamerBindRepository deviceCamerBindRepository;
@Override
public void bind(DeviceCamerBind deviceCamerBind) {
deviceCamerBind.setId(NanoIdUtils.randomNanoId());
deviceCamerBindRepository.save(deviceCamerBind);
}
}
Loading…
Cancel
Save