|
@@ -2,19 +2,19 @@ package com.usky.iot.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.usky.backend.client.DataQueryClient;
|
|
|
+import com.usky.backend.domain.StatusVO;
|
|
|
import com.usky.common.core.bean.CommonPage;
|
|
|
import com.usky.common.core.exception.BusinessException;
|
|
|
import com.usky.common.security.utils.SecurityUtils;
|
|
|
import com.usky.iot.domain.*;
|
|
|
import com.usky.iot.mapper.BaseAlarmMapper;
|
|
|
-import com.usky.iot.service.BaseAlarmService;
|
|
|
+import com.usky.iot.service.*;
|
|
|
import com.usky.common.mybatis.core.AbstractCrudService;
|
|
|
-import com.usky.iot.service.BaseFacilityDeviceService;
|
|
|
-import com.usky.iot.service.DmpDeviceInfoService;
|
|
|
-import com.usky.iot.service.DmpProductInfoService;
|
|
|
import com.usky.iot.service.config.websocket.WebSocket;
|
|
|
import com.usky.iot.service.vo.BaseAlarmListVO;
|
|
|
import com.usky.iot.service.vo.BaseAlarmRequestVO;
|
|
@@ -23,6 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -49,6 +50,12 @@ public class BaseAlarmServiceImpl extends AbstractCrudService<BaseAlarmMapper, B
|
|
|
@Autowired
|
|
|
private WebSocket webSocket;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private DataQueryClient dataQueryClient;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private DmpDeviceStatusService dmpDeviceStatusService;
|
|
|
+
|
|
|
@Override
|
|
|
public CommonPage<BaseAlarmResponeVO> statistic(BaseAlarmRequestVO baseAlarmRequestVO){
|
|
|
|
|
@@ -322,6 +329,92 @@ public class BaseAlarmServiceImpl extends AbstractCrudService<BaseAlarmMapper, B
|
|
|
throw new BusinessException("告警数据投递失败,产品编码或设备编号不能为空");
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void status(){
|
|
|
+ List<StatusVO> list = dataQueryClient.status();
|
|
|
+ if(CollectionUtils.isNotEmpty(list)){
|
|
|
+ List<String> devList = new ArrayList<>();
|
|
|
+ for(int i=0;i<list.size();i++){
|
|
|
+ devList.add(list.get(i).getDeviceId());
|
|
|
+ }
|
|
|
+
|
|
|
+ List<DmpDeviceInfo> devInfoList = new ArrayList<>();
|
|
|
+ List<BaseAlarm> baseUnAlarmList = new ArrayList<>();
|
|
|
+// List<BaseAlarm> baseAlarmList = new ArrayList<>();
|
|
|
+ if(devList.size() > 0) {
|
|
|
+ devInfoList = baseMapper.getDeviceInfoList(devList);
|
|
|
+ baseUnAlarmList = baseMapper.getUnDeviceAlarmList(devList);
|
|
|
+// baseAlarmList = baseMapper.getDeviceAlarmList(devList);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(CollectionUtils.isNotEmpty(devInfoList)){
|
|
|
+ for(int i=0;i<list.size();i++){
|
|
|
+ String date = list.get(i).getTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
|
|
+ String currentDate = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
|
|
+ LambdaUpdateWrapper<DmpDeviceStatus> updateWrapper = Wrappers.lambdaUpdate();
|
|
|
+ if(date.equals(currentDate)){
|
|
|
+ updateWrapper.set(DmpDeviceStatus::getDeviceStatus,1) //设备在线
|
|
|
+ .set(DmpDeviceStatus::getLastOnlineTime,list.get(i).getTime())
|
|
|
+ .eq(DmpDeviceStatus::getDeviceId,list.get(i).getDeviceId())
|
|
|
+ .eq(DmpDeviceStatus::getProductCode,list.get(i).getProductCode());
|
|
|
+ //设备离线告警恢复在线自动默认处理
|
|
|
+ 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{
|
|
|
+ updateWrapper.set(DmpDeviceStatus::getDeviceStatus,2) //设备离线
|
|
|
+ .set(DmpDeviceStatus::getLastOfflineTime,list.get(i).getTime())
|
|
|
+ .eq(DmpDeviceStatus::getDeviceId,list.get(i).getDeviceId())
|
|
|
+ .eq(DmpDeviceStatus::getProductCode,list.get(i).getProductCode());
|
|
|
+
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ dmpDeviceStatusService.update(updateWrapper);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|