Просмотр исходного кода

优化空间绑定网关(一个空间绑定一个或多个网关)接口,空间绑定设备列表中的网关设备;优化根据空间ID查询网关列表接口,获取设备状态表中网关设备在线状态、最后上线时间、最后离线时间字段值;

james 5 дней назад
Родитель
Сommit
e2d6c3bfc3

+ 25 - 0
service-ems/service-ems-biz/src/main/java/com/usky/ems/domain/DmpDevice.java

@@ -1,12 +1,14 @@
 package com.usky.ems.domain;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
+import java.time.LocalDateTime;
 
 /**
  * <p>
@@ -83,4 +85,27 @@ public class DmpDevice implements Serializable {
      * 租户号
      */
     private Integer tenantId;
+
+    /**
+     * 安装位置
+     */
+    private String installAddress;
+
+    /**
+     * 设备状态;1:在线,2:离线
+     */
+    @TableField(exist = false)
+    private Integer deviceStatus;
+
+    /**
+     * 最后上线时间
+     */
+    @TableField(exist = false)
+    private LocalDateTime lastOnlineTime;
+
+    /**
+     * 最后离线时间
+     */
+    @TableField(exist = false)
+    private LocalDateTime lastOfflineTime;
 }

+ 38 - 0
service-ems/service-ems-biz/src/main/java/com/usky/ems/domain/DmpDeviceStatus.java

@@ -0,0 +1,38 @@
+package com.usky.ems.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 设备状态表(dmp_device_status)
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("dmp_device_status")
+public class DmpDeviceStatus implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private String deviceId;
+
+    private Integer productId;
+
+    private Integer deviceStatus;
+
+    private LocalDateTime lastOnlineTime;
+
+    private LocalDateTime lastOfflineTime;
+
+    private String productCode;
+
+    private String deviceUuid;
+}

+ 12 - 0
service-ems/service-ems-biz/src/main/java/com/usky/ems/mapper/DmpDeviceStatusMapper.java

@@ -0,0 +1,12 @@
+package com.usky.ems.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.usky.ems.domain.DmpDeviceStatus;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 设备状态表 Mapper
+ */
+@Mapper
+public interface DmpDeviceStatusMapper extends BaseMapper<DmpDeviceStatus> {
+}

+ 27 - 20
service-ems/service-ems-biz/src/main/java/com/usky/ems/service/impl/EmsModelServiceImpl.java

@@ -2,6 +2,7 @@ package com.usky.ems.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.ems.domain.*;
 import com.usky.ems.mapper.*;
@@ -59,6 +60,10 @@ public class EmsModelServiceImpl implements EmsModelService {
     @Autowired
     private DmpProductMapper dmpProductMapper;
     @Autowired
+    private DmpDeviceMapper dmpDeviceMapper;
+    @Autowired
+    private DmpDeviceStatusMapper dmpDeviceStatusMapper;
+    @Autowired
     private BaseSpaceServiceImpl baseSpaceService;
 
     private static final int SPACE_TYPE_PROJECT = 1;
@@ -759,10 +764,10 @@ public class EmsModelServiceImpl implements EmsModelService {
             return;
         }
 
-        List<DmpGateway> gateways = dmpGatewayMapper.selectList(
-                new LambdaQueryWrapper<DmpGateway>().in(DmpGateway::getDeviceUuid, normalizedUuids));
+        List<DmpDevice> gateways = dmpDeviceMapper.selectList(
+                new LambdaQueryWrapper<DmpDevice>().in(DmpDevice::getDeviceUuid, normalizedUuids));
         Set<String> existsGatewayUuids = gateways.stream()
-                .map(DmpGateway::getDeviceUuid)
+                .map(DmpDevice::getDeviceUuid)
                 .filter(Objects::nonNull)
                 .collect(Collectors.toSet());
         if (existsGatewayUuids.isEmpty()) {
@@ -826,31 +831,33 @@ public class EmsModelServiceImpl implements EmsModelService {
             return Collections.emptyList();
         }
 
-        List<DmpGateway> gateways = dmpGatewayMapper.selectList(
-                new LambdaQueryWrapper<DmpGateway>().in(DmpGateway::getDeviceUuid, gatewayUuids));
+        List<DmpDevice> gateways = dmpDeviceMapper.selectList(
+                new LambdaQueryWrapper<DmpDevice>()
+                        .in(DmpDevice::getDeviceUuid, gatewayUuids)
+                        .eq(DmpDevice::getDeleteFlag, 0));
         if (gateways == null || gateways.isEmpty()) {
             return Collections.emptyList();
         }
 
+        List<DmpDeviceStatus> statusList = dmpDeviceStatusMapper.selectList(
+                Wrappers.<DmpDeviceStatus>lambdaQuery().in(DmpDeviceStatus::getDeviceUuid, gatewayUuids));
+        Map<String, DmpDeviceStatus> statusByUuid = statusList == null ? Collections.emptyMap()
+                : statusList.stream()
+                .filter(s -> s.getDeviceUuid() != null)
+                .collect(Collectors.toMap(DmpDeviceStatus::getDeviceUuid, s -> s, (a, b) -> a));
+
         return gateways.stream().map(item -> {
             DmpGatewayDetailResponse resp = new DmpGatewayDetailResponse();
             resp.setId(item.getId());
             resp.setDeviceUuid(item.getDeviceUuid());
-            resp.setName(item.getName());
-            resp.setIp(item.getIp());
-            resp.setPort(item.getPort());
-            resp.setCommunicationStatus(item.getCommStatus());
-            resp.setOnlineTime(item.getOnlineTime());
-            resp.setOfflineTime(item.getOfflineTime());
-            resp.setUpdateConfigTime(item.getUpdateConfigTime());
-            resp.setUpdateProtocolTime(item.getUpdateProtocolTime());
-            resp.setUpgradeTime(item.getUpgradeTime());
-            resp.setVirtualDevice(item.getVirtualDevice());
-            resp.setRemark(item.getRemark());
-            resp.setUpdatedBy(item.getUpdatedBy());
-            resp.setUpdateTime(item.getUpdateTime());
-            resp.setCreatedBy(item.getCreatedBy());
-            resp.setCreateTime(item.getCreateTime());
+            resp.setName(item.getDeviceName());
+            resp.setInstallAddress(item.getInstallAddress());
+            DmpDeviceStatus status = statusByUuid.get(item.getDeviceUuid());
+            if (status != null) {
+                resp.setCommunicationStatus(status.getDeviceStatus());
+                resp.setOnlineTime(status.getLastOnlineTime());
+                resp.setOfflineTime(status.getLastOfflineTime());
+            }
             return resp;
         }).collect(Collectors.toList());
     }