From 36f85dbb63ea57700e67260c9e56e7521da5c7ad Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Tue, 2 Dec 2025 09:39:04 +0800 Subject: [PATCH] =?UTF-8?q?feat(device):=20=E6=94=AF=E6=8C=81=E6=8C=89?= =?UTF-8?q?=E5=A4=9A=E4=B8=AA=E6=99=AF=E5=8C=BAID=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 DeviceV2Client 中新增 scenicIds 查询参数 - 修改 DeviceIntegrationService.listDevices 方法以支持 scenicIds 参数 - 优化参数优先级逻辑:scenicId 优先于 scenicIds - 更新所有调用点以传递新的 scenicIds 参数 - 保持向后兼容性,确保原有接口行为不变 - 增加日志记录以便调试和监控参数使用情况 --- .../controller/pc/DeviceV2Controller.java | 6 ++-- .../controller/pc/ScenicV2Controller.java | 6 ++-- .../device/client/DeviceV2Client.java | 3 +- .../service/DeviceIntegrationService.java | 29 +++++++++++++++---- .../scenic/client/ScenicV2Client.java | 3 +- .../service/ScenicIntegrationService.java | 7 +++-- .../basic/repository/ScenicRepository.java | 6 ++-- .../mobile/impl/AppScenicServiceImpl.java | 2 +- .../task/DeviceVideoContinuityCheckTask.java | 2 +- .../ycwl/basic/task/VideoPieceCleaner.java | 2 +- 10 files changed, 43 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/ycwl/basic/controller/pc/DeviceV2Controller.java b/src/main/java/com/ycwl/basic/controller/pc/DeviceV2Controller.java index 4758372c..67ac8166 100644 --- a/src/main/java/com/ycwl/basic/controller/pc/DeviceV2Controller.java +++ b/src/main/java/com/ycwl/basic/controller/pc/DeviceV2Controller.java @@ -53,9 +53,9 @@ public class DeviceV2Controller { if (pageSize > 100) { pageSize = 100; } - + try { - PageResponse response = deviceIntegrationService.listDevices(page, pageSize, name, no, type, isActive, scenicId); + PageResponse response = deviceIntegrationService.listDevices(page, pageSize, name, no, type, isActive, scenicId, null); return ApiResponse.success(response); } catch (Exception e) { log.error("分页查询设备核心信息列表失败", e); @@ -380,7 +380,7 @@ public class DeviceV2Controller { @RequestParam(defaultValue = "10") Integer pageSize) { log.info("获取景区所有设备列表, scenicId: {}, page: {}, pageSize: {}", scenicId, page, pageSize); try { - PageResponse response = deviceIntegrationService.listDevices(page, pageSize, name, no, type, null, scenicId); + PageResponse response = deviceIntegrationService.listDevices(page, pageSize, name, no, type, null, scenicId, null); return ApiResponse.success(response); } catch (Exception e) { log.error("获取景区所有设备列表失败, scenicId: {}", scenicId, e); diff --git a/src/main/java/com/ycwl/basic/controller/pc/ScenicV2Controller.java b/src/main/java/com/ycwl/basic/controller/pc/ScenicV2Controller.java index d7c5f122..d15d9286 100644 --- a/src/main/java/com/ycwl/basic/controller/pc/ScenicV2Controller.java +++ b/src/main/java/com/ycwl/basic/controller/pc/ScenicV2Controller.java @@ -60,9 +60,9 @@ public class ScenicV2Controller { if (pageSize > 100) { pageSize = 100; } - + try { - PageResponse response = scenicIntegrationService.listScenics(page, pageSize, status, name); + PageResponse response = scenicIntegrationService.listScenics(page, pageSize, status, name, null); return ApiResponse.success(response); } catch (Exception e) { log.error("分页查询景区核心信息列表失败", e); @@ -156,7 +156,7 @@ public class ScenicV2Controller { log.info("查询景区列表, status: {}", status); try { // 默认查询1000条数据,第1页 - PageResponse scenics = scenicIntegrationService.listScenics(1, 1000, status, null); + PageResponse scenics = scenicIntegrationService.listScenics(1, 1000, status, null, null); return ApiResponse.success(scenics); } catch (Exception e) { log.error("查询景区列表失败, status: {}", status, e); diff --git a/src/main/java/com/ycwl/basic/integration/device/client/DeviceV2Client.java b/src/main/java/com/ycwl/basic/integration/device/client/DeviceV2Client.java index 4b926649..20694b6c 100644 --- a/src/main/java/com/ycwl/basic/integration/device/client/DeviceV2Client.java +++ b/src/main/java/com/ycwl/basic/integration/device/client/DeviceV2Client.java @@ -60,7 +60,8 @@ public interface DeviceV2Client { @RequestParam(value = "no", required = false) String no, @RequestParam(value = "type", required = false) String type, @RequestParam(value = "isActive", required = false) Integer isActive, - @RequestParam(value = "scenicId", required = false) Long scenicId); + @RequestParam(value = "scenicId", required = false) Long scenicId, + @RequestParam(value = "scenicIds", required = false) String scenicIds); /** * 根据配置条件筛选设备 diff --git a/src/main/java/com/ycwl/basic/integration/device/service/DeviceIntegrationService.java b/src/main/java/com/ycwl/basic/integration/device/service/DeviceIntegrationService.java index b616c728..0790b520 100644 --- a/src/main/java/com/ycwl/basic/integration/device/service/DeviceIntegrationService.java +++ b/src/main/java/com/ycwl/basic/integration/device/service/DeviceIntegrationService.java @@ -67,11 +67,28 @@ public class DeviceIntegrationService { } public PageResponse listDevices(Integer page, Integer pageSize, String name, String no, - String type, Integer isActive, Long scenicId) { - log.debug("分页查询设备列表, page: {}, pageSize: {}, name: {}, no: {}, type: {}, isActive: {}, scenicId: {}", - page, pageSize, name, no, type, isActive, scenicId); + String type, Integer isActive, Long scenicId, String scenicIds) { + log.debug("分页查询设备列表, page: {}, pageSize: {}, name: {}, no: {}, type: {}, isActive: {}, scenicId: {}, scenicIds: {}", + page, pageSize, name, no, type, isActive, scenicId, scenicIds); + + // 参数优先级处理:scenicId 优先于 scenicIds + Long finalScenicId = null; + String finalScenicIds = null; + + if (scenicId != null) { + // 优先使用单个 scenicId(向后兼容) + finalScenicId = scenicId; + finalScenicIds = null; + log.debug("使用单个 scenicId 参数: {}", finalScenicId); + } else if (scenicIds != null && !scenicIds.trim().isEmpty()) { + // 使用 scenicIds + finalScenicId = null; + finalScenicIds = scenicIds; + log.debug("使用 scenicIds 参数: {}", finalScenicIds); + } + CommonResponse> response = deviceV2Client.listDevices( - page, pageSize, name, no, type, isActive, scenicId); + page, pageSize, name, no, type, isActive, finalScenicId, finalScenicIds); return handleResponse(response, "分页查询设备列表失败"); } @@ -163,14 +180,14 @@ public class DeviceIntegrationService { * 获取景区的IPC设备列表 */ public PageResponse getScenicIpcDevices(Long scenicId, Integer page, Integer pageSize) { - return listDevices(page, pageSize, null, null, "IPC", 1, scenicId); + return listDevices(page, pageSize, null, null, "IPC", 1, scenicId, null); } /** * 获取景区的所有激活设备 */ public PageResponse getScenicActiveDevices(Long scenicId, Integer page, Integer pageSize) { - return listDevices(page, pageSize, null, null, null, 1, scenicId); + return listDevices(page, pageSize, null, null, null, 1, scenicId, null); } /** diff --git a/src/main/java/com/ycwl/basic/integration/scenic/client/ScenicV2Client.java b/src/main/java/com/ycwl/basic/integration/scenic/client/ScenicV2Client.java index 037c146d..f018028c 100644 --- a/src/main/java/com/ycwl/basic/integration/scenic/client/ScenicV2Client.java +++ b/src/main/java/com/ycwl/basic/integration/scenic/client/ScenicV2Client.java @@ -39,7 +39,8 @@ public interface ScenicV2Client { CommonResponse> listScenics(@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer pageSize, @RequestParam(required = false) Integer status, - @RequestParam(required = false) String name); + @RequestParam(required = false) String name, + @RequestParam(required = false) String scenicIds); // ==================== Scenic Config V2 Operations ==================== diff --git a/src/main/java/com/ycwl/basic/integration/scenic/service/ScenicIntegrationService.java b/src/main/java/com/ycwl/basic/integration/scenic/service/ScenicIntegrationService.java index e39c06e7..d55d2c87 100644 --- a/src/main/java/com/ycwl/basic/integration/scenic/service/ScenicIntegrationService.java +++ b/src/main/java/com/ycwl/basic/integration/scenic/service/ScenicIntegrationService.java @@ -63,9 +63,10 @@ public class ScenicIntegrationService { return handleResponse(response, "筛选景区失败"); } - public PageResponse listScenics(Integer page, Integer pageSize, Integer status, String name) { - log.debug("分页查询景区列表, page: {}, pageSize: {}, status: {}, name: {}", page, pageSize, status, name); - CommonResponse> response = scenicV2Client.listScenics(page, pageSize, status, name); + public PageResponse listScenics(Integer page, Integer pageSize, Integer status, String name, String scenicIds) { + log.debug("分页查询景区列表, page: {}, pageSize: {}, status: {}, name: {}, scenicIds: {}", + page, pageSize, status, name, scenicIds); + CommonResponse> response = scenicV2Client.listScenics(page, pageSize, status, name, scenicIds); return handleResponse(response, "分页查询景区列表失败"); } diff --git a/src/main/java/com/ycwl/basic/repository/ScenicRepository.java b/src/main/java/com/ycwl/basic/repository/ScenicRepository.java index b4e92196..d8df36af 100644 --- a/src/main/java/com/ycwl/basic/repository/ScenicRepository.java +++ b/src/main/java/com/ycwl/basic/repository/ScenicRepository.java @@ -208,10 +208,10 @@ public class ScenicRepository { status = Integer.valueOf(scenicReqQuery.getStatus()); } String name = scenicReqQuery.getName(); - + // 调用 zt-scenic 服务的 list 方法 - PageResponse response = scenicIntegrationService.listScenics(page, pageSize, status, name); - + PageResponse response = scenicIntegrationService.listScenics(page, pageSize, status, name, null); + // 将 ScenicV2DTO 列表转换为 ScenicEntity 列表 if (response != null && response.getList() != null) { return response.getList(); diff --git a/src/main/java/com/ycwl/basic/service/mobile/impl/AppScenicServiceImpl.java b/src/main/java/com/ycwl/basic/service/mobile/impl/AppScenicServiceImpl.java index 757a28a6..14efc8e0 100644 --- a/src/main/java/com/ycwl/basic/service/mobile/impl/AppScenicServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/mobile/impl/AppScenicServiceImpl.java @@ -309,7 +309,7 @@ public class AppScenicServiceImpl implements AppScenicService { @Override public ApiResponse> getDevices(Long scenicId) { - PageResponse deviceV2ListResponse = deviceIntegrationService.listDevices(1, 1000, null, null, null, 1, scenicId); + PageResponse deviceV2ListResponse = deviceIntegrationService.listDevices(1, 1000, null, null, null, 1, scenicId, null); List deviceRespVOList = deviceV2ListResponse.getList().stream().map(device -> { DeviceRespVO deviceRespVO = new DeviceRespVO(); deviceRespVO.setId(device.getId()); diff --git a/src/main/java/com/ycwl/basic/task/DeviceVideoContinuityCheckTask.java b/src/main/java/com/ycwl/basic/task/DeviceVideoContinuityCheckTask.java index d45d8f2b..7d0a03e4 100644 --- a/src/main/java/com/ycwl/basic/task/DeviceVideoContinuityCheckTask.java +++ b/src/main/java/com/ycwl/basic/task/DeviceVideoContinuityCheckTask.java @@ -83,7 +83,7 @@ public class DeviceVideoContinuityCheckTask { while (true) { PageResponse pageResponse = deviceIntegrationService.listDevices( - currentPage, pageSize, null, null, null, 1, null + currentPage, pageSize, null, null, null, 1, null, null ); if (pageResponse == null || pageResponse.getList() == null diff --git a/src/main/java/com/ycwl/basic/task/VideoPieceCleaner.java b/src/main/java/com/ycwl/basic/task/VideoPieceCleaner.java index 4b73243a..f8e22cc6 100644 --- a/src/main/java/com/ycwl/basic/task/VideoPieceCleaner.java +++ b/src/main/java/com/ycwl/basic/task/VideoPieceCleaner.java @@ -37,7 +37,7 @@ public class VideoPieceCleaner { public void clean() { log.info("开始删除视频文件"); // 通过zt-device服务获取所有激活设备 - PageResponse deviceListResponse = deviceIntegrationService.listDevices(1, 10000, null, null, null, 1, null); + PageResponse deviceListResponse = deviceIntegrationService.listDevices(1, 10000, null, null, null, 1, null, null); if (deviceListResponse == null || deviceListResponse.getList() == null) { return; }