diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/Dock2ThingVersionEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/Dock2ThingVersionEnum.java index 4278a9b..fc20294 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/Dock2ThingVersionEnum.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/Dock2ThingVersionEnum.java @@ -27,6 +27,8 @@ public enum Dock2ThingVersionEnum implements IThingVersion { V1_2_4("1.2.4", CloudSDKVersionEnum.V1_0_3), + V1_2_5("1.2.5", CloudSDKVersionEnum.V1_0_3), + V1_3_0("1.3.0", CloudSDKVersionEnum.V1_0_3), diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/Dock3ThingVersionEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/Dock3ThingVersionEnum.java index 9fde53c..8d2daad 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/Dock3ThingVersionEnum.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/Dock3ThingVersionEnum.java @@ -26,6 +26,8 @@ public enum Dock3ThingVersionEnum implements IThingVersion { V1_2_4("1.2.4", CloudSDKVersionEnum.V1_0_3), + V1_2_5("1.2.5", CloudSDKVersionEnum.V1_0_3), + V1_3_0("1.3.0", CloudSDKVersionEnum.V1_0_3), V1_3_1("1.3.1", CloudSDKVersionEnum.V1_0_3), diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/DockThingVersionEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/DockThingVersionEnum.java index 7876fb1..518bd4c 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/DockThingVersionEnum.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/DockThingVersionEnum.java @@ -26,6 +26,8 @@ public enum DockThingVersionEnum implements IThingVersion { V1_2_4("1.2.4", CloudSDKVersionEnum.V1_0_3), + V1_2_5("1.2.5", CloudSDKVersionEnum.V1_0_3), + V1_3_0("1.3.0", CloudSDKVersionEnum.V1_0_3), V1_3_1("1.3.1", CloudSDKVersionEnum.V1_0_3), diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/DroneThingVersionEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/DroneThingVersionEnum.java index bbdef82..f187d9c 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/DroneThingVersionEnum.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/DroneThingVersionEnum.java @@ -29,6 +29,8 @@ public enum DroneThingVersionEnum implements IThingVersion { V1_2_4("1.2.4", CloudSDKVersionEnum.V1_0_3), + V1_2_5("1.2.5", CloudSDKVersionEnum.V1_0_3), + V1_3_0("1.3.0", CloudSDKVersionEnum.V1_0_3), V1_3_1("1.3.1", CloudSDKVersionEnum.V1_3_1), diff --git a/dk-modules/sample/pom.xml b/dk-modules/sample/pom.xml index 1a4c98a..5f62f2b 100644 --- a/dk-modules/sample/pom.xml +++ b/dk-modules/sample/pom.xml @@ -148,6 +148,10 @@ org.springframework.boot spring-boot-starter + + org.dromara + common-job + ${project.artifactId} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/job/WaylineDeviceJobBo.java b/dk-modules/sample/src/main/java/org/dromara/sample/job/WaylineDeviceJobBo.java new file mode 100644 index 0000000..8ca29b6 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/job/WaylineDeviceJobBo.java @@ -0,0 +1,31 @@ +package org.dromara.sample.job; + +import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; +import com.aizuda.snailjob.client.job.core.dto.JobArgs; +import com.aizuda.snailjob.client.job.core.executor.AbstractJobExecutor; +import com.aizuda.snailjob.client.model.ExecuteResult; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.dromara.common.json.utils.JsonUtils; +import org.dromara.sample.wayline.service.IWaylineFileService; +import org.joda.time.DateTime; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * @auther wuyuan + * @data 2025/7/16 + */ +@Data +public class WaylineDeviceJobBo { + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date startDate; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date endDate; + +} + diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/job/WaylineDeviceJobExecutor.java b/dk-modules/sample/src/main/java/org/dromara/sample/job/WaylineDeviceJobExecutor.java new file mode 100644 index 0000000..6dbc9e0 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/job/WaylineDeviceJobExecutor.java @@ -0,0 +1,75 @@ +package org.dromara.sample.job; + +import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; +import com.aizuda.snailjob.client.job.core.dto.JobArgs; +import com.aizuda.snailjob.client.job.core.executor.AbstractJobExecutor; +import com.aizuda.snailjob.client.model.ExecuteResult; +import org.dromara.common.core.utils.file.MimeTypeUtils; +import org.dromara.common.json.utils.JsonUtils; +import org.dromara.common.oss.core.OssClient; +import org.dromara.common.oss.factory.OssFactory; +import org.dromara.sample.media.model.MediaFileEntity; +import org.dromara.sample.media.service.IFileService; +import org.dromara.sample.wayline.mapper.IWaylineFileMapper; +import org.dromara.sample.wayline.model.entity.WaylineFileEntity; +import org.dromara.sample.wayline.model.entity.WaylineJobEntity; +import org.dromara.sample.wayline.service.IWaylineFileService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.io.IOException; +import java.io.InputStream; +import java.util.List; + +/** + * @auther wuyuan + * @data 2025/7/16 + */ +@Component +public class WaylineDeviceJobExecutor { + + @Autowired + private IFileService fileService; + + @Autowired + private IWaylineFileService waylineFileService; + @JobExecutor(name = "mediaFileJob") + protected ExecuteResult doMediaFileJobJobExecute(JobArgs jobArgs) { + WaylineDeviceJobBo waylineDeviceJobBo = JsonUtils.parseObject(jobArgs.getJobParams().toString(), WaylineDeviceJobBo.class); + List mediaFileEntitys = fileService.getListBywaylineDeviceJobBo(waylineDeviceJobBo); + OssClient mediafile = OssFactory.instance("mediafile"); + OssClient mediafileNW = OssFactory.instance("mediafileNW"); + for (MediaFileEntity mediaFileEntity:mediaFileEntitys){ + String privateUrl = mediafile.getPrivateUrl(mediaFileEntity.getObjectKey(), 3600); + try { + InputStream inputStream = mediafile.getObjectContent(privateUrl); + mediafileNW.uploadSuffix(inputStream,mediaFileEntity.getObjectKey(), Long.getLong(String.valueOf(inputStream.available())), mediaFileEntity.getFileType()); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + return ExecuteResult.success("TestJobExecutor测试成功"); + } + + @JobExecutor(name = "waylineFileJob") + protected ExecuteResult doWaylineFileJobExecute(JobArgs jobArgs) { + System.out.println("狗从-------------------------》"); + WaylineDeviceJobBo waylineDeviceJobBo = JsonUtils.parseObject(jobArgs.getJobParams().toString(), WaylineDeviceJobBo.class); + List waylineFileEntities = waylineFileService.getListBywaylineDeviceJobBo(waylineDeviceJobBo); + OssClient waylinefile = OssFactory.instance("waylinefile"); + OssClient waylinefileNW = OssFactory.instance("waylinefileNW"); + for (WaylineFileEntity waylineFileEntity:waylineFileEntities){ + String privateUrl = waylinefile.getPrivateUrl(waylineFileEntity.getObjectKey(), 3600); + try { + InputStream inputStream = waylinefile.getObjectContent(privateUrl); + waylinefileNW.uploadSuffix(inputStream,waylineFileEntity.getObjectKey(), Long.getLong(String.valueOf(inputStream.available())), "kmz"); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + System.out.println("狗从============》"); + return ExecuteResult.success("TestJobExecutor测试成功"); + } +} + diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java index 5fb02f1..39f86d3 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java @@ -186,7 +186,7 @@ public class SDKDeviceService extends AbstractDeviceService { && request.getData().getDroneChargeState().getCapacityPercent() >= 80 && (remainUpload != null && remainUpload == 0)){ deviceQrtzService.getDeviceQrtzFileEntity(device); } - if(!request.getData().getSubDevice().getDeviceOnlineStatus() && request.getData().getModeCode() == DockModeCodeEnum.IDLE){ + if(request.getData().getSubDevice() != null && request.getData().getSubDevice().getDeviceOnlineStatus() != null && !request.getData().getSubDevice().getDeviceOnlineStatus() && request.getData().getModeCode() == DockModeCodeEnum.IDLE){ mediaService.delMediaCount(from); } deviceRedisService.setDeviceOnline(device); diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/mapper/IFileMapper.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/mapper/IFileMapper.java index f1767d9..72f17d0 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/mapper/IFileMapper.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/mapper/IFileMapper.java @@ -3,8 +3,12 @@ package org.dromara.sample.media.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.sample.job.WaylineDeviceJobBo; import org.dromara.sample.media.model.MediaFileEntity; +import java.util.Date; +import java.util.List; + /** * @author sean * @version 0.2 @@ -12,4 +16,6 @@ import org.dromara.sample.media.model.MediaFileEntity; */ public interface IFileMapper extends BaseMapper { Integer mediaFileCount(@Param("jobId") String jobId); + + List getListBywaylineDeviceJobBo(@Param("waylineDeviceJobBo") WaylineDeviceJobBo waylineDeviceJobBo); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/IFileService.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/IFileService.java index 5647319..4f3a256 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/IFileService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/IFileService.java @@ -1,8 +1,10 @@ package org.dromara.sample.media.service; +import org.apache.ibatis.annotations.Param; import org.dromara.common.sdk.cloudapi.media.FlightTask; import org.dromara.common.sdk.cloudapi.media.MediaUploadCallbackRequest; import org.dromara.common.sdk.common.PaginationData; +import org.dromara.sample.job.WaylineDeviceJobBo; import org.dromara.sample.media.model.MediaFileDTO; import org.dromara.sample.media.model.MediaFileEntity; @@ -99,4 +101,6 @@ public interface IFileService { String copyFileHttp(String fileUrl, String originFileUrl, String bucketDkcy); Double getGimbalYawDegree(String fileId); + + List getListBywaylineDeviceJobBo(WaylineDeviceJobBo waylineDeviceJobBo); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java index 4c08441..74554ef 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java @@ -18,6 +18,7 @@ import org.dromara.common.sdk.cloudapi.media.MediaSubFileTypeEnum; import org.dromara.common.sdk.cloudapi.media.MediaUploadCallbackRequest; import org.dromara.common.sdk.common.Pagination; import org.dromara.common.sdk.common.PaginationData; +import org.dromara.sample.job.WaylineDeviceJobBo; import org.dromara.sample.manage.model.dto.DeviceDictionaryDTO; import org.dromara.sample.manage.service.IDeviceDictionaryService; import org.dromara.sample.manage.service.IDeviceProService; @@ -269,6 +270,11 @@ public class FileServiceImpl implements IFileService { return -1.0; } + @Override + public List getListBywaylineDeviceJobBo(WaylineDeviceJobBo waylineDeviceJobBo) { + return mapper.getListBywaylineDeviceJobBo(waylineDeviceJobBo); + } + /** * Convert the received file object into a database entity object. * @param file diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/MediaServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/MediaServiceImpl.java index f6f3f1e..4a7b620 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/MediaServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/MediaServiceImpl.java @@ -95,6 +95,10 @@ public class MediaServiceImpl extends AbstractMediaService implements IMediaServ objects.forEach(jobKey->{ MediaFileCountDTO mediaFileCountDTO = (MediaFileCountDTO) RedisOpsUtils.hashGet(RedisConst.MEDIA_FILE_PREFIX+sn, jobKey.toString()); Integer filesByJobIdCount = fileService.getFilesByJobIdCount(mediaFileCountDTO.getJobId()); + if(mediaFileCountDTO.getMediaCount() == null){ + RedisOpsUtils.hashDel(RedisConst.MEDIA_FILE_PREFIX+sn, new String[]{jobKey.toString()});; + return; + } if(filesByJobIdCount >= mediaFileCountDTO.getMediaCount()){ aiCompareQueueService.addWaylineJobToQueue(mediaFileCountDTO.getJobId()); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/mapper/IWaylineFileMapper.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/mapper/IWaylineFileMapper.java index a35ada5..b04d5d0 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/mapper/IWaylineFileMapper.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/mapper/IWaylineFileMapper.java @@ -5,10 +5,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; import org.dromara.common.sdk.cloudapi.wayline.GetWaylineListRequest; +import org.dromara.sample.job.WaylineDeviceJobBo; +import org.dromara.sample.media.model.MediaFileEntity; import org.dromara.sample.wayline.model.dto.AiCompareQueueDTO; import org.dromara.sample.wayline.model.entity.AiCompareQueueEntity; import org.dromara.sample.wayline.model.entity.WaylineFileEntity; +import java.util.List; + /** * @author sean * @version 0.3 @@ -17,4 +21,6 @@ import org.dromara.sample.wayline.model.entity.WaylineFileEntity; public interface IWaylineFileMapper extends BaseMapper { Page getPage(@Param("param") GetWaylineListRequest param, @Param("page") Page page); + + List getListBywaylineDeviceJobBo(@Param("waylineDeviceJobBo") WaylineDeviceJobBo waylineDeviceJobBo); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineFileService.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineFileService.java index 03f6381..ad635cf 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineFileService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineFileService.java @@ -3,6 +3,8 @@ package org.dromara.sample.wayline.service; import org.dromara.common.sdk.cloudapi.wayline.GetWaylineListRequest; import org.dromara.common.sdk.cloudapi.wayline.GetWaylineListResponse; import org.dromara.common.sdk.common.PaginationData; +import org.dromara.sample.job.WaylineDeviceJobBo; +import org.dromara.sample.media.model.MediaFileEntity; import org.dromara.sample.wayline.model.dto.WaylineFileDTO; import org.dromara.sample.wayline.model.entity.AudioFileEntity; import org.dromara.sample.wayline.model.entity.WaylineFileEntity; @@ -107,4 +109,6 @@ public interface IWaylineFileService { PaginationData getAudioPage(String workspaceId, int pageNum, int pageSize); + List getListBywaylineDeviceJobBo(WaylineDeviceJobBo waylineDeviceJobBo); + } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java index 2136ead..5ca91a6 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java @@ -30,6 +30,7 @@ import org.dromara.common.sdk.common.Pagination; import org.dromara.common.sdk.common.PaginationData; import org.dromara.resource.api.RemoteFileService; import org.dromara.resource.api.domain.RemoteFile; +import org.dromara.sample.job.WaylineDeviceJobBo; import org.dromara.sample.manage.service.IDeviceProService; import org.dromara.sample.manage.service.IDeviceRedisService; import org.dromara.sample.wayline.mapper.IAudioFileMapper; @@ -430,6 +431,11 @@ public class WaylineFileServiceImpl implements IWaylineFileService { } + @Override + public List getListBywaylineDeviceJobBo(WaylineDeviceJobBo waylineDeviceJobBo) { + return mapper.getListBywaylineDeviceJobBo(waylineDeviceJobBo); + } + private Optional validKmzFile(MultipartFile file) { String filename = file.getOriginalFilename(); if (Objects.nonNull(filename) && !filename.endsWith(WAYLINE_FILE_SUFFIX)) { diff --git a/dk-modules/sample/src/main/resources/mapper/FileMapper.xml b/dk-modules/sample/src/main/resources/mapper/FileMapper.xml index 4bf1063..d5de27e 100644 --- a/dk-modules/sample/src/main/resources/mapper/FileMapper.xml +++ b/dk-modules/sample/src/main/resources/mapper/FileMapper.xml @@ -11,4 +11,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" FROM media_file mf where mf.job_id = #{jobId} + + diff --git a/dk-modules/sample/src/main/resources/mapper/WaylineDeviceMapper.xml b/dk-modules/sample/src/main/resources/mapper/WaylineDeviceMapper.xml index e133548..cd24479 100644 --- a/dk-modules/sample/src/main/resources/mapper/WaylineDeviceMapper.xml +++ b/dk-modules/sample/src/main/resources/mapper/WaylineDeviceMapper.xml @@ -20,4 +20,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" GROUP BY wf.wayline_id +