diff --git a/src/main/java/com/campus/water/controller/web/DeviceStatusController.java b/src/main/java/com/campus/water/controller/web/DeviceStatusController.java index dc357b4..f091cd7 100644 --- a/src/main/java/com/campus/water/controller/web/DeviceStatusController.java +++ b/src/main/java/com/campus/water/controller/web/DeviceStatusController.java @@ -100,24 +100,20 @@ public class DeviceStatusController { } @GetMapping("/by-status") - @Operation(summary = "按状态查询设备", description = "根据状态查询设备列表") + @Operation(summary = "按状态查询设备", description = "根据状态和设备类型查询设备列表") public ResponseEntity>> getDevicesByStatus( - @RequestParam String status, - @RequestParam(required = false) String areaId, - @RequestParam(required = false) String deviceType) { - - // 添加默认值处理 - if (deviceType == null || deviceType.isEmpty()) { - deviceType = "water_maker"; // 默认值 - } + @RequestParam String status, + @RequestParam(required = false) String areaId, + @RequestParam(required = false) String deviceType) { // 保留设备类型参数,去除默认值 - try { - List devices = deviceStatusService.getDevicesByStatus(status, areaId, deviceType); - return ResponseEntity.ok(ResultVO.success(devices)); - } catch (Exception e) { - return ResponseEntity.ok(ResultVO.error(500, "查询设备失败: " + e.getMessage())); + try { + // 调用服务层方法时传递所有参数(包括可能为null的deviceType) + List devices = deviceStatusService.getDevicesByStatus(status, areaId, deviceType); + return ResponseEntity.ok(ResultVO.success(devices)); + } catch (Exception e) { + return ResponseEntity.ok(ResultVO.error(500, "查询设备失败: " + e.getMessage())); + } } -} @GetMapping("/status-count") diff --git a/src/main/java/com/campus/water/mapper/DeviceRepository.java b/src/main/java/com/campus/water/mapper/DeviceRepository.java index 93840bf..dd3e7aa 100644 --- a/src/main/java/com/campus/water/mapper/DeviceRepository.java +++ b/src/main/java/com/campus/water/mapper/DeviceRepository.java @@ -41,4 +41,7 @@ public interface DeviceRepository extends JpaRepository { // 根据制水机ID查询关联的供水机 List findByParentMakerIdAndDeviceType(String parentMakerId, Device.DeviceType deviceType); + + // 按状态和区域查询(无设备类型筛选) + List findByStatusAndAreaId(Device.DeviceStatus status, String areaId); } \ No newline at end of file diff --git a/src/main/java/com/campus/water/service/DeviceStatusServiceImpl.java b/src/main/java/com/campus/water/service/DeviceStatusServiceImpl.java index 22c0e8e..4de8a84 100644 --- a/src/main/java/com/campus/water/service/DeviceStatusServiceImpl.java +++ b/src/main/java/com/campus/water/service/DeviceStatusServiceImpl.java @@ -76,8 +76,24 @@ public class DeviceStatusServiceImpl implements DeviceStatusService { @Override public List getDevicesByStatus(String status, String areaId, String deviceType) { Device.DeviceStatus targetStatus = Device.DeviceStatus.valueOf(status); - Device.DeviceType targetType = Device.DeviceType.valueOf(deviceType); - return deviceRepository.findByStatusAndAreaIdAndDeviceType(targetStatus, areaId, targetType); + + // 处理设备类型参数(允许为null) + Device.DeviceType targetType = null; + if (deviceType != null && !deviceType.isEmpty()) { + targetType = Device.DeviceType.valueOf(deviceType); + } + + // 根据设备类型是否为null执行不同查询 + if (targetType != null) { + return deviceRepository.findByStatusAndAreaIdAndDeviceType(targetStatus, areaId, targetType); + } else { + // 仅按状态和区域查询(如果有区域ID) + if (areaId != null && !areaId.isEmpty()) { + return deviceRepository.findByStatusAndAreaId(targetStatus, areaId); + } else { + return deviceRepository.findByStatus(targetStatus); + } + } } @Override