Browse Source

优化同步设备告警数据定时任务,创建类添加Async,用于异步处理1

james 1 week ago
parent
commit
ad35526b93

+ 0 - 62
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/config/DeviceOperate.java

@@ -36,9 +36,6 @@ public class DeviceOperate {
     @Autowired
     DmpDeviceStatusService dmpDeviceStatusService;
 
-    @Autowired
-    BaseAlarmService baseAlarmService;
-
     @Async
     public void updateDeviceStatus(){
         log.info("定时同步设备状态数据 start");
@@ -69,63 +66,4 @@ public class DeviceOperate {
         }
         log.info("定时同步设备状态数据 end");
     }
-
-    @Async
-    public void deviceAlarm(List<StatusVO> list,List<DmpDeviceInfo> devInfoList,List<BaseAlarm> baseUnAlarmList){
-        log.info("定时同步设备告警数据 start");
-        if(CollectionUtils.isNotEmpty(devInfoList)){
-            for(int i=0;i<list.size();i++){
-                String currentDate = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
-                if(Objects.nonNull(list.get(i).getTime()) && currentDate.equals(list.get(i).getTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")))){
-                    //设备离线告警恢复在线自动默认处理
-                    if(CollectionUtils.isNotEmpty(baseUnAlarmList)){
-                        for(int j=0;j<baseUnAlarmList.size();j++){
-                            if(list.get(i).getDeviceId().equals(baseUnAlarmList.get(j).getDeviceId()) && list.get(i).getProductCode().equals(baseUnAlarmList.get(j).getProductCode())){
-                                LambdaUpdateWrapper<BaseAlarm> updateWrapper1 = Wrappers.lambdaUpdate();
-                                updateWrapper1.set(BaseAlarm::getHandleStatus,1)
-                                        .set(BaseAlarm::getHandleBy,"YT_admin")
-                                        .set(BaseAlarm::getHandleTime,LocalDateTime.now())
-                                        .eq(BaseAlarm::getDeviceId,list.get(i).getDeviceId())
-                                        .eq(BaseAlarm::getHandleStatus,0)
-                                        .eq(BaseAlarm::getProductCode,list.get(i).getProductCode());
-                                baseAlarmService.update(updateWrapper1);
-                                break;
-                            }
-                        }
-                    }
-
-                }else{
-
-                    for(int j=0;j<devInfoList.size();j++){
-                        if(list.get(i).getDeviceId().equals(devInfoList.get(j).getDeviceId()) && list.get(i).getProductCode().equals(devInfoList.get(j).getProductCode())){
-                            int count = 0;
-                            for(int k=0;k<baseUnAlarmList.size();k++){
-                                if(list.get(i).getDeviceId().equals(baseUnAlarmList.get(k).getDeviceId()) && list.get(i).getProductCode().equals(baseUnAlarmList.get(k).getProductCode())){
-                                    count++;
-                                }
-                            }
-                            if(count == 0){
-                                BaseAlarm baseAlarm = new BaseAlarm();
-                                baseAlarm.setDeviceId(list.get(i).getDeviceId());
-                                baseAlarm.setAlarmTime(LocalDateTime.parse(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH"))+":00:00",DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
-                                baseAlarm.setAlarmType("001");
-                                baseAlarm.setAlarmObject(devInfoList.get(j).getDeviceName());
-                                baseAlarm.setAlarmData("");
-                                baseAlarm.setAlarmAttribute("离线告警");
-                                baseAlarm.setAlarmContent("设备离线告警");
-                                baseAlarm.setAlarmGrade(1);
-
-                                baseAlarm.setAlarmAddress(devInfoList.get(j).getInstallAddress());
-                                baseAlarm.setProductCode(devInfoList.get(j).getProductCode());
-                                baseAlarmService.add(baseAlarm);
-                            }
-                            break;
-                        }
-                    }
-
-                }
-            }
-        }
-        log.info("定时同步设备告警数据 end");
-    }
 }

+ 61 - 5
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseAlarmServiceImpl.java

@@ -22,7 +22,6 @@ import com.usky.iot.mapper.BaseAlarmMapper;
 import com.usky.iot.mapper.DmpDeviceTypeMapper;
 import com.usky.iot.service.*;
 import com.usky.common.mybatis.core.AbstractCrudService;
-import com.usky.iot.service.config.DeviceOperate;
 import com.usky.iot.service.config.websocket.WebSocket;
 import com.usky.iot.service.vo.BaseAlarmListVO;
 import com.usky.iot.service.vo.BaseAlarmRequestVO;
@@ -31,6 +30,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
@@ -82,9 +82,6 @@ public class BaseAlarmServiceImpl extends AbstractCrudService<BaseAlarmMapper, B
     @Autowired
     private DmpDeviceTypeMapper dmpDeviceTypeMapper;
 
-    @Autowired
-    private DeviceOperate deviceOperate;
-
     @Override
     public CommonPage<BaseAlarmResponeVO> statistic(BaseAlarmRequestVO baseAlarmRequestVO){
 
@@ -628,6 +625,65 @@ public class BaseAlarmServiceImpl extends AbstractCrudService<BaseAlarmMapper, B
         }
     }
 
+    @Async
+    public void deviceAlarm(List<StatusVO> list, List<DmpDeviceInfo> devInfoList, List<BaseAlarm> baseUnAlarmList){
+        log.info("定时同步设备告警数据 start");
+        if(CollectionUtils.isNotEmpty(devInfoList)){
+            for(int i=0;i<list.size();i++){
+                String currentDate = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                if(Objects.nonNull(list.get(i).getTime()) && currentDate.equals(list.get(i).getTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")))){
+                    //设备离线告警恢复在线自动默认处理
+                    if(CollectionUtils.isNotEmpty(baseUnAlarmList)){
+                        for(int j=0;j<baseUnAlarmList.size();j++){
+                            if(list.get(i).getDeviceId().equals(baseUnAlarmList.get(j).getDeviceId()) && list.get(i).getProductCode().equals(baseUnAlarmList.get(j).getProductCode())){
+                                LambdaUpdateWrapper<BaseAlarm> updateWrapper1 = Wrappers.lambdaUpdate();
+                                updateWrapper1.set(BaseAlarm::getHandleStatus,1)
+                                        .set(BaseAlarm::getHandleBy,"YT_admin")
+                                        .set(BaseAlarm::getHandleTime,LocalDateTime.now())
+                                        .eq(BaseAlarm::getDeviceId,list.get(i).getDeviceId())
+                                        .eq(BaseAlarm::getHandleStatus,0)
+                                        .eq(BaseAlarm::getProductCode,list.get(i).getProductCode());
+                                this.update(updateWrapper1);
+                                break;
+                            }
+                        }
+                    }
+
+                }else{
+
+                    for(int j=0;j<devInfoList.size();j++){
+                        if(list.get(i).getDeviceId().equals(devInfoList.get(j).getDeviceId()) && list.get(i).getProductCode().equals(devInfoList.get(j).getProductCode())){
+                            int count = 0;
+                            for(int k=0;k<baseUnAlarmList.size();k++){
+                                if(list.get(i).getDeviceId().equals(baseUnAlarmList.get(k).getDeviceId()) && list.get(i).getProductCode().equals(baseUnAlarmList.get(k).getProductCode())){
+                                    count++;
+                                }
+                            }
+                            if(count == 0){
+                                BaseAlarm baseAlarm = new BaseAlarm();
+                                baseAlarm.setDeviceId(list.get(i).getDeviceId());
+                                baseAlarm.setAlarmTime(LocalDateTime.parse(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH"))+":00:00",DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+                                baseAlarm.setAlarmType("001");
+                                baseAlarm.setAlarmObject(devInfoList.get(j).getDeviceName());
+                                baseAlarm.setAlarmData("");
+                                baseAlarm.setAlarmAttribute("离线告警");
+                                baseAlarm.setAlarmContent("设备离线告警");
+                                baseAlarm.setAlarmGrade(1);
+
+                                baseAlarm.setAlarmAddress(devInfoList.get(j).getInstallAddress());
+                                baseAlarm.setProductCode(devInfoList.get(j).getProductCode());
+                                this.add(baseAlarm);
+                            }
+                            break;
+                        }
+                    }
+
+                }
+            }
+        }
+        log.info("定时同步设备告警数据 end");
+    }
+
     @Override
     public void deviceOffLineAlarm(){
         List<StatusVO> list = new ArrayList<>();
@@ -654,7 +710,7 @@ public class BaseAlarmServiceImpl extends AbstractCrudService<BaseAlarmMapper, B
                 baseUnAlarmList = baseMapper.getUnDeviceAlarmList(devList);
             }
 
-            deviceOperate.deviceAlarm(list,devInfoList,baseUnAlarmList);
+            this.deviceAlarm(list,devInfoList,baseUnAlarmList);
         }
     }