Xiajijian
2025-11-29 bd2ead7fc4642833ae6188574e5738407e988c1c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
package com.ard.web.controller.data;
 
import com.alibaba.fastjson2.JSON;
import com.ard.common.utils.uuid.IdUtils;
import com.ard.data.noflyzone.domain.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.data.noflyzone.domain.ArdNoFlyZone;
import com.ard.data.noflyzone.service.IArdNoFlyZoneService;
import com.ard.common.utils.poi.ExcelUtil;
import com.ard.common.core.page.TableDataInfo;
import org.springframework.web.multipart.MultipartFile;
 
/**
 * 禁飞区管理Controller
 *
 * @author ard
 * @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());
        }
    }
 
}