Browse Source

报警状态处理

master
刘力 3 years ago
parent
commit
385a4cfe85
  1. 4
      storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceTypeReposityory.java
  2. 18
      storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/AlarmInfoController.java
  3. 75
      storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/ApiServiceController.java
  4. 15
      storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/AlarmLog.java
  5. 19
      storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/DisplayParam.java
  6. 29
      storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/GetCurAlarm.java
  7. 15
      storeroom/src/main/java/com/storeroom/modules/storeroom3d/repository/AlarmLogRepository.java
  8. 22
      storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/AlarmInfoService.java
  9. 9
      storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/ThirdApiService.java
  10. 2
      storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/dto/GetCurAlarmDto.java
  11. 68
      storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/dto/GetCurAlarmDtoTest.java
  12. 170
      storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/AlarmInfoServiceImpl.java
  13. 52
      storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/ThirdApiServiceImpl.java
  14. 26
      storeroom/src/test/java/test.java

4
storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceTypeReposityory.java

@ -5,5 +5,7 @@ import com.storeroom.modules.device.domain.DeviceType;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
public interface DeviceTypeReposityory extends JpaRepository<DeviceType,String>, JpaSpecificationExecutor<DeviceType> {
public interface DeviceTypeReposityory extends JpaRepository<DeviceType, String>, JpaSpecificationExecutor<DeviceType> {
DeviceType findByName(String name);
}

18
storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/AlarmInfoController.java

@ -2,16 +2,24 @@ package com.storeroom.modules.storeroom3d.controller;
import com.storeroom.annotaion.rest.AnonymousGetMapping;
import com.storeroom.annotaion.rest.AnonymousPostMapping;
import com.storeroom.exception.BaseException;
import com.storeroom.modules.storeroom3d.domain.GetCurAlarm;
import com.storeroom.modules.storeroom3d.service.AlarmInfoService;
import com.storeroom.modules.storeroom3d.service.dto.GetCurAlarmDto;
import com.storeroom.modules.storeroom3d.service.dto.GetCurAlarmDtoTest;
import com.storeroom.utils.ApiResponse;
import com.storeroom.utils.StringUtils;
import io.swagger.annotations.Api;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Set;
@RestController
@RequestMapping("/api/alarm/")
@Api(tags = "测试第三方接口")
@ -27,10 +35,16 @@ public class AlarmInfoController {
return ApiResponse.success(alarmInfoService.getAllAlarmInfo());
}
@AnonymousPostMapping("testalarm")
public ApiResponse<Object> testalarm(@RequestBody List<GetCurAlarm> getCurAlarms) {
return ApiResponse.success(alarmInfoService.testAlarm(getCurAlarms));
}
@AnonymousGetMapping("storeroom")
public ApiResponse<Object> queryStoreroomId(@RequestParam String storeroomId) {
if (StringUtils.isEmpty(storeroomId)){
throw new BaseException("库房id不能为空");
if (StringUtils.isEmpty(storeroomId)) {
return ApiResponse.success(alarmInfoService.getAllAlarmInfo());
}
return ApiResponse.success(alarmInfoService.getStoreroomDevice(storeroomId));
}

75
storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/ApiServiceController.java

@ -6,11 +6,13 @@ import com.storeroom.modules.storeroom3d.service.PushService;
import com.storeroom.modules.storeroom3d.service.ThirdApiService;
import com.storeroom.utils.ApiResponse;
import com.storeroom.utils.MacUtil;
import com.storeroom.utils.enums.ResponseStatus;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Set;
@ -21,40 +23,41 @@ import java.util.Set;
@RequiredArgsConstructor
public class ApiServiceController {
private final ThirdApiService apiService;
private final PushService pushService;
@ApiOperation("获取库房token")
@AnonymousGetMapping("token")
public ApiResponse<Object> getToken() {
return ApiResponse.success(apiService.getToken());
}
@ApiOperation("获取所有设备")
@AnonymousGetMapping("list")
public ApiResponse<Object> getAllDevice() {
return ApiResponse.success(apiService.getDeviceAll());
}
@AnonymousGetMapping("ip")
@ApiOperation("获取内网ip")
public ApiResponse<Object> getIp() {
return ApiResponse.success(MacUtil.getIpAddress());
}
@ApiOperation("获取报警信息")
@AnonymousGetMapping("getcuralarm")
public ApiResponse<Object> getInfo() {
Object objMsg = apiService.getAllDeviceAlarm();
pushService.pushMsgToAll(objMsg.toString());
return ApiResponse.success(apiService.getAllDeviceAlarm());
}
@ApiOperation("获取设备监控参数实时值")
@AnonymousPostMapping("getrealtimedata")
public ApiResponse<Object> getrealtimedata(@RequestBody Set<String> deviceIds) {
return ApiResponse.success(apiService.getRealTimeData(deviceIds));
}
private final ThirdApiService apiService;
private final PushService pushService;
@ApiOperation("获取库房token")
@AnonymousGetMapping("token")
public ApiResponse<Object> getToken(String url) {
return ApiResponse.success(apiService.getToken(url));
}
@ApiOperation("获取所有设备")
@AnonymousGetMapping("list")
public ApiResponse<Object> getAllDevice(@RequestParam String url) {
return ApiResponse.success(apiService.getDeviceAll(url));
}
@AnonymousGetMapping("ip")
@ApiOperation("获取内网ip")
public ApiResponse<Object> getIp() {
return ApiResponse.success(MacUtil.getIpAddress());
}
@ApiOperation("获取报警信息")
@AnonymousGetMapping("getcuralarm")
public ApiResponse<Object> getInfo(@RequestParam String url) {
Object objMsg = apiService.getAllDeviceAlarm(url);
pushService.pushMsgToAll(objMsg.toString());
return ApiResponse.success(apiService.getAllDeviceAlarm(url));
}
@ApiOperation("获取设备监控参数实时值")
@AnonymousPostMapping("getrealtimedata")
public ApiResponse<Object> getrealtimedata(@RequestBody Set<String> deviceIds) {
//return ApiResponse.success(apiService.getRealTimeData(deviceIds));
return ApiResponse.success(ResponseStatus.SUCCESS);
}
}

15
storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/AlarmLog.java

@ -27,11 +27,14 @@ public class AlarmLog extends BaseEntity implements Serializable {
private String id;
@ManyToOne(targetEntity = Storeroom.class)
@ApiModelProperty(value = "库房id")
@NotFound(action = NotFoundAction.IGNORE)
@JoinColumn(name = "sotreroom_id", referencedColumnName = "id")
private Storeroom storeroomId;
@Column(name = "storeroom_name")
private String storeroomName;
@ApiModelProperty(value = "设备id")
@Column(name = "device_id")
private String deviceId;
@Column(name = "state")
@ApiModelProperty(value = "处理状态")
@ -56,11 +59,11 @@ public class AlarmLog extends BaseEntity implements Serializable {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
AlarmLog alarmLog = (AlarmLog) o;
return Objects.equals(id, alarmLog.id) && Objects.equals(storeroomId, alarmLog.storeroomId) && Objects.equals(state, alarmLog.state) && Objects.equals(deviceName, alarmLog.deviceName) && Objects.equals(content, alarmLog.content);
return Objects.equals(id, alarmLog.id) && Objects.equals(storeroomName, alarmLog.storeroomName) && Objects.equals(state, alarmLog.state) && Objects.equals(deviceName, alarmLog.deviceName) && Objects.equals(content, alarmLog.content);
}
@Override
public int hashCode() {
return Objects.hash(id, storeroomId, state, deviceName, content);
return Objects.hash(id, storeroomName, state, deviceName, content);
}
}

19
storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/DisplayParam.java

@ -4,11 +4,13 @@ import com.storeroom.base.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.stereotype.Component;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Objects;
@Getter
@Setter
@ -26,6 +28,10 @@ public class DisplayParam extends BaseEntity implements Serializable {
@ApiModelProperty(value = "配置id", hidden = true)
private String displayConfigId;
@Column(name = "unit")
@ApiModelProperty(value = "参数单位", hidden = true)
private String unit;
@Column(name = "param_name")
@ApiModelProperty(value = "参数名称", hidden = true)
@ -35,5 +41,16 @@ public class DisplayParam extends BaseEntity implements Serializable {
@ApiModelProperty(value = "参数值", hidden = true)
private String paramValue;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
DisplayParam that = (DisplayParam) o;
return Objects.equals(id, that.id) && Objects.equals(displayConfigId, that.displayConfigId) && Objects.equals(unit, that.unit) && Objects.equals(paramName, that.paramName) && Objects.equals(paramValue, that.paramValue);
}
@Override
public int hashCode() {
return Objects.hash(id, displayConfigId, unit, paramName, paramValue);
}
}

29
storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/GetCurAlarm.java

@ -5,6 +5,7 @@ import com.storeroom.base.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.context.annotation.Configuration;
import javax.persistence.Column;
import javax.persistence.Entity;
@ -28,49 +29,55 @@ public class GetCurAlarm implements Serializable {
private String event_id;
@Column(name = "event_name")
@ApiModelProperty(value = "告警名称",hidden = true)
@ApiModelProperty(value = "告警名称", hidden = true)
private String event_name;
@Column(name = "device_id")
@ApiModelProperty(value = "设备ID",hidden = true)
@ApiModelProperty(value = "设备ID", hidden = true)
private String device_id;
@Column(name = "device_name")
@ApiModelProperty(value = "设备名称",hidden = true)
@ApiModelProperty(value = "设备名称", hidden = true)
private String device_name;
@Column(name = "category_name")
@ApiModelProperty(value = "分类名称",hidden = true)
@ApiModelProperty(value = "分类名称", hidden = true)
private String category_name;
@Column(name = "area_name")
@ApiModelProperty(value = "区域名称",hidden = true)
@ApiModelProperty(value = "区域名称", hidden = true)
private String area_name;
@Column(name = "event_level_name")
@ApiModelProperty(value = "告警等级",hidden = true)
@ApiModelProperty(value = "告警等级", hidden = true)
private String event_level_name;
@Column(name = "alarm_time")
@ApiModelProperty(value = "更新时间",hidden = true)
private Timestamp alarm_time;
@ApiModelProperty(value = "更新时间", hidden = true)
private String alarm_time;
@Column(name = "alarm_value")
@ApiModelProperty(value = "告警值",hidden = true)
@ApiModelProperty(value = "告警值", hidden = true)
private String alarm_value;
@Column(name = "alarm_value_descript")
@ApiModelProperty(value = "告警描述")
private String alarm_value_descript;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
GetCurAlarm that = (GetCurAlarm) o;
return Objects.equals(event_id, that.event_id) && Objects.equals(event_name, that.event_name) && Objects.equals(device_id, that.device_id) && Objects.equals(device_name, that.device_name) && Objects.equals(category_name, that.category_name) && Objects.equals(area_name, that.area_name) && Objects.equals(event_level_name, that.event_level_name) && Objects.equals(alarm_time, that.alarm_time) && Objects.equals(alarm_value, that.alarm_value);
return Objects.equals(event_id, that.event_id) && Objects.equals(event_name, that.event_name) && Objects.equals(device_id, that.device_id) && Objects.equals(device_name, that.device_name) && Objects.equals(category_name, that.category_name) && Objects.equals(area_name, that.area_name) && Objects.equals(event_level_name, that.event_level_name) && Objects.equals(alarm_time, that.alarm_time) && Objects.equals(alarm_value, that.alarm_value) && Objects.equals(alarm_value_descript, that.alarm_value_descript);
}
@Override
public int hashCode() {
return Objects.hash(event_id, event_name, device_id, device_name, category_name, area_name, event_level_name, alarm_time, alarm_value);
return Objects.hash(event_id, event_name, device_id, device_name, category_name, area_name, event_level_name, alarm_time, alarm_value, alarm_value_descript);
}
}

15
storeroom/src/main/java/com/storeroom/modules/storeroom3d/repository/AlarmLogRepository.java

@ -0,0 +1,15 @@
package com.storeroom.modules.storeroom3d.repository;
import com.storeroom.modules.storeroom3d.domain.AlarmLog;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
public interface AlarmLogRepository extends JpaRepository<AlarmLog, String>, JpaSpecificationExecutor<AlarmLog> {
/**
* 通过设备id查询
* @param deviceId
* @return
*/
AlarmLog findByDeviceId(String deviceId);
}

22
storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/AlarmInfoService.java

@ -1,9 +1,31 @@
package com.storeroom.modules.storeroom3d.service;
import com.storeroom.modules.storeroom3d.domain.GetCurAlarm;
import com.storeroom.modules.storeroom3d.service.dto.GetCurAlarmDto;
import com.storeroom.modules.storeroom3d.service.dto.GetCurAlarmDtoTest;
import java.util.List;
public interface AlarmInfoService {
/**
* 获取所有报警
* @return
*/
Object getAllAlarmInfo();
/**
* 根据库房查询设备
* @param storeroomId
* @return
*/
Object getStoreroomDevice(String storeroomId);
/**
* 测试报警数据
* @return
*/
Object testAlarm(List<GetCurAlarm> getCurAlarmDto);
}

9
storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/ThirdApiService.java

@ -1,5 +1,6 @@
package com.storeroom.modules.storeroom3d.service;
import com.storeroom.modules.storeroom3d.domain.GetCurAlarm;
import com.storeroom.modules.storeroom3d.service.dto.DeviceAllDto;
import com.storeroom.modules.storeroom3d.service.dto.GetCurAlarmDto;
@ -12,26 +13,26 @@ public interface ThirdApiService {
* 获取环控token
* @return /
*/
String getToken();
String getToken(String url);
/**
* 获取第三方所有设备
* @return /
*/
List<DeviceAllDto> getDeviceAll();
List<DeviceAllDto> getDeviceAll(String url);
/**
* 获取所有设备报警信息
* @return
*/
List<GetCurAlarmDto> getAllDeviceAlarm();
List<GetCurAlarm> getAllDeviceAlarm(String url);
/**
* 获取设备监控参数实时值
* @return
*/
Object getRealTimeData(Set<String> deviceIds);
Object getRealTimeData(Set<String> deviceIds,String url);
}

2
storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/dto/GetCurAlarmDto.java

@ -53,7 +53,7 @@ public class GetCurAlarmDto implements Serializable {
/**
* 更新时间
*/
private Timestamp alarm_time;
private String alarm_time;
/**
* 告警值

68
storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/dto/GetCurAlarmDtoTest.java

@ -0,0 +1,68 @@
package com.storeroom.modules.storeroom3d.service.dto;
import lombok.Getter;
import lombok.Setter;
import java.sql.Timestamp;
import java.util.Objects;
@Getter
@Setter
public class GetCurAlarmDtoTest {
/**
* 告警id
*/
private String event_id;
/**
* 告警名称
*/
private String event_name;
/**
* 设备ID
*/
private String device_id;
/**
* 设备名称
*/
private String device_name;
/**
* 分类名称
*/
private String category_name;
/**
* 区域名称
*/
private String area_name;
/**
* 告警等级
*/
private String event_level_name;
/**
* 更新时间
*/
private Timestamp alarm_time;
/**
* 告警值
*/
private String alarm_value;
/**
* 告警值描述
*/
private String alarm_value_descript;
}

170
storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/AlarmInfoServiceImpl.java

@ -1,19 +1,27 @@
package com.storeroom.modules.storeroom3d.service.impl;
import com.storeroom.modules.device.domain.DeviceInfo;
import com.storeroom.modules.device.domain.DeviceType;
import com.storeroom.modules.device.domain.Storeroom;
import com.storeroom.modules.device.repository.DeviceInfoRepository;
import com.storeroom.modules.device.repository.DeviceTypeReposityory;
import com.storeroom.modules.device.repository.StoreroomRepository;
import com.storeroom.modules.storeroom3d.domain.AlarmLog;
import com.storeroom.modules.storeroom3d.domain.GetCurAlarm;
import com.storeroom.modules.storeroom3d.repository.AlarmLogRepository;
import com.storeroom.modules.storeroom3d.repository.GetCurAlarmRepository;
import com.storeroom.modules.storeroom3d.service.AlarmInfoService;
import com.storeroom.modules.storeroom3d.service.ThirdApiService;
import com.storeroom.modules.storeroom3d.service.dto.GetCurAlarmDto;
import com.storeroom.modules.storeroom3d.service.impl.mapstruct.GetCurAlarmMapper;
import com.storeroom.utils.NanoIdUtils;
import lombok.RequiredArgsConstructor;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@ -29,43 +37,171 @@ public class AlarmInfoServiceImpl implements AlarmInfoService {
private final GetCurAlarmMapper getCurAlarmMapper;
private final GetCurAlarmRepository getCurAlarmRepository;
private final StoreroomRepository storeroomRepository;
private final AlarmLogRepository alarmLogRepository;
private final DeviceTypeReposityory deviceTypeReposityory;
private String getAddressUrl() {
String url;
Integer prot;
List<DeviceInfo> deviceInfo = deviceInfoRepository.findByDeviceTypeId("E58C8D7C896BCB9A408A78");
if (deviceInfo.size() != 0) {
url = deviceInfo.get(0).getDeviceIp();
prot = deviceInfo.get(0).getDevicePort();
} else {
DeviceType deviceType = deviceTypeReposityory.findByName("空气质量监测");
List<DeviceInfo> deviceInfoList = deviceInfoRepository.findByDeviceTypeId(deviceType.getId());
url = deviceInfoList.get(0).getDeviceIp();
prot = deviceInfoList.get(0).getDevicePort();
}
return url + prot;
}
@Override
public Object getAllAlarmInfo() {
//查询自己所有设备
List<DeviceInfo> deviceInfoList = deviceInfoRepository.findAll();
List<GetCurAlarmDto> alarmDtos = thirdApiService.getAllDeviceAlarm();
List<GetCurAlarmDto> alarmDtos1 = new ArrayList<>();
List<GetCurAlarmDto> alarmDtos2 = alarmDtos.stream().filter(getCurAlarmDto -> Objects.equals(getCurAlarmDto.getDevice_id(), "")).collect(Collectors.toList());
for (int i = 0; i < alarmDtos2.size(); i++) {
//获取第三方接口报警信息
List<GetCurAlarm> getCurAlarmsList = thirdApiService.getAllDeviceAlarm(getAddressUrl());
//创建返回数组
List<GetCurAlarm> valueList = new ArrayList<>();
//过滤设备id 为空的设备
//List<GetCurAlarmDto> alarmDtos2 = alarmDtos.stream().filter(value -> Objects.equals(value.getDevice_id(), "")).collect(Collectors.toList());
for (int i = 0; i < getCurAlarmsList.size(); i++) {
for (int k = 0; k < deviceInfoList.size(); k++) {
if (Objects.equals(alarmDtos.get(i).getDevice_id(), deviceInfoList.get(k).getDeviceId())) {
alarmDtos1.add(alarmDtos.get(i));
GetCurAlarm getCurAlarm = getCurAlarmMapper.toEntity(alarmDtos.get(i));
getCurAlarmRepository.save(getCurAlarm);
//如果设备id相同
if (Objects.equals(getCurAlarmsList.get(i).getDevice_id(), deviceInfoList.get(k).getDeviceId())) {
//通过设备id查询报警日志
AlarmLog alarmLog = alarmLogRepository.findByDeviceId(getCurAlarmsList.get(i).getDevice_id());
//如果报警日志为空
if (ObjectUtils.isEmpty(alarmLog)) {
AlarmLog alarmLogEntity = new AlarmLog();
//创建日志
alarmLogEntity.setId(NanoIdUtils.randomNanoId());
alarmLogEntity.setDeviceId(getCurAlarmsList.get(i).getDevice_id());
alarmLogEntity.setContent(getCurAlarmsList.get(i).getAlarm_value_descript());
alarmLogEntity.setStoreroomName(getCurAlarmsList.get(i).getArea_name());
alarmLogEntity.setState(false);
alarmLogEntity.setRemark("");
alarmLogRepository.save(alarmLogEntity);
}
getCurAlarmRepository.save(getCurAlarmsList.get(i));
//添加设备id 相同的设备报警信息
valueList.add(getCurAlarmsList.get(i));
}
}
}
return alarmDtos1;
}
return null;
}
@Override
public Object getStoreroomDevice(String storeroomId) {
Storeroom storeroom = storeroomRepository.findById(storeroomId).orElseGet(Storeroom::new);
List<DeviceInfo> deviceInfoList = deviceInfoRepository.findByStoreroomId(storeroom);
List<GetCurAlarmDto> alarmDtos = thirdApiService.getAllDeviceAlarm();
List<GetCurAlarmDto> alarmDtos1 = new ArrayList<>();
List<GetCurAlarm> getCurAlarms = thirdApiService.getAllDeviceAlarm(getAddressUrl());
List<GetCurAlarm> alarmDtos1 = new ArrayList<>();
//过滤设备id为空的数据
List<GetCurAlarmDto> alarmDtos2 = alarmDtos.stream().filter(getCurAlarmDto -> Objects.equals(getCurAlarmDto.getDevice_id(), "")).collect(Collectors.toList());
List<GetCurAlarm> alarmDtos2 = getCurAlarms.stream().filter(getCurAlarmDto -> Objects.equals(getCurAlarmDto.getDevice_id(), "")).collect(Collectors.toList());
for (int i = 0; i < alarmDtos2.size(); i++) {
for (int k = 0; k < deviceInfoList.size(); k++) {
if (Objects.equals(alarmDtos.get(i).getDevice_id(), deviceInfoList.get(k).getDeviceId())) {
alarmDtos1.add(alarmDtos.get(i));
// GetCurAlarm getCurAlarm = getCurAlarmMapper.toEntity(alarmDtos.get(i));
if (Objects.equals(getCurAlarms.get(i).getDevice_id(), deviceInfoList.get(k).getDeviceId())) {
alarmDtos1.add(getCurAlarms.get(i));
// GetCurAlarm getCurAlarm = getCurAlarmMapper.toEntity(alarmDtos.get(i));
}
}
}
return alarmDtos1;
}
@Override
public Object testAlarm(List<GetCurAlarm> getCurAlarmDto) {
//查询自己所有设备
List<DeviceInfo> deviceInfoList = deviceInfoRepository.findAll();
//获取第三方接口报警信息
List<GetCurAlarm> getCurAlarmsList = getCurAlarmDto;
//创建返回数组
List<GetCurAlarm> valueList = new ArrayList<>();
//过滤设备id 为空的设备
//List<GetCurAlarmDto> alarmDtos2 = alarmDtos.stream().filter(value -> Objects.equals(value.getDevice_id(), "")).collect(Collectors.toList());
for (int i = 0; i < getCurAlarmsList.size(); i++) {
for (int k = 0; k < deviceInfoList.size(); k++) {
//如果设备id相同
if (Objects.equals(getCurAlarmsList.get(i).getDevice_id(), deviceInfoList.get(k).getDeviceId())) {
//通过设备id查询报警日志
AlarmLog alarmLog = alarmLogRepository.findByDeviceId(getCurAlarmsList.get(i).getDevice_id());
//如果报警日志为空
if (ObjectUtils.isEmpty(alarmLog)) {
AlarmLog alarmLogEntity = new AlarmLog();
//创建日志
alarmLogEntity.setId(NanoIdUtils.randomNanoId());
alarmLogEntity.setDeviceId(getCurAlarmsList.get(i).getDevice_id());
alarmLogEntity.setContent(getCurAlarmsList.get(i).getAlarm_value_descript());
alarmLogEntity.setStoreroomName(getCurAlarmsList.get(i).getArea_name());
alarmLogEntity.setState(false);
alarmLogEntity.setRemark("");
alarmLogRepository.save(alarmLogEntity);
}
getCurAlarmRepository.save(getCurAlarmsList.get(i));
//添加设备id 相同的设备报警信息
valueList.add(getCurAlarmsList.get(i));
}
}
}
//查询所有报警信息
List<GetCurAlarm> alarmsAll = getCurAlarmRepository.findAll();
//对比已经保存的报警信息和最新报警信息
List<GetCurAlarm> updateStateList = compare(valueList, alarmsAll);
if (updateStateList.size() != 0) {
//修改报警信息状态
updateAlarmLogStete(updateStateList);
}
//返回列表最新报警信息列表
return valueList;
}
/**
* 修改报警状态
*
* @param list
*/
private void updateAlarmLogStete(List<GetCurAlarm> list) {
list.forEach(item -> {
AlarmLog alarmLog = alarmLogRepository.findByDeviceId(item.getDevice_id());
if (alarmLog.getState()) {
alarmLog.setState(false);
}
alarmLog.setState(true);
alarmLogRepository.save(alarmLog);
});
}
return alarmDtos;
/**
* 比较数组找出不同
*
* @param t1
* @param t2
* @param <T>
* @return
*/
private <T> List<T> compare(List<T> t1, List<T> t2) {
// List<T> list1 = Arrays.asList(t1); //将t1数组转成list数组
List<T> list2 = new ArrayList<T>();//用来存放2个数组中不相同的元素
for (T t : t2) {
if (!t1.contains(t)) {
list2.add(t);
}
}
return list2;
}
}

52
storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/ThirdApiServiceImpl.java

@ -4,6 +4,7 @@ package com.storeroom.modules.storeroom3d.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.storeroom.exception.BaseException;
import com.storeroom.modules.storeroom3d.domain.GetCurAlarm;
import com.storeroom.modules.storeroom3d.service.ThirdApiService;
import com.storeroom.modules.storeroom3d.service.dto.DeviceAllDto;
import com.storeroom.modules.storeroom3d.service.dto.GetCurAlarmDto;
@ -35,12 +36,12 @@ public class ThirdApiServiceImpl implements ThirdApiService {
@SneakyThrows
@Override
public String getToken() {
public String getToken(String url) {
//获取第三方接口token
HashMap<String, String> map = new HashMap<>();
map.put("Content-type", "application/json");
HttpResponse response = HttpUtils.doGet("http://jiton.8800.org:800", "/Api/Third/GetToken", "GET", map, null);
HttpResponse response = HttpUtils.doGet(url, "/Api/Third/GetToken", "GET", map, null);
if (response.getStatusLine().getStatusCode() == 200) {
String s = EntityUtils.toString(response.getEntity());
Map<String, Object> dataMap = FastjsonUtils.toJavaMap(s);
@ -66,10 +67,10 @@ public class ThirdApiServiceImpl implements ThirdApiService {
@SneakyThrows
@Override
public List<DeviceAllDto> getDeviceAll() {
public List<DeviceAllDto> getDeviceAll(String url) {
HashMap<String, String> map = new HashMap<>();
HashMap<String, String> body = new HashMap<>();
String token = findApiToken();
String token = findApiToken(url);
map.put("Content-type", "application/json");
map.put("Authorization", "Bearer" + token + "");
body.put("keys", "");
@ -106,34 +107,35 @@ public class ThirdApiServiceImpl implements ThirdApiService {
@SneakyThrows
@Override
public List<GetCurAlarmDto> getAllDeviceAlarm() {
public List<GetCurAlarm> getAllDeviceAlarm(String url) {
HashMap<String, String> map = new HashMap<>();
String token = findApiToken();
String token = findApiToken(url);
map.put("Content-type", "application/json");
map.put("Authorization", "Bearer" + token + "");
HttpResponse response = HttpUtils.doGet("http://jiton.8800.org:800", "/Api/Third/GetCurAlarm", "Get", map, null);
HttpResponse response = HttpUtils.doGet("http://" + url + "", "/Api/Third/GetCurAlarm", "Get", map, null);
if (response.getStatusLine().getStatusCode() == 200) {
String result = EntityUtils.toString(response.getEntity());
Map<String, Object> dataMap = FastjsonUtils.toJavaMap(result);
List<GetCurAlarmDto> list = new ArrayList<>();
List<GetCurAlarm> list = new ArrayList<>();
dataMap.forEach((k, v) -> {
if (k.equals("Data")) {
if (!ObjectUtils.isEmpty(v)) {
JSONArray jsonArray = (JSONArray) v;
for (int i = 0; i < jsonArray.size(); i++) {
GetCurAlarmDto getCurAlarmDto = new GetCurAlarmDto();
GetCurAlarm getCurAlarm = new GetCurAlarm();
JSONObject jsonObject = jsonArray.getJSONObject(i);
getCurAlarmDto.setDevice_id(jsonObject.get("device_id") == null ? null : jsonObject.get("device_id").toString());
getCurAlarmDto.setAlarm_value(jsonObject.get("alarm_value") == null ? null : jsonObject.get("alarm_value").toString());
getCurAlarmDto.setArea_name(jsonObject.get("area_name") == null ? null : jsonObject.get("area_name").toString());
getCurAlarmDto.setEvent_id(jsonObject.get("event_id") == null ? null : jsonObject.get("event_id").toString());
getCurAlarmDto.setEvent_level_name(jsonObject.get("event_level_name") == null ? null : jsonObject.get("event_level_name").toString());
getCurAlarmDto.setAlarm_time(TimestampTool.string2sqlTimestamp(jsonObject.get("alarm_time") == null ? null : jsonObject.get("alarm_time").toString()));
getCurAlarmDto.setCategory_name(jsonObject.get("category_name") == null ? null : jsonObject.get("category_name").toString());
getCurAlarmDto.setAlarm_value_descript(jsonObject.get("alarm_value_descript") == null ? null : jsonObject.get("alarm_value_descript").toString());
getCurAlarmDto.setDevice_name(jsonObject.get("device_name") == null ? null : jsonObject.get("device_name").toString());
getCurAlarmDto.setEvent_name(jsonObject.get("event_name") == null ? null : jsonObject.get("event_name").toString());
list.add(getCurAlarmDto);
getCurAlarm.setDevice_id(jsonObject.get("device_id") == null ? null : jsonObject.get("device_id").toString());
getCurAlarm.setAlarm_value(jsonObject.get("alarm_value") == null ? null : jsonObject.get("alarm_value").toString());
getCurAlarm.setArea_name(jsonObject.get("area_name") == null ? null : jsonObject.get("area_name").toString());
getCurAlarm.setEvent_id(jsonObject.get("event_id") == null ? null : jsonObject.get("event_id").toString());
getCurAlarm.setEvent_level_name(jsonObject.get("event_level_name") == null ? null : jsonObject.get("event_level_name").toString());
//getCurAlarmDto.setAlarm_time(TimestampTool.string2sqlTimestamp(jsonObject.get("alarm_time") == null ? null : jsonObject.get("alarm_time").toString()));
getCurAlarm.setAlarm_time(jsonObject.get("alarm_time") == null ? null : jsonObject.get("alarm_time").toString());
getCurAlarm.setCategory_name(jsonObject.get("category_name") == null ? null : jsonObject.get("category_name").toString());
getCurAlarm.setAlarm_value_descript(jsonObject.get("alarm_value_descript") == null ? null : jsonObject.get("alarm_value_descript").toString());
getCurAlarm.setDevice_name(jsonObject.get("device_name") == null ? null : jsonObject.get("device_name").toString());
getCurAlarm.setEvent_name(jsonObject.get("event_name") == null ? null : jsonObject.get("event_name").toString());
list.add(getCurAlarm);
}
}
}
@ -151,11 +153,11 @@ public class ThirdApiServiceImpl implements ThirdApiService {
*
* @return
*/
private String findApiToken() {
private String findApiToken(String url) {
Object token = redisUtils.get("api_token");
String APiToken = "";
if (ObjectUtils.isEmpty(token)) {
APiToken = getToken();
APiToken = getToken(url);
return APiToken;
}
APiToken = token.toString();
@ -164,13 +166,13 @@ public class ThirdApiServiceImpl implements ThirdApiService {
@SneakyThrows
@Override
public Object getRealTimeData(Set<String> deviceIds) {
String token = findApiToken();
public Object getRealTimeData(Set<String> deviceIds, String url) {
String token = findApiToken(url);
JSONObject json = new JSONObject();
json.put("device_ids", deviceIds);
RequestBody body = RequestBody.create(
MediaType.parse("application/json;charset=utf-8"), String.valueOf(json));
Request request = new Request.Builder().url("http://jiton.8800.org:800/Api/Third/GetRealTimeData")
Request request = new Request.Builder().url("" + url + "/Api/Third/GetRealTimeData")
.addHeader("Authorization", "Bearer" + token + "")
.post(body)
.build();

26
storeroom/src/test/java/test.java

@ -1,5 +1,9 @@
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class test {
@Test
@ -22,4 +26,26 @@ public class test {
}
}
@Test
public void testArrayList(){
Integer[] array1 = {1, 2, 3};
Integer[] array2 = {1, 2, 3, 4,44};
List<Integer> list = compare(array1,array2);
for (Integer integer : list) {
System.out.println(integer);
}
}
public static <T> List<T> compare(T[] t1, T[] t2) {
List<T> list1 = Arrays.asList(t1); //将t1数组转成list数组
List<T> list2 = new ArrayList<T>();//用来存放2个数组中不相同的元素
for (T t : t2) {
if (!list1.contains(t)) {
list2.add(t);
}
}
return list2;
}
}
Loading…
Cancel
Save