From 385a4cfe8560134a58358faea73fcc955656b340 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8A=9B?= Date: Tue, 9 Aug 2022 20:12:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A5=E8=AD=A6=E7=8A=B6=E6=80=81=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/DeviceTypeReposityory.java | 4 +- .../controller/AlarmInfoController.java | 18 +- .../controller/ApiServiceController.java | 75 ++++---- .../modules/storeroom3d/domain/AlarmLog.java | 15 +- .../storeroom3d/domain/DisplayParam.java | 19 +- .../storeroom3d/domain/GetCurAlarm.java | 29 +-- .../repository/AlarmLogRepository.java | 15 ++ .../storeroom3d/service/AlarmInfoService.java | 22 +++ .../storeroom3d/service/ThirdApiService.java | 9 +- .../service/dto/GetCurAlarmDto.java | 2 +- .../service/dto/GetCurAlarmDtoTest.java | 68 +++++++ .../service/impl/AlarmInfoServiceImpl.java | 170 ++++++++++++++++-- .../service/impl/ThirdApiServiceImpl.java | 52 +++--- storeroom/src/test/java/test.java | 26 +++ 14 files changed, 420 insertions(+), 104 deletions(-) create mode 100644 storeroom/src/main/java/com/storeroom/modules/storeroom3d/repository/AlarmLogRepository.java create mode 100644 storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/dto/GetCurAlarmDtoTest.java diff --git a/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceTypeReposityory.java b/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceTypeReposityory.java index 319fc3d..a46ea9e 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceTypeReposityory.java +++ b/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, JpaSpecificationExecutor { +public interface DeviceTypeReposityory extends JpaRepository, JpaSpecificationExecutor { + + DeviceType findByName(String name); } diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/AlarmInfoController.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/AlarmInfoController.java index 1dfaf4f..2716b26 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/AlarmInfoController.java +++ b/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 testalarm(@RequestBody List getCurAlarms) { + + return ApiResponse.success(alarmInfoService.testAlarm(getCurAlarms)); + } + @AnonymousGetMapping("storeroom") public ApiResponse 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)); } diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/ApiServiceController.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/ApiServiceController.java index 6c93ea1..2713c69 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/ApiServiceController.java +++ b/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 getToken() { - return ApiResponse.success(apiService.getToken()); - } - - @ApiOperation("获取所有设备") - @AnonymousGetMapping("list") - public ApiResponse getAllDevice() { - return ApiResponse.success(apiService.getDeviceAll()); - } - - @AnonymousGetMapping("ip") - @ApiOperation("获取内网ip") - public ApiResponse getIp() { - return ApiResponse.success(MacUtil.getIpAddress()); - } - - - @ApiOperation("获取报警信息") - @AnonymousGetMapping("getcuralarm") - public ApiResponse getInfo() { - Object objMsg = apiService.getAllDeviceAlarm(); - pushService.pushMsgToAll(objMsg.toString()); - return ApiResponse.success(apiService.getAllDeviceAlarm()); - } - - @ApiOperation("获取设备监控参数实时值") - @AnonymousPostMapping("getrealtimedata") - public ApiResponse getrealtimedata(@RequestBody Set deviceIds) { - - return ApiResponse.success(apiService.getRealTimeData(deviceIds)); - } + private final ThirdApiService apiService; + private final PushService pushService; + + @ApiOperation("获取库房token") + @AnonymousGetMapping("token") + public ApiResponse getToken(String url) { + return ApiResponse.success(apiService.getToken(url)); + } + + @ApiOperation("获取所有设备") + @AnonymousGetMapping("list") + public ApiResponse getAllDevice(@RequestParam String url) { + return ApiResponse.success(apiService.getDeviceAll(url)); + } + + @AnonymousGetMapping("ip") + @ApiOperation("获取内网ip") + public ApiResponse getIp() { + return ApiResponse.success(MacUtil.getIpAddress()); + } + + + @ApiOperation("获取报警信息") + @AnonymousGetMapping("getcuralarm") + public ApiResponse getInfo(@RequestParam String url) { + Object objMsg = apiService.getAllDeviceAlarm(url); + pushService.pushMsgToAll(objMsg.toString()); + return ApiResponse.success(apiService.getAllDeviceAlarm(url)); + } + + @ApiOperation("获取设备监控参数实时值") + @AnonymousPostMapping("getrealtimedata") + public ApiResponse getrealtimedata(@RequestBody Set deviceIds) { + + //return ApiResponse.success(apiService.getRealTimeData(deviceIds)); + return ApiResponse.success(ResponseStatus.SUCCESS); + } } diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/AlarmLog.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/AlarmLog.java index f7f6da2..5e7fa1c 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/AlarmLog.java +++ b/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); } } diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/DisplayParam.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/DisplayParam.java index a3b7e3d..a6354fb 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/DisplayParam.java +++ b/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); + } } diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/GetCurAlarm.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/GetCurAlarm.java index e7bfa94..50affb9 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/GetCurAlarm.java +++ b/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); } } + + diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/repository/AlarmLogRepository.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/repository/AlarmLogRepository.java new file mode 100644 index 0000000..78eb7fb --- /dev/null +++ b/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, JpaSpecificationExecutor { + + /** + * 通过设备id查询 + * @param deviceId + * @return + */ + AlarmLog findByDeviceId(String deviceId); +} diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/AlarmInfoService.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/AlarmInfoService.java index c9ea594..6a06816 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/AlarmInfoService.java +++ b/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 getCurAlarmDto); } diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/ThirdApiService.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/ThirdApiService.java index 9c62153..26b97bf 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/ThirdApiService.java +++ b/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 getDeviceAll(); + List getDeviceAll(String url); /** * 获取所有设备报警信息 * @return */ - List getAllDeviceAlarm(); + List getAllDeviceAlarm(String url); /** * 获取设备监控参数实时值 * @return */ - Object getRealTimeData(Set deviceIds); + Object getRealTimeData(Set deviceIds,String url); } diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/dto/GetCurAlarmDto.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/dto/GetCurAlarmDto.java index 9b554fc..199121b 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/dto/GetCurAlarmDto.java +++ b/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; /** * 告警值 diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/dto/GetCurAlarmDtoTest.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/dto/GetCurAlarmDtoTest.java new file mode 100644 index 0000000..6d6c5ca --- /dev/null +++ b/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; + + +} diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/AlarmInfoServiceImpl.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/AlarmInfoServiceImpl.java index eb8bb60..50c3ac3 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/AlarmInfoServiceImpl.java +++ b/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 = deviceInfoRepository.findByDeviceTypeId("E58C8D7C896BCB9A408A78"); + if (deviceInfo.size() != 0) { + url = deviceInfo.get(0).getDeviceIp(); + prot = deviceInfo.get(0).getDevicePort(); + } else { + DeviceType deviceType = deviceTypeReposityory.findByName("空气质量监测"); + List deviceInfoList = deviceInfoRepository.findByDeviceTypeId(deviceType.getId()); + url = deviceInfoList.get(0).getDeviceIp(); + prot = deviceInfoList.get(0).getDevicePort(); + } + return url + prot; + } + @Override public Object getAllAlarmInfo() { + + + //查询自己所有设备 List deviceInfoList = deviceInfoRepository.findAll(); - List alarmDtos = thirdApiService.getAllDeviceAlarm(); - List alarmDtos1 = new ArrayList<>(); - List alarmDtos2 = alarmDtos.stream().filter(getCurAlarmDto -> Objects.equals(getCurAlarmDto.getDevice_id(), "")).collect(Collectors.toList()); - for (int i = 0; i < alarmDtos2.size(); i++) { + //获取第三方接口报警信息 + List getCurAlarmsList = thirdApiService.getAllDeviceAlarm(getAddressUrl()); + + + //创建返回数组 + List valueList = new ArrayList<>(); + + //过滤设备id 为空的设备 + //List 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 deviceInfoList = deviceInfoRepository.findByStoreroomId(storeroom); - List alarmDtos = thirdApiService.getAllDeviceAlarm(); - List alarmDtos1 = new ArrayList<>(); + List getCurAlarms = thirdApiService.getAllDeviceAlarm(getAddressUrl()); + List alarmDtos1 = new ArrayList<>(); //过滤设备id为空的数据 - List alarmDtos2 = alarmDtos.stream().filter(getCurAlarmDto -> Objects.equals(getCurAlarmDto.getDevice_id(), "")).collect(Collectors.toList()); + List 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 getCurAlarmDto) { + //查询自己所有设备 + List deviceInfoList = deviceInfoRepository.findAll(); + //获取第三方接口报警信息 + List getCurAlarmsList = getCurAlarmDto; + + //创建返回数组 + List valueList = new ArrayList<>(); + + //过滤设备id 为空的设备 + //List 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 alarmsAll = getCurAlarmRepository.findAll(); + //对比已经保存的报警信息和最新报警信息 + List updateStateList = compare(valueList, alarmsAll); + if (updateStateList.size() != 0) { + //修改报警信息状态 + updateAlarmLogStete(updateStateList); + } + //返回列表最新报警信息列表 + return valueList; + } + + /** + * 修改报警状态 + * + * @param list + */ + private void updateAlarmLogStete(List 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 + * @return + */ + private List compare(List t1, List t2) { + // List list1 = Arrays.asList(t1); //将t1数组转成list数组 + List list2 = new ArrayList();//用来存放2个数组中不相同的元素 + for (T t : t2) { + if (!t1.contains(t)) { + list2.add(t); + } + } + return list2; } } diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/ThirdApiServiceImpl.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/ThirdApiServiceImpl.java index 9523289..183efec 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/ThirdApiServiceImpl.java +++ b/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 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 dataMap = FastjsonUtils.toJavaMap(s); @@ -66,10 +67,10 @@ public class ThirdApiServiceImpl implements ThirdApiService { @SneakyThrows @Override - public List getDeviceAll() { + public List getDeviceAll(String url) { HashMap map = new HashMap<>(); HashMap 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 getAllDeviceAlarm() { + public List getAllDeviceAlarm(String url) { HashMap 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 dataMap = FastjsonUtils.toJavaMap(result); - List list = new ArrayList<>(); + List 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 deviceIds) { - String token = findApiToken(); + public Object getRealTimeData(Set 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(); diff --git a/storeroom/src/test/java/test.java b/storeroom/src/test/java/test.java index 502faad..5a52ff6 100644 --- a/storeroom/src/test/java/test.java +++ b/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 list = compare(array1,array2); + for (Integer integer : list) { + System.out.println(integer); + } + } + + public static List compare(T[] t1, T[] t2) { + List list1 = Arrays.asList(t1); //将t1数组转成list数组 + List list2 = new ArrayList();//用来存放2个数组中不相同的元素 + for (T t : t2) { + if (!list1.contains(t)) { + list2.add(t); + } + } + return list2; + } }