From ffb4f5dce1f4d7275b0945e435068b2a86316fb0 Mon Sep 17 00:00:00 2001
From: zhaowenyu <35589726@qq.com>
Date: Mon, 01 Dec 2025 14:33:44 +0800
Subject: [PATCH] 2025-12-01 zwy 机场设备列表增加对nickname的筛选

---
 ard-sample/src/main/java/com/ard/sample/manage/model/param/DeviceQueryParam.java   |    2 +
 ard-admin/src/main/java/com/ard/web/controller/sample/DeviceController.java        |   16 +++++++-
 ard-sample/src/main/java/com/ard/sample/manage/service/IDeviceService.java         |    9 +++-
 ard-sample/src/main/java/com/ard/sample/manage/service/impl/DeviceServiceImpl.java |   88 +++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 110 insertions(+), 5 deletions(-)

diff --git a/ard-admin/src/main/java/com/ard/web/controller/sample/DeviceController.java b/ard-admin/src/main/java/com/ard/web/controller/sample/DeviceController.java
index 0a8a995..c3c7a30 100644
--- a/ard-admin/src/main/java/com/ard/web/controller/sample/DeviceController.java
+++ b/ard-admin/src/main/java/com/ard/web/controller/sample/DeviceController.java
@@ -97,12 +97,24 @@
     @ApiOperation("设备列表")
     @PreAuthorize("@ss.hasPermi('device:dock:list')")
     @GetMapping("/list")
-    public ResponseResult<List<DeviceDTO>> getDevices() {
+    public ResponseResult<List<DeviceDTO>> getDevices(String nickname) {
 //        List<DeviceDTO> devicesList = deviceService.getDevicesTopoForWeb();
-        List<DeviceDTO> devicesList = deviceService.getDockList();
+        List<DeviceDTO> devicesList = deviceService.getDockList(nickname);
         return ResponseResult.success(devicesList);
     }
 
+//    /**
+//     * 获取按nickname筛选在线设备列表
+//     *
+//     * @return
+//     */
+//    @ApiOperation("设备列表-按nickname筛选")
+//    @GetMapping("/cameralist")
+//    public ResponseResult<List<DeviceDTO>> getCameraDevices(@RequestParam(required = false) String nickname) {
+//        List<DeviceDTO> devicesList = deviceService.getDockCameraList(nickname);
+//        return ResponseResult.success(devicesList);
+//    }
+
     /**
      * 绑定设备
      *
diff --git a/ard-sample/src/main/java/com/ard/sample/manage/model/param/DeviceQueryParam.java b/ard-sample/src/main/java/com/ard/sample/manage/model/param/DeviceQueryParam.java
index 9462080..a574192 100644
--- a/ard-sample/src/main/java/com/ard/sample/manage/model/param/DeviceQueryParam.java
+++ b/ard-sample/src/main/java/com/ard/sample/manage/model/param/DeviceQueryParam.java
@@ -28,6 +28,8 @@
 
     private Boolean boundStatus;
 
+    private String nickname;
+
     private boolean orderBy;
 
     private boolean isAsc;
diff --git a/ard-sample/src/main/java/com/ard/sample/manage/service/IDeviceService.java b/ard-sample/src/main/java/com/ard/sample/manage/service/IDeviceService.java
index bd73b9d..1f3d583 100644
--- a/ard-sample/src/main/java/com/ard/sample/manage/service/IDeviceService.java
+++ b/ard-sample/src/main/java/com/ard/sample/manage/service/IDeviceService.java
@@ -106,13 +106,18 @@
     /**
      * 根据部门权限获取机场列表
      * */
-    List<DeviceDTO> getDockList();
+    List<DeviceDTO> getDockList(String nickname);
 
     void spliceDeviceTopoPer(DeviceDTO gateway);
 
-//    @DataScope(deptAlias = "d")
     List<DeviceDTO> getDockListByParams(DeviceQueryParam param);
 
+//    List<DeviceDTO> getDockCameraList(String nickname);
+
+//    void spliceDeviceTopoCamera(DeviceDTO gateway);
+
+//    List<DeviceDTO> getDockCameraListByParams(DeviceQueryParam param);
+
     /**
      * Query the information of the device according to the sn of the device.
      * @param sn device sn
diff --git a/ard-sample/src/main/java/com/ard/sample/manage/service/impl/DeviceServiceImpl.java b/ard-sample/src/main/java/com/ard/sample/manage/service/impl/DeviceServiceImpl.java
index d0f48f7..e6d3777 100644
--- a/ard-sample/src/main/java/com/ard/sample/manage/service/impl/DeviceServiceImpl.java
+++ b/ard-sample/src/main/java/com/ard/sample/manage/service/impl/DeviceServiceImpl.java
@@ -360,10 +360,11 @@
 
     //region 单独写一个方法做权限验证,由于有好多定时任务也在实时获取设备列表,原方法不适用再添加权限注解
     @Override
-    public List<DeviceDTO> getDockList() {
+    public List<DeviceDTO> getDockList(String nickname) {
         List<DeviceDTO> devicesList = this.getDockListByParams(
                 DeviceQueryParam.builder()
                         .domains(List.of(DeviceDomainEnum.GATEWAY.getVal(), DeviceDomainEnum.DOCK.getVal()))
+                        .nickname(nickname)
                         .build());
         // 在獲取设备列表时,顺便获取直播地址
         for(DeviceDTO devices : devicesList){
@@ -424,6 +425,7 @@
                                 })
                                 .eq(param.getBoundStatus() != null, DeviceEntity::getBoundStatus,
                                         param.getBoundStatus())
+                                .like(param.getNickname()!=null, DeviceEntity::getNickname, "%" + param.getNickname() + "%")
                                 .orderBy(param.isOrderBy(),
                                         param.isAsc(), DeviceEntity::getId))
                 .stream()
@@ -432,6 +434,90 @@
     }
     //endregion
 
+    // region 多路直播列表,按nickname筛选
+//    /**
+//     * 多路直播列表,按nickname筛选
+//     * */
+//    @Override
+//    public List<DeviceDTO> getDockCameraList(String nickname) {
+//
+//        List<DeviceDTO> devicesList = this.getDockListByParams(
+//                DeviceQueryParam.builder()
+//                        .domains(List.of(DeviceDomainEnum.GATEWAY.getVal(), DeviceDomainEnum.DOCK.getVal()))
+//                        .nickname(nickname)
+//                        .build());
+//
+//        // 在獲取设备列表时,顺便获取直播地址
+//        for(DeviceDTO devices : devicesList){
+//            _liveStreamHandler.StartLiveStreaming(devices.getDeviceSn());
+//            _liveStreamHandler.StartLiveStreaming(devices.getChildDeviceSn());
+//            ArdCamera ardCamera = new ArdCamera();
+//            ardCamera.setDockId(devices.getId());
+//            List<ArdCamera> ardCameraList = _cameraService.selectArdCameraList(ardCamera);
+//            for(ArdCamera ardCamera1 : ardCameraList){
+//                for(ArdChannel ardChannel : ardCamera1.getChannelList()) {
+//                    if(ardChannel.getChanNo() == 1) {
+//                        // 修改列表中外接相机地址
+//                        updateCameraWebrtcUrl(devices.getDeviceSn(), ardChannel.getArdVtdu().getWebrtcUrl());
+//                    }
+//                }
+//            }
+//        }
+//
+//        devicesList.stream()
+//                .filter(gateway -> DeviceDomainEnum.DOCK.getVal() == gateway.getDomain() ||
+//                        RedisOpsUtils.checkExist(RedisConst.DEVICE_ONLINE_PREFIX + gateway.getDeviceSn()))
+//                .forEach(this::spliceDeviceTopoPer);
+//
+//        return devicesList;
+//    }
+
+//    @Override
+//    public void spliceDeviceTopoCamera(DeviceDTO gateway) {
+//        gateway.setStatus(RedisOpsUtils.checkExist(RedisConst.DEVICE_ONLINE_PREFIX + gateway.getDeviceSn()));
+//        // sub device
+//        if (!StringUtils.hasText(gateway.getChildDeviceSn())) {
+//            return;
+//        }
+//        DeviceDTO subDevice =
+//                getDevicesByParams(DeviceQueryParam.builder().deviceSn(gateway.getChildDeviceSn()).build()).get(0);
+//        subDevice.setStatus(RedisOpsUtils.checkExist(RedisConst.DEVICE_ONLINE_PREFIX + subDevice.getDeviceSn()));
+//        gateway.setChildren(subDevice);
+//    }
+
+//    /**
+//     * 按nickname筛选列表
+//     * */
+//    @Override
+//    public List<DeviceDTO> getDockCameraListByParams(DeviceQueryParam param) {
+//        return mapper.selectListPer(
+//                        new LambdaQueryWrapper<DeviceEntity>()
+//                                .eq(StringUtils.hasText(param.getDeviceSn()),
+//                                        DeviceEntity::getDeviceSn, param.getDeviceSn())
+//                                .eq(param.getDeviceType() != null,
+//                                        DeviceEntity::getDeviceType, param.getDeviceType())
+//                                .eq(param.getSubType() != null,
+//                                        DeviceEntity::getSubType, param.getSubType())
+//                                .eq(StringUtils.hasText(param.getChildSn()),
+//                                        DeviceEntity::getChildSn, param.getChildSn())
+//                                .and(!CollectionUtils.isEmpty(param.getDomains()), wrapper -> {
+//                                    for (Integer domain : param.getDomains()) {
+//                                        wrapper.eq(DeviceEntity::getDomain, domain).or();
+//                                    }
+//                                })
+//                                .eq(param.getBoundStatus() != null, DeviceEntity::getBoundStatus,
+//                                        param.getBoundStatus())
+//                                .like(param.getNickname()!=null, DeviceEntity::getNickname, "%" + param.getNickname() + "%")
+//                                .orderBy(param.isOrderBy(),
+//                                        param.isAsc(), DeviceEntity::getId))
+//                .stream()
+//                .map(this::deviceEntityConvertToDTO)
+//                .collect(Collectors.toList());
+//    }
+
+
+    // endregion
+
     @Override
     public Optional<TopologyDeviceDTO> getDeviceTopoForPilot(String sn) {
         if (sn.isBlank()) {

--
Gitblit v1.9.3