From 9b2eedb85d53ca32610c32c6e50b5230ab3b16cf Mon Sep 17 00:00:00 2001
From: sean.zhou <sean.zhou@dji.com>
Date: Fri, 22 Jul 2022 20:16:03 +0800
Subject: [PATCH] V1.1.0 for dock
---
src/main/java/com/dji/sample/manage/service/impl/CapacityCameraServiceImpl.java | 136 +++++++-------------------------------------
1 files changed, 23 insertions(+), 113 deletions(-)
diff --git a/src/main/java/com/dji/sample/manage/service/impl/CapacityCameraServiceImpl.java b/src/main/java/com/dji/sample/manage/service/impl/CapacityCameraServiceImpl.java
index 7ac4fc4..a524648 100644
--- a/src/main/java/com/dji/sample/manage/service/impl/CapacityCameraServiceImpl.java
+++ b/src/main/java/com/dji/sample/manage/service/impl/CapacityCameraServiceImpl.java
@@ -1,23 +1,20 @@
package com.dji.sample.manage.service.impl;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.dji.sample.manage.dao.ICapacityCameraMapper;
+import com.dji.sample.component.mqtt.model.StateDataEnum;
+import com.dji.sample.component.redis.RedisOpsUtils;
import com.dji.sample.manage.model.dto.CapacityCameraDTO;
-import com.dji.sample.manage.model.dto.CapacityVideoDTO;
import com.dji.sample.manage.model.dto.DeviceDictionaryDTO;
-import com.dji.sample.manage.model.entity.CapacityCameraEntity;
-import com.dji.sample.manage.model.enums.DeviceDomainEnum;
import com.dji.sample.manage.model.receiver.CapacityCameraReceiver;
import com.dji.sample.manage.service.ICameraVideoService;
import com.dji.sample.manage.service.ICapacityCameraService;
import com.dji.sample.manage.service.IDeviceDictionaryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
+import java.util.UUID;
import java.util.stream.Collectors;
/**
@@ -26,11 +23,8 @@
* @version 0.1
*/
@Service
-@Transactional
+//@Transactional
public class CapacityCameraServiceImpl implements ICapacityCameraService {
-
- @Autowired
- private ICapacityCameraMapper mapper;
@Autowired
private ICameraVideoService cameraVideoService;
@@ -38,95 +32,29 @@
@Autowired
private IDeviceDictionaryService dictionaryService;
+ @Autowired
+ private RedisOpsUtils redisOps;
+
@Override
public List<CapacityCameraDTO> getCapacityCameraByDeviceSn(String deviceSn) {
- List<CapacityCameraDTO> capacityCamerasList = mapper.selectList(
- new LambdaQueryWrapper<CapacityCameraEntity>()
- .eq(CapacityCameraEntity::getDeviceSn, deviceSn))
- .stream()
- .map(this::entityConvertToDto)
- .collect(Collectors.toList());
- capacityCamerasList.forEach(capacityCamera -> {
- // Set the lens data for this camera.
- capacityCamera.setVideosList(
- cameraVideoService.getCameraVideosByCameraId(capacityCamera.getId()));
- });
-
- return capacityCamerasList;
- }
-
- @Override
- public Boolean checkExist(String deviceSn, String cameraIndex) {
- return mapper.selectOne(
- new LambdaQueryWrapper<CapacityCameraEntity>()
- .eq(CapacityCameraEntity::getDeviceSn, deviceSn)
- .eq(CapacityCameraEntity::getCameraIndex, cameraIndex)
- .last(" limit 1")) != null;
+ return (List<CapacityCameraDTO>) redisOps.hashGet(StateDataEnum.LIVE_CAPACITY.getDesc(), deviceSn);
}
@Override
public Boolean deleteCapacityCameraByDeviceSn(String deviceSn) {
-
- List<CapacityCameraDTO> capacityCamerasList = this.getCapacityCameraByDeviceSn(deviceSn);
- // Return directly if no data exists in the database.
- if (capacityCamerasList.isEmpty()) {
- return true;
- }
-
- List<Integer> cameraIds = capacityCamerasList
- .stream()
- .map(CapacityCameraDTO::getId)
- .collect(Collectors.toList());
-
- List<Integer> videoIds = capacityCamerasList
- .stream()
- .flatMap(camera -> camera.getVideosList().stream())
- .map(CapacityVideoDTO::getId)
- .collect(Collectors.toList());
-
- return mapper.deleteBatchIds(cameraIds) > 0 && cameraVideoService.deleteCameraVideosById(videoIds);
+ return redisOps.hashDel(StateDataEnum.LIVE_CAPACITY.getDesc(), new String[]{deviceSn});
}
@Override
- public Boolean saveCapacityCameraReceiverList(List<CapacityCameraReceiver> capacityCameraReceivers, String deviceSn) {
- for (CapacityCameraReceiver cameraDTO : capacityCameraReceivers) {
- CapacityCameraEntity cameraEntity = receiverConvertToEntity(cameraDTO);
- cameraEntity.setDeviceSn(deviceSn);
- int cameraId = this.saveOneCapacityCameraEntity(cameraEntity);
- if (cameraId <= 0) {
- continue;
- }
- boolean saveVideo = cameraVideoService.saveCameraVideoDTOList(
- cameraDTO.getVideosList(), cameraId);
-
- if (!saveVideo) {
- return false;
- }
- }
- return true;
+ public void saveCapacityCameraReceiverList(List<CapacityCameraReceiver> capacityCameraReceivers, String deviceSn) {
+ List<CapacityCameraDTO> capacity = capacityCameraReceivers.stream()
+ .map(this::receiver2Dto).collect(Collectors.toList());
+ redisOps.hashSet(StateDataEnum.LIVE_CAPACITY.getDesc(), deviceSn, capacity);
}
- /**
- * Save the camera live capability data of the device.
- * @param cameraEntity
- * @return
- */
- private Integer saveOneCapacityCameraEntity(CapacityCameraEntity cameraEntity) {
- boolean exist = checkExist(
- cameraEntity.getDeviceSn(), cameraEntity.getCameraIndex());
- if (exist) {
- return -1;
- }
- return mapper.insert(cameraEntity) > 0 ? cameraEntity.getId() : 0;
- }
-
- /**
- * Convert the received camera capability object into a database entity object.
- * @param receiver
- * @return
- */
- private CapacityCameraEntity receiverConvertToEntity(CapacityCameraReceiver receiver) {
- CapacityCameraEntity.CapacityCameraEntityBuilder builder = CapacityCameraEntity.builder();
+ @Override
+ public CapacityCameraDTO receiver2Dto(CapacityCameraReceiver receiver) {
+ CapacityCameraDTO.CapacityCameraDTOBuilder builder = CapacityCameraDTO.builder();
if (receiver == null) {
return builder.build();
}
@@ -138,35 +66,17 @@
// type-subType-index
if (indexArr.length == 3) {
Optional<DeviceDictionaryDTO> dictionaryOpt = dictionaryService
- .getOneDictionaryInfoByDomainTypeSubType(
- DeviceDomainEnum.PAYLOAD.getVal(), indexArr[0], indexArr[1]);
+ .getOneDictionaryInfoByTypeSubType(indexArr[0], indexArr[1]);
dictionaryOpt.ifPresent(dictionary ->
builder.name(dictionary.getDeviceName()));
}
return builder
- .availableVideoNumber(receiver.getAvailableVideoNumber())
- .coexistVideoNumberMax(receiver.getCoexistVideoNumberMax())
- .cameraIndex(receiver.getCameraIndex())
+ .id(UUID.randomUUID().toString())
+ .videosList(receiver.getVideosList()
+ .stream()
+ .map(cameraVideoService::receiver2Dto)
+ .collect(Collectors.toList()))
+ .index(receiver.getCameraIndex())
.build();
- }
-
- /**
- * Convert database entity objects into camera data transfer object.
- * @param entity
- * @return
- */
- private CapacityCameraDTO entityConvertToDto(CapacityCameraEntity entity) {
- CapacityCameraDTO.CapacityCameraDTOBuilder builder = CapacityCameraDTO.builder();
-
- if (entity != null) {
- builder
- .id(entity.getId())
- .name(entity.getName())
- .description(entity.getDescription())
- .deviceSn(entity.getDeviceSn())
- .index(entity.getCameraIndex())
- .build();
- }
- return builder.build();
}
}
\ No newline at end of file
--
Gitblit v1.9.3