Browse Source

自动播放直播流

dev
吴远 5 months ago
parent
commit
8a26acb608
  1. 2
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/Dock2ThingVersionEnum.java
  2. 2
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/Dock3ThingVersionEnum.java
  3. 2
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/DockThingVersionEnum.java
  4. 2
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/DroneThingVersionEnum.java
  5. 4
      dk-modules/sample/pom.xml
  6. 31
      dk-modules/sample/src/main/java/org/dromara/sample/job/WaylineDeviceJobBo.java
  7. 75
      dk-modules/sample/src/main/java/org/dromara/sample/job/WaylineDeviceJobExecutor.java
  8. 2
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java
  9. 6
      dk-modules/sample/src/main/java/org/dromara/sample/media/mapper/IFileMapper.java
  10. 4
      dk-modules/sample/src/main/java/org/dromara/sample/media/service/IFileService.java
  11. 6
      dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java
  12. 4
      dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/MediaServiceImpl.java
  13. 6
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/mapper/IWaylineFileMapper.java
  14. 4
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineFileService.java
  15. 6
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java
  16. 11
      dk-modules/sample/src/main/resources/mapper/FileMapper.xml
  17. 10
      dk-modules/sample/src/main/resources/mapper/WaylineDeviceMapper.xml

2
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),

2
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),

2
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),

2
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),

4
dk-modules/sample/pom.xml

@ -148,6 +148,10 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>common-job</artifactId>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>

31
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;
}

75
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<MediaFileEntity> 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<WaylineFileEntity> 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测试成功");
}
}

2
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);

6
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<MediaFileEntity> {
Integer mediaFileCount(@Param("jobId") String jobId);
List<MediaFileEntity> getListBywaylineDeviceJobBo(@Param("waylineDeviceJobBo") WaylineDeviceJobBo waylineDeviceJobBo);
}

4
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<MediaFileEntity> getListBywaylineDeviceJobBo(WaylineDeviceJobBo waylineDeviceJobBo);
}

6
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<MediaFileEntity> getListBywaylineDeviceJobBo(WaylineDeviceJobBo waylineDeviceJobBo) {
return mapper.getListBywaylineDeviceJobBo(waylineDeviceJobBo);
}
/**
* Convert the received file object into a database entity object.
* @param file

4
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());
}

6
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<WaylineFileEntity> {
Page<WaylineFileEntity> getPage(@Param("param") GetWaylineListRequest param, @Param("page") Page<?> page);
List<WaylineFileEntity> getListBywaylineDeviceJobBo(@Param("waylineDeviceJobBo") WaylineDeviceJobBo waylineDeviceJobBo);
}

4
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<AudioFileEntity> getAudioPage(String workspaceId, int pageNum, int pageSize);
List<WaylineFileEntity> getListBywaylineDeviceJobBo(WaylineDeviceJobBo waylineDeviceJobBo);
}

6
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<WaylineFileEntity> getListBywaylineDeviceJobBo(WaylineDeviceJobBo waylineDeviceJobBo) {
return mapper.getListBywaylineDeviceJobBo(waylineDeviceJobBo);
}
private Optional<WaylineFileDTO> validKmzFile(MultipartFile file) {
String filename = file.getOriginalFilename();
if (Objects.nonNull(filename) && !filename.endsWith(WAYLINE_FILE_SUFFIX)) {

11
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}
</select>
<select id="getListBywaylineDeviceJobBo" resultType="org.dromara.sample.media.model.MediaFileEntity">
SELECT
*
FROM media_file mf
<where>
<if test="waylineDeviceJobBo.startDate != null and waylineDeviceJobBo.endDate != null">
AND mf.create_time BETWEEN #{waylineDeviceJobBo.startDate} AND #{waylineDeviceJobBo.endDate}
</if>
</where>
</select>
</mapper>

10
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
</select>
<select id="getListBywaylineDeviceJobBo" resultType="org.dromara.sample.wayline.model.entity.WaylineFileEntity">
SELECT
*
FROM wayline_file wf
<where>
<if test="waylineDeviceJobBo.startDate != null and waylineDeviceJobBo.endDate != null">
AND wf.create_time BETWEEN #{waylineDeviceJobBo.startDate} AND #{waylineDeviceJobBo.endDate}
</if>
</where>
</select>
</mapper>

Loading…
Cancel
Save