Jelajahi Sumber

refactor(devinfo):重构设备信息服务接口与实现- 修改 queryByIds 方法名为 queryByClientIds以提高语义准确性
- 在 DevInfoService 中新增 fillDevNames 方法用于批量填充设备名称
- 移除 EventsService 中的 fillDevNames 方法,统一由 DevInfoService 处理
- 调整 StatsGatewayImpl 和 WebStatsGatewayImpl 中设备名称填充逻辑
- 清理无用的导入语句和自动注入依赖
-优化事件查询接口返回类型,去除不必要的 DTO 转换层

hxd 2 hari lalu
induk
melakukan
c30055378d

+ 1 - 3
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/gateway/impl/StatsGatewayImpl.java

@@ -1,8 +1,6 @@
 package com.hfln.portal.infrastructure.gateway.impl;
 
-import cn.dev33.satoken.stp.StpUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.hfln.portal.common.constant.UserConstants;
 import com.hfln.portal.common.constant.redis.RedisCacheConstant;
 import com.hfln.portal.common.dto.data.event.EventListDTO;
 import com.hfln.portal.common.dto.data.event.EventsDTO;
@@ -94,7 +92,7 @@ public class StatsGatewayImpl implements StatsGateway {
         List<EventsDTO> dtoList = CopyUtils.copyList(page.getRecords(), EventsDTO.class);
 
         //新增 填充devName
-        eventsService.fillDevNames(dtoList);
+        devInfoService.fillDevNames(dtoList);
 
         // 封装成 PageRecord 返回
         return CopyUtils.copyPage(page, dtoList);

+ 9 - 1
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/gateway/impl/WebStatsGatewayImpl.java

@@ -97,8 +97,16 @@ public class WebStatsGatewayImpl implements WebStatsGateway {
         String userType = UserContext.getUserType();
 
         // 2.调用web端查询告警信息 queryEvents 方法
-        return eventsService.queryEvents(params, userType, tenantId);
+        Page<Events> eventsPage = eventsService.queryEvents(params, userType, tenantId);
 
+        // 3. 转换为 DTO
+        List<EventsDTO> dtoList = CopyUtils.copyList(eventsPage.getRecords(), EventsDTO.class);
+
+        // 4.填充devName
+        devInfoService.fillDevNames(dtoList);
+
+        // 5.封装成 PageRecord 返回
+        return CopyUtils.copyPage(eventsPage, dtoList);
     }
 
     @Override

+ 7 - 1
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/DevInfoService.java

@@ -2,6 +2,7 @@ package com.hfln.portal.infrastructure.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.hfln.portal.common.dto.data.event.EventsDTO;
 import com.hfln.portal.common.request.device.DeviceListQueryReq;
 import com.hfln.portal.common.request.device.UpdateDeviceParams;
 import com.hfln.portal.infrastructure.po.DevInfo;
@@ -18,7 +19,7 @@ public interface DevInfoService extends IService<DevInfo> {
 
     DevInfo queryDevices(Long userId, String deviceId);
 
-    List<DevInfo> queryByIds(Collection<String> clientIds);
+    List<DevInfo> queryByClientIds(Collection<String> clientIds);
 
     Boolean updateDevice(Object identifier, UpdateDeviceParams params);
 
@@ -42,4 +43,9 @@ public interface DevInfoService extends IService<DevInfo> {
     Map<String, BigDecimal> queryStatInfo(Long tenantId);
 
     Map<String, BigDecimal> queryStatInfoV2();
+
+    /**
+     * 批量填充设备名称
+     */
+    void fillDevNames(List<EventsDTO> dtoList);
 }

+ 1 - 11
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/EventsService.java

@@ -2,11 +2,9 @@ package com.hfln.portal.infrastructure.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.hfln.portal.common.dto.data.event.EventsDTO;
 import com.hfln.portal.common.dto.data.stat.ScreenAlarmDTO;
 import com.hfln.portal.common.request.event.WapEventsParams;
 import com.hfln.portal.common.request.event.WebEventsParams;
-import com.hfln.portal.common.vo.PageRecord;
 import com.hfln.portal.infrastructure.po.Events;
 
 import java.util.List;
@@ -15,15 +13,7 @@ public interface EventsService extends IService<Events> {
 
     Page<Events> QueryEvents(WapEventsParams params, List<String> clientIds);
 
-
-    PageRecord<EventsDTO> queryEvents(WebEventsParams params, String userType, Long tenantId);
-
-    /**
-     * 批量填充设备名称
-     *
-     * @param dtoList
-     */
-    void fillDevNames(List<EventsDTO> dtoList);
+    Page<Events> queryEvents(WebEventsParams params, String userType, Long tenantId);
 
     long countUserDevicesEvents(List<String> clientIds);
 

+ 24 - 5
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/impl/DevInfoServiceImpl.java

@@ -5,17 +5,16 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.hfln.portal.common.dto.data.event.EventsDTO;
 import com.hfln.portal.common.request.device.DeviceListQueryReq;
 import com.hfln.portal.common.request.device.UpdateDeviceParams;
 import com.hfln.portal.domain.customer.util.UpdateWrapperBuilder;
 import com.hfln.portal.infrastructure.mapper.DevInfoMapper;
-import com.hfln.portal.infrastructure.mapper.GroupDevMapMapper;
 import com.hfln.portal.infrastructure.po.BasePO;
 import com.hfln.portal.infrastructure.po.DevInfo;
 import com.hfln.portal.infrastructure.service.DevInfoService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
@@ -30,8 +29,6 @@ import java.util.stream.Collectors;
 @Slf4j
 public class DevInfoServiceImpl extends ServiceImpl<DevInfoMapper, DevInfo> implements DevInfoService {
 
-    @Autowired
-    private GroupDevMapMapper groupDevMapMapper;
 
     @Override
     public List<DevInfo> queryDeviceList(Long userId, String keyWord, Integer status, List<Long> sharedDevIds) {
@@ -83,7 +80,7 @@ public class DevInfoServiceImpl extends ServiceImpl<DevInfoMapper, DevInfo> impl
     }
 
     @Override
-    public List<DevInfo> queryByIds(Collection<String> clientIds) {
+    public List<DevInfo> queryByClientIds(Collection<String> clientIds) {
         if (CollectionUtils.isEmpty(clientIds)) {
             return Collections.emptyList();
         }
@@ -271,4 +268,26 @@ public class DevInfoServiceImpl extends ServiceImpl<DevInfoMapper, DevInfo> impl
 
         return this.baseMapper.queryStatInfoV2(LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()));
     }
+
+    @Override
+    public void fillDevNames(List<EventsDTO> dtoList) {
+        if (CollectionUtils.isEmpty(dtoList)){
+            return;
+        }
+
+        Set<String> allClientIds = dtoList.stream()
+                .map(EventsDTO::getClientId)
+                .collect(Collectors.toSet());
+
+        if (!allClientIds.isEmpty()) {
+            Map<String, String> devIdNameMap = this.queryByClientIds(allClientIds)
+                    .stream()
+                    .collect(Collectors.toMap(
+                            DevInfo::getClientId,
+                            dev -> Optional.ofNullable(dev.getDevName()).orElse("未命名设备")
+                    ));
+
+            dtoList.forEach(dto -> dto.setDevName(devIdNameMap.getOrDefault(dto.getClientId(),"未知设备")));
+        }
+    }
 }

+ 5 - 37
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/impl/EventsServiceImpl.java

@@ -3,34 +3,26 @@ package com.hfln.portal.infrastructure.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.hfln.portal.common.dto.data.event.EventsDTO;
 import com.hfln.portal.common.dto.data.stat.ScreenAlarmDTO;
 import com.hfln.portal.common.request.event.WapEventsParams;
 import com.hfln.portal.common.request.event.WebEventsParams;
-import com.hfln.portal.common.vo.PageRecord;
 import com.hfln.portal.domain.customer.AdminUserType;
-import com.hfln.portal.domain.customer.util.CopyUtils;
 import com.hfln.portal.infrastructure.mapper.EventsMapper;
-import com.hfln.portal.infrastructure.po.DevInfo;
 import com.hfln.portal.infrastructure.po.Events;
-import com.hfln.portal.infrastructure.service.DevInfoService;
 import com.hfln.portal.infrastructure.service.EventsService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.temporal.TemporalAdjusters;
-import java.util.*;
-import java.util.stream.Collectors;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
 
 @Service
 public class EventsServiceImpl extends ServiceImpl<EventsMapper, Events> implements EventsService {
 
 
-    @Autowired
-    private DevInfoService devInfoService;
-
     /**
      * 小程序查询设备事件列表
      *
@@ -81,7 +73,7 @@ public class EventsServiceImpl extends ServiceImpl<EventsMapper, Events> impleme
      * @return
      */
     @Override
-    public PageRecord<EventsDTO> queryEvents(WebEventsParams params, String userType, Long tenantId) {
+    public Page<Events> queryEvents(WebEventsParams params, String userType, Long tenantId) {
 
         Page<Events> page = new Page<>(params.getPageNo(), params.getPageSize());
         LambdaQueryWrapper<Events> queryWrapper = new LambdaQueryWrapper<>();
@@ -115,16 +107,7 @@ public class EventsServiceImpl extends ServiceImpl<EventsMapper, Events> impleme
         queryWrapper.orderByDesc(Events::getCreateTime);
 
         // 6. 分页查询
-        page = this.baseMapper.selectPage(page, queryWrapper);
-
-        // 7. 转换为 DTO
-        List<EventsDTO> dtoList = CopyUtils.copyList(page.getRecords(), EventsDTO.class);
-
-        // 8. 填充 devName
-        fillDevNames(dtoList);
-
-        // 9. 封装返回
-        return CopyUtils.copyPage(page, dtoList);
+         return this.baseMapper.selectPage(page, queryWrapper);
     }
 
     /**
@@ -162,19 +145,4 @@ public class EventsServiceImpl extends ServiceImpl<EventsMapper, Events> impleme
         LocalDate startDate = today.minusDays(6);
         return this.baseMapper.queryEventsInSevenDays(tenantId, startDate);
     }
-
-    // 辅助方法:填充 devName
-    public void fillDevNames(List<EventsDTO> dtoList) {
-        Set<String> allClientIds = dtoList.stream()
-                .map(EventsDTO::getClientId)
-                .collect(Collectors.toSet());
-
-        if (!allClientIds.isEmpty()) {
-            Map<String, String> devIdNameMap = devInfoService.queryByIds(allClientIds)
-                    .stream()
-                    .collect(Collectors.toMap(DevInfo::getClientId, DevInfo::getDevName));
-
-            dtoList.forEach(dto -> dto.setDevName(devIdNameMap.get(dto.getClientId())));
-        }
-    }
 }