|
@@ -7,6 +7,7 @@ import cn.afterturn.easypoi.excel.ExcelImportUtil;
|
|
|
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
|
|
import cn.afterturn.easypoi.excel.entity.ImportParams;
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
+import cn.hutool.core.date.DateTime;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
@@ -28,6 +29,9 @@ import com.usky.common.core.exception.BusinessException;
|
|
|
import com.usky.common.core.util.BeanMapperUtils;
|
|
|
import com.usky.common.core.util.UUIDUtils;
|
|
|
import com.usky.common.mybatis.core.AbstractCrudService;
|
|
|
+import com.usky.demo.RemoteTsdbProxyService;
|
|
|
+import com.usky.demo.domain.LastInnerQueryVO;
|
|
|
+import com.usky.demo.domain.LastInnerResultVO;
|
|
|
import com.usky.iot.domain.*;
|
|
|
import com.usky.common.security.utils.SecurityUtils;
|
|
|
import com.usky.iot.mapper.DmpDeviceInfoMapper;
|
|
@@ -37,6 +41,7 @@ import com.usky.iot.service.DmpDeviceStatusService;
|
|
|
import com.usky.iot.service.DmpProductAttributeService;
|
|
|
import com.usky.iot.service.vo.*;
|
|
|
import com.usky.transfer.RemoteTransferService;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.poi.ss.usermodel.Workbook;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -48,7 +53,9 @@ import javax.servlet.ServletOutputStream;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.IOException;
|
|
|
import java.text.DecimalFormat;
|
|
|
+import java.time.Instant;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.time.ZoneOffset;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -61,6 +68,7 @@ import java.util.stream.Collectors;
|
|
|
* @author ya
|
|
|
* @since 2022-10-08
|
|
|
*/
|
|
|
+@Slf4j
|
|
|
@Service
|
|
|
public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoMapper, DmpDeviceInfo> implements DmpDeviceInfoService {
|
|
|
@Autowired
|
|
@@ -81,6 +89,9 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
|
|
|
@Autowired
|
|
|
private RemoteTransferService remoteTransferService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private RemoteTsdbProxyService remoteTsdbProxyService;
|
|
|
+
|
|
|
@Override
|
|
|
public Map<String,Object> control(String productCode, String deviceUuid, String commandCode, String commandValue, String domain, Long userId, String userName){
|
|
|
Integer tenantId;
|
|
@@ -155,6 +166,7 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
|
|
|
dmpDeviceStatus.setDeviceStatus(2);
|
|
|
dmpDeviceStatus.setLastOfflineTime(LocalDateTime.now());
|
|
|
dmpDeviceStatus.setProductCode(dmpDeviceInfo.getProductCode());
|
|
|
+ dmpDeviceStatus.setDeviceUuid(dmpDeviceInfo.getDeviceUuid());
|
|
|
dmpDeviceStatusService.save(dmpDeviceStatus);
|
|
|
}else{
|
|
|
throw new BusinessException("新增设备信息'" + dmpDeviceInfo.getDeviceId() + "'失败,无对应产品信息");
|
|
@@ -198,6 +210,122 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
|
|
|
return null != one && !Objects.equals(one.getId(), id);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void deviceStatus(){
|
|
|
+// log.info("定时同步设备状态和设备告警数据 start");
|
|
|
+// ApiResult<List<StatusVO>> resultList = dataQueryClient.status();
|
|
|
+// List<StatusVO> list = resultList.getData();
|
|
|
+// 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);
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// }
|
|
|
+// log.info("定时同步设备状态和设备告警数据 end");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void updateDeviceStatus(LastInnerQueryVO queryVO){
|
|
|
+ List<LastInnerResultVO> list = remoteTsdbProxyService.last(queryVO);
|
|
|
+ if(CollectionUtils.isNotEmpty(list)){
|
|
|
+ for(int i=0;i<list.size();i++){
|
|
|
+ String deviceuuid = list.get(i).getDeviceuuid();
|
|
|
+ LocalDateTime lTime = Instant.ofEpochMilli(Long.valueOf(list.get(i).getMetrics().get("time").toString())).atZone(ZoneOffset.ofHours(8)).toLocalDateTime();
|
|
|
+ String date = lTime.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,lTime)
|
|
|
+ .eq(DmpDeviceStatus::getDeviceUuid,deviceuuid);
|
|
|
+
|
|
|
+ }else{
|
|
|
+ updateWrapper.set(DmpDeviceStatus::getDeviceStatus,2) //设备离线
|
|
|
+ .set(DmpDeviceStatus::getLastOnlineTime,lTime)
|
|
|
+ .eq(DmpDeviceStatus::getDeviceUuid,deviceuuid);
|
|
|
+
|
|
|
+ }
|
|
|
+ dmpDeviceStatusService.update(updateWrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public CommonPage<DmpDeviceInfo> page(DmpDeviceInfoRequest diRequest) {
|
|
|
List<DmpDeviceInfo> list = new ArrayList<>();
|
|
@@ -637,6 +765,7 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
|
|
|
dmpDeviceStatus.setDeviceStatus(2);
|
|
|
dmpDeviceStatus.setLastOfflineTime(LocalDateTime.now());
|
|
|
dmpDeviceStatus.setProductCode(devList.get(i).getProductCode());
|
|
|
+ dmpDeviceStatus.setDeviceUuid(devList.get(i).getDeviceUuid());
|
|
|
dmpDeviceStatusList.add(dmpDeviceStatus);
|
|
|
}else{
|
|
|
throw new BusinessException("新增设备信息'" + devList.get(i).getDeviceId() + "'失败,无对应产品信息");
|