| New file |
| | |
| | | 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()); |
| | | } |
| | | } |
| | | |
| | | } |