Browse Source

Merge remote-tracking branch 'origin/master'

pull/1/head
杨威 3 months ago
parent
commit
30bcd0f6b3
  1. 1
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/TopicConst.java
  2. 7
      dk-common/common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java
  3. 12
      dk-common/common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java
  4. 8
      dk-modules/resource/pom.xml
  5. 3
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java
  6. 23
      dk-modules/sample/src/main/java/org/dromara/sample/media/constant/MinIOConstants.java
  7. 7
      dk-modules/sample/src/main/java/org/dromara/sample/media/service/IFileService.java
  8. 6
      dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java
  9. 29
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/AiCompareController.java
  10. 12
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/mapper/IAiComparePlateMapper.java
  11. 13
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/AiCompareDTO.java
  12. 7
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/AiCompareMediaFileDTO.java
  13. 38
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/AiComparePlateDTO.java
  14. 47
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/FrameDTO.java
  15. 27
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/AiCompareEntity.java
  16. 31
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/AiComparePlateEntity.java
  17. 6
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IAiCompareService.java
  18. 63
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/AiCompareServiceImpl.java
  19. 8
      dk-modules/sample/src/main/resources/mapper/AiCompareMapper.xml
  20. 2
      pom.xml

1
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 COMPARE = "compare";
//画框 //画框
public static final String FRAME = "frame"; public static final String FRAME = "frame";
} }

7
dk-common/common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java

@ -55,10 +55,11 @@ public class PlusWebSocketHandler extends AbstractWebSocketHandler {
return; return;
} }
// 创建WebSocket消息DTO对象 // 创建WebSocket消息DTO对象
WebSocketMessageDto webSocketMessageDto = new WebSocketMessageDto(); /*WebSocketMessageDto webSocketMessageDto = new WebSocketMessageDto();
webSocketMessageDto.setSessionKeys(List.of(loginUser.getUserId())); webSocketMessageDto.setSessionKeys(List.of(loginUser.getUserId()));
webSocketMessageDto.setMessage(message.getPayload()); webSocketMessageDto.setMessage(message.getPayload());*/
WebSocketUtils.publishMessage(webSocketMessageDto); WebSocketUtils.sendMessage(loginUser.getUserId(),"pong");
WebSocketUtils.sendPongMessage(session);
} }
/** /**

12
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(); ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
WebSocketMessageDto broadcastMessage = new WebSocketMessageDto(); String jsonString = mapper.writeValueAsString(message);
broadcastMessage.setMessage(mapper.writeValueAsString(message)); WebSocketSessionHolder.getSessionsAll().forEach(key -> {
RedisUtils.publish(WEB_SOCKET_TOPIC, broadcastMessage, consumer -> { WebSocketSession session = WebSocketSessionHolder.getSessions(key);
log.info("WebSocket发送主题订阅消息topic:{} message:{}", WEB_SOCKET_TOPIC, message); sendMessage(session, jsonString);
}); });
// WebSocketSessionHolder.getSessionsAll().forEach(key -> {
// WebSocketSession session = WebSocketSessionHolder.getSessions(key);
// sendMessage(session, jsonString);
// });
}catch (Exception e) { }catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }

8
dk-modules/resource/pom.xml

@ -92,10 +92,10 @@
<artifactId>common-translation</artifactId> <artifactId>common-translation</artifactId>
</dependency> </dependency>
<dependency> <!-- <dependency>-->
<groupId>org.dromara</groupId> <!-- <groupId>org.dromara</groupId>-->
<artifactId>common-websocket</artifactId> <!-- <artifactId>common-websocket</artifactId>-->
</dependency> <!-- </dependency>-->
<dependency> <dependency>
<groupId>org.dromara</groupId> <groupId>org.dromara</groupId>

3
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.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.business.api.RemoteBusinessTaskService; import org.dromara.business.api.RemoteBusinessTaskService;
import org.dromara.common.core.constant.BusinessConstants; import org.dromara.common.core.constant.BusinessConstants;
import org.dromara.common.core.constant.DeviceQrtzConstants; import org.dromara.common.core.constant.DeviceQrtzConstants;
@ -65,7 +66,7 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService {
private IWaylineFileMapper waylineFileMapper; private IWaylineFileMapper waylineFileMapper;
@Autowired @Autowired
private IFlightTaskService flightTaskService; private IFlightTaskService flightTaskService;
@Autowired @DubboReference
private RemoteBusinessTaskService remoteBusinessTaskService; private RemoteBusinessTaskService remoteBusinessTaskService;
@Override @Override
public TableDataInfo<DeviceQrtzEntity> listManageDeviceQrtz(Page page, DeviceQrtzDTO deviceQrtzDTO) { public TableDataInfo<DeviceQrtzEntity> listManageDeviceQrtz(Page page, DeviceQrtzDTO deviceQrtzDTO) {

23
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";
}

7
dk-modules/sample/src/main/java/org/dromara/sample/media/service/IFileService.java

@ -73,4 +73,11 @@ public interface IFileService {
*/ */
PaginationData<MediaFileDTO> getMediaFilesPaginationByJobId(String workspaceId, long page, long pageSize,String JobId); PaginationData<MediaFileDTO> getMediaFilesPaginationByJobId(String workspaceId, long page, long pageSize,String JobId);
/**
* 算法专用
*/
URL getObjectUrlOne(String bucket,String pathUrl,Integer seconds);
} }

6
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<MediaFileDTO>(records, new Pagination(pageData.getCurrent(), pageData.getSize(), pageData.getTotal())); return new PaginationData<MediaFileDTO>(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. * Convert the received file object into a database entity object.
* @param file * @param file

29
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.AiCompareDTO;
import org.dromara.sample.wayline.model.dto.AiCompareMediaFileDTO; import org.dromara.sample.wayline.model.dto.AiCompareMediaFileDTO;
import org.dromara.sample.wayline.model.dto.AiCompareQueueDTO; 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.AiCompareEntity;
import org.dromara.sample.wayline.model.entity.AiCompareQueueEntity; import org.dromara.sample.wayline.model.entity.AiCompareQueueEntity;
import org.dromara.sample.wayline.model.entity.WaylineJobEntity; import org.dromara.sample.wayline.model.entity.WaylineJobEntity;
@ -74,7 +75,7 @@ public class AiCompareController extends BaseController {
} }
/** /**
* 对比编辑 * 对比编辑详情
* @param id 主键 * @param id 主键
*/ */
@SaCheckPermission("sample:compare:query") @SaCheckPermission("sample:compare:query")
@ -119,13 +120,31 @@ public class AiCompareController extends BaseController {
/** /**
* 画框 提交 * 画框
* 参数jobId
*/ */
@SaCheckPermission("sample:compare:add") @SaCheckPermission("sample:compare:add")
@Log(title = "算法比对", businessType = BusinessType.INSERT) @Log(title = "预警画框", businessType = BusinessType.INSERT)
@RepeatSubmit() @RepeatSubmit()
@PostMapping("/pictureFrame") @PostMapping("/pictureFrame")
public R<Void> pictureFrame(@Validated(AddGroup.class) @RequestBody Map<String,Object> compare) { public R<Void> pictureFrame(@RequestBody FrameDTO frameDTO) {
return toAjax(aiCompareService.pictureFrame(compare)); return toAjax(aiCompareService.pictureFrame(frameDTO));
}
/**
* 算法结果
*/
@PostMapping("/expose")
public R<Void> expose(@RequestBody List<Map<String,Object>> mapList) {
return toAjax(aiCompareService.expose(mapList));
} }
/**
* 算法预警生成
*/
@PostMapping("/expose/alert")
public R<Void> alert(@RequestBody List<Map<String,Object>> mapList) {
return toAjax(aiCompareService.expose(mapList));
}
} }

12
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<AiComparePlateEntity> {
}

13
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.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; 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 Date createTime;
/**
* 更新者
*/
private Long updateBy;
/**
* 更新时间
*/
private Date updateTime;
/** /**
* 请求参数 * 请求参数
@ -121,4 +113,5 @@ public class AiCompareDTO implements Serializable {
@JsonInclude(JsonInclude.Include.NON_EMPTY) @JsonInclude(JsonInclude.Include.NON_EMPTY)
private Map<String, Object> params = new HashMap<>(); private Map<String, Object> params = new HashMap<>();
} }

7
dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/AiCompareMediaFileDTO.java

@ -27,6 +27,7 @@ public class AiCompareMediaFileDTO {
/**上云文件id*/ /**上云文件id*/
private String fileId; private String fileId;
private Long compareId;
@Schema(description = "文件名") @Schema(description = "文件名")
private String fileName; private String fileName;
@ -35,7 +36,7 @@ public class AiCompareMediaFileDTO {
@Schema(description = "文件所属的工作区") @Schema(description = "文件所属的工作区")
private String workspaceId; private String workspaceId;
private String objectKey;
private Date createTime; private Date createTime;
private String jobId; private String jobId;
@ -47,6 +48,8 @@ public class AiCompareMediaFileDTO {
@Schema(description = "模板图url") @Schema(description = "模板图url")
private String mateFilePath; private String mateFilePath;
@Schema(description = "模板图")
private String mateObjectKey;
@Schema(description = "模板拍照时间") @Schema(description = "模板拍照时间")
private Date mateFileDate; private Date mateFileDate;
@ -56,5 +59,5 @@ public class AiCompareMediaFileDTO {
private Integer mateFileIndex; private Integer mateFileIndex;
@Schema(description = "算法图班") @Schema(description = "算法图班")
private Integer patternUrl; private String patternUrl;
} }

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

47
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<Map<String,Object>> frameList;
/**
* 图片地址
*/
private String fileUrl;
}

27
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; package org.dromara.sample.wayline.model.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*; import lombok.*;
import org.dromara.common.mybatis.core.domain.BaseEntity; 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 2025/3/21
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true)
@TableName("ai_compare") @TableName("ai_compare")
public class AiCompareEntity extends BaseEntity { public class AiCompareEntity {
@TableId(type = IdType.AUTO) @TableId(type = IdType.AUTO)
private Long id; private Long id;
@ -64,6 +62,25 @@ public class AiCompareEntity extends BaseEntity {
* 任务id * 任务id
* */ * */
private String jobId; private String jobId;
/**
* 创建部门
*/
private Long createDept;
/**
* 创建者
*/
private Long createId;
/**
* 创建时间
*/
private Date createTime;
} }

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

6
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.common.mybatis.core.page.TableDataInfo;
import org.dromara.sample.wayline.model.dto.AiCompareDTO; import org.dromara.sample.wayline.model.dto.AiCompareDTO;
import org.dromara.sample.wayline.model.dto.AiCompareMediaFileDTO; 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 org.dromara.sample.wayline.model.entity.AiCompareEntity;
import java.util.List; import java.util.List;
@ -24,6 +25,7 @@ public interface IAiCompareService {
AiCompareEntity getInfo(Long id); AiCompareEntity getInfo(Long id);
List<AiCompareMediaFileDTO> queryById(Long id); List<AiCompareMediaFileDTO> queryById(Long id);
Boolean pictureFrame(Map<String,Object> compare); Boolean pictureFrame(FrameDTO frameDTO);
Boolean expose(List<Map<String,Object>> mapList);
Boolean alert(List<Map<String,Object>> mapList);
} }

63
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.apache.ibatis.executor.BatchResult;
import org.dromara.common.core.constant.AiCompareStatusConstants; 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.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; 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.CommonTopicRequest;
import org.dromara.common.sdk.mqtt.MqttGatewayPublish; import org.dromara.common.sdk.mqtt.MqttGatewayPublish;
import org.dromara.common.sdk.mqtt.TopicConst; 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.mapper.IFileMapper;
import org.dromara.sample.media.model.MediaFileEntity; import org.dromara.sample.media.model.MediaFileEntity;
import org.dromara.sample.media.service.IFileService; import org.dromara.sample.media.service.IFileService;
import org.dromara.sample.media.service.IMediaService; import org.dromara.sample.media.service.IMediaService;
import org.dromara.sample.wayline.mapper.IAiCompareMapper; 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.mapper.IWaylineJobMapper;
import org.dromara.sample.wayline.model.dto.AiCompareDTO; import org.dromara.sample.wayline.model.dto.AiCompareDTO;
import org.dromara.sample.wayline.model.dto.AiCompareMediaFileDTO; 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.AiCompareEntity;
import org.dromara.sample.wayline.model.entity.AiComparePlateEntity;
import org.dromara.sample.wayline.model.entity.AiCompareQueueEntity; import org.dromara.sample.wayline.model.entity.AiCompareQueueEntity;
import org.dromara.sample.wayline.model.entity.WaylineJobEntity; import org.dromara.sample.wayline.model.entity.WaylineJobEntity;
import org.dromara.sample.wayline.service.IAiCompareQueueService; import org.dromara.sample.wayline.service.IAiCompareQueueService;
@ -56,6 +62,7 @@ public class AiCompareServiceImpl implements IAiCompareService {
private final IWaylineJobMapper waylineJobMapper; private final IWaylineJobMapper waylineJobMapper;
private final IFileService fileService; private final IFileService fileService;
private final MqttGatewayPublish mqttGatewayPublish; private final MqttGatewayPublish mqttGatewayPublish;
private final IAiComparePlateMapper aiComparePlateMapper;
@Override @Override
public TableDataInfo<AiCompareEntity> queryPageList(AiCompareDTO bo, PageQuery pageQuery) { public TableDataInfo<AiCompareEntity> queryPageList(AiCompareDTO bo, PageQuery pageQuery) {
return TableDataInfo.build(aiCompareMapper.selectPage(pageQuery.build(),this.buildAiCompareDTOQueryWrapper(bo))); return TableDataInfo.build(aiCompareMapper.selectPage(pageQuery.build(),this.buildAiCompareDTOQueryWrapper(bo)));
@ -65,7 +72,7 @@ public class AiCompareServiceImpl implements IAiCompareService {
QueryWrapper<AiCompareEntity> wrapper = Wrappers.query(); QueryWrapper<AiCompareEntity> wrapper = Wrappers.query();
wrapper wrapper
.eq(StringUtils.isNotEmpty(bo.getStatus()), "status",bo.getStatus()) .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.getDeptName()), "lower(dept_name)", StringUtils.lowerCase(bo.getDeptName()))
.like(StringUtils.isNotBlank(bo.getJobName()), "lower(job_name)", StringUtils.lowerCase(bo.getJobName())) .like(StringUtils.isNotBlank(bo.getJobName()), "lower(job_name)", StringUtils.lowerCase(bo.getJobName()))
.between(params.get("beginTime") != null && params.get("endTime") != null, .between(params.get("beginTime") != null && params.get("endTime") != null,
@ -97,7 +104,7 @@ public class AiCompareServiceImpl implements IAiCompareService {
aiCompareEntity.setJobId(serviceInfo.getJobId()); aiCompareEntity.setJobId(serviceInfo.getJobId());
aiCompareEntity.setJobName(serviceInfo.getJobName()); aiCompareEntity.setJobName(serviceInfo.getJobName());
aiCompareEntity.setTotalNum(serviceInfo.getPictureNumber()); aiCompareEntity.setTotalNum(serviceInfo.getPictureNumber());
aiCompareEntity.setCreateBy(loginUser.getUserId()); aiCompareEntity.setCreateId(loginUser.getUserId());
aiCompareEntity.setNickName(loginUser.getNickname()); aiCompareEntity.setNickName(loginUser.getNickname());
aiCompareEntity.setDeptName(loginUser.getDeptName()); aiCompareEntity.setDeptName(loginUser.getDeptName());
aiCompareEntity.setCreateDept(loginUser.getDeptId()); aiCompareEntity.setCreateDept(loginUser.getDeptId());
@ -120,7 +127,7 @@ public class AiCompareServiceImpl implements IAiCompareService {
} }
} }
String topic = TopicConst.IMAGE +TopicConst.COMPARE; String topic = TopicConst.IMAGE +TopicConst.COMPARE;
List<AiCompareMediaFileDTO> mediaFileDTOS = listMediaFile(aiCompareEntity.getJobId()); List<AiCompareMediaFileDTO> mediaFileDTOS = listMediaFile(aiCompareEntity.getJobId(),43200,false);
mqttGatewayPublish.publish(topic, new CommonTopicRequest().setData(mediaFileDTOS),1); mqttGatewayPublish.publish(topic, new CommonTopicRequest().setData(mediaFileDTOS),1);
insertList.add(aiCompareEntity); insertList.add(aiCompareEntity);
} }
@ -128,12 +135,17 @@ public class AiCompareServiceImpl implements IAiCompareService {
List<Long> list =compareDTOList.stream().map(e->Convert.toLong(e.get("queueId"))).collect(Collectors.toList()); List<Long> list =compareDTOList.stream().map(e->Convert.toLong(e.get("queueId"))).collect(Collectors.toList());
return aiCompareQueueService.updateStatus(list,AiCompareStatusConstants.QUEUW_TYPE_1); return aiCompareQueueService.updateStatus(list,AiCompareStatusConstants.QUEUW_TYPE_1);
} }
public List<AiCompareMediaFileDTO> listMediaFile(String jobId){ public List<AiCompareMediaFileDTO> listMediaFile(String jobId,Integer seconds ,boolean isIllegal){
List<AiCompareMediaFileDTO> mediaFileDTOList = aiCompareMapper.listMediaFile(jobId); List<AiCompareMediaFileDTO> mediaFileDTOList = aiCompareMapper.listMediaFile(jobId);
if(!mediaFileDTOList.isEmpty()){ if(!mediaFileDTOList.isEmpty()){
mediaFileDTOList.stream().forEach(e->{ mediaFileDTOList.stream().forEach(e->{
e.setFilePath(fileService.getObjectUrl(e.getWorkspaceId(),e.getFileId()).toString()); e.setFilePath(fileService.getObjectUrlOne(MinIOConstants.BUCKET_MEDIAFILE,e.getObjectKey(),seconds).toString());
e.setMateFilePath(fileService.getObjectUrl(e.getMateWorkspaceId(),e.getMateFileId()).toString()); e.setMateFilePath(fileService.getObjectUrlOne(MinIOConstants.BUCKET_MEDIAFILE,e.getObjectKey(),seconds).toString());
if(isIllegal){
QueryWrapper<AiComparePlateEntity> queryWrapper = new QueryWrapper<AiComparePlateEntity>().eq("file_id", e.getFileId());
AiComparePlateEntity plateEntity = aiComparePlateMapper.selectOne(queryWrapper);
e.setPatternUrl(fileService.getObjectUrlOne(MinIOConstants.BUCKET_PATTERN,plateEntity.getPatternName(),seconds).toString());
}
}); });
} }
return mediaFileDTOList; return mediaFileDTOList;
@ -149,10 +161,11 @@ public class AiCompareServiceImpl implements IAiCompareService {
if(StrUtil.isNotEmpty(templateId)){ if(StrUtil.isNotEmpty(templateId)){
aiCompareEntity.setTemplateId(templateId); aiCompareEntity.setTemplateId(templateId);
} }
aiCompareEntity.setStatus(AiCompareStatusConstants.COMPARE_STATUS_1);
int i = aiCompareMapper.updateById(aiCompareEntity); int i = aiCompareMapper.updateById(aiCompareEntity);
AiCompareEntity compareEntity = aiCompareMapper.selectById(id); AiCompareEntity compareEntity = aiCompareMapper.selectById(id);
String topic = TopicConst.IMAGE +TopicConst.COMPARE; String topic = TopicConst.IMAGE +TopicConst.COMPARE;
List<AiCompareMediaFileDTO> mediaFileDTOS = listMediaFile(compareEntity.getJobId()); List<AiCompareMediaFileDTO> mediaFileDTOS = listMediaFile(compareEntity.getJobId(),43200,false);
mqttGatewayPublish.publish(topic, new CommonTopicRequest().setData(mediaFileDTOS),1); mqttGatewayPublish.publish(topic, new CommonTopicRequest().setData(mediaFileDTOS),1);
return i>0; return i>0;
} }
@ -165,15 +178,43 @@ public class AiCompareServiceImpl implements IAiCompareService {
@Override @Override
public List<AiCompareMediaFileDTO> queryById(Long id) { public List<AiCompareMediaFileDTO> queryById(Long id) {
AiCompareEntity aiCompareEntity = aiCompareMapper.selectById(id); AiCompareEntity aiCompareEntity = aiCompareMapper.selectById(id);
List<AiCompareMediaFileDTO> mediaFileDTOList = aiCompareMapper.listMediaFile(aiCompareEntity.getJobId()); return listMediaFile(aiCompareEntity.getJobId(),3600,true);
return mediaFileDTOList;
} }
@Override @Override
public Boolean pictureFrame(Map<String, Object> 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; return true;
} }
@Override
public Boolean expose(List<Map<String,Object>> mapList) {
if(!mapList.isEmpty()){
List<AiComparePlateDTO> 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<AiComparePlateEntity>().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<Map<String, Object>> mapList) {
return null;
}
} }

8
dk-modules/sample/src/main/resources/mapper/AiCompareMapper.xml

@ -10,15 +10,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="listMediaFile" resultType="org.dromara.sample.wayline.model.dto.AiCompareMediaFileDTO"> <select id="listMediaFile" resultType="org.dromara.sample.wayline.model.dto.AiCompareMediaFileDTO">
SELECT SELECT
ai.id as compareId,
mf.file_index, mf.file_index,
mf.file_id, mf.file_id,
mf.workspace_id,
mf.file_name, mf.file_name,
mf.file_path, mf.object_key,
mf.job_id,
mfi.file_id as mateFileId, mfi.file_id as mateFileId,
mfi.file_name as mateFileName, mfi.file_name as mateFileName,
mfi.workspace_id AS mateWorkspaceId, mfi.object_key AS mateObjectKey,
mfi.file_path AS mateFilePath,
mfi.file_index AS mateFileIndex, mfi.file_index AS mateFileIndex,
mfi.create_time AS mateFileDate mfi.create_time AS mateFileDate
FROM FROM

2
pom.xml

@ -16,7 +16,7 @@
<revision>2.2.2</revision> <revision>2.2.2</revision>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>17</java.version> <java.version>21</java.version>
<spring-boot.version>3.2.11</spring-boot.version> <spring-boot.version>3.2.11</spring-boot.version>
<spring-cloud.version>2023.0.3</spring-cloud.version> <spring-cloud.version>2023.0.3</spring-cloud.version>
<spring-boot-admin.version>3.2.3</spring-boot-admin.version> <spring-boot-admin.version>3.2.3</spring-boot-admin.version>

Loading…
Cancel
Save