Parcourir la source

修改设备信息po类 与 反参类

hxd il y a 1 mois
Parent
commit
44b7843421

+ 11 - 5
portal-service-common/src/main/java/com/hfln/portal/common/dto/data/device/DeviceDTO.java

@@ -183,14 +183,20 @@ public class DeviceDTO extends BaseVO {
     /**
      * 设备离线时间
      */
-    @Schema(description = "设备线时间")
-    private LocalDateTime offlineTime;
+    @Schema(description = "设备上下线时间")
+    private LocalDateTime onoffTime;
 
     /**
-     * 激活时间
+     * 人物存在标志:0-无人,1-有人
+     */
+    @Schema(description = "人物存在标志:0-无人,1-有人")
+    private Integer existFlag;
+
+    /**
+     *  人物存在改变时间
      */
-    @Schema(description = "目标离开时间")
-    private LocalDateTime lastTargetTime;
+    @Schema(description = "人物存在改变时间")
+    private LocalDateTime presenceChangeTime;
 //    /**
 //     * 安装坐标x
 //     */

+ 1 - 1
portal-service-common/src/main/java/com/hfln/portal/common/request/device/DeviceListParams.java

@@ -12,8 +12,8 @@ import javax.validation.constraints.NotNull;
 @Schema(description = "设备列表查询")
 public class DeviceListParams extends BaseVO {
 
+    @Schema(description = "用户Id")
     @NotNull(message = "用户Id不能为空!")
-    @Schema(description = "用户Id", required = true)
     private Long userId;
 
     @Schema(description = "关键词")

+ 16 - 46
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/gateway/impl/DeviceGatewayImpl.java

@@ -53,9 +53,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.math.BigDecimal;
 import java.time.Duration;
-import java.time.Instant;
 import java.time.LocalDateTime;
-import java.time.ZoneOffset;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
@@ -98,7 +96,7 @@ public class DeviceGatewayImpl implements DeviceGateway {
     private TblTenantService tblTenantService;
 
     @Autowired
-    private  MqttSend mqttSend;
+    private MqttSend mqttSend;
 
     @Autowired
     private RedisUtil redisService;
@@ -144,12 +142,12 @@ public class DeviceGatewayImpl implements DeviceGateway {
 
         // 统计设备总数和告警数量
         int totalDevices = 0;
-        
+
         for (DevInfo devInfo : devInfos) {
             DeviceDTO dto = new DeviceDTO();
             BeanUtils.copyProperties(devInfo, dto);
             deviceDTOs.add(dto);
-            
+
             // 统计设备数量
             totalDevices++;
 
@@ -161,7 +159,7 @@ public class DeviceGatewayImpl implements DeviceGateway {
                 .collect(Collectors.toList());
 
         long warningNums = EventsService.countUserDevicesEvents(clientIds);
-        
+
         homeInfoDTO.setDeviceList(deviceDTOs);
         // 设置设备总数
         homeInfoDTO.setDevNum(totalDevices);
@@ -194,55 +192,27 @@ public class DeviceGatewayImpl implements DeviceGateway {
     public List<DeviceDTO> queryDeviceList(DeviceListParams request) {
 
         log.info("查询设备列表 queryDeviceList");
-        Optional<List<Long>> sharedDevIds = devShareService.queryDeviceIdByUserId(request.getUserId());
+        List<Long> sharedDevIds = devShareService.queryDeviceIdByUserId(request.getUserId())
+                .orElse(Collections.emptyList());
 
         List<DeviceDTO> deviceDTOs = new ArrayList<>();
-        List<DevInfo> devInfos = devInfoService.queryDeviceList(request.getUserId(), request.getKeyWord(),
-                request.getStatus(), sharedDevIds.orElse(Collections.emptyList()));
+        List<DevInfo> devInfos = devInfoService.queryDeviceList(
+                request.getUserId(),
+                request.getKeyWord(),
+                request.getStatus(),
+                sharedDevIds
+        );
 
         for (DevInfo devInfo : devInfos) {
             DeviceDTO dto = new DeviceDTO();
             BeanUtils.copyProperties(devInfo, dto);
 
-            //从Redis中获取目标最后离开时间
-            String redisKey = "hfln:device:" + devInfo.getClientId();  //构建Redis的Key
-            log.info("查询RedisKey: {}", redisKey);
-            try {
-                // 检查key是否存在
-                if (!redisService.hasKey(redisKey)) {
-                    log.info("Redis中不存在key: {}", redisKey);
-                    deviceDTOs.add(dto);
-                    continue;
-                }
-                
-                // 直接从Hash中获取lastTargetTime字段
-                Object lastTargetTimeObj = redisTemplate.opsForHash().get(redisKey, "lastTargetTime");
-                
-                // 处理获取到的数据
-                if (lastTargetTimeObj != null) {
-                    try {
-                        //将时间戳转换为LocalDatetime
-                        long lastTargetTimeMillis = Long.parseLong(lastTargetTimeObj.toString());
-                        LocalDateTime lastTargetTime = Instant.ofEpochMilli(lastTargetTimeMillis)
-                                .atZone(ZoneOffset.systemDefault())
-                                .toLocalDateTime();
-
-                        dto.setLastTargetTime(lastTargetTime);
-                        log.info("成功设置lastTargetTime,clientId: {}, time: {}", devInfo.getClientId(), lastTargetTime);
-                    } catch (NumberFormatException e) {
-                        log.error("Redis中存储的时间戳格式错误,clientId: {}, value: {}", devInfo.getClientId(), lastTargetTimeObj, e);
-                    }
-                } else {
-                    log.info("未找到lastTargetTime数据,clientId: {}", devInfo.getClientId());
-                }
-            } catch (Exception e) {
-                log.error("获取Redis数据失败,clientId: {}", devInfo.getClientId(), e);
-                // 如果获取失败,不设置lastTargetTime,继续处理其他设备
-            }
             deviceDTOs.add(dto);
         }
-        log.info("查询设备列表 queryDeviceList end list.size= {}", deviceDTOs.size());
-        return deviceDTOs;
+
+
+            log.info("查询设备列表 queryDeviceList end list.size= {}", deviceDTOs.size());
+            return deviceDTOs;
     }
 
     @Override

+ 1 - 32
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/gateway/impl/WebGatewayImpl.java

@@ -246,38 +246,7 @@ public class WebGatewayImpl implements WebGateway {
                 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);

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

@@ -225,7 +225,7 @@ public class WebStatsGatewayImpl implements WebStatsGateway {
 
         res.setDetectedCount(Math.toIntExact(devInfoService.lambdaQuery()
                 .eq(DevInfo::getTenantId, params.getTenantId())
-                        .ge(DevInfo::getOfflineTime, LocalDate.now())
+                        .ge(DevInfo::getOnoffTime, LocalDate.now())
                 .count()));
         //     @Schema(description = "年龄统计信息")
         //    private AgeInfo ageInfo;

+ 2 - 1
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/mqtt/MqttSubHandle.java

@@ -392,7 +392,7 @@ public class MqttSubHandle {
                 new LambdaUpdateWrapper<DevInfo>()
                         .eq(DevInfo::getClientId, clientId)
                         .set(DevInfo::getOnline, DevInfo.Constants.OnlineStatus.OFFLINE)
-                        .set(DevInfo::getOfflineTime, LocalDateTime.now())
+                        .set(DevInfo::getOnoffTime, LocalDateTime.now())
         );
     }
 
@@ -411,6 +411,7 @@ public class MqttSubHandle {
                         .eq(DevInfo::getClientId, clientId)
                         .set(DevInfo::getOnline, DevInfo.Constants.OnlineStatus.ONLINE)
                         .set(DevInfo::getExistFlag, DevInfo.Constants.ExistFlag.EXIST)
+                        .set(DevInfo::getOnoffTime, LocalDateTime.now())
                         .set(DevInfo::getPresenceChangeTime, LocalDateTime.now())
         );
     }

+ 3 - 3
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/po/DevInfo.java

@@ -57,10 +57,10 @@ public class DevInfo extends BasePO {
     private Integer online;
 
     /**
-     * 设备线时间
+     * 设备上下线时间
      */
-    @TableField("offline_time")
-    private LocalDateTime offlineTime;
+    @TableField("onoff_time")
+    private LocalDateTime onoffTime;
 
     /**
      * 设备报警:0-正常,1-报警