Bladeren bron

接口调整

hxd 2 maanden geleden
bovenliggende
commit
6757cb485b

+ 36 - 0
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/gateway/impl/WebGatewayImpl.java

@@ -67,6 +67,9 @@ public class WebGatewayImpl implements WebGateway {
     private RedisUtil redisService;
 
     @Autowired
+    private org.springframework.data.redis.core.RedisTemplate<String, Object> redisTemplate;
+
+    @Autowired
     private AdminUserService adminUserService;
 
     @Autowired
@@ -182,6 +185,39 @@ public class WebGatewayImpl implements WebGateway {
             if (dto.getTenantId() != null) {
                 dto.setTenantName(tenantIdNameMap.get(dto.getTenantId()));
             }
+            
+            // 从Redis中获取目标最后离开时间
+            String redisKey = "hfln:device:" + dto.getClientId();
+            try {
+                // 检查key是否存在
+                if (redisService.hasKey(redisKey)) {
+                    // 直接从Hash中获取lastTargetTime字段
+                    Object lastTargetTimeObj = redisTemplate.opsForHash().get(redisKey, "lastTargetTime");
+                    
+                    // 处理获取到的数据
+                    if (lastTargetTimeObj != null) {
+                        try {
+                            //将时间戳转换为LocalDatetime
+                            long lastTargetTimeMillis = Long.parseLong(lastTargetTimeObj.toString());
+                            LocalDateTime lastTargetTime = java.time.Instant.ofEpochMilli(lastTargetTimeMillis)
+                                    .atZone(java.time.ZoneOffset.systemDefault())
+                                    .toLocalDateTime();
+
+                            dto.setLastTargetTime(lastTargetTime);
+                            log.debug("成功设置lastTargetTime,clientId: {}, time: {}", dto.getClientId(), lastTargetTime);
+                        } catch (NumberFormatException e) {
+                            log.warn("Redis中存储的时间戳格式错误,clientId: {}, value: {}", dto.getClientId(), lastTargetTimeObj);
+                        }
+                    } else {
+                        log.debug("未找到lastTargetTime数据,clientId: {}", dto.getClientId());
+                    }
+                } else {
+                    log.debug("Redis中不存在key: {}", redisKey);
+                }
+            } catch (Exception e) {
+                log.warn("获取Redis数据失败,clientId: {}, error: {}", dto.getClientId(), e.getMessage());
+                // 如果获取失败,不设置lastTargetTime,继续处理其他设备
+            }
         });
 
         return CopyUtils.copyPage(devInfoPage, deviceDTOList);