zhaowenyu
2025-11-24 63e503016c78aac218a4c7f9a765bcbb0b1e398e
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
package com.ard.web.controller.device;
 
import com.ard.common.annotation.Log;
import com.ard.common.constant.CameraConstants;
import com.ard.common.constant.DeviceConstants;
import com.ard.common.core.controller.BaseController;
import com.ard.common.core.domain.AjaxResult;
import com.ard.common.core.page.TableDataInfo;
import com.ard.common.enums.BusinessType;
import com.ard.common.utils.poi.ExcelUtil;
import com.ard.device.camera.domain.ArdCamera;
import com.ard.device.camera.service.IArdCameraService;
import com.ard.vtdu.util.ArdTool;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.jdbc.Null;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
 
/**
 * 相机设备Controller
 *
 * @author ard
 * @date 2023-01-31
 */
@Slf4j
@RestController
@RequestMapping("/device/camera")
@Api(tags = "相机管理接口")
public class ArdCameraController extends BaseController {
 
    @Resource
    private IArdCameraService ardCameraService;
 
    /**
     * 查询相机设备列表
     */
    @PreAuthorize("@ss.hasPermi('device:camera:list')")
    @GetMapping("/list")
    @ApiOperation("查询相机设备列表")
    public TableDataInfo list(ArdCamera ardCamera) {
        startPage();
        List<ArdCamera> list = ardCameraService.selectArdCameraList(ardCamera);
        return getDataTable(list);
    }
 
 
    /**
     * 导出相机设备列表
     */
    @ApiOperation("导出相机设备列表")
    @PreAuthorize("@ss.hasPermi('device:camera:export')")
    @Log(title = "相机设备", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, ArdCamera ardCamera) {
        List<ArdCamera> list = ardCameraService.selectArdCameraList(ardCamera);
        ExcelUtil<ArdCamera> util = new ExcelUtil<>(ArdCamera.class);
        util.exportExcel(response, list, "相机设备数据");
    }
 
    /**
     * 获取相机设备详细信息
     */
    @ApiOperation("获取相机设备详细信息")
    @PreAuthorize("@ss.hasPermi('device:camera:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") String id) {
        return success(ardCameraService.selectArdCameraById(id));
    }
 
    /**
     * 新增相机设备
     */
    @ApiOperation("新增相机设备")
    @PreAuthorize("@ss.hasPermi('device:camera:add')")
    @Log(title = "相机设备", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody ArdCamera camera) {
        if (DeviceConstants.NOT_UNIQUE.equals(ardCameraService.checkCameraIpAndPortUnique(camera))) {
            return error("新增相机'" + camera.getIp() + ":" + camera.getPort() + "'失败,相机已存在");
        }
        ArdCamera existingCamera = ardCameraService.checkAirportHasCamera(camera);
        if (existingCamera != null) {
            return error("该机场已被相机【" + existingCamera.getName() + "】(" + existingCamera.getIp() + ") 关联");
        }
        return success(ardCameraService.insertArdCamera(camera));
    }
 
    /**
     * 修改相机设备
     */
    @ApiOperation("修改相机设备")
    @PreAuthorize("@ss.hasPermi('device:camera:edit')")
    @Log(title = "相机设备", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody ArdCamera camera) {
        if (DeviceConstants.NOT_UNIQUE.equals(ardCameraService.checkCameraIpAndPortUnique(camera))) {
            return error("修改相机'" + camera.getIp() + ":" + camera.getPort() + "'失败,相机已存在");
        }
        ArdCamera existingCamera = ardCameraService.checkAirportHasCamera(camera);
        if (existingCamera != null) {
            return error("该机场已被相机【" + existingCamera.getName() + "】(" + existingCamera.getIp() + ") 关联");
        }
        return success(ardCameraService.updateArdCamera(camera));
    }
 
    /**
     * 删除相机设备
     */
    @ApiOperation("删除相机设备")
    @PreAuthorize("@ss.hasPermi('device:camera:remove')")
    @Log(title = "相机设备", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable String[] ids) {
        return toAjax(ardCameraService.deleteArdCameraByIds(ids));
    }
 
 
    @Log(title = "导入相机设备", businessType = BusinessType.IMPORT)
    @PreAuthorize("@ss.hasPermi('device:camera:import')")
    @PostMapping("/importData")
    @ApiOperation("导入相机设备")
    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
        ExcelUtil<ArdCamera> util = new ExcelUtil<ArdCamera>(ArdCamera.class);
        List<ArdCamera> camerasList = util.importExcel(file.getInputStream());
        String operName = getUsername();
        String message = ardCameraService.importCamera(camerasList, updateSupport, operName);
        return success(message);
    }
 
 
    @PostMapping("/importTemplate")
    @ApiOperation("相机设备导入模板")
    public void importTemplate(HttpServletResponse response) {
        ExcelUtil<ArdCamera> util = new ExcelUtil<ArdCamera>(ArdCamera.class);
        util.importTemplateExcel(response, "相机设备数据");
    }
 
}