From f905f4377db462640a4fdd53dc5daa1adfc8c542 Mon Sep 17 00:00:00 2001
From: zhaowenyu <35589726@qq.com>
Date: Tue, 14 Oct 2025 18:30:57 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev
---
ard-admin/src/main/java/com/ard/web/controller/data/ArdNoFlyZoneController.java | 157 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 157 insertions(+), 0 deletions(-)
diff --git a/ard-admin/src/main/java/com/ard/web/controller/data/ArdNoFlyZoneController.java b/ard-admin/src/main/java/com/ard/web/controller/data/ArdNoFlyZoneController.java
new file mode 100644
index 0000000..b701ebe
--- /dev/null
+++ b/ard-admin/src/main/java/com/ard/web/controller/data/ArdNoFlyZoneController.java
@@ -0,0 +1,157 @@
+package com.ard.web.controller.data;
+
+import com.alibaba.fastjson2.JSON;
+import com.ard.common.utils.uuid.IdUtils;
+import com.ard.system.domain.noflyzone.FeatureCollection;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import com.ard.common.annotation.Log;
+import com.ard.common.core.controller.BaseController;
+import com.ard.common.core.domain.AjaxResult;
+import com.ard.common.enums.BusinessType;
+import com.ard.system.domain.noflyzone.ArdNoFlyZone;
+import com.ard.system.service.noflyzone.IArdNoFlyZoneService;
+import com.ard.common.utils.poi.ExcelUtil;
+import com.ard.common.core.page.TableDataInfo;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * 禁飞区管理Controller
+ *
+ * @author ruoyi
+ * @date 2025-10-14
+ */
+@Api(tags = "禁飞区管理")
+@RestController
+@RequestMapping("/data/noflyzone")
+public class ArdNoFlyZoneController extends BaseController
+{
+ @Resource
+ private IArdNoFlyZoneService ardNoFlyZoneService;
+
+ /**
+ * 查询禁飞区管理列表
+ */
+ @ApiOperation("查询禁飞区管理列表")
+ @PreAuthorize("@ss.hasPermi('data:noflyzone:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(ArdNoFlyZone ardNoFlyZone)
+ {
+ startPage();
+ List<ArdNoFlyZone> list = ardNoFlyZoneService.selectArdNoFlyZoneList(ardNoFlyZone);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出禁飞区管理列表
+ */
+ @PreAuthorize("@ss.hasPermi('data:noflyzone:export')")
+ @Log(title = "禁飞区管理", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, ArdNoFlyZone ardNoFlyZone)
+ {
+ List<ArdNoFlyZone> list = ardNoFlyZoneService.selectArdNoFlyZoneList(ardNoFlyZone);
+ ExcelUtil<ArdNoFlyZone> util = new ExcelUtil<ArdNoFlyZone>(ArdNoFlyZone.class);
+ util.exportExcel(response, list, "禁飞区管理数据");
+ }
+
+ /**
+ * 获取禁飞区管理详细信息
+ */
+ @ApiOperation("获取禁飞区管理详细信息")
+ @PreAuthorize("@ss.hasPermi('data:noflyzone:query')")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") String id)
+ {
+ return success(ardNoFlyZoneService.selectArdNoFlyZoneById(id));
+ }
+
+ /**
+ * 新增禁飞区管理
+ */
+ @ApiOperation("新增禁飞区管理")
+ @PreAuthorize("@ss.hasPermi('data:noflyzone:add')")
+ @Log(title = "禁飞区管理", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody ArdNoFlyZone ardNoFlyZone)
+ {
+ return toAjax(ardNoFlyZoneService.insertArdNoFlyZone(ardNoFlyZone));
+ }
+
+ /**
+ * 修改禁飞区管理
+ */
+ @ApiOperation("修改禁飞区管理")
+ @PreAuthorize("@ss.hasPermi('data:noflyzone:edit')")
+ @Log(title = "禁飞区管理", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody ArdNoFlyZone ardNoFlyZone)
+ {
+ return toAjax(ardNoFlyZoneService.updateArdNoFlyZone(ardNoFlyZone));
+ }
+
+ /**
+ * 删除禁飞区管理
+ */
+ @ApiOperation("删除禁飞区管理")
+ @PreAuthorize("@ss.hasPermi('data:noflyzone:remove')")
+ @Log(title = "禁飞区管理", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable String[] ids)
+ {
+ return toAjax(ardNoFlyZoneService.deleteArdNoFlyZoneByIds(ids));
+ }
+
+ /**
+ * 上传 GeoJSON 文件导入禁飞区
+ */
+ @ApiOperation("上传 GeoJSON 文件导入禁飞区")
+ @PreAuthorize("@ss.hasPermi('data:noflyzone:import')")
+ @Log(title = "禁飞区管理", businessType = BusinessType.IMPORT)
+ @PostMapping("/import")
+ public AjaxResult importGeoJson(@RequestPart("file") MultipartFile file) {
+ if (file.isEmpty()) {
+ return AjaxResult.error("上传文件为空");
+ }
+
+ try {
+ // 读取文件内容为字符串
+ String jsonStr = new String(file.getBytes(), StandardCharsets.UTF_8);
+
+ // 解析成 FeatureCollection 对象
+ FeatureCollection featureCollection = JSON.parseObject(jsonStr, FeatureCollection.class);
+
+ int successCount = 0;
+ for (FeatureCollection.Feature feature : featureCollection.getFeatures()) {
+ ArdNoFlyZone zone = new ArdNoFlyZone();
+ zone.setId(IdUtils.simpleUUID());
+ zone.setName(feature.getName() != null ? feature.getName() : "未命名禁飞区");
+
+ // 单独包装 FeatureCollection
+ FeatureCollection singleFc = new FeatureCollection();
+ singleFc.setType("FeatureCollection");
+ singleFc.setName(featureCollection.getName());
+ singleFc.setFeatures(List.of(feature));
+ zone.setGeojson(singleFc);
+
+ // 调用 Service 插入
+ ardNoFlyZoneService.insertArdNoFlyZone(zone);
+ successCount++;
+ }
+
+ return AjaxResult.success("导入成功,共导入 " + successCount + " 条禁飞区");
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ return AjaxResult.error("导入失败:" + e.getMessage());
+ }
+ }
+
+}
--
Gitblit v1.9.3