package com.supervision.web.peopleGateManage.controller; import com.github.pagehelper.PageInfo; import com.supervision.web.peopleGateManage.service.DeviceService; import com.supervision.web.peopleGateManage.service.PeopleDeviceService; import com.supervision.web.peopleGateManage.service.PeopleInfoService; import com.supervision.web.peopleGateManage.entity.Device; import com.supervision.web.peopleGateManage.entity.DeviceAddRequest; import com.supervision.web.peopleGateManage.entity.PeopleInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.List; import java.util.Map; @RestController @RequestMapping("/device") public class DeviceManageController { private static final Logger logger = LoggerFactory.getLogger(DeviceManageController.class); @Autowired private DeviceService deviceService; @Autowired private PeopleInfoService peopleInfoService; @Autowired private PeopleDeviceService peopleDeviceService; /** * 获取所有设备列表 */ @PostMapping("/list") public Map listDevices(@RequestBody Map params) { PageInfo pageInfo = deviceService.searchByCondition(params); Map result = new HashMap<>(); result.put("total", pageInfo.getTotal()); result.put("list", pageInfo.getList()); result.put("pageNum", pageInfo.getPageNum()); result.put("pageSize", pageInfo.getPageSize()); return result; } /** * 获取所有设备列表 */ @GetMapping("/listDeviceName") public Map listDeviceName() { List pageInfo = deviceService.searchAllDeviceNames(); Map result = new HashMap<>(); result.put("total", pageInfo.size()); result.put("list", pageInfo); return result; } /** * 新增设备(支持从指定设备或所有设备同步人员信息) */ @PostMapping("/add") public String addDevice(@RequestBody DeviceAddRequest request) { // 1. 保存新设备 Device device = new Device(); device.setType(request.getModel()); device.setLocation(request.getLocation()); device.setIp(request.getIp()); device.setPort(request.getPort()); device.setAccount(request.getAccount()); device.setPassword(request.getPassword()); deviceService.add(device); // 2. 同步逻辑 if (request.getSyncMode() != null) { if (request.getSyncMode() == 1) { // 同步所有人员 List allPeople = peopleInfoService.getAll(); for (PeopleInfo p : allPeople) { peopleDeviceService.bindPersonToDevice(p.getPersonId(), device.getId()); } } else if (request.getSyncMode() == 2 && request.getSyncFromDeviceId() != null) { // 从指定设备同步 List personIds = peopleDeviceService.getPersonsByDevice(request.getSyncFromDeviceId()); for (String personId : personIds) { peopleDeviceService.bindPersonToDevice(personId, device.getId()); } } } return "success"; } /** * 修改设备 */ @PutMapping("/update") public String updateDevice(@RequestBody Device device) { deviceService.update(device); return "success"; } /** * 删除设备 */ @DeleteMapping("/delete/{id}") public String deleteDevice(@PathVariable Long id) { deviceService.delete(id); return "success"; } /** * 查看单个设备详情 */ @GetMapping("/get/{id}") public Device getDevice(@PathVariable Long id) { return deviceService.getById(id); } }