diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/TopicConst.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/TopicConst.java index c89a4d6..cef713b 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/TopicConst.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/TopicConst.java @@ -44,7 +44,6 @@ public class TopicConst { // 比对 public static final String COMPARE = "compare"; - //画框 public static final String FRAME = "frame"; } diff --git a/dk-common/common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java b/dk-common/common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java index d2f8e7a..a65fd1f 100644 --- a/dk-common/common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java +++ b/dk-common/common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java @@ -55,10 +55,11 @@ public class PlusWebSocketHandler extends AbstractWebSocketHandler { return; } // 创建WebSocket消息DTO对象 - WebSocketMessageDto webSocketMessageDto = new WebSocketMessageDto(); + /*WebSocketMessageDto webSocketMessageDto = new WebSocketMessageDto(); webSocketMessageDto.setSessionKeys(List.of(loginUser.getUserId())); - webSocketMessageDto.setMessage(message.getPayload()); - WebSocketUtils.publishMessage(webSocketMessageDto); + webSocketMessageDto.setMessage(message.getPayload());*/ + WebSocketUtils.sendMessage(loginUser.getUserId(),"pong"); + WebSocketUtils.sendPongMessage(session); } /** diff --git a/dk-common/common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java b/dk-common/common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java index c7e9c95..bf6b127 100644 --- a/dk-common/common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java +++ b/dk-common/common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java @@ -98,15 +98,11 @@ public class WebSocketUtils { ObjectMapper mapper = new ObjectMapper(); mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); - WebSocketMessageDto broadcastMessage = new WebSocketMessageDto(); - broadcastMessage.setMessage(mapper.writeValueAsString(message)); - RedisUtils.publish(WEB_SOCKET_TOPIC, broadcastMessage, consumer -> { - log.info("WebSocket发送主题订阅消息topic:{} message:{}", WEB_SOCKET_TOPIC, message); + String jsonString = mapper.writeValueAsString(message); + WebSocketSessionHolder.getSessionsAll().forEach(key -> { + WebSocketSession session = WebSocketSessionHolder.getSessions(key); + sendMessage(session, jsonString); }); -// WebSocketSessionHolder.getSessionsAll().forEach(key -> { -// WebSocketSession session = WebSocketSessionHolder.getSessions(key); -// sendMessage(session, jsonString); -// }); }catch (Exception e) { e.printStackTrace(); } diff --git a/dk-modules/resource/pom.xml b/dk-modules/resource/pom.xml index c7df081..66b0498 100644 --- a/dk-modules/resource/pom.xml +++ b/dk-modules/resource/pom.xml @@ -92,10 +92,10 @@ common-translation - - org.dromara - common-websocket - + + + + org.dromara diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java index 4a8dee0..146e5e0 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.business.api.RemoteBusinessTaskService; import org.dromara.common.core.constant.BusinessConstants; import org.dromara.common.core.constant.DeviceQrtzConstants; @@ -65,7 +66,7 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService { private IWaylineFileMapper waylineFileMapper; @Autowired private IFlightTaskService flightTaskService; - @Autowired + @DubboReference private RemoteBusinessTaskService remoteBusinessTaskService; @Override public TableDataInfo listManageDeviceQrtz(Page page, DeviceQrtzDTO deviceQrtzDTO) { diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/constant/MinIOConstants.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/constant/MinIOConstants.java new file mode 100644 index 0000000..91d8b98 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/constant/MinIOConstants.java @@ -0,0 +1,23 @@ +package org.dromara.sample.media.constant; + +/** + * @auther yq + * @data 2025/3/28 + */ +public interface MinIOConstants { + + + //桶名称 无人机图片 + String BUCKET_MEDIAFILE = "mediafile"; + + //桶名称 默认数据 + String BUCKET_MINIO = "minio"; + + //桶名称 航线文件 + String BUCKET_WAYLINEFILE = "waylinefile"; + + //桶名称 预警文件 + String BUCKET_ALERT = "alert"; + //桶名称 图斑 + String BUCKET_PATTERN = "pattern"; +} 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 df29c68..dead30b 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 @@ -73,4 +73,11 @@ public interface IFileService { */ PaginationData getMediaFilesPaginationByJobId(String workspaceId, long page, long pageSize,String JobId); + + /** + * 算法专用 + */ + URL getObjectUrlOne(String bucket,String pathUrl,Integer seconds); + + } 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 b37e442..524fa2b 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 @@ -143,6 +143,12 @@ public class FileServiceImpl implements IFileService { return new PaginationData(records, new Pagination(pageData.getCurrent(), pageData.getSize(), pageData.getTotal())); } + @Override + public URL getObjectUrlOne(String bucket,String pathUrl,Integer seconds) { + OssClient storage = OssFactory.instance(bucket); + return storage.getPrivateUrlURL(pathUrl,seconds); + } + /** * Convert the received file object into a database entity object. * @param file diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/AiCompareController.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/AiCompareController.java index e845892..251489c 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/AiCompareController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/AiCompareController.java @@ -16,6 +16,7 @@ import org.dromara.common.web.core.BaseController; import org.dromara.sample.wayline.model.dto.AiCompareDTO; import org.dromara.sample.wayline.model.dto.AiCompareMediaFileDTO; import org.dromara.sample.wayline.model.dto.AiCompareQueueDTO; +import org.dromara.sample.wayline.model.dto.FrameDTO; import org.dromara.sample.wayline.model.entity.AiCompareEntity; import org.dromara.sample.wayline.model.entity.AiCompareQueueEntity; import org.dromara.sample.wayline.model.entity.WaylineJobEntity; @@ -74,7 +75,7 @@ public class AiCompareController extends BaseController { } /** - * 对比编辑 + * 对比编辑详情 * @param id 主键 */ @SaCheckPermission("sample:compare:query") @@ -119,13 +120,31 @@ public class AiCompareController extends BaseController { /** - * 画框 提交 + * 画框 + * 参数:jobId */ @SaCheckPermission("sample:compare:add") - @Log(title = "算法比对", businessType = BusinessType.INSERT) + @Log(title = "预警画框", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping("/pictureFrame") - public R pictureFrame(@Validated(AddGroup.class) @RequestBody Map compare) { - return toAjax(aiCompareService.pictureFrame(compare)); + public R pictureFrame(@RequestBody FrameDTO frameDTO) { + return toAjax(aiCompareService.pictureFrame(frameDTO)); + } + + /** + * 算法结果 + */ + @PostMapping("/expose") + public R expose(@RequestBody List> mapList) { + return toAjax(aiCompareService.expose(mapList)); } + + /** + * 算法预警生成 + */ + @PostMapping("/expose/alert") + public R alert(@RequestBody List> mapList) { + return toAjax(aiCompareService.expose(mapList)); + } + } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/mapper/IAiComparePlateMapper.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/mapper/IAiComparePlateMapper.java new file mode 100644 index 0000000..be4f769 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/mapper/IAiComparePlateMapper.java @@ -0,0 +1,12 @@ +package org.dromara.sample.wayline.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.dromara.sample.wayline.model.entity.AiComparePlateEntity; + +/** + * @auther yq + * @data 2025/3/28 + */ +public interface IAiComparePlateMapper extends BaseMapper { + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/AiCompareDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/AiCompareDTO.java index 358f608..a45a158 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/AiCompareDTO.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/AiCompareDTO.java @@ -17,6 +17,7 @@ import java.io.Serial; import java.io.Serializable; import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -94,7 +95,7 @@ public class AiCompareDTO implements Serializable { * 创建者 */ - private Long createBy; + private Long createId; /** *用户昵称 * */ @@ -104,16 +105,7 @@ public class AiCompareDTO implements Serializable { */ private Date createTime; - /** - * 更新者 - */ - - private Long updateBy; - /** - * 更新时间 - */ - private Date updateTime; /** * 请求参数 @@ -121,4 +113,5 @@ public class AiCompareDTO implements Serializable { @JsonInclude(JsonInclude.Include.NON_EMPTY) private Map params = new HashMap<>(); + } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/AiCompareMediaFileDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/AiCompareMediaFileDTO.java index 0b9761e..ca4ee70 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/AiCompareMediaFileDTO.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/AiCompareMediaFileDTO.java @@ -27,6 +27,7 @@ public class AiCompareMediaFileDTO { /**上云文件id*/ private String fileId; + private Long compareId; @Schema(description = "文件名") private String fileName; @@ -35,7 +36,7 @@ public class AiCompareMediaFileDTO { @Schema(description = "文件所属的工作区") private String workspaceId; - + private String objectKey; private Date createTime; private String jobId; @@ -47,6 +48,8 @@ public class AiCompareMediaFileDTO { @Schema(description = "模板图url") private String mateFilePath; + @Schema(description = "模板图") + private String mateObjectKey; @Schema(description = "模板拍照时间") private Date mateFileDate; @@ -56,5 +59,5 @@ public class AiCompareMediaFileDTO { private Integer mateFileIndex; @Schema(description = "算法图班") - private Integer patternUrl; + private String patternUrl; } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/AiComparePlateDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/AiComparePlateDTO.java new file mode 100644 index 0000000..7ff06c1 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/AiComparePlateDTO.java @@ -0,0 +1,38 @@ +package org.dromara.sample.wayline.model.dto; + +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.sample.wayline.model.entity.AiCompareEntity; +import org.dromara.sample.wayline.model.entity.AiComparePlateEntity; + +/** + * @auther yq + * @data 2025/3/28 + */ + +@Data +@EqualsAndHashCode() +@AutoMapper(target = AiComparePlateEntity.class, reverseConvertGenerate = false) +public class AiComparePlateDTO{ + + private Long id; + /** + * 比对id + * */ + private Long compareId; + /** + * 任务id + * */ + private String jobId; + + /** + * 图片id + * */ + private String fileId; + + /** + * 图斑地址 + * */ + private String patternName; +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/FrameDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/FrameDTO.java new file mode 100644 index 0000000..908171f --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/FrameDTO.java @@ -0,0 +1,47 @@ +package org.dromara.sample.wayline.model.dto; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; +import java.util.Map; + +/** + * @auther yq + * @data 2025/3/28 + */ +@Data +@EqualsAndHashCode() +public class FrameDTO { + + + /** + * 比对列表主键id + */ + + private Long compareId; + + /** + * 图片id + * */ + + private String fileId; + + /** + * jobId + */ + + private String jobId; + /** + * + * 像素坐标集合 + * */ + private List> frameList; + + + /** + * 图片地址 + */ + + private String fileUrl; +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/AiCompareEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/AiCompareEntity.java index 563351a..d848863 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/AiCompareEntity.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/AiCompareEntity.java @@ -1,11 +1,10 @@ package org.dromara.sample.wayline.model.entity; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import lombok.*; import org.dromara.common.mybatis.core.domain.BaseEntity; +import java.util.Date; /** @@ -13,9 +12,8 @@ import org.dromara.common.mybatis.core.domain.BaseEntity; * @data 2025/3/21 */ @Data -@EqualsAndHashCode(callSuper = true) @TableName("ai_compare") -public class AiCompareEntity extends BaseEntity { +public class AiCompareEntity { @TableId(type = IdType.AUTO) private Long id; @@ -64,6 +62,25 @@ public class AiCompareEntity extends BaseEntity { * 任务id * */ private String jobId; + /** + * 创建部门 + */ + + private Long createDept; + + /** + * 创建者 + */ + + private Long createId; + + /** + * 创建时间 + */ + + private Date createTime; + + } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/AiComparePlateEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/AiComparePlateEntity.java new file mode 100644 index 0000000..7265301 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/AiComparePlateEntity.java @@ -0,0 +1,31 @@ +package org.dromara.sample.wayline.model.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @auther yq + * @data 2025/3/28 + */ + +@Data +@EqualsAndHashCode() +@TableName("ai_compare_plate") +public class AiComparePlateEntity { + + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 图片id + * */ + private String fileId; + + /** + * 图斑地址 + * */ + private String patternName; +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IAiCompareService.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IAiCompareService.java index 9c08aef..499b94f 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IAiCompareService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IAiCompareService.java @@ -4,6 +4,7 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.sample.wayline.model.dto.AiCompareDTO; import org.dromara.sample.wayline.model.dto.AiCompareMediaFileDTO; +import org.dromara.sample.wayline.model.dto.FrameDTO; import org.dromara.sample.wayline.model.entity.AiCompareEntity; import java.util.List; @@ -24,6 +25,7 @@ public interface IAiCompareService { AiCompareEntity getInfo(Long id); List queryById(Long id); - Boolean pictureFrame(Map compare); - + Boolean pictureFrame(FrameDTO frameDTO); + Boolean expose(List> mapList); + Boolean alert(List> mapList); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/AiCompareServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/AiCompareServiceImpl.java index 37dd8e1..132a052 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/AiCompareServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/AiCompareServiceImpl.java @@ -12,6 +12,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.executor.BatchResult; import org.dromara.common.core.constant.AiCompareStatusConstants; +import org.dromara.common.core.constant.BusinessConstants; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -19,15 +20,20 @@ import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.sdk.mqtt.CommonTopicRequest; import org.dromara.common.sdk.mqtt.MqttGatewayPublish; import org.dromara.common.sdk.mqtt.TopicConst; +import org.dromara.sample.media.constant.MinIOConstants; import org.dromara.sample.media.mapper.IFileMapper; import org.dromara.sample.media.model.MediaFileEntity; import org.dromara.sample.media.service.IFileService; import org.dromara.sample.media.service.IMediaService; import org.dromara.sample.wayline.mapper.IAiCompareMapper; +import org.dromara.sample.wayline.mapper.IAiComparePlateMapper; import org.dromara.sample.wayline.mapper.IWaylineJobMapper; import org.dromara.sample.wayline.model.dto.AiCompareDTO; import org.dromara.sample.wayline.model.dto.AiCompareMediaFileDTO; +import org.dromara.sample.wayline.model.dto.AiComparePlateDTO; +import org.dromara.sample.wayline.model.dto.FrameDTO; import org.dromara.sample.wayline.model.entity.AiCompareEntity; +import org.dromara.sample.wayline.model.entity.AiComparePlateEntity; import org.dromara.sample.wayline.model.entity.AiCompareQueueEntity; import org.dromara.sample.wayline.model.entity.WaylineJobEntity; import org.dromara.sample.wayline.service.IAiCompareQueueService; @@ -56,6 +62,7 @@ public class AiCompareServiceImpl implements IAiCompareService { private final IWaylineJobMapper waylineJobMapper; private final IFileService fileService; private final MqttGatewayPublish mqttGatewayPublish; + private final IAiComparePlateMapper aiComparePlateMapper; @Override public TableDataInfo queryPageList(AiCompareDTO bo, PageQuery pageQuery) { return TableDataInfo.build(aiCompareMapper.selectPage(pageQuery.build(),this.buildAiCompareDTOQueryWrapper(bo))); @@ -65,7 +72,7 @@ public class AiCompareServiceImpl implements IAiCompareService { QueryWrapper wrapper = Wrappers.query(); wrapper .eq(StringUtils.isNotEmpty(bo.getStatus()), "status",bo.getStatus()) - .eq(ObjectUtil.isNotEmpty(bo.getCreateBy()), "create_by",bo.getCreateBy()) + .eq(ObjectUtil.isNotEmpty(bo.getCreateId()), "create_by",bo.getCreateId()) .like(StringUtils.isNotBlank(bo.getDeptName()), "lower(dept_name)", StringUtils.lowerCase(bo.getDeptName())) .like(StringUtils.isNotBlank(bo.getJobName()), "lower(job_name)", StringUtils.lowerCase(bo.getJobName())) .between(params.get("beginTime") != null && params.get("endTime") != null, @@ -97,7 +104,7 @@ public class AiCompareServiceImpl implements IAiCompareService { aiCompareEntity.setJobId(serviceInfo.getJobId()); aiCompareEntity.setJobName(serviceInfo.getJobName()); aiCompareEntity.setTotalNum(serviceInfo.getPictureNumber()); - aiCompareEntity.setCreateBy(loginUser.getUserId()); + aiCompareEntity.setCreateId(loginUser.getUserId()); aiCompareEntity.setNickName(loginUser.getNickname()); aiCompareEntity.setDeptName(loginUser.getDeptName()); aiCompareEntity.setCreateDept(loginUser.getDeptId()); @@ -120,7 +127,7 @@ public class AiCompareServiceImpl implements IAiCompareService { } } String topic = TopicConst.IMAGE +TopicConst.COMPARE; - List mediaFileDTOS = listMediaFile(aiCompareEntity.getJobId()); + List mediaFileDTOS = listMediaFile(aiCompareEntity.getJobId(),43200,false); mqttGatewayPublish.publish(topic, new CommonTopicRequest().setData(mediaFileDTOS),1); insertList.add(aiCompareEntity); } @@ -128,12 +135,17 @@ public class AiCompareServiceImpl implements IAiCompareService { List list =compareDTOList.stream().map(e->Convert.toLong(e.get("queueId"))).collect(Collectors.toList()); return aiCompareQueueService.updateStatus(list,AiCompareStatusConstants.QUEUW_TYPE_1); } - public List listMediaFile(String jobId){ + public List listMediaFile(String jobId,Integer seconds ,boolean isIllegal){ List mediaFileDTOList = aiCompareMapper.listMediaFile(jobId); if(!mediaFileDTOList.isEmpty()){ mediaFileDTOList.stream().forEach(e->{ - e.setFilePath(fileService.getObjectUrl(e.getWorkspaceId(),e.getFileId()).toString()); - e.setMateFilePath(fileService.getObjectUrl(e.getMateWorkspaceId(),e.getMateFileId()).toString()); + e.setFilePath(fileService.getObjectUrlOne(MinIOConstants.BUCKET_MEDIAFILE,e.getObjectKey(),seconds).toString()); + e.setMateFilePath(fileService.getObjectUrlOne(MinIOConstants.BUCKET_MEDIAFILE,e.getObjectKey(),seconds).toString()); + if(isIllegal){ + QueryWrapper queryWrapper = new QueryWrapper().eq("file_id", e.getFileId()); + AiComparePlateEntity plateEntity = aiComparePlateMapper.selectOne(queryWrapper); + e.setPatternUrl(fileService.getObjectUrlOne(MinIOConstants.BUCKET_PATTERN,plateEntity.getPatternName(),seconds).toString()); + } }); } return mediaFileDTOList; @@ -149,10 +161,11 @@ public class AiCompareServiceImpl implements IAiCompareService { if(StrUtil.isNotEmpty(templateId)){ aiCompareEntity.setTemplateId(templateId); } + aiCompareEntity.setStatus(AiCompareStatusConstants.COMPARE_STATUS_1); int i = aiCompareMapper.updateById(aiCompareEntity); AiCompareEntity compareEntity = aiCompareMapper.selectById(id); String topic = TopicConst.IMAGE +TopicConst.COMPARE; - List mediaFileDTOS = listMediaFile(compareEntity.getJobId()); + List mediaFileDTOS = listMediaFile(compareEntity.getJobId(),43200,false); mqttGatewayPublish.publish(topic, new CommonTopicRequest().setData(mediaFileDTOS),1); return i>0; } @@ -165,15 +178,43 @@ public class AiCompareServiceImpl implements IAiCompareService { @Override public List queryById(Long id) { AiCompareEntity aiCompareEntity = aiCompareMapper.selectById(id); - List mediaFileDTOList = aiCompareMapper.listMediaFile(aiCompareEntity.getJobId()); - return mediaFileDTOList; + return listMediaFile(aiCompareEntity.getJobId(),3600,true); } - @Override - public Boolean pictureFrame(Map compare) { + public Boolean pictureFrame(FrameDTO frameDTO) { + if(!frameDTO.getFrameList().isEmpty()){ + throw new RuntimeException("未获取到违建数据"); + } + String topic = TopicConst.IMAGE +TopicConst.FRAME; + mqttGatewayPublish.publish(topic,new CommonTopicRequest().setData(frameDTO),1); return true; } + @Override + public Boolean expose(List> mapList) { + if(!mapList.isEmpty()){ + List plateDTOS = Convert.toList(AiComparePlateDTO.class, mapList); + plateDTOS.parallelStream().forEach(e-> { + AiComparePlateEntity plateEntity = new AiComparePlateEntity(); + plateEntity.setFileId(e.getFileId()); + plateEntity.setPatternName(e.getPatternName()); + aiComparePlateMapper.delete(new QueryWrapper().eq("file_id", e.getFileId())); + aiComparePlateMapper.insert(plateEntity); + }); + Long compareId = plateDTOS.get(0).getCompareId(); + AiCompareEntity compareEntity = aiCompareMapper.selectById(compareId); + compareEntity.setStatus(AiCompareStatusConstants.COMPARE_STATUS_2); + compareEntity.setIllegalNum(plateDTOS.size()); + aiCompareMapper.updateById(compareEntity); + } + return true; + } + + @Override + public Boolean alert(List> mapList) { + return null; + } + } diff --git a/dk-modules/sample/src/main/resources/mapper/AiCompareMapper.xml b/dk-modules/sample/src/main/resources/mapper/AiCompareMapper.xml index 3b7b48d..47f725b 100644 --- a/dk-modules/sample/src/main/resources/mapper/AiCompareMapper.xml +++ b/dk-modules/sample/src/main/resources/mapper/AiCompareMapper.xml @@ -10,15 +10,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"