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
158
159
160
161
162
163
164
165
166
167
168
169
170
package com.ruoyi.wrzs.access.controller;
 
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.wrzs.access.pojo.AccessGate;
import com.ruoyi.wrzs.access.pojo.AccessPerson;
import com.ruoyi.wrzs.access.pojo.AccessRecord;
import com.ruoyi.wrzs.access.pojo.AccessVehicle;
import com.ruoyi.wrzs.access.service.AccessService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
 
import java.util.List;
 
/**
 * 门禁管理
 * <p>
 * 车辆:车牌识别 + RFID;人员:人脸识别 + 工卡;与地磅联动控制放行
 */
@Api(tags = "门禁管理")
@AllArgsConstructor
@RestController
@RequestMapping("/environmentAccess")
public class AccessController {
 
    private final AccessService accessService;
 
    // ==================== 门禁点 ====================
 
    @ApiOperation("门禁点分页")
    @GetMapping("/accessGatePage")
    public AjaxResult gatePage(Page<AccessGate> page, AccessGate query) {
        return AjaxResult.success(accessService.gatePage(page, query));
    }
 
    @ApiOperation("门禁点下拉列表")
    @GetMapping("/accessGateList")
    public AjaxResult gateList() {
        return AjaxResult.success(accessService.gateList());
    }
 
    @ApiOperation("新增门禁点")
    @PostMapping("/accessGateAdd")
    public AjaxResult gateAdd(@RequestBody AccessGate gate) {
        return AjaxResult.success(accessService.gateSave(gate));
    }
 
    @ApiOperation("修改门禁点")
    @PutMapping("/accessGateUpdate")
    public AjaxResult gateUpdate(@RequestBody AccessGate gate) {
        return AjaxResult.success(accessService.gateUpdate(gate));
    }
 
    @ApiOperation("删除门禁点")
    @DeleteMapping("/accessGateDelete")
    public AjaxResult gateDelete(@RequestBody List<Long> ids) {
        return AjaxResult.success(accessService.gateRemove(ids));
    }
 
    // ==================== 车辆授权 ====================
 
    @ApiOperation("车辆通行授权分页")
    @GetMapping("/accessVehiclePage")
    public AjaxResult vehiclePage(Page<AccessVehicle> page, AccessVehicle query) {
        return AjaxResult.success(accessService.vehiclePage(page, query));
    }
 
    @ApiOperation("新增车辆通行授权")
    @PostMapping("/accessVehicleAdd")
    public AjaxResult vehicleAdd(@RequestBody AccessVehicle vehicle) {
        return AjaxResult.success(accessService.vehicleSave(vehicle));
    }
 
    @ApiOperation("修改车辆通行授权")
    @PutMapping("/accessVehicleUpdate")
    public AjaxResult vehicleUpdate(@RequestBody AccessVehicle vehicle) {
        return AjaxResult.success(accessService.vehicleUpdate(vehicle));
    }
 
    @ApiOperation("删除车辆通行授权")
    @DeleteMapping("/accessVehicleDelete")
    public AjaxResult vehicleDelete(@RequestBody List<Long> ids) {
        return AjaxResult.success(accessService.vehicleRemove(ids));
    }
 
    // ==================== 人员授权 ====================
 
    @ApiOperation("人员通行授权分页")
    @GetMapping("/accessPersonPage")
    public AjaxResult personPage(Page<AccessPerson> page, AccessPerson query) {
        return AjaxResult.success(accessService.personPage(page, query));
    }
 
    @ApiOperation("新增人员通行授权")
    @PostMapping("/accessPersonAdd")
    public AjaxResult personAdd(@RequestBody AccessPerson person) {
        return AjaxResult.success(accessService.personSave(person));
    }
 
    @ApiOperation("修改人员通行授权")
    @PutMapping("/accessPersonUpdate")
    public AjaxResult personUpdate(@RequestBody AccessPerson person) {
        return AjaxResult.success(accessService.personUpdate(person));
    }
 
    @ApiOperation("删除人员通行授权")
    @DeleteMapping("/accessPersonDelete")
    public AjaxResult personDelete(@RequestBody List<Long> ids) {
        return AjaxResult.success(accessService.personRemove(ids));
    }
 
    // ==================== 识别放行 ====================
 
    @ApiOperation("车辆识别放行(车牌识别+RFID+地磅联动)")
    @PostMapping("/accessVehicleRecognize")
    public AjaxResult vehicleRecognize(@RequestParam Long gateId,
                                       @RequestParam(required = false) String plateNumber,
                                       @RequestParam(required = false) String rfidTag,
                                       @RequestParam(required = false, defaultValue = "0") String direction,
                                       @RequestParam(required = false) String photoUrl) {
        try {
            return AjaxResult.success(accessService.vehicleRecognize(gateId, plateNumber, rfidTag, direction, photoUrl));
        } catch (IllegalArgumentException e) {
            return AjaxResult.error(e.getMessage());
        }
    }
 
    @ApiOperation("人员识别放行(人脸识别+工卡)")
    @PostMapping("/accessPersonRecognize")
    public AjaxResult personRecognize(@RequestParam Long gateId,
                                      @RequestParam(required = false) String cardNo,
                                      @RequestParam(required = false) String personName,
                                      @RequestParam(required = false, defaultValue = "0") String direction,
                                      @RequestParam(required = false) String photoUrl) {
        try {
            return AjaxResult.success(accessService.personRecognize(gateId, cardNo, personName, direction, photoUrl));
        } catch (IllegalArgumentException e) {
            return AjaxResult.error(e.getMessage());
        }
    }
 
    // ==================== 通行记录 ====================
 
    @ApiOperation("通行记录分页")
    @GetMapping("/accessRecordPage")
    public AjaxResult recordPage(Page<AccessRecord> page, AccessRecord query) {
        return AjaxResult.success(accessService.recordPage(page, query));
    }
 
    @ApiOperation("删除通行记录")
    @DeleteMapping("/accessRecordDelete")
    public AjaxResult recordDelete(@RequestBody List<Long> ids) {
        return AjaxResult.success(accessService.recordRemove(ids));
    }
 
    @ApiOperation("今日通行统计")
    @GetMapping("/accessOverview")
    public AjaxResult overview() {
        return AjaxResult.success(accessService.recordOverview());
    }
}