Browse Source

历史映像

pull/1/head
吴远 3 months ago
parent
commit
9d3a5a25cf
  1. 42
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/WaylineJobTypeEnum.java
  2. 3
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceQrtzService.java
  3. 43
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java
  4. 2
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java
  5. 3
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java
  6. 4
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineJobEntity.java
  7. 7
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/param/CreateJobParam.java
  8. 1
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/FlightTaskServiceImpl.java

42
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/WaylineJobTypeEnum.java

@ -0,0 +1,42 @@
package org.dromara.common.sdk.cloudapi.wayline;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import org.dromara.common.sdk.exception.CloudSDKException;
import java.util.Arrays;
/**
* @author sean
* @version 1.7
* @date 2023/10/19
*/
public enum WaylineJobTypeEnum {
PEOPLE_TASK(1),
WISDOM_TASK(2),
INSTRUCT(3),
WORK(4)
;
private final int type;
WaylineJobTypeEnum(int type) {
this.type = type;
}
@JsonValue
public int getType() {
return type;
}
@JsonCreator
public static WaylineJobTypeEnum find(int type) {
return Arrays.stream(values()).filter(typeEnum -> typeEnum.type == type).findAny()
.orElseThrow(() -> new CloudSDKException(WaylineJobTypeEnum.class, type));
}
}

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

@ -9,6 +9,7 @@ import org.dromara.sample.manage.model.dto.DeviceQrtzFileDTO;
import org.dromara.sample.manage.model.entity.DeviceQrtzEntity; import org.dromara.sample.manage.model.entity.DeviceQrtzEntity;
import org.dromara.sample.manage.model.entity.DeviceQrtzFileEntity; import org.dromara.sample.manage.model.entity.DeviceQrtzFileEntity;
import java.sql.SQLException;
import java.text.ParseException; import java.text.ParseException;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@ -53,5 +54,5 @@ public interface IDeviceQrtzService {
Boolean fileSort(Long id ,Integer sort); Boolean fileSort(Long id ,Integer sort);
//通知启用飞行任务 //通知启用飞行任务
DeviceQrtzFileEntity getDeviceQrtzFileEntity(String deviceSn); DeviceQrtzFileEntity getDeviceQrtzFileEntity(DeviceDTO device) throws SQLException;
} }

43
dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java

@ -3,6 +3,7 @@ package org.dromara.sample.manage.service.impl;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -11,6 +12,7 @@ import org.dromara.common.core.constant.DeviceQrtzConstants;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.sdk.cloudapi.wayline.*;
import org.dromara.sample.manage.mapper.IDeviceQrtzDateMapper; import org.dromara.sample.manage.mapper.IDeviceQrtzDateMapper;
import org.dromara.sample.manage.mapper.IDeviceQrtzFileMapper; import org.dromara.sample.manage.mapper.IDeviceQrtzFileMapper;
import org.dromara.sample.manage.mapper.IDeviceQrtzMapper; import org.dromara.sample.manage.mapper.IDeviceQrtzMapper;
@ -25,21 +27,23 @@ import org.dromara.sample.manage.service.IDeviceQrtzDateService;
import org.dromara.sample.manage.service.IDeviceQrtzService; import org.dromara.sample.manage.service.IDeviceQrtzService;
import org.dromara.sample.wayline.mapper.IWaylineFileMapper; import org.dromara.sample.wayline.mapper.IWaylineFileMapper;
import org.dromara.sample.wayline.mapper.IWaylineJobMapper;
import org.dromara.sample.wayline.model.entity.WaylineFileEntity; import org.dromara.sample.wayline.model.entity.WaylineFileEntity;
import org.dromara.sample.wayline.model.param.CreateJobParam;
import org.dromara.sample.wayline.service.IFlightTaskService;
import org.dromara.sample.wayline.service.IWaylineJobService;
import org.dromara.system.api.model.LoginUser; import org.dromara.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.sql.SQLException;
import java.text.ParseException; import java.text.ParseException;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.Collection; import java.util.*;
import java.util.Date;
import java.util.List;
import java.util.Map;
/** /**
* @auther yq * @auther yq
@ -57,6 +61,8 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService {
private IDeviceQrtzDateService deviceQrtzDateService; private IDeviceQrtzDateService deviceQrtzDateService;
@Autowired @Autowired
private IWaylineFileMapper waylineFileMapper; private IWaylineFileMapper waylineFileMapper;
@Autowired
private IFlightTaskService flightTaskService;
@Override @Override
public TableDataInfo<DeviceQrtzEntity> listManageDeviceQrtz(Page page, DeviceQrtzDTO deviceQrtzDTO) { public TableDataInfo<DeviceQrtzEntity> listManageDeviceQrtz(Page page, DeviceQrtzDTO deviceQrtzDTO) {
@ -257,17 +263,18 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService {
@Override @Override
public DeviceQrtzFileEntity getDeviceQrtzFileEntity(String deviceSn) { public DeviceQrtzFileEntity getDeviceQrtzFileEntity(DeviceDTO device) {
if(StrUtil.isNotEmpty(deviceSn)){ if(StrUtil.isNotEmpty(device.getDeviceSn())){
// 获取当前日期 // 获取当前日期
LocalDate currentDate = LocalDate.now(); LocalDate currentDate = LocalDate.now();
// 定义日期格式 // 定义日期格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
DateTimeFormatter formatterS = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 格式化当前日期 // 格式化当前日期
String formattedDate = currentDate.format(formatter); String formattedDate = currentDate.format(formatter);
List<DeviceQrtzFileEntity> qrtzFileEntityList = deviceQrtzFileMapper.selectList(new QueryWrapper<DeviceQrtzFileEntity>().eq("device_sn", deviceSn).eq("exec_date", formattedDate).eq("status", DeviceQrtzConstants.QRTZ_FILE_STATUS_1).orderByAsc("sort")); List<DeviceQrtzFileEntity> qrtzFileEntityList = deviceQrtzFileMapper.selectList(new QueryWrapper<DeviceQrtzFileEntity>().eq("device_sn", device.getDeviceSn()).eq("exec_date", formattedDate).eq("status", DeviceQrtzConstants.QRTZ_FILE_STATUS_1).orderByAsc("sort"));
if(!qrtzFileEntityList.isEmpty()){ if(!qrtzFileEntityList.isEmpty()){
DeviceQrtzFileEntity deviceQrtzFileEntity = qrtzFileEntityList.get(0); DeviceQrtzFileEntity deviceQrtzFileEntity = qrtzFileEntityList.get(0);
List<DeviceQrtzDateEntity> qrtzDateEntityList = deviceQrtzDateMapper.listDeviceQrtzDateByQrtzAndDate(deviceQrtzFileEntity.getQrtzId()); List<DeviceQrtzDateEntity> qrtzDateEntityList = deviceQrtzDateMapper.listDeviceQrtzDateByQrtzAndDate(deviceQrtzFileEntity.getQrtzId());
@ -277,8 +284,28 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService {
for (DeviceQrtzDateEntity qrtzDate : qrtzDateEntityList) { for (DeviceQrtzDateEntity qrtzDate : qrtzDateEntityList) {
if (!currentDateTime.isBefore(Convert.toLocalDateTime(qrtzDate.getStartDate())) && !currentDateTime.isAfter(Convert.toLocalDateTime(qrtzDate.getEndDate()))){ if (!currentDateTime.isBefore(Convert.toLocalDateTime(qrtzDate.getStartDate())) && !currentDateTime.isAfter(Convert.toLocalDateTime(qrtzDate.getEndDate()))){
//获取航线数据发送之类 //获取航线数据发送之类
WaylineFileEntity waylineFileEntity = waylineFileMapper.selectOne(new LambdaQueryWrapper<WaylineFileEntity>().eq(WaylineFileEntity::getWaylineId, deviceQrtzFileEntity.getWaylineId()));
if(waylineFileEntity == null){//更改为异常,当前航线不存在
continue;
}
//获取是否是工单航线,是修改状态 //获取是否是工单航线,是修改状态
CreateJobParam createJobParam = new CreateJobParam();
try {
createJobParam.setName(deviceQrtzFileEntity.getWaylineName()+""+currentDateTime.format(formatterS));
createJobParam.setFileId(deviceQrtzFileEntity.getWaylineId());
createJobParam.setDockSn(device.getDeviceSn());
createJobParam.setWaylineType(WaylineTypeEnum.find(waylineFileEntity.getTemplateTypes()));
createJobParam.setTaskType(TaskTypeEnum.IMMEDIATE);
createJobParam.setJobId(UUID.randomUUID().toString());
//createJobParam.setRthAltitude();
createJobParam.setMinBatteryCapacity(50);
createJobParam.setJobType(WaylineJobTypeEnum.WISDOM_TASK);
createJobParam.setWaylinePrecisionType(WaylinePrecisionTypeEnum.RTK);
createJobParam.setOutOfControlAction(OutOfControlActionEnum.RETURN_TO_HOME);
flightTaskService.publishFlightTask(device.getWorkspaceId(),createJobParam);
}catch (Exception e){
e.printStackTrace();
}
} }

2
dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java

@ -157,7 +157,7 @@ public class SDKDeviceService extends AbstractDeviceService {
executor.execute(new Runnable() { executor.execute(new Runnable() {
@Override @Override
public void run() { public void run() {
deviceQrtzService.getDeviceQrtzFileEntity(device.getDeviceSn()); deviceQrtzService.getDeviceQrtzFileEntity(device);
} }
}); });
} }

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

@ -5,6 +5,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.sdk.cloudapi.wayline.WaylineJobTypeEnum;
import org.dromara.common.sdk.common.HttpResultResponse; import org.dromara.common.sdk.common.HttpResultResponse;
import org.dromara.common.sdk.common.PaginationData; import org.dromara.common.sdk.common.PaginationData;
import org.dromara.sample.wayline.model.dto.WaylineJobDTO; import org.dromara.sample.wayline.model.dto.WaylineJobDTO;
@ -48,7 +49,7 @@ public class WaylineJobController {
@Operation(summary = "创建一个航路任务。", description = "创建一个航路任务") @Operation(summary = "创建一个航路任务。", description = "创建一个航路任务")
public HttpResultResponse createJob(HttpServletRequest request, @Valid @RequestBody CreateJobParam param public HttpResultResponse createJob(HttpServletRequest request, @Valid @RequestBody CreateJobParam param
,@PathVariable(name = "workspace_id") String workspaceId) throws SQLException { ,@PathVariable(name = "workspace_id") String workspaceId) throws SQLException {
param.setJobType(WaylineJobTypeEnum.PEOPLE_TASK);
return flighttaskService.publishFlightTask(workspaceId,param); return flighttaskService.publishFlightTask(workspaceId,param);
} }

4
dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineJobEntity.java

@ -6,6 +6,7 @@ import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.dromara.common.sdk.cloudapi.wayline.ProgressExtBreakPoint; import org.dromara.common.sdk.cloudapi.wayline.ProgressExtBreakPoint;
import org.dromara.common.sdk.cloudapi.wayline.WaylineJobTypeEnum;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
@ -85,6 +86,9 @@ public class WaylineJobEntity implements Serializable {
@TableField("parent_id") @TableField("parent_id")
private String parentId; private String parentId;
@TableField("job_type")
private WaylineJobTypeEnum waylineJobTypeEnum;
@TableField(exist = false) @TableField(exist = false)
private ProgressExtBreakPoint breakPoint; private ProgressExtBreakPoint breakPoint;
} }

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

@ -37,7 +37,6 @@ public class CreateJobParam {
private WaylineTypeEnum waylineType; private WaylineTypeEnum waylineType;
@NotNull @NotNull
@Schema(description = "航线类型:IMMEDIATE 立即执行") @Schema(description = "航线类型:IMMEDIATE 立即执行")
private TaskTypeEnum taskType; private TaskTypeEnum taskType;
@ -58,6 +57,12 @@ public class CreateJobParam {
@Schema(description = "最小存储空间") @Schema(description = "最小存储空间")
private Integer minStorageCapacity; private Integer minStorageCapacity;
@Schema(description = "0:GPS 任务,1:高精度 RTK 任务")
private WaylinePrecisionTypeEnum waylinePrecisionType;
@Schema(description = "1:手动任务,2:自动任务,3:指令飞行,4:工单飞行")
private WaylineJobTypeEnum jobType;
@Schema(description = "定时飞行(占时不用)") @Schema(description = "定时飞行(占时不用)")
private List<Long> taskDays; private List<Long> taskDays;

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

@ -254,6 +254,7 @@ public class FlightTaskServiceImpl extends AbstractWaylineService implements IFl
return HttpResultResponse.success(); return HttpResultResponse.success();
} }
public HttpResultResponse publishOneFlightTask(WaylineJobDTO waylineJob) throws SQLException { public HttpResultResponse publishOneFlightTask(WaylineJobDTO waylineJob) throws SQLException {
boolean isOnline = deviceRedisService.checkDeviceOnline(waylineJob.getDockSn()); boolean isOnline = deviceRedisService.checkDeviceOnline(waylineJob.getDockSn());

Loading…
Cancel
Save