Forráskód Böngészése

动环设备状态上报 bug修改

jingyuanchao 1 éve
szülő
commit
be51278ac3

+ 3 - 0
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/iot/service/impl/IotDeviceStatusLogServiceImpl.java

@@ -9,6 +9,8 @@ import com.xunmei.system.api.domain.iot.IotDeviceStatus;
 import com.xunmei.system.api.domain.iot.IotDeviceStatusLog;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
+
 /**
  * @author jingyuanchao
  * @date 2024/8/12 16:05
@@ -23,6 +25,7 @@ public class IotDeviceStatusLogServiceImpl extends ServiceImpl<IotDeviceStatusLo
         BeanUtils.copyProperties(status, statusLog,"id");
         statusLog.setId(IdWorker.getId());
         statusLog.setDeviceStatusId(status.getId());
+        statusLog.setCreateTime(new Date());
         this.save(statusLog);
     }
 }

+ 25 - 36
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/iot/service/impl/IotDeviceStatusServiceImpl.java

@@ -12,7 +12,6 @@ import com.xunmei.common.core.domain.mediator.domain.IotAlarmData;
 import com.xunmei.common.core.domain.mediator.domain.IotAlarmSystemField;
 import com.xunmei.common.core.enums.iot.BaseDeviceTypeEnum;
 import com.xunmei.common.core.enums.iot.DeviceStatusEnum;
-import com.xunmei.common.core.enums.iot.DeviceTypeEnum;
 import com.xunmei.common.core.enums.iot.SensorType;
 import com.xunmei.common.core.util.BeanHelper;
 import com.xunmei.host.alarm.mapper.IotAlarmSystemFieldMapper;
@@ -32,9 +31,7 @@ import com.xunmei.host.websocket.service.RouterService;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.iot.IotDeviceInfo;
 import com.xunmei.system.api.domain.iot.IotDeviceStatus;
-import com.xunmei.system.api.enums.ElectricityMeterAttributes;
 import com.xunmei.system.api.util.LogUtils;
-import io.netty.util.internal.StringUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -42,10 +39,7 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.StringJoiner;
+import java.util.*;
 
 
 /**
@@ -83,36 +77,31 @@ public class IotDeviceStatusServiceImpl extends ServiceImpl<IotDeviceStatusMappe
         final JSONArray array = new JSONArray();
         for (Object datum : data) {
             JSONObject jsb = (JSONObject) datum;
-            JSONObject object = new JSONObject();
-            array.add(object);
-            String name = fieldList
+
+
+            final Optional<IotAlarmSystemField> fieldOptional = fieldList
                     .stream()
                     .filter(r -> ObjectUtil.equal(r.getPropertyName(), jsb.get("propertyName")))
                     .filter(r -> ObjectUtil.equal(deviceType, String.valueOf(r.getSourceType())))
-                    .map(IotAlarmSystemField::getName)
-                    .findFirst()
-                    .orElse(StringUtil.EMPTY_STRING);
-            String val = DeviceTypeEnum.getStatusText(jsb.get("propertyValue"));
-            if (ObjectUtil.hasEmpty(name, val)) {
-                continue;
-            }
-            object.put("name", name);
-            object.put("val", val);
-            final ElectricityMeterAttributes attributesEnum = ElectricityMeterAttributes.getEnumByName(name);
-            if (ObjectUtil.isNull(attributesEnum)) {
-                continue;
-            }
-            if (ObjectUtil.isNotEmpty(attributesEnum.getUnit())) {
-                //说明存在单位,那么把val拼接上单位set到原来的属性值中去
-                object.put("unit", attributesEnum.getUnit());
-                object.put("res", val + attributesEnum.getUnit());
-            } else {
-                object.put("unit", attributesEnum.getEnumText());
-                final Map extraMap = com.alibaba.fastjson2.JSON.parseObject(attributesEnum.getEnumText(), Map.class);
-                for (Object o : extraMap.keySet()) {
-                    if (String.valueOf(o).equals(val)) {
-                        object.put("res", (String) extraMap.get(o));
-                    }
+                    .findFirst();
+            if (fieldOptional.isPresent()) {
+                final IotAlarmSystemField systemField = fieldOptional.get();
+                final String unit = systemField.getUnit();
+                JSONObject object = new JSONObject();
+                array.add(object);
+                if (ObjectUtil.isNotEmpty(unit)) {
+                    //说明不是开关量
+                    object.put("name", systemField.getName());
+                    object.put("val", jsb.get("propertyValue"));
+                    object.put("res", jsb.get("propertyValue") + unit);
+                    object.put("unit", unit);
+                } else {
+                    object.put("name", systemField.getName());
+                    object.put("val", jsb.get("propertyValue"));
+                    final String specs = systemField.getSpecs();
+                    final Map map = JSON.parseObject(specs, Map.class);
+                    object.put("unit", JSONObject.parseObject(specs));
+                    object.put("res", map.get(jsb.get("propertyValue")));
                 }
 
             }
@@ -208,11 +197,11 @@ public class IotDeviceStatusServiceImpl extends ServiceImpl<IotDeviceStatusMappe
                     });
             iotAlarmDataService.saveOrUpdate(iotAlarmData);
             // 发生报警
-            if(ObjectUtil.isNotNull(dataReq.getStartTime())&&ObjectUtil.isNull(dataReq.getEndTime())){
+            if (ObjectUtil.isNotNull(dataReq.getStartTime()) && ObjectUtil.isNull(dataReq.getEndTime())) {
                 updateStatusByDevicePrimaryId(deviceInfo.getId(), DeviceStatusEnum.ALARM.getValue());
             }
             // 报警结束
-            if(ObjectUtil.isNotNull(dataReq.getStartTime())&&ObjectUtil.isNotNull(dataReq.getEndTime())){
+            if (ObjectUtil.isNotNull(dataReq.getStartTime()) && ObjectUtil.isNotNull(dataReq.getEndTime())) {
                 updateStatusByDevicePrimaryId(deviceInfo.getId(), DeviceStatusEnum.NORMAL.getValue());
             }
             if (Boolean.TRUE.equals(dataReq.getSmsType())) {

+ 2 - 2
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/websocket/handler/SocWebSocketHandler.java

@@ -149,8 +149,8 @@ public class SocWebSocketHandler extends AbstractWebSocketHandler {
     @Override
     protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
         // 从WebSocket会话中获取登录用户信息
-        String token = WebSocketSessionHolder.updateToken(session);
-        //String token = "01d2253b-b20b-4756-bdc8-4ec79db08026";
+        //String token = WebSocketSessionHolder.updateToken(session);
+        String token = "f1418fd8-64c3-4b9f-91b1-9bbe76b0314c";
         if (StringUtils.isEmpty(token)) {
             LogUtils.WEBSOCKET_MSG.error("会话消息不存在,ip:{}", WebSocketUtils.getIp(session));
             return;