From 8a15e2e6315890c4cbf2ccab86e6c4c770b57eb4 Mon Sep 17 00:00:00 2001 From: maotiantian Date: Wed, 22 Apr 2026 10:44:36 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=8F=E7=BA=AC=E5=BA=A6=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chenhai/system/domain/MapFeatures.java | 61 +++++---- .../service/impl/MapFeaturesServiceImpl.java | 119 ++++++++++++++++-- .../mapper/system/MapFeaturesMapper.xml | 37 +++--- 3 files changed, 168 insertions(+), 49 deletions(-) diff --git a/chenhai-system/src/main/java/com/chenhai/system/domain/MapFeatures.java b/chenhai-system/src/main/java/com/chenhai/system/domain/MapFeatures.java index 8922361..f58b28c 100644 --- a/chenhai-system/src/main/java/com/chenhai/system/domain/MapFeatures.java +++ b/chenhai-system/src/main/java/com/chenhai/system/domain/MapFeatures.java @@ -1,7 +1,7 @@ package com.chenhai.system.domain; -import java.math.BigDecimal; import java.util.Date; +import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -10,7 +10,7 @@ import com.chenhai.common.core.domain.BaseEntity; /** * 地图配套标注管理对象 map_features - * + * * @author ruoyi * @date 2026-04-17 */ @@ -31,73 +31,87 @@ public class MapFeatures extends BaseEntity /** 经度 */ @Excel(name = "经度") - private BigDecimal longitude; + private String longitude; /** 纬度 */ @Excel(name = "纬度") - private BigDecimal latitude; + private String latitude; + + /** 经纬度坐标(合并存储,支持数组格式) */ + @Excel(name = "经纬度坐标") + private Object coordinates; // 改为 Object 类型,支持 String 或 List /** 创建时间 */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd") private Date createdAt; - public void setId(Long id) + public void setId(Long id) { this.id = id; } - public Long getId() + public Long getId() { return id; } - public void setName(String name) + public void setName(String name) { this.name = name; } - public String getName() + public String getName() { return name; } - public void setType(String type) + public void setType(String type) { this.type = type; } - public String getType() + public String getType() { return type; } - public void setLongitude(BigDecimal longitude) + public void setLongitude(String longitude) { this.longitude = longitude; } - public BigDecimal getLongitude() + public String getLongitude() { return longitude; } - public void setLatitude(BigDecimal latitude) + public void setLatitude(String latitude) { this.latitude = latitude; } - public BigDecimal getLatitude() + public String getLatitude() { return latitude; } - public void setCreatedAt(Date createdAt) + public void setCoordinates(Object coordinates) + { + this.coordinates = coordinates; + } + + public Object getCoordinates() + { + return coordinates; + } + + public void setCreatedAt(Date createdAt) { this.createdAt = createdAt; } - public Date getCreatedAt() + public Date getCreatedAt() { return createdAt; } @@ -105,12 +119,13 @@ public class MapFeatures extends BaseEntity @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("id", getId()) - .append("name", getName()) - .append("type", getType()) - .append("longitude", getLongitude()) - .append("latitude", getLatitude()) - .append("createdAt", getCreatedAt()) - .toString(); + .append("id", getId()) + .append("name", getName()) + .append("type", getType()) + .append("longitude", getLongitude()) + .append("latitude", getLatitude()) + .append("coordinates", getCoordinates()) + .append("createdAt", getCreatedAt()) + .toString(); } } diff --git a/chenhai-system/src/main/java/com/chenhai/system/service/impl/MapFeaturesServiceImpl.java b/chenhai-system/src/main/java/com/chenhai/system/service/impl/MapFeaturesServiceImpl.java index 2b6b7a9..6b46609 100644 --- a/chenhai-system/src/main/java/com/chenhai/system/service/impl/MapFeaturesServiceImpl.java +++ b/chenhai-system/src/main/java/com/chenhai/system/service/impl/MapFeaturesServiceImpl.java @@ -1,5 +1,6 @@ package com.chenhai.system.service.impl; +import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -9,67 +10,78 @@ import com.chenhai.system.service.IMapFeaturesService; /** * 地图配套标注管理Service业务层处理 - * + * * @author ruoyi * @date 2026-04-17 */ @Service -public class MapFeaturesServiceImpl implements IMapFeaturesService +public class MapFeaturesServiceImpl implements IMapFeaturesService { @Autowired private MapFeaturesMapper mapFeaturesMapper; /** * 查询地图配套标注管理 - * + * * @param id 地图配套标注管理主键 * @return 地图配套标注管理 */ @Override public MapFeatures selectMapFeaturesById(Long id) { - return mapFeaturesMapper.selectMapFeaturesById(id); + MapFeatures mapFeatures = mapFeaturesMapper.selectMapFeaturesById(id); + convertCoordinatesToArray(mapFeatures); + return mapFeatures; } /** * 查询地图配套标注管理列表 - * + * * @param mapFeatures 地图配套标注管理 * @return 地图配套标注管理 */ @Override public List selectMapFeaturesList(MapFeatures mapFeatures) { - return mapFeaturesMapper.selectMapFeaturesList(mapFeatures); + List list = mapFeaturesMapper.selectMapFeaturesList(mapFeatures); + // 转换每条记录的坐标格式 + for (MapFeatures item : list) { + convertCoordinatesToArray(item); + } + return list; } /** * 新增地图配套标注管理 - * + * * @param mapFeatures 地图配套标注管理 * @return 结果 */ @Override public int insertMapFeatures(MapFeatures mapFeatures) { + // 如果是数组格式,转换为逗号分隔的字符串存储 + convertArrayToCoordinates(mapFeatures); return mapFeaturesMapper.insertMapFeatures(mapFeatures); } /** * 修改地图配套标注管理 - * + * * @param mapFeatures 地图配套标注管理 * @return 结果 */ @Override public int updateMapFeatures(MapFeatures mapFeatures) { + // 如果是数组格式,转换为逗号分隔的字符串存储 + convertArrayToCoordinates(mapFeatures); return mapFeaturesMapper.updateMapFeatures(mapFeatures); } /** * 批量删除地图配套标注管理 - * + * * @param ids 需要删除的地图配套标注管理主键 * @return 结果 */ @@ -81,7 +93,7 @@ public class MapFeaturesServiceImpl implements IMapFeaturesService /** * 删除地图配套标注管理信息 - * + * * @param id 地图配套标注管理主键 * @return 结果 */ @@ -90,4 +102,91 @@ public class MapFeaturesServiceImpl implements IMapFeaturesService { return mapFeaturesMapper.deleteMapFeaturesById(id); } + + /** + * 将逗号分隔的坐标字符串转换为数组格式 + * 输入: "105.70587,38.83020,105.73710,38.83981" + * 输出: [[105.70587, 38.83020], [105.73710, 38.83981]] + * + * @param mapFeatures 地图标注对象 + */ + private void convertCoordinatesToArray(MapFeatures mapFeatures) { + if (mapFeatures == null || mapFeatures.getCoordinates() == null) { + return; + } + + Object coordinates = mapFeatures.getCoordinates(); + + // 如果是字符串格式 + if (coordinates instanceof String) { + String coordStr = (String) coordinates; + if (coordStr == null || coordStr.trim().isEmpty()) { + return; + } + + // 按逗号分割(支持中英文逗号) + String[] parts = coordStr.split("[,,]+"); + + // 检查坐标数量是否为偶数(经度、纬度成对出现) + if (parts.length >= 2 && parts.length % 2 == 0) { + List> coordArray = new ArrayList<>(); + for (int i = 0; i < parts.length; i += 2) { + try { + double lng = Double.parseDouble(parts[i].trim()); + double lat = Double.parseDouble(parts[i + 1].trim()); + List point = new ArrayList<>(); + point.add(lng); + point.add(lat); + coordArray.add(point); + } catch (NumberFormatException e) { + // 解析失败,保持原样 + return; + } + } + mapFeatures.setCoordinates(coordArray); + } + } + } + + /** + * 将数组格式的坐标转换为逗号分隔的字符串 + * 输入: [[105.70587, 38.83020], [105.73710, 38.83981]] + * 输出: "105.70587,38.83020,105.73710,38.83981" + * + * @param mapFeatures 地图标注对象 + */ + private void convertArrayToCoordinates(MapFeatures mapFeatures) { + if (mapFeatures == null || mapFeatures.getCoordinates() == null) { + return; + } + + Object coordinates = mapFeatures.getCoordinates(); + + // 如果是 List 格式(数组) + if (coordinates instanceof List) { + List coordList = (List) coordinates; + if (coordList.isEmpty()) { + return; + } + + StringBuilder sb = new StringBuilder(); + for (Object item : coordList) { + if (item instanceof List) { + List point = (List) item; + if (point.size() >= 2) { + Object lng = point.get(0); + Object lat = point.get(1); + if (sb.length() > 0) { + sb.append(","); + } + sb.append(lng).append(",").append(lat); + } + } + } + + if (sb.length() > 0) { + mapFeatures.setCoordinates(sb.toString()); + } + } + } } diff --git a/chenhai-system/src/main/resources/mapper/system/MapFeaturesMapper.xml b/chenhai-system/src/main/resources/mapper/system/MapFeaturesMapper.xml index 3a8c616..ee748c8 100644 --- a/chenhai-system/src/main/resources/mapper/system/MapFeaturesMapper.xml +++ b/chenhai-system/src/main/resources/mapper/system/MapFeaturesMapper.xml @@ -1,7 +1,7 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> @@ -10,21 +10,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + - select id, name, type, longitude, latitude, created_at from map_features + select id, name, type, longitude, latitude, coordinates, created_at from map_features @@ -38,17 +40,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" name, type, - longitude, - latitude, + longitude, + latitude, + coordinates, created_at, - + #{name}, #{type}, - #{longitude}, - #{latitude}, + #{longitude}, + #{latitude}, + #{coordinates}, #{createdAt}, - + @@ -56,8 +60,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" name = #{name}, type = #{type}, - longitude = #{longitude}, - latitude = #{latitude}, + longitude = #{longitude}, + latitude = #{latitude}, + coordinates = #{coordinates}, created_at = #{createdAt}, where id = #{id}