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