From 8a523b85c050dd98444150541466ab6f6ebc4f97 Mon Sep 17 00:00:00 2001
From: zhaowenyu <35589726@qq.com>
Date: Mon, 09 Mar 2026 11:19:35 +0800
Subject: [PATCH] 2026-03-09 标记功能接口调整: 1、ID改为UUID; 2、点、线、面、圆数据增加索引字段sort,以标注各点的顺序; 3、增加is_true字段,用于标记是否在地图上可见;
---
ard-sample/src/main/java/com/ard/sample/annotation/model/dto/AnnotationPointsDTO.java | 2
ard-sample/src/main/java/com/ard/sample/annotation/service/impl/AnnotationServiceImpl.java | 15 +++++
ard-sample/src/main/java/com/ard/sample/annotation/service/IAnnotationDirectoryService.java | 4 +
ard-sample/src/main/java/com/ard/sample/annotation/model/entity/AnnotationDirectoryEntity.java | 25 +++++++
ard-sample/src/main/java/com/ard/sample/annotation/service/IAnnotationService.java | 2
ard-sample/src/main/java/com/ard/sample/annotation/model/dto/AnnotationDTO.java | 10 ++
ard-sample/src/main/java/com/ard/sample/annotation/model/dto/AnnotationDirectoryDTO.java | 7 ++
ard-sample/src/main/java/com/ard/sample/annotation/service/impl/AnnotationDirectoryServiceImpl.java | 17 +++++
ard-admin/src/main/java/com/ard/web/controller/sample/AnnotationController.java | 37 ++++++++++++
ard-sample/src/main/java/com/ard/sample/annotation/model/entity/AnnotationEntity.java | 45 ++++++++++++++-
10 files changed, 155 insertions(+), 9 deletions(-)
diff --git a/ard-admin/src/main/java/com/ard/web/controller/sample/AnnotationController.java b/ard-admin/src/main/java/com/ard/web/controller/sample/AnnotationController.java
index a6c0f77..c80bf7a 100644
--- a/ard-admin/src/main/java/com/ard/web/controller/sample/AnnotationController.java
+++ b/ard-admin/src/main/java/com/ard/web/controller/sample/AnnotationController.java
@@ -64,6 +64,24 @@
return ResponseEntity.ok(result);
}
+ // 新增:修改目录显示状态
+ @ApiOperation("修改目录是否可见")
+ @PutMapping("/dirvisible/{id}/{isTrue}")
+ public ResponseEntity<Map<String, Object>> updateDirectoryVisible(@PathVariable String id, @PathVariable Integer isTrue) {
+ Map<String, Object> result = new HashMap<>();
+ try{
+ boolean success = directoryService.updateDirectoryVisible(id, isTrue);
+ result.put("success", success);
+ result.put("msg", success ? "修改目录是否可见成功" : "修改目录是否可见失败");
+ }
+ catch (Exception e) {
+ log.error("修改目录是否可见异常", e);
+ result.put("success", false);
+ result.put("msg", "修改目录是否可见失败:" + e.getMessage());
+ }
+ return ResponseEntity.ok(result);
+ }
+
@ApiOperation("删除目录及子项")
@DeleteMapping("/directory/{id}")
public ResponseEntity<Map<String, Object>> deleteDirectory(@PathVariable Integer id) {
@@ -117,6 +135,25 @@
return ResponseEntity.ok(result);
}
+ // 新增:修改标注显示状态
+ @ApiOperation("修改标记是否可见")
+ @PutMapping("/annvisible/{id}/{isTrue}")
+ public ResponseEntity<Map<String, Object>> updateAnnotationVisible(@PathVariable String id, @PathVariable Integer isTrue) {
+ Map<String, Object> result = new HashMap<>();
+ try{
+ boolean success = annotationService.updateAnnotationVisible(id, isTrue);
+ result.put("success", success);
+ result.put("msg", success ? "修改标记是否可见成功" : "修改标记是否可见失败");
+ }
+ catch (Exception e) {
+ log.error("修改标记是否可见异常", e);
+ result.put("success", false);
+ result.put("msg", "修改标记是否可见失败:" + e.getMessage());
+ }
+ //boolean result = annotationService.updateAnnotationVisible(id, isTrue);
+ return ResponseEntity.ok(result);
+ }
+
@ApiOperation("删除标记")
@DeleteMapping("/{id}")
public ResponseEntity<Map<String, Object>> deleteAnnotation(@PathVariable Integer id) {
diff --git a/ard-sample/src/main/java/com/ard/sample/annotation/model/dto/AnnotationDTO.java b/ard-sample/src/main/java/com/ard/sample/annotation/model/dto/AnnotationDTO.java
index 66ea70c..49d818d 100644
--- a/ard-sample/src/main/java/com/ard/sample/annotation/model/dto/AnnotationDTO.java
+++ b/ard-sample/src/main/java/com/ard/sample/annotation/model/dto/AnnotationDTO.java
@@ -1,5 +1,6 @@
package com.ard.sample.annotation.model.dto;
+import com.baomidou.mybatisplus.annotation.TableField;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@@ -13,9 +14,9 @@
@Builder
public class AnnotationDTO {
- private Integer id;
+ private String id;
- private Integer directoryId;
+ private String directoryId;
private String name;
@@ -29,6 +30,11 @@
private String drawer;
+ /**
+ * 是否可见:0=可见,1=不可见(默认0)
+ */
+ private Integer isTrue; // 显式设置默认值,避免空值
+
private String description;
private Long createTime;
diff --git a/ard-sample/src/main/java/com/ard/sample/annotation/model/dto/AnnotationDirectoryDTO.java b/ard-sample/src/main/java/com/ard/sample/annotation/model/dto/AnnotationDirectoryDTO.java
index 01afa6b..3077a69 100644
--- a/ard-sample/src/main/java/com/ard/sample/annotation/model/dto/AnnotationDirectoryDTO.java
+++ b/ard-sample/src/main/java/com/ard/sample/annotation/model/dto/AnnotationDirectoryDTO.java
@@ -17,10 +17,15 @@
@NoArgsConstructor
@Builder
public class AnnotationDirectoryDTO {
- private Integer id;
+ private String id;
private String directoryName;
+ /**
+ * 是否可见:0=可见,1=不可见(默认0)
+ */
+ private Integer isTrue;
+
private List<AnnotationDTO> annotations; // 层级返回用
private String directoryRemark;
diff --git a/ard-sample/src/main/java/com/ard/sample/annotation/model/dto/AnnotationPointsDTO.java b/ard-sample/src/main/java/com/ard/sample/annotation/model/dto/AnnotationPointsDTO.java
index eab831b..69f0e81 100644
--- a/ard-sample/src/main/java/com/ard/sample/annotation/model/dto/AnnotationPointsDTO.java
+++ b/ard-sample/src/main/java/com/ard/sample/annotation/model/dto/AnnotationPointsDTO.java
@@ -16,6 +16,8 @@
@JsonInclude(JsonInclude.Include.NON_NULL)
public class AnnotationPointsDTO {
+ private Integer sort;
+
private Double longitude;
private Double latitude;
diff --git a/ard-sample/src/main/java/com/ard/sample/annotation/model/entity/AnnotationDirectoryEntity.java b/ard-sample/src/main/java/com/ard/sample/annotation/model/entity/AnnotationDirectoryEntity.java
index 50dd1c5..e094afe 100644
--- a/ard-sample/src/main/java/com/ard/sample/annotation/model/entity/AnnotationDirectoryEntity.java
+++ b/ard-sample/src/main/java/com/ard/sample/annotation/model/entity/AnnotationDirectoryEntity.java
@@ -15,18 +15,39 @@
@TableName(value = "annotation_directory")
public class AnnotationDirectoryEntity implements Serializable {
- @TableId(type = IdType.AUTO)
- private Integer id;
+ /**
+ * 主键UUID
+ */
+ @TableId(type = IdType.ASSIGN_UUID) // 自动生成UUID
+ private String id;
+ /**
+ * 目录名称
+ */
@TableField(value = "directory_name")
private String directoryName;
+ /**
+ * 是否可见:0=可见,1=不可见(默认0)
+ */
+ @TableField(value = "is_true")
+ private Integer isTrue = 0; // 显式设置默认值,避免空值
+
+ /**
+ * 目录备注
+ */
@TableField(value = "directory_remark")
private String directoryRemark;
+ /**
+ * 创建时间
+ */
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Long createTime;
+ /**
+ * 更新时间
+ */
@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
private Long updateTime;
diff --git a/ard-sample/src/main/java/com/ard/sample/annotation/model/entity/AnnotationEntity.java b/ard-sample/src/main/java/com/ard/sample/annotation/model/entity/AnnotationEntity.java
index 3752036..36a1fe2 100644
--- a/ard-sample/src/main/java/com/ard/sample/annotation/model/entity/AnnotationEntity.java
+++ b/ard-sample/src/main/java/com/ard/sample/annotation/model/entity/AnnotationEntity.java
@@ -14,36 +14,75 @@
@AllArgsConstructor
@TableName(value = "annotation")
public class AnnotationEntity implements Serializable {
- @TableId(type = IdType.AUTO)
- private Integer id;
+ /**
+ * 主键UUID
+ */
+ @TableId(type = IdType.ASSIGN_UUID) // 自动生成UUID
+ private String id;
+ /**
+ * 关联目录ID(UUID)
+ */
@TableField(value = "directory_id")
- private Integer directoryId;
+ private String directoryId;
+ /**
+ * 标注名称
+ */
@TableField(value = "name")
private String name;
+ /**
+ * 标注颜色
+ */
@TableField(value = "color")
private String color;
+ /**
+ * 标注类型(point/line/polygon/circle),1-点 2-线 3-面 4-圆
+ */
@TableField(value = "annotation_type")
private String annotationType;
+ /**
+ * 坐标信息
+ */
@TableField(value = "coordinate_info")
private byte[] coordinateInfo;
+ /**
+ * 关联图片URL
+ */
@TableField(value = "image_url")
private String imageUrl;
+ /**
+ * 绘制人
+ */
@TableField(value = "drawer")
private String drawer;
+ /**
+ * 是否可见:0=可见,1=不可见(默认0)
+ */
+ @TableField(value = "is_true")
+ private Integer isTrue = 0; // 显式设置默认值,避免空值
+
+ /**
+ * 标注简介
+ */
@TableField(value = "description")
private String description;
+ /**
+ * 创建时间
+ */
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Long createTime;
+ /**
+ * 更新时间
+ */
@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
private Long updateTime;
diff --git a/ard-sample/src/main/java/com/ard/sample/annotation/service/IAnnotationDirectoryService.java b/ard-sample/src/main/java/com/ard/sample/annotation/service/IAnnotationDirectoryService.java
index d302d19..abd1529 100644
--- a/ard-sample/src/main/java/com/ard/sample/annotation/service/IAnnotationDirectoryService.java
+++ b/ard-sample/src/main/java/com/ard/sample/annotation/service/IAnnotationDirectoryService.java
@@ -11,6 +11,10 @@
boolean addDirectory(AnnotationDirectoryEntity entity);
// 修改目录
boolean editDirectory(AnnotationDirectoryEntity entity);
+
+ // 修改目录可见性(0=可见,1=不可见)
+ boolean updateDirectoryVisible(String id, Integer isTrue);
+
// 删除目录(级联删除标记)
boolean deleteDirectory(Integer id);
diff --git a/ard-sample/src/main/java/com/ard/sample/annotation/service/IAnnotationService.java b/ard-sample/src/main/java/com/ard/sample/annotation/service/IAnnotationService.java
index da2707f..f04e2df 100644
--- a/ard-sample/src/main/java/com/ard/sample/annotation/service/IAnnotationService.java
+++ b/ard-sample/src/main/java/com/ard/sample/annotation/service/IAnnotationService.java
@@ -9,6 +9,8 @@
boolean addAnnotation(AnnotationEntity entity);
// 修改标记
boolean editAnnotation(AnnotationEntity entity);
+ // 修改标记可见性
+ boolean updateAnnotationVisible(String id, Integer isTrue);
// 删除标记
boolean deleteAnnotation(Integer id);
// 批量删除标记
diff --git a/ard-sample/src/main/java/com/ard/sample/annotation/service/impl/AnnotationDirectoryServiceImpl.java b/ard-sample/src/main/java/com/ard/sample/annotation/service/impl/AnnotationDirectoryServiceImpl.java
index 6ba5f04..68a30f6 100644
--- a/ard-sample/src/main/java/com/ard/sample/annotation/service/impl/AnnotationDirectoryServiceImpl.java
+++ b/ard-sample/src/main/java/com/ard/sample/annotation/service/impl/AnnotationDirectoryServiceImpl.java
@@ -45,6 +45,21 @@
return updateById(entity);
}
+ /**
+ * 新增:修改目录显示状态
+ */
+ @Override
+ public boolean updateDirectoryVisible(String id, Integer isTrue) {
+ if (id == null || id.isEmpty() || isTrue == null || (isTrue != 0 && isTrue != 1)) {
+ log.error("修改目录显示状态失败:参数非法,id={}, isTrue={}", id, isTrue);
+ return false;
+ }
+ AnnotationDirectoryEntity entity = new AnnotationDirectoryEntity();
+ entity.setId(id);
+ entity.setIsTrue(isTrue);
+ return updateById(entity);
+ }
+
@Override
@Transactional(rollbackFor = Exception.class) // 事务保证级联删除
public boolean deleteDirectory(Integer id) {
@@ -74,7 +89,7 @@
// 2. 批量查询所有标注,按目录ID分组(减少数据库查询次数)
List<AnnotationEntity> allAnnotations = annotationService.list();
- Map<Integer, List<AnnotationEntity>> annotationMap = allAnnotations.stream()
+ Map<String, List<AnnotationEntity>> annotationMap = allAnnotations.stream()
.collect(Collectors.groupingBy(AnnotationEntity::getDirectoryId));
// 3. 遍历目录,组装DTO(关联下属标注)
diff --git a/ard-sample/src/main/java/com/ard/sample/annotation/service/impl/AnnotationServiceImpl.java b/ard-sample/src/main/java/com/ard/sample/annotation/service/impl/AnnotationServiceImpl.java
index bf09f45..5c1151f 100644
--- a/ard-sample/src/main/java/com/ard/sample/annotation/service/impl/AnnotationServiceImpl.java
+++ b/ard-sample/src/main/java/com/ard/sample/annotation/service/impl/AnnotationServiceImpl.java
@@ -31,6 +31,21 @@
return updateById(entity);
}
+ /**
+ * 新增:修改标注显示状态
+ */
+ @Override
+ public boolean updateAnnotationVisible(String id, Integer isTrue) {
+ if (id == null || id.isEmpty() || isTrue == null || (isTrue != 0 && isTrue != 1)) {
+ log.error("修改标注显示状态失败:参数非法,id={}, isTrue={}", id, isTrue);
+ return false;
+ }
+ AnnotationEntity entity = new AnnotationEntity();
+ entity.setId(id);
+ entity.setIsTrue(isTrue);
+ return updateById(entity);
+ }
+
@Override
public boolean deleteAnnotation(Integer id) {
if (id == null) {
--
Gitblit v1.9.3