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;
/**
* 门禁管理
*
* 车辆:车牌识别 + RFID;人员:人脸识别 + 工卡;与地磅联动控制放行
*/
@Api(tags = "门禁管理")
@AllArgsConstructor
@RestController
@RequestMapping("/environmentAccess")
public class AccessController {
private final AccessService accessService;
// ==================== 门禁点 ====================
@ApiOperation("门禁点分页")
@GetMapping("/accessGatePage")
public AjaxResult gatePage(Page 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 ids) {
return AjaxResult.success(accessService.gateRemove(ids));
}
// ==================== 车辆授权 ====================
@ApiOperation("车辆通行授权分页")
@GetMapping("/accessVehiclePage")
public AjaxResult vehiclePage(Page 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 ids) {
return AjaxResult.success(accessService.vehicleRemove(ids));
}
// ==================== 人员授权 ====================
@ApiOperation("人员通行授权分页")
@GetMapping("/accessPersonPage")
public AjaxResult personPage(Page 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 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 page, AccessRecord query) {
return AjaxResult.success(accessService.recordPage(page, query));
}
@ApiOperation("删除通行记录")
@DeleteMapping("/accessRecordDelete")
public AjaxResult recordDelete(@RequestBody List ids) {
return AjaxResult.success(accessService.recordRemove(ids));
}
@ApiOperation("今日通行统计")
@GetMapping("/accessOverview")
public AjaxResult overview() {
return AjaxResult.success(accessService.recordOverview());
}
}