From f3104f14213028277c883e19301b820ae724bd70 Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Fri, 05 Jun 2026 10:18:08 +0800
Subject: [PATCH] feat(utils): 添加几何数据处理和区域编码转换功能

---
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdPatrolTaskServiceImpl.java |   40 +++++++++++++++++++++++++++++++++++++++-
 1 files changed, 39 insertions(+), 1 deletions(-)

diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdPatrolTaskServiceImpl.java b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdPatrolTaskServiceImpl.java
index c939bc2..b3ee4b7 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdPatrolTaskServiceImpl.java
+++ b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdPatrolTaskServiceImpl.java
@@ -674,7 +674,9 @@
 			param.setSingleTime(DateUtil.format(gdPatrolTaskVO.getExecuteTime(), "yyyy-MM-dd HH:mm:ss"));
  		}
 		if (StringUtil.isNotBlank(gdPatrolTaskVO.getAreaCode())) {
-			param.setRegionCode(gdPatrolTaskVO.getAreaCode());
+			// regionCode : "3600,3608,360802"
+			String regionCode = convertAreaCodeToRegionCode(gdPatrolTaskVO.getAreaCode());
+			param.setRegionCode(regionCode);
 		}
 		if (StringUtil.isNotBlank(gdPatrolTaskVO.getAirportId())) {
 			param.setAirportId(gdPatrolTaskVO.getAirportId());
@@ -753,4 +755,40 @@
 		return baseMapper.selectListByWorkOrderId(workOrderId);
 	}
 
+	/**
+	 * 将区域编码转换为多级行政区划编码格式
+	 * 
+	 * @param areaCode 区域编码(如:360802)
+	 * @return 多级行政区划编码,格式为 "省编码,市编码,区编码"(如:"3600,3608,360802")
+	 */
+	private String convertAreaCodeToRegionCode(String areaCode) {
+		if (StringUtil.isBlank(areaCode)) {
+			return null;
+		}
+
+		// 如果已经是逗号分隔的格式,直接返回
+		if (areaCode.contains(",")) {
+			return areaCode;
+		}
+
+		// 去除空格并确保长度为6位
+		String cleanCode = areaCode.trim();
+		if (cleanCode.length() != 6) {
+			log.warn("区域编码格式不正确,期望6位数字,实际为: {}", cleanCode);
+			return cleanCode;
+		}
+
+		try {
+			// 提取省、市、区三级编码
+			String provinceCode = cleanCode.substring(0, 2) + "00";      // 省级编码(如:3600)
+			String cityCode = cleanCode.substring(0, 4) + "0";           // 市级编码(如:3608)
+			String districtCode = cleanCode;                             // 区级编码(如:360802)
+
+			return provinceCode + "," + cityCode + "," + districtCode;
+		} catch (Exception e) {
+			log.error("区域编码转换失败: {}", e.getMessage());
+			return areaCode;
+		}
+	}
+
 }

--
Gitblit v1.9.3