diff --git a/xinnengyuan/ruoyi-admin/src/main/resources/application-prod.yml b/xinnengyuan/ruoyi-admin/src/main/resources/application-prod.yml index 235b008a..5fe94574 100644 --- a/xinnengyuan/ruoyi-admin/src/main/resources/application-prod.yml +++ b/xinnengyuan/ruoyi-admin/src/main/resources/application-prod.yml @@ -336,8 +336,8 @@ ys7: app-key: 3acf9f1a43dc4209841e0893003db0a2 app-secret: 09e29c70ae1161fbc3ce2030fc09ba2e job: - capture-enabled: true # 控制是否启用萤石抓拍任务 - device-sync-enabled: true # 控制是否同步萤石设备 + capture-enabled: false # 控制是否启用萤石抓拍任务 + device-sync-enabled: false # 控制是否同步萤石设备 # 斯巴达算法 sparta: url: http://119.3.204.120:8040 diff --git a/xinnengyuan/ruoyi-admin/src/main/resources/application.yml b/xinnengyuan/ruoyi-admin/src/main/resources/application.yml index a69eabd8..9b5259f3 100644 --- a/xinnengyuan/ruoyi-admin/src/main/resources/application.yml +++ b/xinnengyuan/ruoyi-admin/src/main/resources/application.yml @@ -76,9 +76,9 @@ spring: servlet: multipart: # 单个文件大小 - max-file-size: 200MB + max-file-size: 1024MB # 设置总上传的文件大小 - max-request-size: 200MB + max-request-size: 1024MB mvc: # 设置静态资源路径 防止所有请求都去查静态资源 static-path-pattern: /static/** diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/drone/domain/vo/DroDroneBigPictureVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/drone/domain/vo/DroDroneBigPictureVo.java index 3db3df83..a28176a3 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/drone/domain/vo/DroDroneBigPictureVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/drone/domain/vo/DroDroneBigPictureVo.java @@ -7,10 +7,12 @@ import lombok.Data; import org.dromara.common.translation.annotation.Translation; import org.dromara.common.translation.constant.TransConstant; import org.dromara.drone.domain.DroDroneBigPicture; +import org.dromara.progress.domain.vo.progressplandetail.PgsProgressPlanDetailRecognizerVo; import java.io.Serial; import java.io.Serializable; import java.math.BigDecimal; +import java.util.List; /** @@ -91,6 +93,11 @@ public class DroDroneBigPictureVo implements Serializable { */ private String recognizeResult; + /** + * 识别结果列表 + */ + private String recognizeResultStr; + /** * tif文件 */ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/drone/service/IDroDroneBigPictureService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/drone/service/IDroDroneBigPictureService.java index d63e474e..05ab367c 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/drone/service/IDroDroneBigPictureService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/drone/service/IDroDroneBigPictureService.java @@ -100,6 +100,15 @@ public interface IDroDroneBigPictureService extends IService */ Boolean compressPicture(String ossIds, List compressPicIds); + /** + * 异步合成大图 + * + * @param businessName 业务名称 + * @param imageUrls 图片URL列表 + * @return 任务id + */ + CompletableFuture asyncAddBigPicture(String businessName, List imageUrls); + /** * 异步添加压缩图片 * diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/drone/service/impl/DroDroneBigPictureServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/drone/service/impl/DroDroneBigPictureServiceImpl.java index ae484fab..43e07de3 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/drone/service/impl/DroDroneBigPictureServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/drone/service/impl/DroDroneBigPictureServiceImpl.java @@ -2,6 +2,7 @@ package org.dromara.drone.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -27,7 +28,9 @@ import org.dromara.drone.service.IDroDroneBigPictureService; import org.dromara.manager.dronemanager.DroneManager; import org.dromara.manager.dronemanager.vo.DroneImgMergeProgressVo; import org.dromara.manager.dronemanager.vo.DroneImgMergeUrlVo; +import org.dromara.manager.recognizermanager.enums.RecognizerTypeEnum; import org.dromara.progress.domain.dto.progressplandetail.PgsProgressPlanDetailAINumberReq; +import org.dromara.progress.domain.vo.progressplandetail.PgsProgressPlanDetailRecognizerVo; import org.dromara.progress.service.IPgsProgressPlanDetailService; import org.dromara.system.domain.vo.SysOssVo; import org.dromara.system.service.ISysOssService; @@ -90,11 +93,34 @@ public class DroDroneBigPictureServiceImpl extends ServiceImpl recognizerList = + JSONUtil.toList(pictureVo.getRecognizeResult(), PgsProgressPlanDetailRecognizerVo.class); + if (CollUtil.isNotEmpty(recognizerList)) { + // 1. 按类型名称分组 + Map> groupMap = recognizerList.stream() + .collect(Collectors.groupingBy(r -> { + RecognizerTypeEnum typeEnum = RecognizerTypeEnum.fromValue(r.getType()); + return typeEnum != null ? typeEnum.getText() : "未知类型"; + })); + // 2. 将每组转换为 “类型:name1, name2” + String recognizerStr = groupMap.entrySet().stream() + .map(entry -> { + String type = entry.getKey(); + String names = entry.getValue().stream() + .map(PgsProgressPlanDetailRecognizerVo::getName) + .collect(Collectors.joining(", ")); + return type + ":" + names; + }) + .collect(Collectors.joining(";")); // 组之间用分号分隔 + pictureVo.setRecognizeResultStr(recognizerStr); + } + } } return pictureVo; } @@ -123,13 +149,36 @@ public class DroDroneBigPictureServiceImpl extends ServiceImpl recognizerList = + JSONUtil.toList(pictureVo.getRecognizeResult(), PgsProgressPlanDetailRecognizerVo.class); + if (CollUtil.isNotEmpty(recognizerList)) { + // 1. 按类型名称分组 + Map> groupMap = recognizerList.stream() + .collect(Collectors.groupingBy(r -> { + RecognizerTypeEnum typeEnum = RecognizerTypeEnum.fromValue(r.getType()); + return typeEnum != null ? typeEnum.getText() : "未知类型"; + })); + // 2. 将每组转换为 “类型:name1, name2” + String recognizerStr = groupMap.entrySet().stream() + .map(entry -> { + String type = entry.getKey(); + String names = entry.getValue().stream() + .map(PgsProgressPlanDetailRecognizerVo::getName) + .collect(Collectors.joining(", ")); + return type + ":" + names; + }) + .collect(Collectors.joining(";")); // 组之间用分号分隔 + pictureVo.setRecognizeResultStr(recognizerStr); + } + } } } result.setRecords(records); @@ -173,10 +222,14 @@ public class DroDroneBigPictureServiceImpl extends ServiceImpl { @@ -196,6 +249,26 @@ public class DroDroneBigPictureServiceImpl extends ServiceImpl picIds = StringUtils.splitTo(smallPic, Convert::toLong); + List ossVos = ossService.listByIds(picIds); + List picUrls = ossVos.stream().map(SysOssVo::getUrl).toList(); + // 异步执行大图合并 + self.asyncAddBigPicture(add.getTaskName(), picUrls) + .thenAccept(result -> { + DroDroneBigPicture update = new DroDroneBigPicture(); + update.setId(id); + update.setStatus("2"); + update.setTaskId(result); + this.updateById(update); + }).exceptionally(ex -> { + log.error("无人机大图信息[{}]异步执行合成图片失败", add.getTaskName(), ex); + return null; + }); + } + if (StringUtils.isNotBlank(add.getBigPic()) && StringUtils.isNotBlank(add.getTifFile())) { + return this.createProgressRecognize(id); + } return true; } @@ -254,8 +327,26 @@ public class DroDroneBigPictureServiceImpl extends ServiceImpl asyncAddBigPicture(String businessName, List imageUrls) { + return CompletableFuture.completedFuture(droneManager.createImageMergeTask(businessName, imageUrls)); + } + /** * 异步添加压缩图片 * @@ -516,4 +620,19 @@ public class DroDroneBigPictureServiceImpl extends ServiceImpl imageUrls) { return DroneRequestUtils.createImgMergeTask(droneProperties.getUrl(), businessName, imageUrls); diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/manager/dronemanager/DroneRequestUtils.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/manager/dronemanager/DroneRequestUtils.java index 4c5c9f07..8cfb39e2 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/manager/dronemanager/DroneRequestUtils.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/manager/dronemanager/DroneRequestUtils.java @@ -67,6 +67,7 @@ public class DroneRequestUtils { * * @param businessName 业务名称 * @param imageUrls 图片URL列表 + * @return 任务ID */ public static String createImgMergeTask(String url, String businessName, List imageUrls) { if (StringUtils.isBlank(businessName) || CollUtil.isEmpty(imageUrls)) {