Browse Source

1

pull/1/head
吴远 3 months ago
parent
commit
e20033ff42
  1. 23
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/GetWaylineListRequest.java
  2. 9
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/WaylineTypeEnum.java
  3. 21
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/IHttpWaylineService.java
  4. 4
      dk-common/common-core/pom.xml
  5. 2
      dk-modules/sample/src/main/java/org/dromara/sample/component/GlobalScheduleService.java
  6. 2
      dk-modules/sample/src/main/java/org/dromara/sample/control/controller/DockController.java
  7. 2
      dk-modules/sample/src/main/java/org/dromara/sample/control/controller/DrcController.java
  8. 4
      dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java
  9. 4
      dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/WorkspaceController.java
  10. 2
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceDTO.java
  11. 12
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/WorkspaceDTO.java
  12. 13
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/WorkspaceEntity.java
  13. 3
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/param/DeviceHmsQueryParam.java
  14. 3
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IWorkspaceService.java
  15. 16
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/CapacityCameraServiceImpl.java
  16. 19
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java
  17. 32
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/WorkspaceServiceImpl.java
  18. 4
      dk-modules/sample/src/main/java/org/dromara/sample/map/controller/DeviceDataController.java
  19. 4
      dk-modules/sample/src/main/java/org/dromara/sample/media/controller/FileController.java
  20. 2
      dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java
  21. 2
      dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/MediaServiceImpl.java
  22. 6
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java
  23. 21
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/param/CreateJobParam.java
  24. 2
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/FlightTaskServiceImpl.java
  25. 16
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java
  26. 4
      pom.xml

23
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/GetWaylineListRequest.java

@ -16,13 +16,13 @@ import java.util.List;
* @version 1.7 * @version 1.7
* @date 2023/6/8 * @date 2023/6/8
*/ */
@Schema(description = "Query parameter to get list of wayline files") @Schema(description = "查询参数以获取航路文件列表")
public class GetWaylineListRequest { public class GetWaylineListRequest {
/** /**
* Is the wayline file favorited? * Is the wayline file favorited?
*/ */
@Parameter(name = "favorited", description = "Is the wayline file favorited?") @Parameter(name = "favorited", description = "路线文件是否已加为收藏?")
private Boolean favorited; private Boolean favorited;
/** /**
@ -31,7 +31,7 @@ public class GetWaylineListRequest {
*/ */
@NotNull @NotNull
@JsonProperty("order_by") @JsonProperty("order_by")
@Parameter(name = "order_by", description = "sort field name", example = "update_time desc", @Parameter(name = "order_by", description = "排序字段名称", example = "update_time desc",
schema = @Schema(allowableValues = {"name desc", "name asc", "update_time desc", "update_time asc", "create_time desc", "create_time asc"})) schema = @Schema(allowableValues = {"name desc", "name asc", "update_time desc", "update_time asc", "create_time desc", "create_time asc"}))
@Valid @Valid
private GetWaylineListOrderBy orderBy; private GetWaylineListOrderBy orderBy;
@ -40,15 +40,16 @@ public class GetWaylineListRequest {
* current page * current page
*/ */
@Min(1) @Min(1)
@Parameter(name = "page", description = "current page", schema = @Schema(defaultValue = "1", type = "int")) @Parameter(name = "pageNum", description = "page", schema = @Schema(defaultValue = "1", type = "int"))
@JsonProperty("pageNum")
private int page = 1; private int page = 1;
/** /**
* page size * page size
*/ */
@Min(1) @Min(1)
@JsonProperty("page_size") @JsonProperty("pageSize")
@Parameter(name = "page_size", description = "page size", schema = @Schema(defaultValue = "10", type = "int")) @Parameter(name = "pageSize", description = "pageSize", schema = @Schema(defaultValue = "10", type = "int"))
private int pageSize = 10; private int pageSize = 10;
/** /**
@ -56,35 +57,35 @@ public class GetWaylineListRequest {
*/ */
@Size(min = 1) @Size(min = 1)
@JsonProperty("template_type") @JsonProperty("template_type")
@Parameter(name = "template_type", description = "wayline template type collection", example = "[0]") @Parameter(name = "template_type", description = "wayline 模板类型集合", example = "[0]")
private List<WaylineTypeEnum> templateType; private List<WaylineTypeEnum> templateType;
/** /**
* 1: Enable AI Spot-Check wayline. Without this field means all waylines. * 1: Enable AI Spot-Check wayline. Without this field means all waylines.
*/ */
@JsonProperty("action_type") @JsonProperty("action_type")
@Parameter(name = "action_type", description = "wayline template type collection", example = "1") @Parameter(name = "action_type", description = "启用Al Spot-Check wayline。如果没有此字段,则表示所有waylines。", example = "1")
private ActionTypeEnum actionType; private ActionTypeEnum actionType;
/** /**
* Selected aircraft models * Selected aircraft models
*/ */
@JsonProperty("drone_model_keys") @JsonProperty("drone_model_keys")
@Schema(name = "drone_model_keys", description = "drone device product enum", example = "[\"0-67-0\"]") @Schema(name = "drone_model_keys", description = "无人机设备产品枚举", example = "[\"0-67-0\"]")
private List<DeviceEnum> droneModelKeys; private List<DeviceEnum> droneModelKeys;
/** /**
* Selected payload models * Selected payload models
*/ */
@JsonProperty("payload_model_key") @JsonProperty("payload_model_key")
@Schema(name = "payload_model_key", description = "payload device product enum", example = "[\"1-53-0\"]") @Schema(name = "payload_model_key", description = "有效负载设备产品枚举", example = "[\"1-53-0\"]")
private List<DeviceEnum> payloadModelKey; private List<DeviceEnum> payloadModelKey;
/** /**
* Filter by wayline name * Filter by wayline name
*/ */
@JsonProperty("key") @JsonProperty("key")
@Schema(name = "key", description = "wayline file name", example = "waypoint") @Schema(name = "key", description = "wayline 文件名", example = "waypoint")
private String key; private String key;
public GetWaylineListRequest() { public GetWaylineListRequest() {

9
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/WaylineTypeEnum.java

@ -16,10 +16,19 @@ import java.util.Arrays;
description = "<p>0: waypoint<p/><p>1: mapping2d<p/><p>2: mapping3d<p/><p>3: mappingStrip</p>") description = "<p>0: waypoint<p/><p>1: mapping2d<p/><p>2: mapping3d<p/><p>3: mappingStrip</p>")
public enum WaylineTypeEnum { public enum WaylineTypeEnum {
/**
* 航点
*/
WAYPOINT(0, "waypoint"), WAYPOINT(0, "waypoint"),
/**
* 二维
*/
MAPPING_2D(1, "mapping2d"), MAPPING_2D(1, "mapping2d"),
/**
* 三维
*/
MAPPING_3D(2, "mapping3d"), MAPPING_3D(2, "mapping3d"),
MAPPING_STRIP(3, "mappingStrip"); MAPPING_STRIP(3, "mappingStrip");

21
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/IHttpWaylineService.java

@ -25,7 +25,7 @@ import java.util.List;
* @version 0.3 * @version 0.3
* @date 2021/12/22 * @date 2021/12/22
*/ */
@Tag(name = "wayline interface") @Tag(name = "航线接口")
public interface IHttpWaylineService { public interface IHttpWaylineService {
String PREFIX = "wayline/api/v1"; String PREFIX = "wayline/api/v1";
@ -40,8 +40,11 @@ public interface IHttpWaylineService {
* @param rsp * @param rsp
* @return wayline list * @return wayline list
*/ */
@Operation(summary = "获取航线路线列表", description = "根据查询条件査询路线文件的基本数据。飞行员中的查询条件字段是固定的。") @Operation(summary = "获取航线路线列表", description = "根据查询条件査询路线文件的基本数据。飞行员中的查询条件字段是固定的。",
@GetMapping(PREFIX + "/workspaces/waylines") parameters = {
@Parameter(name = "workspace_id", description = "workspace_id", schema = @Schema(format = "uuid"))
})
@GetMapping(PREFIX + "/workspaces/{workspace_id}/waylines")
HttpResultResponse<PaginationData<GetWaylineListResponse>> getWaylineList( HttpResultResponse<PaginationData<GetWaylineListResponse>> getWaylineList(
@Valid @ParameterObject GetWaylineListRequest request, @Valid @ParameterObject GetWaylineListRequest request,
@PathVariable(name = "workspace_id") String workspaceId, @PathVariable(name = "workspace_id") String workspaceId,
@ -59,8 +62,8 @@ public interface IHttpWaylineService {
}) })
@GetMapping(PREFIX + "/workspaces/{workspace_id}/waylines/{wayline_id}/url") @GetMapping(PREFIX + "/workspaces/{workspace_id}/waylines/{wayline_id}/url")
void getWaylineFileDownloadAddress( void getWaylineFileDownloadAddress(
@PathVariable(name = "wayline_id") String waylineId,
@PathVariable(name = "workspace_id") String workspaceId, @PathVariable(name = "workspace_id") String workspaceId,
@PathVariable(name = "wayline_id") String waylineId,
HttpServletRequest req, HttpServletResponse rsp); HttpServletRequest req, HttpServletResponse rsp);
/** /**
@ -91,8 +94,8 @@ public interface IHttpWaylineService {
* @param rsp * @param rsp
* @return success * @return success
*/ */
@Operation(summary = "file upload result report", description = "When the wayline file is uploaded to the " + @Operation(summary = "文件上传结果", description = "将Wayline文件上传到存储服务器时,文件的基本" +
"storage server by pilot, the basic information of the file is reported through this interface.") "信息将通过此接口")
@PostMapping(PREFIX + "/workspaces/{workspace_id}/upload-callback") @PostMapping(PREFIX + "/workspaces/{workspace_id}/upload-callback")
HttpResultResponse fileUploadResultReport( HttpResultResponse fileUploadResultReport(
@PathVariable(name = "workspace_id") String workspaceId, @PathVariable(name = "workspace_id") String workspaceId,
@ -106,9 +109,9 @@ public interface IHttpWaylineService {
* @param rsp * @param rsp
* @return success * @return success
*/ */
@Operation(summary = "batch favorites wayline", description = "Favorite the wayline file according to the wayline file id.", @Operation(summary = "批量收藏方式线", description = "根据方式线文件ID收藏方式线文件。",
parameters = { parameters = {
@Parameter(name = "id", description = "wayline id", required = true) @Parameter(name = "id", description = "wayline_id", required = true)
}) })
@PostMapping(PREFIX + "/workspaces/{workspace_id}/favorites") @PostMapping(PREFIX + "/workspaces/{workspace_id}/favorites")
HttpResultResponse batchFavoritesWayline( HttpResultResponse batchFavoritesWayline(
@ -123,7 +126,7 @@ public interface IHttpWaylineService {
* @param rsp * @param rsp
* @return success * @return success
*/ */
@Operation(summary = "batch unfavorites wayline", description = "Delete the favorites of this wayline file based on the wayline file id.", @Operation(summary = "批量取消关注方式线", description = "根据方式线文件ID删除此方式线文件的关注。",
parameters = { parameters = {
@Parameter(name = "id", description = "wayline id", required = true) @Parameter(name = "id", description = "wayline id", required = true)
}) })

4
dk-common/common-core/pom.xml

@ -99,6 +99,10 @@
<artifactId>ip2region</artifactId> <artifactId>ip2region</artifactId>
</dependency> </dependency>
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>

2
dk-modules/sample/src/main/java/org/dromara/sample/component/GlobalScheduleService.java

@ -59,7 +59,7 @@ public class GlobalScheduleService {
} }
}); });
log.info("Subscriptions: {}", Arrays.toString(topicService.getSubscribedTopic())); //log.info("Subscriptions: {}", Arrays.toString(topicService.getSubscribedTopic()));
} }
} }

2
dk-modules/sample/src/main/java/org/dromara/sample/control/controller/DockController.java

@ -1,5 +1,6 @@
package org.dromara.sample.control.controller; package org.dromara.sample.control.controller;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.common.sdk.common.HttpResultResponse; import org.dromara.common.sdk.common.HttpResultResponse;
@ -19,6 +20,7 @@ import org.springframework.web.bind.annotation.*;
@RestController @RestController
@Slf4j @Slf4j
@RequestMapping("${url.control.prefix}${url.control.version}/devices") @RequestMapping("${url.control.prefix}${url.control.version}/devices")
@Tag(name = "机场飞行指令模块")
public class DockController { public class DockController {
@Autowired @Autowired

2
dk-modules/sample/src/main/java/org/dromara/sample/control/controller/DrcController.java

@ -1,5 +1,6 @@
package org.dromara.sample.control.controller; package org.dromara.sample.control.controller;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.sample.control.model.dto.JwtAclDTO; import org.dromara.sample.control.model.dto.JwtAclDTO;
import org.dromara.sample.control.model.param.DrcConnectParam; import org.dromara.sample.control.model.param.DrcConnectParam;
@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.*;
@RestController @RestController
@Slf4j @Slf4j
@RequestMapping("${url.control.prefix}${url.control.version}") @RequestMapping("${url.control.prefix}${url.control.version}")
@Tag(name = "drc模块")
public class DrcController { public class DrcController {
@Autowired @Autowired

4
dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java

@ -89,8 +89,8 @@ public class DeviceController {
@GetMapping("/{workspace_id}/devices/bound") @GetMapping("/{workspace_id}/devices/bound")
public HttpResultResponse<PaginationData<DeviceDTO>> getBoundDevicesWithDomain( public HttpResultResponse<PaginationData<DeviceDTO>> getBoundDevicesWithDomain(
@PathVariable("workspace_id") String workspaceId,Integer domain, @PathVariable("workspace_id") String workspaceId,Integer domain,
@RequestParam(defaultValue = "1") Long page, @RequestParam(name = "pageNum", defaultValue = "1") Long page,
@RequestParam(value = "page_size", defaultValue = "50") Long pageSize) { @RequestParam(name = "pageSize", defaultValue = "10") Long pageSize) {
LoginUser loginUser = LoginHelper.getLoginUser(); LoginUser loginUser = LoginHelper.getLoginUser();
PaginationData<DeviceDTO> devices = deviceService.getBoundDevicesWithDomain(workspaceId, page, pageSize, domain); PaginationData<DeviceDTO> devices = deviceService.getBoundDevicesWithDomain(workspaceId, page, pageSize, domain);

4
dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/WorkspaceController.java

@ -19,6 +19,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Optional; import java.util.Optional;
import java.util.UUID;
/** /**
@ -57,12 +58,11 @@ public class WorkspaceController extends BaseController {
* @return * @return
*/ */
@PostMapping("/add") @PostMapping("/add")
@SaCheckPermission("work:spaces:add")
@Operation(summary = "新增工作区。", description = "新增工作区主要是组织号", @Operation(summary = "新增工作区。", description = "新增工作区主要是组织号",
parameters = { parameters = {
@Parameter(name = "workspaceDTO", description = "workspaceDTO"), @Parameter(name = "workspaceDTO", description = "workspaceDTO"),
}) })
public HttpResultResponse addCurrentWorkspace(HttpServletRequest request, @Validated @RequestBody WorkspaceDTO workspaceDTO) { public HttpResultResponse addCurrentWorkspace(HttpServletRequest request, @Validated @RequestBody WorkspaceDTO workspaceDTO) {
return workspaceService.insertCurrentWorkspace(workspaceDTO) > 0 ? HttpResultResponse.success() : HttpResultResponse.error(); return workspaceService.insertCurrentWorkspace(workspaceDTO);
} }
} }

2
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceDTO.java

@ -99,4 +99,6 @@ public class DeviceDTO {
*/ */
@Schema(description = "租户ID") @Schema(description = "租户ID")
private String tenantId; private String tenantId;
private String videoId;
} }

12
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/WorkspaceDTO.java

@ -2,10 +2,7 @@ package org.dromara.sample.manage.model.dto;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Pattern;
import lombok.AllArgsConstructor; import lombok.*;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/** /**
* @author sean.zhou * @author sean.zhou
@ -18,10 +15,10 @@ import lombok.NoArgsConstructor;
@Builder @Builder
public class WorkspaceDTO { public class WorkspaceDTO {
@Schema(description = "(新增不需要传参)", format = "uuid")
private Integer id; private Integer id;
@Pattern(regexp = "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$") @Schema(description = "workspaceId,设备区域标识id(新增不需要传参)", format = "uuid")
@Schema(description = "workspaceId,设备区域标识id", format = "uuid")
private String workspaceId; private String workspaceId;
@Schema(description = "workspaceName,工作区标识id") @Schema(description = "workspaceName,工作区标识id")
@ -35,4 +32,7 @@ public class WorkspaceDTO {
@Schema(description = "bindCode,设备编码") @Schema(description = "bindCode,设备编码")
private String bindCode; private String bindCode;
@Schema(description = "选择租户")
private String tenantId;
} }

13
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/WorkspaceEntity.java

@ -3,15 +3,22 @@ package org.dromara.sample.manage.model.entity;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Pattern;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.tenant.core.TenantEntity; import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
@TableName(value = "manage_workspace") @TableName(value = "manage_workspace")
@Data @Data
public class WorkspaceEntity extends TenantEntity implements Serializable { @Builder
@NoArgsConstructor
@AllArgsConstructor
public class WorkspaceEntity implements Serializable {
@TableId(type = IdType.AUTO) @TableId(type = IdType.AUTO)
private Integer id; private Integer id;
@ -38,4 +45,8 @@ public class WorkspaceEntity extends TenantEntity implements Serializable {
private String bindCode; private String bindCode;
@TableField(value = "tenant_id")
private String tenantId;
} }

3
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/param/DeviceHmsQueryParam.java

@ -32,9 +32,10 @@ public class DeviceHmsQueryParam {
private String message; private String message;
@JsonProperty("pageNum")
private Long page; private Long page;
@JsonProperty("page_size") @JsonProperty("pageSize")
private Long pageSize; private Long pageSize;
private Integer level; private Integer level;

3
dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IWorkspaceService.java

@ -1,6 +1,7 @@
package org.dromara.sample.manage.service; package org.dromara.sample.manage.service;
import org.dromara.common.sdk.common.HttpResultResponse;
import org.dromara.sample.manage.model.dto.WorkspaceDTO; import org.dromara.sample.manage.model.dto.WorkspaceDTO;
import java.util.Optional; import java.util.Optional;
@ -24,5 +25,5 @@ public interface IWorkspaceService {
Optional<WorkspaceDTO> getWorkspaceNameByBindCode(String bindCode); Optional<WorkspaceDTO> getWorkspaceNameByBindCode(String bindCode);
int insertCurrentWorkspace(WorkspaceDTO workspaceDTO); HttpResultResponse insertCurrentWorkspace(WorkspaceDTO workspaceDTO);
} }

16
dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/CapacityCameraServiceImpl.java

@ -40,14 +40,26 @@ public class CapacityCameraServiceImpl implements ICapacityCameraService {
@Override @Override
public Boolean deleteCapacityCameraByDeviceSn(String deviceSn) { public Boolean deleteCapacityCameraByDeviceSn(String deviceSn) {
return RedisOpsUtils.hashDel(RedisConst.LIVE_CAPACITY, new String[]{deviceSn}); return true;
//return RedisOpsUtils.hashDel(RedisConst.LIVE_CAPACITY, new String[]{deviceSn});
} }
@Override @Override
public void saveCapacityCameraReceiverList(List<CapacityCameraReceiver> capacityCameraReceivers, String deviceSn) { public void saveCapacityCameraReceiverList(List<CapacityCameraReceiver> capacityCameraReceivers, String deviceSn) {
List<CapacityCameraDTO> capacity = capacityCameraReceivers.stream() List<CapacityCameraDTO> capacity = capacityCameraReceivers.stream()
.map(this::receiver2Dto).collect(Collectors.toList()); .map(this::receiver2Dto).collect(Collectors.toList());
RedisOpsUtils.hashSet(RedisConst.LIVE_CAPACITY, deviceSn, capacity); int i = 0;
if(capacity.size() > 0){
for (CapacityCameraDTO capacityCameraDTO : capacity){
if(capacityCameraDTO.getVideosList().size() > 0){
i++;
}
}
}
if(i > 0){
RedisOpsUtils.hashSet(RedisConst.LIVE_CAPACITY, deviceSn, capacity);
}
} }
public CapacityCameraDTO receiver2Dto(CapacityCameraReceiver receiver) { public CapacityCameraDTO receiver2Dto(CapacityCameraReceiver receiver) {

19
dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java

@ -246,8 +246,16 @@ public class DeviceServiceImpl implements IDeviceService {
DeviceDTO subDevice = getDevicesByParams(DeviceQueryParam.builder().deviceSn(gateway.getChildDeviceSn()).build()).get(0); DeviceDTO subDevice = getDevicesByParams(DeviceQueryParam.builder().deviceSn(gateway.getChildDeviceSn()).build()).get(0);
subDevice.setStatus(deviceRedisService.checkDeviceOnline(subDevice.getDeviceSn())); subDevice.setStatus(deviceRedisService.checkDeviceOnline(subDevice.getDeviceSn()));
List<CapacityCameraDTO> capacityCameraByDeviceSn = capacityCameraService.getCapacityCameraByDeviceSn(gateway.getChildDeviceSn());
String videoId = "";
if(capacityCameraByDeviceSn != null && capacityCameraByDeviceSn.size() > 0 ){
if(capacityCameraByDeviceSn.get(0).getVideosList().size() > 0){
videoId = gateway.getChildDeviceSn() + "/" + capacityCameraByDeviceSn.get(0).getIndex() + "/" + capacityCameraByDeviceSn.get(0).getVideosList().get(0).getIndex();
}
}
subDevice.setVideoId(videoId);
gateway.setChildren(subDevice); gateway.setChildren(subDevice);
// gateway.setVideoId(DeviceEnum.videoId);
// payloads // payloads
subDevice.setPayloadsList(payloadService.getDevicePayloadEntitiesByDeviceSn(gateway.getChildDeviceSn())); subDevice.setPayloadsList(payloadService.getDevicePayloadEntitiesByDeviceSn(gateway.getChildDeviceSn()));
} }
@ -350,6 +358,14 @@ public class DeviceServiceImpl implements IDeviceService {
return null; return null;
} }
DeviceDTO.DeviceDTOBuilder builder = DeviceDTO.builder(); DeviceDTO.DeviceDTOBuilder builder = DeviceDTO.builder();
List<CapacityCameraDTO> capacityCameraByDeviceSn = capacityCameraService.getCapacityCameraByDeviceSn(entity.getDeviceSn());
String dockVideoId = "";
if(capacityCameraByDeviceSn != null && capacityCameraByDeviceSn.size() > 0 ){
if(capacityCameraByDeviceSn.get(0).getVideosList().size() > 0){
dockVideoId = entity.getDeviceSn() + "/" + capacityCameraByDeviceSn.get(0).getIndex() + "/" + capacityCameraByDeviceSn.get(0).getVideosList().get(0).getIndex();
}
}
try { try {
builder builder
.deviceSn(entity.getDeviceSn()) .deviceSn(entity.getDeviceSn())
@ -376,6 +392,7 @@ public class DeviceServiceImpl implements IDeviceService {
workspaceService.getWorkspaceByWorkspaceId(entity.getWorkspaceId()) workspaceService.getWorkspaceByWorkspaceId(entity.getWorkspaceId())
.map(WorkspaceDTO::getWorkspaceName).orElse("") : "") .map(WorkspaceDTO::getWorkspaceName).orElse("") : "")
.firmwareStatus(DeviceFirmwareStatusEnum.NOT_UPGRADE) .firmwareStatus(DeviceFirmwareStatusEnum.NOT_UPGRADE)
.videoId(dockVideoId)
.thingVersion(entity.getVersion()).build(); .thingVersion(entity.getVersion()).build();
} catch (CloudSDKException e) { } catch (CloudSDKException e) {
log.error(e.getLocalizedMessage() + "Entity: {}", entity); log.error(e.getLocalizedMessage() + "Entity: {}", entity);

32
dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/WorkspaceServiceImpl.java

@ -2,9 +2,16 @@ package org.dromara.sample.manage.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.sdk.cloudapi.device.ControlSourceEnum;
import org.dromara.common.sdk.cloudapi.device.DeviceDomainEnum;
import org.dromara.common.sdk.cloudapi.device.DeviceSubTypeEnum;
import org.dromara.common.sdk.cloudapi.device.DeviceTypeEnum;
import org.dromara.common.sdk.common.HttpResultResponse;
import org.dromara.sample.manage.mapper.IWorkspaceMapper; import org.dromara.sample.manage.mapper.IWorkspaceMapper;
import org.dromara.sample.manage.model.dto.WorkspaceDTO; import org.dromara.sample.manage.model.dto.WorkspaceDTO;
import org.dromara.sample.manage.model.entity.DeviceEntity;
import org.dromara.sample.manage.model.entity.WorkspaceEntity; import org.dromara.sample.manage.model.entity.WorkspaceEntity;
import org.dromara.sample.manage.model.enums.DeviceFirmwareStatusEnum;
import org.dromara.sample.manage.service.IWorkspaceService; import org.dromara.sample.manage.service.IWorkspaceService;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -12,6 +19,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.Optional; import java.util.Optional;
import java.util.UUID;
@Service @Service
@Transactional @Transactional
@ -46,9 +54,27 @@ public class WorkspaceServiceImpl implements IWorkspaceService {
} }
@Override @Override
public int insertCurrentWorkspace(WorkspaceDTO workspaceDTO) { public HttpResultResponse insertCurrentWorkspace(WorkspaceDTO workspaceDTO) {
WorkspaceEntity workspaceEntity = MapstructUtils.convert(workspaceDTO, WorkspaceEntity.class); Optional<WorkspaceDTO> workspaceNameByBindCode = this.getWorkspaceNameByBindCode(workspaceDTO.getBindCode());
return mapper.insert(workspaceEntity); if(!workspaceNameByBindCode.isEmpty()){
return HttpResultResponse.error("bindCode,设备编码已存在");
}
WorkspaceEntity.WorkspaceEntityBuilder builder = WorkspaceEntity.builder();
builder.workspaceId(String.valueOf(UUID.randomUUID()))
.workspaceName(workspaceDTO.getWorkspaceName())
.workspaceDesc(workspaceDTO.getWorkspaceDesc())
.bindCode(workspaceDTO.getBindCode())
.tenantId(workspaceDTO.getTenantId())
.platformName(workspaceDTO.getPlatformName())
.build();
if(mapper.insert(builder.build()) > 0){
return HttpResultResponse.success();
}
return HttpResultResponse.error("新增失败");
}
public static void main(String[] args) {
System.out.println();
} }
/** /**

4
dk-modules/sample/src/main/java/org/dromara/sample/map/controller/DeviceDataController.java

@ -1,5 +1,7 @@
package org.dromara.sample.map.controller; package org.dromara.sample.map.controller;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.sdk.common.HttpResultResponse; import org.dromara.common.sdk.common.HttpResultResponse;
import org.dromara.sample.map.model.dto.DeviceDataStatusDTO; import org.dromara.sample.map.model.dto.DeviceDataStatusDTO;
@ -21,12 +23,14 @@ import java.util.List;
@RestController @RestController
@RequestMapping("${url.map.prefix}${url.map.version}/workspaces") @RequestMapping("${url.map.prefix}${url.map.version}/workspaces")
@Tag(name = "获取设备状态")
public class DeviceDataController { public class DeviceDataController {
@Autowired @Autowired
private IDeviceDataService deviceDataService; private IDeviceDataService deviceDataService;
@GetMapping("/{workspace_id}/device-status") @GetMapping("/{workspace_id}/device-status")
@Operation(summary = "获取设备状态", description = "获取设备状态")
public HttpResultResponse<List<DeviceDataStatusDTO>> getDeviceFlightAreaStatus(@PathVariable(name = "workspace_id") String workspaceId) { public HttpResultResponse<List<DeviceDataStatusDTO>> getDeviceFlightAreaStatus(@PathVariable(name = "workspace_id") String workspaceId) {
return HttpResultResponse.success(deviceDataService.getDevicesDataStatus(workspaceId)); return HttpResultResponse.success(deviceDataService.getDevicesDataStatus(workspaceId));
} }

4
dk-modules/sample/src/main/java/org/dromara/sample/media/controller/FileController.java

@ -35,8 +35,8 @@ public class FileController {
*/ */
@GetMapping("/{workspace_id}/files") @GetMapping("/{workspace_id}/files")
@Operation(summary = "根据工作区id获取此工作区中所有媒体文件的信息。", description = "根据工作区id获取此工作区中所有媒体文件的信息。") @Operation(summary = "根据工作区id获取此工作区中所有媒体文件的信息。", description = "根据工作区id获取此工作区中所有媒体文件的信息。")
public HttpResultResponse<PaginationData<MediaFileDTO>> getFilesList(@RequestParam(defaultValue = "1") Long page, public HttpResultResponse<PaginationData<MediaFileDTO>> getFilesList(@RequestParam(name = "pageNum", defaultValue = "1") Long page,
@RequestParam(name = "page_size", defaultValue = "10") Long pageSize, @RequestParam(name = "pageSize", defaultValue = "10") Long pageSize,
@PathVariable(name = "workspace_id") String workspaceId) { @PathVariable(name = "workspace_id") String workspaceId) {
PaginationData<MediaFileDTO> filesList = fileService.getMediaFilesPaginationByWorkspaceId(workspaceId, page, pageSize); PaginationData<MediaFileDTO> filesList = fileService.getMediaFilesPaginationByWorkspaceId(workspaceId, page, pageSize);
return HttpResultResponse.success(filesList); return HttpResultResponse.success(filesList);

2
dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java

@ -102,7 +102,7 @@ public class FileServiceImpl implements IFileService {
if (mediaFileOpt.isEmpty()) { if (mediaFileOpt.isEmpty()) {
throw new IllegalArgumentException("{} 不存在。"); throw new IllegalArgumentException("{} 不存在。");
} }
OssClient storage = OssFactory.instance("media_file"); OssClient storage = OssFactory.instance("mediafile");
return storage.getPrivateUrlURL(mediaFileOpt.get().getObjectKey(),3600); return storage.getPrivateUrlURL(mediaFileOpt.get().getObjectKey(),3600);
} }

2
dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/MediaServiceImpl.java

@ -153,7 +153,7 @@ public class MediaServiceImpl extends AbstractMediaService implements IMediaServ
// set path // set path
String objectKey = file.getObjectKey(); String objectKey = file.getObjectKey();
file.setPath(objectKey.substring(Optional.of(objectKey.indexOf("media_file")) file.setPath(objectKey.substring(Optional.of(objectKey.indexOf("mediafile"))
.filter(index -> index > 0).map(index -> index++).orElse(0), .filter(index -> index > 0).map(index -> index++).orElse(0),
objectKey.lastIndexOf("/"))); objectKey.lastIndexOf("/")));

6
dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java

@ -58,10 +58,10 @@ public class WaylineJobController {
* @param pageSize * @param pageSize
* @return * @return
*/ */
@GetMapping("/jobs") @GetMapping("/{workspace_id}/jobs")
@Operation(summary = "查询工作区中的所有作业。。", description = "查询工作区中的所有作业。") @Operation(summary = "查询工作区中的所有作业。。", description = "查询工作区中的所有作业。")
public HttpResultResponse<PaginationData<WaylineJobDTO>> getJobs(@RequestParam(defaultValue = "1") Long page, public HttpResultResponse<PaginationData<WaylineJobDTO>> getJobs(@RequestParam(name = "pageNum", defaultValue = "1") Long page,
@RequestParam(name = "page_size", defaultValue = "10") Long pageSize, @RequestParam(name = "pageSize", defaultValue = "10") Long pageSize,
@PathVariable(name = "workspace_id") String workspaceId) { @PathVariable(name = "workspace_id") String workspaceId) {
PaginationData<WaylineJobDTO> data = waylineJobService.getJobsByWorkspaceId(workspaceId, page, pageSize); PaginationData<WaylineJobDTO> data = waylineJobService.getJobsByWorkspaceId(workspaceId, page, pageSize);
return HttpResultResponse.success(data); return HttpResultResponse.success(data);

21
dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/param/CreateJobParam.java

@ -1,12 +1,10 @@
package org.dromara.sample.wayline.model.param; package org.dromara.sample.wayline.model.param;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import org.dromara.common.sdk.cloudapi.wayline.OutOfControlActionEnum; import org.dromara.common.sdk.cloudapi.wayline.*;
import org.dromara.common.sdk.cloudapi.wayline.ProgressExtBreakPoint;
import org.dromara.common.sdk.cloudapi.wayline.TaskTypeEnum;
import org.dromara.common.sdk.cloudapi.wayline.WaylineTypeEnum;
import org.hibernate.validator.constraints.Range; import org.hibernate.validator.constraints.Range;
import java.util.List; import java.util.List;
@ -19,38 +17,53 @@ import java.util.List;
@Data @Data
public class CreateJobParam { public class CreateJobParam {
@Schema(description = "uuid不用填写")
private String jobId; private String jobId;
@NotBlank @NotBlank
@Schema(description = "任务名称")
private String name; private String name;
@NotBlank @NotBlank
@Schema(description = "航线id")
private String fileId; private String fileId;
@NotBlank @NotBlank
@Schema(description = "机场sn")
private String dockSn; private String dockSn;
@NotNull @NotNull
@Schema(description = "航线类型")
private WaylineTypeEnum waylineType; private WaylineTypeEnum waylineType;
@NotNull @NotNull
@Schema(description = "航线类型:IMMEDIATE 立即执行")
private TaskTypeEnum taskType; private TaskTypeEnum taskType;
@Range(min = 20, max = 500) @Range(min = 20, max = 500)
@NotNull @NotNull
@Schema(description = "相对机场返回高度")
private Integer rthAltitude; private Integer rthAltitude;
@NotNull @NotNull
@Schema(description = "失控动作")
private OutOfControlActionEnum outOfControlAction; private OutOfControlActionEnum outOfControlAction;
@Range(min = 50, max = 90) @Range(min = 50, max = 90)
@Schema(description = "最大电量")
private Integer minBatteryCapacity; private Integer minBatteryCapacity;
@Schema(description = "最小存储空间")
private Integer minStorageCapacity; private Integer minStorageCapacity;
@Schema(description = "定时飞行(占时不用)")
private List<Long> taskDays; private List<Long> taskDays;
@Schema(description = "定时飞行(占时不用)")
private List<List<Long>> taskPeriods; private List<List<Long>> taskPeriods;
@Schema(description = "断电续费功能(占时不用)")
private ProgressExtBreakPoint breakPoint; private ProgressExtBreakPoint breakPoint;
} }

2
dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/FlightTaskServiceImpl.java

@ -237,7 +237,7 @@ public class FlightTaskServiceImpl extends AbstractWaylineService implements IFl
continue; continue;
} }
Optional<WaylineJobDTO> waylineJobOpt = waylineJobService.createWaylineJob(param, loginUser.getTenantId(), loginUser.getUsername(), new Date(beginTime), new Date(endTime)); Optional<WaylineJobDTO> waylineJobOpt = waylineJobService.createWaylineJob(param, workspaceId, loginUser.getUsername(), new Date(beginTime), new Date(endTime));
if (waylineJobOpt.isEmpty()) { if (waylineJobOpt.isEmpty()) {
throw new SQLException("无法创建路线作业。"); throw new SQLException("无法创建路线作业。");
} }

16
dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java

@ -9,6 +9,7 @@ import org.dom4j.DocumentException;
import org.dom4j.Node; import org.dom4j.Node;
import org.dom4j.io.SAXReader; import org.dom4j.io.SAXReader;
import org.dromara.common.oss.core.OssClient; import org.dromara.common.oss.core.OssClient;
import org.dromara.common.oss.entity.UploadResult;
import org.dromara.common.oss.factory.OssFactory; import org.dromara.common.oss.factory.OssFactory;
import org.dromara.common.sdk.cloudapi.device.DeviceDomainEnum; import org.dromara.common.sdk.cloudapi.device.DeviceDomainEnum;
import org.dromara.common.sdk.cloudapi.device.DeviceEnum; import org.dromara.common.sdk.cloudapi.device.DeviceEnum;
@ -108,7 +109,7 @@ public class WaylineFileServiceImpl implements IWaylineFileService {
if (waylineOpt.isEmpty()) { if (waylineOpt.isEmpty()) {
throw new SQLException(waylineId + " 不存在。"); throw new SQLException(waylineId + " 不存在。");
} }
OssClient storage = OssFactory.instance("wayline_file"); OssClient storage = OssFactory.instance("waylinefile");
return storage.getPrivateUrlURL(waylineOpt.get().getObjectKey(), 3600); return storage.getPrivateUrlURL(waylineOpt.get().getObjectKey(), 3600);
} }
@ -119,12 +120,12 @@ public class WaylineFileServiceImpl implements IWaylineFileService {
file.setWorkspaceId(workspaceId); file.setWorkspaceId(workspaceId);
if (!StringUtils.hasText(file.getSign())) { if (!StringUtils.hasText(file.getSign())) {
OssClient storage = OssFactory.instance("wayline_file"); OssClient storage = OssFactory.instance("waylinefile");
String privateUrl = storage.getPrivateUrl(metadata.getObjectKey(), 3600); String privateUrl = storage.getPrivateUrl(metadata.getObjectKey(), 3600);
try (InputStream object = storage.getObjectContent(privateUrl)) { try (InputStream object = storage.getObjectContent(privateUrl)) {
if (object.available() == 0) { if (object.available() == 0) {
throw new RuntimeException("文件 " + metadata.getObjectKey() + throw new RuntimeException("文件 " + metadata.getObjectKey() +
" 桶中不存在[ wayline_file ]."); " 桶中不存在[ waylinefile ].");
} }
file.setSign(DigestUtils.md5DigestAsHex(object)); file.setSign(DigestUtils.md5DigestAsHex(object));
} catch (IOException e) { } catch (IOException e) {
@ -173,7 +174,7 @@ public class WaylineFileServiceImpl implements IWaylineFileService {
if (!isDel) { if (!isDel) {
return false; return false;
} }
OssClient storage = OssFactory.instance("wayline_file"); OssClient storage = OssFactory.instance("waylinefile");
storage.delete(wayline.getObjectKey()); storage.delete(wayline.getObjectKey());
return true; return true;
} }
@ -187,10 +188,11 @@ public class WaylineFileServiceImpl implements IWaylineFileService {
try { try {
WaylineFileDTO waylineFile = waylineFileOpt.get(); WaylineFileDTO waylineFile = waylineFileOpt.get();
waylineFile.setUsername(creator); waylineFile.setUsername(creator);
OssClient storage = OssFactory.instance("wayline_file"); OssClient storage = OssFactory.instance("waylinefile");
String originalfileName = file.getOriginalFilename(); String originalfileName = file.getOriginalFilename();
String suffix = org.apache.commons.lang3.StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length()); String suffix = org.apache.commons.lang3.StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length());
storage.uploadSuffix( file.getBytes(),suffix,file.getContentType()); UploadResult uploadResult = storage.uploadSuffix(file.getBytes(), suffix, file.getContentType());
waylineFile.setObjectKey(uploadResult.getFilename());
this.saveWaylineFile(workspaceId, waylineFile); this.saveWaylineFile(workspaceId, waylineFile);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
@ -236,7 +238,7 @@ public class WaylineFileServiceImpl implements IWaylineFileService {
DeviceTypeEnum payloadType = DeviceTypeEnum.find(Integer.parseInt(payloadNode.valueOf(KmzFileProperties.TAG_WPML_PREFIX + KmzFileProperties.TAG_PAYLOAD_ENUM_VALUE))); DeviceTypeEnum payloadType = DeviceTypeEnum.find(Integer.parseInt(payloadNode.valueOf(KmzFileProperties.TAG_WPML_PREFIX + KmzFileProperties.TAG_PAYLOAD_ENUM_VALUE)));
DeviceSubTypeEnum payloadSubType = DeviceSubTypeEnum.find(Integer.parseInt(payloadNode.valueOf(KmzFileProperties.TAG_WPML_PREFIX + KmzFileProperties.TAG_PAYLOAD_SUB_ENUM_VALUE))); DeviceSubTypeEnum payloadSubType = DeviceSubTypeEnum.find(Integer.parseInt(payloadNode.valueOf(KmzFileProperties.TAG_WPML_PREFIX + KmzFileProperties.TAG_PAYLOAD_SUB_ENUM_VALUE)));
String templateType = document.valueOf("//" + KmzFileProperties.TAG_WPML_PREFIX + KmzFileProperties.TAG_TEMPLATE_TYPE); String templateType = document.valueOf("//" + KmzFileProperties.TAG_WPML_PREFIX + KmzFileProperties.TAG_TEMPLATE_TYPE);
OssClient storage = OssFactory.instance("wayline_file"); OssClient storage = OssFactory.instance("waylinefile");
return Optional.of(WaylineFileDTO.builder() return Optional.of(WaylineFileDTO.builder()
.droneModelKey(DeviceEnum.find(DeviceDomainEnum.DRONE, type, subType).getDevice()) .droneModelKey(DeviceEnum.find(DeviceDomainEnum.DRONE, type, subType).getDevice())
.payloadModelKeys(List.of(DeviceEnum.find(DeviceDomainEnum.PAYLOAD, payloadType, payloadSubType).getDevice())) .payloadModelKeys(List.of(DeviceEnum.find(DeviceDomainEnum.PAYLOAD, payloadType, payloadSubType).getDevice()))

4
pom.xml

@ -86,12 +86,12 @@
<properties> <properties>
<!-- 环境标识,需要与配置文件的名称相对应 --> <!-- 环境标识,需要与配置文件的名称相对应 -->
<profiles.active>dev</profiles.active> <profiles.active>dev</profiles.active>
<nacos.server>114.235.183.147:8848</nacos.server> <nacos.server>127.0.0.1:8848</nacos.server>
<nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group> <nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
<nacos.config.group>DEFAULT_GROUP</nacos.config.group> <nacos.config.group>DEFAULT_GROUP</nacos.config.group>
<nacos.username>nacos</nacos.username> <nacos.username>nacos</nacos.username>
<nacos.password>nacos</nacos.password> <nacos.password>nacos</nacos.password>
<logstash.address>114.235.183.147:4560</logstash.address> <logstash.address>127.0.0.1:4560</logstash.address>
</properties> </properties>
<activation> <activation>
<!-- 默认环境 --> <!-- 默认环境 -->

Loading…
Cancel
Save