فهرست منبع

更新! 取消GateWay信息

TRX 1 سال پیش
والد
کامیت
2a4392ce6b

+ 17 - 0
OneCardIotServer/src/main/java/com/zhongshu/iot/server/core/service/device/DeviceInfoService.java

@@ -242,6 +242,7 @@ public class DeviceInfoService {
             return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
         }
         deviceInfo.setState(param.getState());
+        updateDeviceOnLineStateByState(deviceInfo);
         deviceInfoDao.save(deviceInfo);
 
         // 通知设备在线状态变化
@@ -256,6 +257,18 @@ public class DeviceInfoService {
         return ResultContent.buildSuccess();
     }
 
+    private void updateDeviceOnLineStateByState(DeviceInfo deviceInfo) {
+        if (deviceInfo != null) {
+            if (deviceInfo.getState() == DeviceState.Enable) {
+
+            } else if (deviceInfo.getState() == DeviceState.Disable) {
+                deviceInfo.setOnLineState(OnLineState.Disable);
+            } else if (deviceInfo.getState() == DeviceState.Cancel) {
+                deviceInfo.setOnLineState(OnLineState.Cancel);
+            }
+        }
+    }
+
     /**
      * 测试设备的连接时间
      *
@@ -299,6 +312,9 @@ public class DeviceInfoService {
         if (ObjectUtils.isEmpty(deviceInfo)) {
             return ResultContent.buildFail(String.format("设备ID不存在:%s", deviceId));
         }
+        if (deviceInfo.getState() != DeviceState.Cancel) {
+            return ResultContent.buildFail("设备未注销,不能删除");
+        }
         deviceInfo.setIsDelete(Boolean.TRUE);
         deviceInfoDao.save(deviceInfo);
 
@@ -328,6 +344,7 @@ public class DeviceInfoService {
             return ResultContent.buildFail(String.format("设备ID不存在:%s", deviceId));
         }
         deviceInfo.setState(DeviceState.Cancel);
+        updateDeviceOnLineStateByState(deviceInfo);
         deviceInfoDao.save(deviceInfo);
 
         // 更新设备信息

+ 22 - 1
OneCardIotServer/src/main/java/com/zhongshu/iot/server/core/service/device/DeviceStatisticsService.java

@@ -7,6 +7,7 @@ import com.github.microservice.models.statistics.SeriesModel;
 import com.github.microservice.net.ResultContent;
 import com.github.microservice.types.deviceUse.DeviceCategory;
 import com.github.microservice.types.deviceUse.DeviceType;
+import com.github.microservice.types.deviceUse.OnLineState;
 import com.zhongshu.iot.client.model.artemis.OperationMessageSearchParam;
 import com.zhongshu.iot.client.model.iot.statistics.DeviceStatisticsModel;
 import com.zhongshu.iot.client.model.mqtt.DeviceInfoSearchParam;
@@ -73,7 +74,7 @@ public class DeviceStatisticsService {
 
         // 设备分类统计
         model.setDevicePie(deviceGroupStatistics());
-
+        model.setDeviceStatePie(deviceStateGroupStatistics());
         return ResultContent.buildSuccess(model);
     }
 
@@ -126,4 +127,24 @@ public class DeviceStatisticsService {
         return pieModel;
     }
 
+    /**
+     * 设备状态统计
+     *
+     * @return
+     */
+    public PieModel deviceStateGroupStatistics() {
+        PieModel pieModel = new PieModel();
+        DeviceInfoSearchParam param = new DeviceInfoSearchParam();
+        String fieldName = "onLineState";
+        Map<String, Long> map = deviceInfoDao.deviceGroupStatistics(param, fieldName);
+        for (OnLineState onLineState : OnLineState.values()) {
+            Long value = 0L;
+            if (map.containsKey(onLineState.name())) {
+                value = map.get(onLineState.name());
+            }
+            pieModel.addPieDataModel(PieDataModel.builder().value(value).name(onLineState.getRemark()).build());
+        }
+        return pieModel;
+    }
+
 }