From 2caa210098644f51ff46daa33b87ce4b7f862a91 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Mon, 13 Nov 2023 10:12:56 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/htxx_dev' into htxx_dev
---
src/main/java/com/dji/sample/wayline/controller/WaylineFileController.java | 7 +
src/main/java/com/dji/sample/media/service/IMediaService.java | 8 +
src/main/java/com/dji/sample/media/controller/FileController.java | 10 +
src/main/java/com/dji/sample/media/controller/MediaController.java | 22 ++++
src/main/java/com/dji/sample/manage/service/ILiveStreamService.java | 2
src/main/java/com/dji/sample/media/model/param/SearchMediaParam.java | 16 +++
src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java | 28 +++++
src/main/java/com/dji/sample/manage/controller/LiveStreamController.java | 4
src/main/java/com/dji/sample/wayline/model/entity/WaylineJobEntity.java | 6 +
src/main/java/com/dji/sample/media/dao/IFileMapper.xml | 53 ++++++++++
src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java | 15 ++-
src/main/java/com/dji/sample/wayline/model/dto/WaylineListDTO.java | 15 +++
src/main/java/com/dji/sample/media/service/impl/MediaServiceImpl.java | 26 ++++
src/main/java/com/dji/sample/media/model/MediaFileEntity.java | 6 +
src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java | 10 ++
src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java | 24 ++++
src/main/java/com/dji/sample/wayline/model/dto/WaylineJobCountDTO.java | 10 ++
src/main/java/com/dji/sample/media/model/MediaJobDTO.java | 17 +++
src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java | 5 +
src/main/java/com/dji/sample/media/dao/IFileMapper.java | 9 +
src/main/java/com/dji/sample/manage/service/impl/LiveStreamServiceImpl.java | 3
src/main/java/com/dji/sample/wayline/service/IWaylineFileService.java | 3
22 files changed, 284 insertions(+), 15 deletions(-)
diff --git a/src/main/java/com/dji/sample/manage/controller/LiveStreamController.java b/src/main/java/com/dji/sample/manage/controller/LiveStreamController.java
index afc6ed7..7c1d18b 100644
--- a/src/main/java/com/dji/sample/manage/controller/LiveStreamController.java
+++ b/src/main/java/com/dji/sample/manage/controller/LiveStreamController.java
@@ -53,11 +53,11 @@
* @return live capability
*/
@GetMapping("/capacity/{workspace_id}")
- public ResponseResult<List<CapacityDeviceDTO>> getLiveCapacity(@PathVariable("workspace_id") String workspaceId) {
+ public ResponseResult<List<CapacityDeviceDTO>> getLiveCapacity(@PathVariable("workspace_id") String workspaceId,String sn) {
// Get information about the current user. 获取当前登录用户的信息
// CustomClaim customClaim = (CustomClaim)request.getAttribute(TOKEN_CLAIM);
- List<CapacityDeviceDTO> liveCapacity = liveStreamService.getLiveCapacity(workspaceId);
+ List<CapacityDeviceDTO> liveCapacity = liveStreamService.getLiveCapacity(workspaceId,sn);
return ResponseResult.success(liveCapacity);
}
diff --git a/src/main/java/com/dji/sample/manage/service/ILiveStreamService.java b/src/main/java/com/dji/sample/manage/service/ILiveStreamService.java
index 97ae5d4..4e60ac0 100644
--- a/src/main/java/com/dji/sample/manage/service/ILiveStreamService.java
+++ b/src/main/java/com/dji/sample/manage/service/ILiveStreamService.java
@@ -20,7 +20,7 @@
* @param workspaceId
* @return
*/
- List<CapacityDeviceDTO> getLiveCapacity(String workspaceId);
+ List<CapacityDeviceDTO> getLiveCapacity(String workspaceId,String sn);
/**
* Save live capability data.
diff --git a/src/main/java/com/dji/sample/manage/service/impl/LiveStreamServiceImpl.java b/src/main/java/com/dji/sample/manage/service/impl/LiveStreamServiceImpl.java
index 9886a63..c37dba9 100644
--- a/src/main/java/com/dji/sample/manage/service/impl/LiveStreamServiceImpl.java
+++ b/src/main/java/com/dji/sample/manage/service/impl/LiveStreamServiceImpl.java
@@ -53,13 +53,14 @@
private IDeviceRedisService deviceRedisService;
@Override
- public List<CapacityDeviceDTO> getLiveCapacity(String workspaceId) {
+ public List<CapacityDeviceDTO> getLiveCapacity(String workspaceId,String sn) {
// Query all devices in this workspace.
//查询该工作区中的所有设备。
List<DeviceDTO> devicesList = deviceService.getDevicesByParams(
DeviceQueryParam.builder()
.workspaceId(workspaceId)
+ .deviceSn(sn)
.domains(List.of(DeviceDomainEnum.SUB_DEVICE.getVal(), DeviceDomainEnum.DOCK.getVal()))
.build());
diff --git a/src/main/java/com/dji/sample/media/controller/FileController.java b/src/main/java/com/dji/sample/media/controller/FileController.java
index 6b0c8e8..e2daa1b 100644
--- a/src/main/java/com/dji/sample/media/controller/FileController.java
+++ b/src/main/java/com/dji/sample/media/controller/FileController.java
@@ -1,5 +1,6 @@
package com.dji.sample.media.controller;
+import com.dji.sample.common.model.CustomClaim;
import com.dji.sample.common.model.PaginationData;
import com.dji.sample.common.model.ResponseResult;
import com.dji.sample.media.model.MediaFileDTO;
@@ -9,9 +10,12 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URL;
+
+import static com.dji.sample.component.AuthInterceptor.TOKEN_CLAIM;
/**
* @author sean
@@ -40,8 +44,10 @@
return ResponseResult.success(filesList);
}
- @GetMapping("/{workspace_id}/updateFile")
- public ResponseResult updateFile(@PathVariable(name = "workspace_id") String workspaceId, MediaFileEntity mediaFileEntity) {
+ @PostMapping("/{workspace_id}/updateFile")
+ public ResponseResult updateFile(HttpServletRequest request, @PathVariable(name = "workspace_id") String workspaceId, @RequestBody MediaFileEntity mediaFileEntity) {
+ CustomClaim claims = (CustomClaim) request.getAttribute(TOKEN_CLAIM);
+ mediaFileEntity.setUserId(claims.getId());
return ResponseResult.success(fileService.updateMediaFile(workspaceId, mediaFileEntity));
}
diff --git a/src/main/java/com/dji/sample/media/controller/MediaController.java b/src/main/java/com/dji/sample/media/controller/MediaController.java
index a448dcf..3acd920 100644
--- a/src/main/java/com/dji/sample/media/controller/MediaController.java
+++ b/src/main/java/com/dji/sample/media/controller/MediaController.java
@@ -1,9 +1,13 @@
package com.dji.sample.media.controller;
+import com.dji.sample.common.model.PaginationData;
import com.dji.sample.common.model.ResponseResult;
import com.dji.sample.component.mqtt.model.MapKeyConst;
import com.dji.sample.media.model.FileUploadDTO;
+import com.dji.sample.media.model.MediaJobDTO;
+import com.dji.sample.media.model.param.SearchMediaParam;
import com.dji.sample.media.service.IMediaService;
+import com.dji.sample.wayline.model.dto.WaylineJobDTO;
import com.fasterxml.jackson.core.JsonProcessingException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -71,4 +75,22 @@
return ResponseResult.success(new ConcurrentHashMap<>(Map.of(MapKeyConst.TINY_FINGERPRINTS, existingList)));
}
+ @GetMapping("/{workspace_id}/files/media_page")
+ public ResponseResult<PaginationData<MediaJobDTO>> mediaPage(
+ @PathVariable(name = "workspace_id") String workspaceId, @RequestBody SearchMediaParam param) {
+
+ PaginationData<MediaJobDTO> data = mediaService.mediaPage(workspaceId, param);
+ return ResponseResult.success(data);
+ }
+
+
+ @GetMapping("/files/detail/{job_id}")
+ public ResponseResult<PaginationData<MediaJobDTO>> mediaDetail(
+ @PathVariable(name = "job_id") String jobId, @RequestParam Long page, @RequestParam Long pageSize) {
+
+ PaginationData<MediaJobDTO> data = mediaService.mediaDetail(jobId, page, pageSize);
+ return ResponseResult.success(data);
+ }
+
+
}
diff --git a/src/main/java/com/dji/sample/media/dao/IFileMapper.java b/src/main/java/com/dji/sample/media/dao/IFileMapper.java
index 6b39bd5..81beb14 100644
--- a/src/main/java/com/dji/sample/media/dao/IFileMapper.java
+++ b/src/main/java/com/dji/sample/media/dao/IFileMapper.java
@@ -2,8 +2,12 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dji.sample.common.model.PaginationData;
import com.dji.sample.media.model.MediaFileEntity;
import com.dji.sample.media.model.MediaFileQueryParam;
+import com.dji.sample.media.model.MediaJobDTO;
+import com.dji.sample.media.model.param.SearchMediaParam;
+import com.dji.sample.wayline.model.dto.WaylineJobDTO;
import org.apache.ibatis.annotations.Param;
/**
@@ -13,4 +17,9 @@
*/
public interface IFileMapper extends BaseMapper<MediaFileEntity> {
Page<MediaFileEntity> getPage(@Param("page") Page<MediaFileEntity> mediaFileEntityPage, @Param("workspaceId") String workspaceId,@Param("query") MediaFileQueryParam mediaFileQueryParam);
+
+ Page<MediaJobDTO> mediaPage(@Param("page") Page<MediaJobDTO> mediaFileEntityPage, @Param("workspaceId") String workspaceId, @Param("param") SearchMediaParam param);
+
+
+ Page<MediaJobDTO> mediaDetail(Page<MediaJobDTO> mediaJobDTOPage, @Param("jobId") String jobId);
}
diff --git a/src/main/java/com/dji/sample/media/dao/IFileMapper.xml b/src/main/java/com/dji/sample/media/dao/IFileMapper.xml
index cd40598..5528d10 100644
--- a/src/main/java/com/dji/sample/media/dao/IFileMapper.xml
+++ b/src/main/java/com/dji/sample/media/dao/IFileMapper.xml
@@ -32,4 +32,57 @@
ORDER BY create_time DESC
</select>
+ <select id="mediaPage" resultType="com.dji.sample.media.model.MediaJobDTO">
+ SELECT
+ j.collect_status,
+ m.job_id,
+ t.url,
+ COUNT( CASE WHEN m.file_name LIKE '%.mp4' THEN 1 END) AS videoCount,
+ COUNT( CASE WHEN m.file_name LIKE '%.jpeg' THEN 1 END ) AS picCount,
+ DATE_FORMAT(FROM_UNIXTIME(j.create_time/1000,'%Y-%m-%d'),'%Y-%m-%d') as create_time
+ FROM
+ media_file m LEFT JOIN wayline_job j ON m.job_id = j.job_id
+ LEFT JOIN (SELECT CONCAT("https://dev.jxpskj.com:8026/cloud-bucket",object_key) as url,job_id from media_file WHERE file_name LIKE '%.jpeg') t ON t.job_id = m.job_id
+ LEFT JOIN wayline_file w ON w.wayline_id = j.file_id
+ where 1=1
+ <if test="workspaceId != null and workspaceId != ''">
+ and j.workspace_id = #{workspaceId}
+ </if>
+ <if test="param.dockSn !=null and param.dockSn != ''">
+ and j.dock_sn = #{param.dockSn}
+ </if>
+ <if test="param.startTime !=null and param.endTime !=null">
+ AND DATE_FORMAT(FROM_UNIXTIME(j.create_time/1000,'%Y-%m-%d'),'%Y-%m-%d') >= DATE_FORMAT(#{param.startTime},'%Y-%m-%d')
+ </if>
+
+ <if test="param.endTime !=null and param.endTime !=null">
+ AND DATE_FORMAT(FROM_UNIXTIME(j.create_time/1000,'%Y-%m-%d'),'%Y-%m-%d') <= DATE_FORMAT(#{param.endTime},'%Y-%m-%d')
+ </if>
+ <if test="param.sort eq 2">
+ and j.collect_status = 1
+ </if>
+ <if test="param.sort eq 3">
+ and m.collect_status = 1
+ </if>
+ <if test="param.waylineFileId != null and param.waylineFileId != ''">
+ and w.wayline_id = #{param.waylineFileId}
+ </if>
+ GROUP BY m.job_id
+ </select>
+ <select id="mediaDetail" resultType="com.dji.sample.media.model.MediaJobDTO">
+ SELECT
+ m.collect_status,
+ m.job_id,
+ m.file_id,
+ CONCAT("https://dev.jxpskj.com:8026/cloud-bucket",m.object_key) as url,
+ CASE WHEN m.file_name LIKE '%.mp4' THEN "视频" ELSE "图片" END AS type,
+ DATE_FORMAT( FROM_UNIXTIME( m.create_time / 1000, '%Y-%m-%d' ), '%Y-%m-%d' ) AS create_time
+ FROM
+ media_file m
+ WHERE
+ 1 = 1
+ <if test="jobId != null and jobId != ''">
+ and m.job_id = #{jobId}
+ </if>
+ </select>
</mapper>
diff --git a/src/main/java/com/dji/sample/media/model/MediaFileEntity.java b/src/main/java/com/dji/sample/media/model/MediaFileEntity.java
index 78a747c..5f234a0 100644
--- a/src/main/java/com/dji/sample/media/model/MediaFileEntity.java
+++ b/src/main/java/com/dji/sample/media/model/MediaFileEntity.java
@@ -64,5 +64,11 @@
@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
private Long updateTime;
+
+ @TableField("collect_status")
+ private Boolean collectStatus;
+
+ @TableField("user_id")
+ private String userId;
}
diff --git a/src/main/java/com/dji/sample/media/model/MediaJobDTO.java b/src/main/java/com/dji/sample/media/model/MediaJobDTO.java
new file mode 100644
index 0000000..1620ba5
--- /dev/null
+++ b/src/main/java/com/dji/sample/media/model/MediaJobDTO.java
@@ -0,0 +1,17 @@
+package com.dji.sample.media.model;
+
+import lombok.Data;
+
+import java.time.LocalDate;
+
+@Data
+public class MediaJobDTO {
+ private String jobId;
+ private Integer picCount;
+ private Integer videoCount;
+ private Boolean collectStatus;
+ private LocalDate createTime;
+ private String fileId;
+ private String type;
+ private String url;
+}
diff --git a/src/main/java/com/dji/sample/media/model/param/SearchMediaParam.java b/src/main/java/com/dji/sample/media/model/param/SearchMediaParam.java
new file mode 100644
index 0000000..3c08b6b
--- /dev/null
+++ b/src/main/java/com/dji/sample/media/model/param/SearchMediaParam.java
@@ -0,0 +1,16 @@
+package com.dji.sample.media.model.param;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class SearchMediaParam {
+ private Integer sort;
+ private LocalDateTime startTime;
+ private LocalDateTime endTime;
+ private String waylineFileId;
+ private Long page;
+ private Long pageSize;
+ private String dockSn;
+}
diff --git a/src/main/java/com/dji/sample/media/service/IMediaService.java b/src/main/java/com/dji/sample/media/service/IMediaService.java
index 15a80cc..f5b01fc 100644
--- a/src/main/java/com/dji/sample/media/service/IMediaService.java
+++ b/src/main/java/com/dji/sample/media/service/IMediaService.java
@@ -1,6 +1,11 @@
package com.dji.sample.media.service;
+import com.dji.sample.common.model.PaginationData;
import com.dji.sample.media.model.FileUploadDTO;
+import com.dji.sample.media.model.MediaJobDTO;
+import com.dji.sample.media.model.param.SearchMediaParam;
+import com.dji.sample.wayline.model.dto.WaylineJobDTO;
+import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@@ -42,4 +47,7 @@
*/
List<String> getExistTinyFingerprints(String workspaceId, List<String> tinyFingerprints);
+ PaginationData<MediaJobDTO> mediaPage(String workspaceId, SearchMediaParam param);
+
+ PaginationData<MediaJobDTO> mediaDetail(String jobId,Long page, Long pageSize);
}
diff --git a/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java b/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java
index 6a00eb0..af03ad9 100644
--- a/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java
+++ b/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dji.sample.common.model.Pagination;
import com.dji.sample.common.model.PaginationData;
@@ -126,12 +127,16 @@
@Override
public Boolean updateMediaFile(String workspaceId, MediaFileEntity mediaFileEntity) {
- MediaFileEntity params = new MediaFileEntity();
+ /*MediaFileEntity params = new MediaFileEntity();
params.setFileId(mediaFileEntity.getFileId());
- params.setWorkspaceId(mediaFileEntity.getWorkspaceId());
-
- int update = mapper.update(mediaFileEntity, Wrappers.update(params));
- return update>0;
+ params.setWorkspaceId(mediaFileEntity.getWorkspaceId());*/
+ boolean update1 = new LambdaUpdateChainWrapper<>(mapper).eq(MediaFileEntity::getFileId, mediaFileEntity.getFileId())
+ .set(MediaFileEntity::getFileName, mediaFileEntity.getFileName())
+ .set(MediaFileEntity::getCollectStatus,mediaFileEntity.getCollectStatus())
+ .set(MediaFileEntity::getUserId,mediaFileEntity.getUserId())
+ .update();
+// int update = mapper.update(mediaFileEntity, Wrappers.update(params));
+ return update1;
}
/**
diff --git a/src/main/java/com/dji/sample/media/service/impl/MediaServiceImpl.java b/src/main/java/com/dji/sample/media/service/impl/MediaServiceImpl.java
index 77dd969..a24c418 100644
--- a/src/main/java/com/dji/sample/media/service/impl/MediaServiceImpl.java
+++ b/src/main/java/com/dji/sample/media/service/impl/MediaServiceImpl.java
@@ -1,5 +1,8 @@
package com.dji.sample.media.service.impl;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dji.sample.common.model.Pagination;
+import com.dji.sample.common.model.PaginationData;
import com.dji.sample.common.model.ResponseResult;
import com.dji.sample.component.mqtt.model.ChannelName;
import com.dji.sample.component.mqtt.model.CommonTopicReceiver;
@@ -13,10 +16,9 @@
import com.dji.sample.manage.model.enums.UserTypeEnum;
import com.dji.sample.manage.service.IDeviceRedisService;
import com.dji.sample.manage.service.IDeviceService;
-import com.dji.sample.media.model.FileUploadCallback;
-import com.dji.sample.media.model.FileUploadDTO;
-import com.dji.sample.media.model.MediaFileCountDTO;
-import com.dji.sample.media.model.MediaFileDTO;
+import com.dji.sample.media.dao.IFileMapper;
+import com.dji.sample.media.model.*;
+import com.dji.sample.media.model.param.SearchMediaParam;
import com.dji.sample.media.service.IFileService;
import com.dji.sample.media.service.IMediaService;
import com.dji.sample.wayline.model.dto.WaylineJobDTO;
@@ -27,6 +29,7 @@
import org.springframework.integration.annotation.ServiceActivator;
import org.springframework.messaging.MessageHeaders;
import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
@@ -64,6 +67,9 @@
@Autowired
private IDeviceRedisService deviceRedisService;
+ @Autowired
+ private IFileMapper mapper;
+
@Override
public Boolean fastUpload(String workspaceId, String fingerprint) {
return fileService.checkExist(workspaceId, fingerprint);
@@ -92,6 +98,18 @@
}
+ @Override
+ public PaginationData<MediaJobDTO> mediaPage(String workspaceId, SearchMediaParam param) {
+ Page<MediaJobDTO> waylineJobDTOPage = mapper.mediaPage(new Page<MediaJobDTO>(param.getPage(), param.getPageSize()), workspaceId, param);
+ return new PaginationData<MediaJobDTO>(waylineJobDTOPage.getRecords(), new Pagination(waylineJobDTOPage));
+ }
+
+ @Override
+ public PaginationData<MediaJobDTO> mediaDetail( String jobId,Long page, Long pageSize) {
+ Page<MediaJobDTO> waylineJobDTOPage = mapper.mediaDetail(new Page<MediaJobDTO>(page, pageSize), jobId);
+ return new PaginationData<MediaJobDTO>(waylineJobDTOPage.getRecords(), new Pagination(waylineJobDTOPage));
+ }
+
/**
* Handle media files messages reported by dock.
* 处理由dock报告的媒体文件消息。
diff --git a/src/main/java/com/dji/sample/wayline/controller/WaylineFileController.java b/src/main/java/com/dji/sample/wayline/controller/WaylineFileController.java
index a241604..0544e71 100644
--- a/src/main/java/com/dji/sample/wayline/controller/WaylineFileController.java
+++ b/src/main/java/com/dji/sample/wayline/controller/WaylineFileController.java
@@ -6,6 +6,7 @@
import com.dji.sample.log.aspect.SysLogAnnotation;
import com.dji.sample.wayline.model.dto.WaylineFileDTO;
import com.dji.sample.wayline.model.dto.WaylineFileUploadDTO;
+import com.dji.sample.wayline.model.dto.WaylineListDTO;
import com.dji.sample.wayline.model.param.WaylineQueryParam;
import com.dji.sample.wayline.service.IWaylineFileService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -200,4 +201,10 @@
waylineFileService.importKmzFile(file, workspaceId, creator);
return ResponseResult.success();
}
+
+ @GetMapping("/{workspace_id}/waylines_list")
+ @SysLogAnnotation(operModul = "航线库", operType = "查询", operDesc = "查询当前工作区航线库列表")
+ public ResponseResult<List<WaylineListDTO>> waylineList(@PathVariable(name = "workspace_id") String workspaceId) {
+ return ResponseResult.success(waylineFileService.waylineList(workspaceId)) ;
+ }
}
diff --git a/src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java b/src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java
index 0a416e0..0ec0776 100644
--- a/src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java
+++ b/src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java
@@ -4,6 +4,7 @@
import com.dji.sample.common.model.PaginationData;
import com.dji.sample.common.model.ResponseResult;
import com.dji.sample.log.aspect.SysLogAnnotation;
+import com.dji.sample.wayline.model.dto.WaylineJobCountDTO;
import com.dji.sample.wayline.model.dto.WaylineJobDTO;
import com.dji.sample.wayline.model.entity.WaylineJobEntity;
import com.dji.sample.wayline.model.param.*;
@@ -142,6 +143,29 @@
}
/**
+ * 统计飞行次数
+ */
+ @PostMapping("/{workspace_id}/patrol_statistics")
+ public ResponseResult<WaylineJobCountDTO> patrolStatistics(@PathVariable(name = "workspace_id") String workspaceId){
+
+ WaylineJobCountDTO waylineJobCountDTO = waylineJobService.patrolStatistics(workspaceId);
+
+ return ResponseResult.success(waylineJobCountDTO);
+ }
+
+ /**
+ * 收藏媒体库
+ */
+ @PostMapping("/update_job_collect")
+ public ResponseResult updateJobCollect(HttpServletRequest request, @RequestBody WaylineJobEntity waylineJob){
+ CustomClaim claims = (CustomClaim) request.getAttribute(TOKEN_CLAIM);
+ waylineJob.setUserId(claims.getId());
+ waylineJobService.updateJobCollect(waylineJob);
+
+ return ResponseResult.success();
+ }
+
+ /**
* 根据区域飞行
*
* @return
diff --git a/src/main/java/com/dji/sample/wayline/model/dto/WaylineJobCountDTO.java b/src/main/java/com/dji/sample/wayline/model/dto/WaylineJobCountDTO.java
new file mode 100644
index 0000000..6ab8977
--- /dev/null
+++ b/src/main/java/com/dji/sample/wayline/model/dto/WaylineJobCountDTO.java
@@ -0,0 +1,10 @@
+package com.dji.sample.wayline.model.dto;
+
+import lombok.Data;
+
+@Data
+public class WaylineJobCountDTO {
+ private Integer totalNumber;
+ private String totalDuration;
+ private Integer totalDistance;
+}
diff --git a/src/main/java/com/dji/sample/wayline/model/dto/WaylineListDTO.java b/src/main/java/com/dji/sample/wayline/model/dto/WaylineListDTO.java
new file mode 100644
index 0000000..492a3c4
--- /dev/null
+++ b/src/main/java/com/dji/sample/wayline/model/dto/WaylineListDTO.java
@@ -0,0 +1,15 @@
+package com.dji.sample.wayline.model.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class WaylineListDTO {
+ private String name;
+ private String waylineFileId;
+}
diff --git a/src/main/java/com/dji/sample/wayline/model/entity/WaylineJobEntity.java b/src/main/java/com/dji/sample/wayline/model/entity/WaylineJobEntity.java
index feca1fa..2c80622 100644
--- a/src/main/java/com/dji/sample/wayline/model/entity/WaylineJobEntity.java
+++ b/src/main/java/com/dji/sample/wayline/model/entity/WaylineJobEntity.java
@@ -117,4 +117,10 @@
*/
@TableField(value = "execute_start_time_arr",typeHandler = FastjsonTypeHandler.class)
private List<List<Long>> executeStartTimeArr;
+
+ @TableField("collect_status")
+ private Boolean collectStatus;
+
+ @TableField("user_id")
+ private String userId;
}
diff --git a/src/main/java/com/dji/sample/wayline/service/IWaylineFileService.java b/src/main/java/com/dji/sample/wayline/service/IWaylineFileService.java
index 4a722c8..8a8715c 100644
--- a/src/main/java/com/dji/sample/wayline/service/IWaylineFileService.java
+++ b/src/main/java/com/dji/sample/wayline/service/IWaylineFileService.java
@@ -2,6 +2,7 @@
import com.dji.sample.common.model.PaginationData;
import com.dji.sample.wayline.model.dto.WaylineFileDTO;
+import com.dji.sample.wayline.model.dto.WaylineListDTO;
import com.dji.sample.wayline.model.param.WaylineQueryParam;
import org.springframework.web.multipart.MultipartFile;
@@ -81,4 +82,6 @@
* @return
*/
void importKmzFile(MultipartFile file, String workspaceId, String creator);
+
+ List<WaylineListDTO> waylineList(String workspaceId);
}
diff --git a/src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java b/src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java
index 08c34d2..14be7c9 100644
--- a/src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java
+++ b/src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java
@@ -4,6 +4,7 @@
import com.dji.sample.common.model.PaginationData;
import com.dji.sample.common.model.ResponseResult;
import com.dji.sample.component.mqtt.model.CommonTopicReceiver;
+import com.dji.sample.wayline.model.dto.WaylineJobCountDTO;
import com.dji.sample.wayline.model.dto.WaylineJobDTO;
import com.dji.sample.wayline.model.entity.WaylineJobEntity;
import com.dji.sample.wayline.model.enums.WaylineJobStatusEnum;
@@ -163,6 +164,10 @@
*/
WaylineJobEntity getLatestJob(String workspaceId, WaylineJobQueryParam waylineJobQueryParam);
+ WaylineJobCountDTO patrolStatistics(String workspaceId);
+
+ void updateJobCollect(WaylineJobEntity waylineJob);
+
ResponseResult flyByArea(String sn, FlyAreaParam flyAreaParam);
/**
diff --git a/src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java b/src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java
index 8267a90..14fa513 100644
--- a/src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java
+++ b/src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dji.sample.common.model.Pagination;
import com.dji.sample.common.model.PaginationData;
@@ -11,6 +12,7 @@
import com.dji.sample.wayline.dao.IWaylineFileMapper;
import com.dji.sample.wayline.model.dto.KmzFileProperties;
import com.dji.sample.wayline.model.dto.WaylineFileDTO;
+import com.dji.sample.wayline.model.dto.WaylineListDTO;
import com.dji.sample.wayline.model.entity.WaylineFileEntity;
import com.dji.sample.wayline.model.enums.WaylineTemplateTypeEnum;
import com.dji.sample.wayline.model.param.WaylineQueryParam;
@@ -179,6 +181,14 @@
}
}
+ @Override
+ public List<WaylineListDTO> waylineList(String workspaceId) {
+ return new LambdaQueryChainWrapper<>(mapper).eq(WaylineFileEntity::getWorkspaceId, workspaceId)
+ .list().stream().map(r -> WaylineListDTO.builder().waylineFileId(r.getWaylineId()).name(r.getName()).build())
+ .collect(Collectors.toList());
+
+ }
+
private Optional<WaylineFileDTO> validKmzFile(MultipartFile file) {
String filename = file.getOriginalFilename();
if (Objects.nonNull(filename) && !filename.endsWith(WAYLINE_FILE_SUFFIX)) {
diff --git a/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java b/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java
index 0c72c27..a07e9b7 100644
--- a/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java
+++ b/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java
@@ -4,6 +4,8 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dji.sample.common.error.CommonErrorEnum;
import com.dji.sample.common.model.CustomClaim;
@@ -1002,6 +1004,32 @@
}
+ @Override
+ public WaylineJobCountDTO patrolStatistics(String workspaceId) {
+ WaylineJobCountDTO waylineJobCountDTO = new WaylineJobCountDTO();
+ List<WaylineJobEntity> list = new LambdaQueryChainWrapper<>(mapper).eq(WaylineJobEntity::getStatus, 3).list();
+ if (!CollectionUtils.isEmpty(list)){
+ waylineJobCountDTO.setTotalNumber(list.size());
+ long totalTime = list.stream().mapToLong(s -> s.getEndTime() - s.getBeginTime()).sum() / 1000;
+ StringBuffer buffer = new StringBuffer();
+ long h = totalTime / 3600;
+ long m = (totalTime % 3600) / 60;
+ buffer.append(h).append(" h ");
+ buffer.append(m).append(" min");
+ waylineJobCountDTO.setTotalDuration(buffer.toString());
+ }
+ return waylineJobCountDTO;
+ }
+
+ @Override
+ public void updateJobCollect(WaylineJobEntity waylineJob) {
+ new LambdaUpdateChainWrapper<>(mapper)
+ .eq(WaylineJobEntity::getJobId,waylineJob.getJobId())
+ .set(WaylineJobEntity::getCollectStatus,waylineJob.getCollectStatus())
+ .set(WaylineJobEntity::getUserId,waylineJob.getUserId())
+ .update();
+ }
+
private void pauseJob(String workspaceId, String dockSn, String jobId, WaylineJobStatusEnum statusEnum) {
if (WaylineJobStatusEnum.PAUSED == statusEnum && jobId.equals(waylineRedisService.getPausedWaylineJobId(dockSn))) {
waylineRedisService.setPausedWaylineJob(dockSn, jobId);
--
Gitblit v1.9.3