Przeglądaj źródła

传感器同步接口代码提交

jingyuanchao 1 rok temu
rodzic
commit
1f951fd875

+ 5 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/enums/CategoryDataEnum.java

@@ -22,6 +22,11 @@ public enum CategoryDataEnum {
     TALK_HOST_DEVICE(3713672073773056L, "对讲主机"),
     DOOR_HOST_DEVICE(3713672266842112L, "门禁主机"),
     ALARM_HOST_SENSOR(3713672266842113L, "报警主机传感器"),
+    HUMITURE_SENSOR(3712195941285888L, "温湿度"),
+    INFRARED_SENSOR(3713672266842116L, "红外"),
+    SMOKE_SENSOR(3712194930442240L, "烟感"),
+    WATER_SENSOR(3712196701503488L, "水浸"),
+    AMMETER_SENSOR(3712198166114160L, "智能电表"),
     ;
 
 

+ 16 - 17
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotSensorServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.iot.domain.IotSensor;
 import com.xunmei.common.core.domain.iot.domain.IotSensorLog;
+import com.xunmei.common.core.enums.CategoryDataEnum;
 import com.xunmei.common.core.utils.IDHelper;
 import com.xunmei.mediator.api.mapper.IotSensorMapper;
 import com.xunmei.mediator.api.service.EquipmentSyncService;
@@ -22,6 +23,7 @@ import com.xunmei.system.api.dto.DataPageDto;
 import com.xunmei.system.api.dto.SensorDto;
 import com.xunmei.system.api.dto.SensorStatusDto;
 import com.xunmei.system.api.dto.protection.ReceiveErrorDto;
+import com.xunmei.system.api.util.LogUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
@@ -96,7 +98,7 @@ public class IotSensorServiceImpl extends ServiceImpl<IotSensorMapper, IotSensor
                         , status, "对应设备不存在:" + status.getDeviceCode()));
                 continue;
             }
-            buildSensorAndLog(sensorList,sensorLogList, optional.get());
+            buildSensorAndLog(sensorList, sensorLogList, optional.get());
            /* MediatorDeviceData deviceData = new MediatorDeviceData();
             deviceData.setDeviceName(status.getDeviceName());
             deviceData.setOrgId(org.getId());
@@ -153,15 +155,15 @@ public class IotSensorServiceImpl extends ServiceImpl<IotSensorMapper, IotSensor
             //分页数据的存取
             final List<SensorDto> data = RedisCheckRepeatDataUtil.isCompleted(request, SensorDto.class);
 
-            log.info("判断是否获取通用传感器全部信息分页数据:{}", data.size() > 0);
-            if (data.size() == 0) {
+            LogUtils.DIRECT_HOST_SENSOR.info("判断是否获取通用传感器全部信息分页数据:{}", data.size() > 0);
+            if (ObjectUtil.isEmpty(data)) {
                 return dto;
             }
 
-            new Thread(() -> {
+           /* new Thread(() -> {
                 //删除直连主机传感器一个月前的状态数据
                 // productDeviceMapper.deleteDirectHostHistory(DateUtil.offset(new Date(), DateField.MONTH, -1));
-            }).start();
+            }).start();*/
 
             List<Long> deletedDeviceIds = new ArrayList<>();
             List<IotSensor> devices = convertToDomain(data, msgId, branchId, deletedDeviceIds);
@@ -208,12 +210,9 @@ public class IotSensorServiceImpl extends ServiceImpl<IotSensorMapper, IotSensor
                 continue;
             }
             uniqueSet.add(key);
-
             List<IotSensor> exists = productDeviceMap.get(key);
             domain.setId(IDHelper.id());
-           /* domain.setOnline(DeviceOnlineStatus.UNKNOW.ordinal());
-            domain.setIsAlarm(DeviceAlarmStatus.NORMAL.getStatus());
-            domain.setDoStatus(0);*/
+            domain.setDeviceType(sensorDto.getDeviceType());
             domain.setDeleted(0);
             domain.setCreateTime(LocalDateTime.now());
 
@@ -247,26 +246,26 @@ public class IotSensorServiceImpl extends ServiceImpl<IotSensorMapper, IotSensor
         return baseMapper.selectList(new LambdaQueryWrapper<IotSensor>()
                         .eq(IotSensor::getSource, 1))
                 .stream()
-                .collect(Collectors.groupingBy(c -> c.getOrgId().toString()));
+                .collect(Collectors.groupingBy(c -> c.getOrgId()+c.getDeviceCode()));
     }
 
     private Long convertDeviceType(String deviceCode) {
         Long type = null;
         switch (deviceCode) {
             case "4183"://温湿度
-                type = 3712195941285888L; //todo
+                type = CategoryDataEnum.HUMITURE_SENSOR.getId(); //todo
+                break;
+            case "4181"://红外
+                type = CategoryDataEnum.INFRARED_SENSOR.getId();
                 break;
-//            case "4181"://红外
-//                type = 3713672266842116L;
-//                break;
             case "4182": //烟感
-                type = 3712194930442240L;
+                type = CategoryDataEnum.SMOKE_SENSOR.getId();
                 break;
             case "4184": //水浸
-                type = 3712196701503488L;
+                type = CategoryDataEnum.WATER_SENSOR.getId();
                 break;
             case "4160"://智能电表
-                type = 3712198166114160L;
+                type = CategoryDataEnum.AMMETER_SENSOR.getId();
         }
 
         return type;

+ 40 - 37
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/util/RedisCheckRepeatDataUtil.java

@@ -15,59 +15,61 @@ import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 public class RedisCheckRepeatDataUtil {
-    
-    private static final StringRedisTemplate redisTemplate= SpringUtils.getBean(StringRedisTemplate.class);
+
+    private static final StringRedisTemplate redisTemplate = SpringUtils.getBean(StringRedisTemplate.class);
+
     /**
      * 验证是否在段时间内收到重复的数据
+     *
      * @param key
      * @param value
      * @return
      */
-    public boolean checkData (String key,String value){
+    public boolean checkData(String key, String value) {
         boolean flag = true;
-        if(redisTemplate.hasKey(key)){
+        if (redisTemplate.hasKey(key)) {
             String val = (String) redisTemplate.opsForValue().get(key);
-            if(val!=null){
-                if(value.equals(val)){
+            if (val != null) {
+                if (value.equals(val)) {
                     flag = false;
-                }else{
-                    redisTemplate.opsForValue().set(key,value);
-                    redisTemplate.expire(key,60, TimeUnit.MINUTES);
+                } else {
+                    redisTemplate.opsForValue().set(key, value);
+                    redisTemplate.expire(key, 60, TimeUnit.MINUTES);
                 }
-            }else {
-                redisTemplate.opsForValue().set(key,value);
-                redisTemplate.expire(key,60, TimeUnit.MINUTES);
+            } else {
+                redisTemplate.opsForValue().set(key, value);
+                redisTemplate.expire(key, 60, TimeUnit.MINUTES);
             }
-        }else{
-            redisTemplate.opsForValue().set(key,value);
-            redisTemplate.expire(key,60, TimeUnit.MINUTES);
+        } else {
+            redisTemplate.opsForValue().set(key, value);
+            redisTemplate.expire(key, 60, TimeUnit.MINUTES);
         }
         return flag;
     }
 
-    public boolean checkData (String key,String value,int timeOut){
+    public boolean checkData(String key, String value, int timeOut) {
         boolean flag = true;
-        if(Boolean.TRUE.equals(redisTemplate.hasKey(key))){
+        if (Boolean.TRUE.equals(redisTemplate.hasKey(key))) {
             String val = (String) redisTemplate.opsForValue().get(key);
-            if(val!=null){
-                if(value.equals(val)){
+            if (val != null) {
+                if (value.equals(val)) {
                     flag = false;
-                }else{
-                    redisTemplate.opsForValue().set(key,value);
-                    if(timeOut>0){
-                        redisTemplate.expire(key,timeOut, TimeUnit.MINUTES);
+                } else {
+                    redisTemplate.opsForValue().set(key, value);
+                    if (timeOut > 0) {
+                        redisTemplate.expire(key, timeOut, TimeUnit.MINUTES);
                     }
                 }
-            }else {
-                redisTemplate.opsForValue().set(key,value);
-                if(timeOut>0){
-                    redisTemplate.expire(key,timeOut, TimeUnit.MINUTES);
+            } else {
+                redisTemplate.opsForValue().set(key, value);
+                if (timeOut > 0) {
+                    redisTemplate.expire(key, timeOut, TimeUnit.MINUTES);
                 }
             }
-        }else{
-            redisTemplate.opsForValue().set(key,value);
-            if(timeOut>0){
-                redisTemplate.expire(key,timeOut, TimeUnit.MINUTES);
+        } else {
+            redisTemplate.opsForValue().set(key, value);
+            if (timeOut > 0) {
+                redisTemplate.expire(key, timeOut, TimeUnit.MINUTES);
             }
         }
         return flag;
@@ -75,12 +77,13 @@ public class RedisCheckRepeatDataUtil {
 
     /**
      * 分页数据数据在redis中的存取
+     *
      * @param request
      * @param clazz
      * @param <T>
      * @return
      */
-    public static   <T> List<T> isCompleted(DataPageDto<T> request, Class<T> clazz){
+    public static <T> List<T> isCompleted(DataPageDto<T> request, Class<T> clazz) {
         String packageGuid = request.getPackageGuid();
         Long currPage = request.getCurrPage();
         Long totalPage = request.getTotalPage();
@@ -93,10 +96,10 @@ public class RedisCheckRepeatDataUtil {
         String currPageKey = packageGuid + "_" + currPage;
 
         Boolean isExist = redisTemplate.hasKey(currPageKey);
-        if(Boolean.FALSE.equals(isExist)){
+        if (Boolean.FALSE.equals(isExist)) {
             String data = JSON.toJSONString(dtoList);
-            redisTemplate.opsForValue().set(currPageKey,data);
-            redisTemplate.expire(currPageKey,1, TimeUnit.DAYS);
+            redisTemplate.opsForValue().set(currPageKey, data);
+            redisTemplate.expire(currPageKey, 1, TimeUnit.DAYS);
         }
         List<String> allPageKeyList = new ArrayList<>();
         for (int i = 1; i <= totalPage; i++) {
@@ -106,11 +109,11 @@ public class RedisCheckRepeatDataUtil {
         //判断是否拿到所有的数据
         final List<Boolean> list = allPageKeyList.stream().map(key -> redisTemplate.hasKey(key)).distinct().collect(Collectors.toList());
         if (list.contains(Boolean.FALSE)) {
-            return ListUtil.empty();
+            // return ListUtil.empty();
         }
 
         return allPageKeyList.stream().map(k -> {
-             String obj = (String) redisTemplate.opsForValue().get(k);
+            String obj = redisTemplate.opsForValue().get(k);
             if (ObjectUtil.isNotEmpty(obj)) {
                 final List<T> ts = JSON.parseArray(obj, clazz);
                 redisTemplate.delete(k);