diff --git a/storeroom/src/main/java/com/storeroom/modules/device/controller/CameraController.java b/storeroom/src/main/java/com/storeroom/modules/device/controller/CameraController.java index 9db9d1b..36f8155 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/controller/CameraController.java +++ b/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 update(@RequestBody DeviceInfoDto deviceInfoDto){ + public ApiResponse 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 bind(@RequestBody List 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 queryBindList(DeviceCamerBindCrieria crieria, Pageable pageable) { + return ApiResponse.success(deviceCamerBindService.queryAll(crieria, pageable)); + } + + @ApiOperation("获取未绑定下拉列表") + @AnonymousGetMapping("device") + public ApiResponse deviceList() { + return ApiResponse.success(deviceCamerBindService.deviceBindList()); + } + + + @ApiOperation("删除绑定") + @AnonymousDeleteMapping("delete") + public ApiResponse delBind(@RequestBody Set ids) { + if (ObjectUtils.isEmpty(ids)) { + throw new BaseException("id不能为空"); + } + deviceCamerBindService.deleteBind(ids); + return ApiResponse.success(ResponseStatus.SUCCESS); + } + /** * 验证必填值 * diff --git a/storeroom/src/main/java/com/storeroom/modules/device/controller/VideoMonitoringController.java b/storeroom/src/main/java/com/storeroom/modules/device/controller/VideoMonitoringController.java new file mode 100644 index 0000000..e50f252 --- /dev/null +++ b/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 getList(VideoMonitoringCrieria crieria, Pageable pageable) { + return ApiResponse.success(videoMonitoringService.queryAll(crieria, pageable)); + } +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceCamerBind.java b/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceCamerBind.java index 2658d5d..3ec7f72 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceCamerBind.java +++ b/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) { diff --git a/storeroom/src/main/java/com/storeroom/modules/device/domain/VideoMonitoring.java b/storeroom/src/main/java/com/storeroom/modules/device/domain/VideoMonitoring.java new file mode 100644 index 0000000..c1d0b5c --- /dev/null +++ b/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); + } +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceCamerBindRepository.java b/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceCamerBindRepository.java index 194d5c1..7725fc7 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceCamerBindRepository.java +++ b/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 , JpaSpecificationExecutor { +public interface DeviceCamerBindRepository extends JpaRepository, JpaSpecificationExecutor { + + /** + * 获取绑定数量 + * @param deviceInfoId 获取设备id + * @return / + */ + Integer countByDeviceInfoId(String deviceInfoId); + + + /** + * 根据设备id 查询绑定情况 + * @param deviceInfoId + * @return + */ + DeviceCamerBind findByDeviceInfoId(String deviceInfoId); } diff --git a/storeroom/src/main/java/com/storeroom/modules/device/repository/VideoMonitoringRepository.java b/storeroom/src/main/java/com/storeroom/modules/device/repository/VideoMonitoringRepository.java new file mode 100644 index 0000000..8bc15ce --- /dev/null +++ b/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 , JpaSpecificationExecutor { +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/DeviceCamerBindService.java b/storeroom/src/main/java/com/storeroom/modules/device/service/DeviceCamerBindService.java new file mode 100644 index 0000000..3cfbd10 --- /dev/null +++ b/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); + + + /** + * 查询摄像头绑定列表 + * + * @return / + */ + Object queryAll(DeviceCamerBindCrieria crieria, Pageable pageable); + + /** + * 绑定设备下拉列表 + * @return + */ + List deviceBindList(); + + + /** + * 删除绑定 + * @param id + */ + void deleteBind(Set id); +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/VideoMonitoringService.java b/storeroom/src/main/java/com/storeroom/modules/device/service/VideoMonitoringService.java new file mode 100644 index 0000000..e56da13 --- /dev/null +++ b/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); + + +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/dto/DeviceCamerBindCrieria.java b/storeroom/src/main/java/com/storeroom/modules/device/service/dto/DeviceCamerBindCrieria.java new file mode 100644 index 0000000..8d6f0b4 --- /dev/null +++ b/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 createTime; +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/dto/VideoMonitoringCrieria.java b/storeroom/src/main/java/com/storeroom/modules/device/service/dto/VideoMonitoringCrieria.java new file mode 100644 index 0000000..4acb344 --- /dev/null +++ b/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 createTime; +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceCamerBindImpl.java b/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceCamerBindImpl.java new file mode 100644 index 0000000..1b08985 --- /dev/null +++ b/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) { + + 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 page = deviceCamerBindRepository.findAll((root, query, criteriaBuilder) -> QueryHelp.getPredicate(root, crieria, criteriaBuilder), pageable); + return PageUtil.toPage(page); + } + + @Override + public List deviceBindList() { + List deviceInfoList = deviceInfoRepository.findByDeviceTypeId("65D1886B0F864291766421"); + List deviceInfoList1 = deviceInfoRepository.findByDeviceTypeId("DD656054BE3D1DF1E2F1FC"); + List 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 id) { + deviceCamerBindRepository.deleteAllById(id); + } +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/impl/VideoMonitoringImpl.java b/storeroom/src/main/java/com/storeroom/modules/device/service/impl/VideoMonitoringImpl.java new file mode 100644 index 0000000..0cee8cd --- /dev/null +++ b/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 page = videoMonitoringRepository.findAll((root, query, criteriaBuilder) -> QueryHelp.getPredicate(root, crieria, criteriaBuilder), pageable); + return PageUtil.toPage(page); + } +} diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/DeviceCamerBindService.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/DeviceCamerBindService.java deleted file mode 100644 index d493688..0000000 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/DeviceCamerBindService.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.storeroom.modules.storeroom3d.service; - -import com.storeroom.modules.device.domain.DeviceCamerBind; - -public interface DeviceCamerBindService { - - - /** - * 设备摄像头绑定 - */ - void bind(DeviceCamerBind deviceCamerBind); -} diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/DeviceCamerBindImpl.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/DeviceCamerBindImpl.java deleted file mode 100644 index a0857c1..0000000 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/DeviceCamerBindImpl.java +++ /dev/null @@ -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); - } -}