From a41d92c2e56dc81b7ea98380521aa4c8f6aa9b23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8A=9B?= Date: Thu, 11 Aug 2022 11:42:11 +0800 Subject: [PATCH] fix bug --- .../device/domain/DeviceSpecParam.java | 5 ++ .../service/impl/DeviceArchivesTagImpl.java | 5 +- .../controller/AlarmInfoController.java | 2 +- .../controller/DisplayConfigController.java | 3 - .../storeroom3d/domain/DisplayConfig.java | 3 +- .../repository/DisplayConfigRepository.java | 18 +++++- .../service/impl/AlarmInfoServiceImpl.java | 58 ++++++++++++++++--- .../service/impl/DisplayConfigImpl.java | 20 ++++++- .../service/impl/ThirdApiServiceImpl.java | 6 +- 9 files changed, 97 insertions(+), 23 deletions(-) diff --git a/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceSpecParam.java b/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceSpecParam.java index ecd9dd1..f0a3596 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceSpecParam.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceSpecParam.java @@ -28,6 +28,11 @@ public class DeviceSpecParam extends BaseEntity implements Serializable { @ApiModelProperty(value = "设备信息id") private String deviceInfoId; + @Column(name = "display_config_id") + @ApiModelProperty(value = "配置id", hidden = true) + private String displayConfigId; + + @Column(name = "param_id") @ApiModelProperty(value = "参数id") private String paramId; diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceArchivesTagImpl.java b/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceArchivesTagImpl.java index b3a10e3..2552197 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceArchivesTagImpl.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceArchivesTagImpl.java @@ -48,8 +48,9 @@ public class DeviceArchivesTagImpl implements DeviceArchivesTagService { @Override public Object queryTagList(String deviceInfoId, Pageable pageable) { - PageRequest pageRequest = PageSort.pageRequest(pageable.getPageNumber(), pageable.getPageSize(), "position", Sort.Direction.ASC); - Page page = deviceArchivesTagRepository.findByDeviceInfoId(deviceInfoId, pageRequest); + //PageRequest pageRequest = PageSort.pageRequest(pageable.getPageNumber(), pageable.getPageSize(), "position", Sort.Direction.ASC); + + Page page = deviceArchivesTagRepository.findByDeviceInfoId(deviceInfoId, pageable); return PageUtil.toPage(page); } } 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 2716b26..38a7361 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 @@ -41,7 +41,7 @@ public class AlarmInfoController { return ApiResponse.success(alarmInfoService.testAlarm(getCurAlarms)); } - @AnonymousGetMapping("storeroom") + @AnonymousGetMapping("info") public ApiResponse queryStoreroomId(@RequestParam String storeroomId) { if (StringUtils.isEmpty(storeroomId)) { return ApiResponse.success(alarmInfoService.getAllAlarmInfo()); diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/DisplayConfigController.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/DisplayConfigController.java index fede80d..3394bb3 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/DisplayConfigController.java +++ b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/DisplayConfigController.java @@ -47,9 +47,6 @@ public class DisplayConfigController { @AnonymousGetMapping("list") @ApiOperation("获取列表") public ApiResponse queryList(@RequestParam String storeroomId) { - if (StringUtils.isEmpty(storeroomId)) { - throw new BaseException("id不能为空"); - } return ApiResponse.success(displayConfigService.getList(storeroomId)); } } diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/DisplayConfig.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/DisplayConfig.java index 958d17f..dbb6484 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/DisplayConfig.java +++ b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/domain/DisplayConfig.java @@ -3,6 +3,7 @@ package com.storeroom.modules.storeroom3d.domain; import com.storeroom.base.BaseEntity; import com.storeroom.modules.device.domain.DeviceInfo; +import com.storeroom.modules.device.domain.DeviceSpecParam; import com.storeroom.modules.device.domain.Storeroom; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -41,7 +42,7 @@ public class DisplayConfig extends BaseEntity implements Serializable { @OneToMany(cascade = CascadeType.ALL,fetch=FetchType.EAGER) @JoinColumn(name = "display_config_id") - private List displayParams; + private List deviceSpecParams; @Column(name = "div_position") diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/repository/DisplayConfigRepository.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/repository/DisplayConfigRepository.java index 9b3b48e..ea11328 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/repository/DisplayConfigRepository.java +++ b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/repository/DisplayConfigRepository.java @@ -1,13 +1,29 @@ package com.storeroom.modules.storeroom3d.repository; +import com.storeroom.modules.device.domain.DeviceInfo; import com.storeroom.modules.storeroom3d.domain.DisplayConfig; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Query; import java.util.List; public interface DisplayConfigRepository extends JpaRepository, JpaSpecificationExecutor { - List findByStoreroomId(String deviceInfoid); + + /** + * 根据库房查询 + * @param storeroomId / + * @return / + */ + List findByStoreroomId(String storeroomId); + + /** + * 根据设备id查询 + * @param / + * @return / + */ + + DisplayConfig findByDeviceInfo(DeviceInfo deviceInfo); } 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 50c3ac3..b36e05d 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 @@ -53,14 +53,13 @@ public class AlarmInfoServiceImpl implements AlarmInfoService { url = deviceInfoList.get(0).getDeviceIp(); prot = deviceInfoList.get(0).getDevicePort(); } - return url + prot; + return "http://" + url + ":" + prot; } @Override public Object getAllAlarmInfo() { - //查询自己所有设备 List deviceInfoList = deviceInfoRepository.findAll(); //获取第三方接口报警信息 @@ -71,7 +70,7 @@ public class AlarmInfoServiceImpl implements AlarmInfoService { List valueList = new ArrayList<>(); //过滤设备id 为空的设备 - //List alarmDtos2 = alarmDtos.stream().filter(value -> Objects.equals(value.getDevice_id(), "")).collect(Collectors.toList()); + List alarmDtos2 = getCurAlarmsList.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相同 @@ -98,25 +97,59 @@ public class AlarmInfoServiceImpl implements AlarmInfoService { } } - return null; + //查询所有报警信息 + List alarmsAll = getCurAlarmRepository.findAll(); + //对比已经保存的报警信息和最新报警信息 + List updateStateList = compare(valueList, alarmsAll); + if (updateStateList.size() != 0) { + //修改报警信息状态 + updateAlarmLogStete(updateStateList); + } + //返回列表最新报警信息列表 + return valueList; } @Override public Object getStoreroomDevice(String storeroomId) { + //查询库房 Storeroom storeroom = storeroomRepository.findById(storeroomId).orElseGet(Storeroom::new); + //通过库房查询设备 List deviceInfoList = deviceInfoRepository.findByStoreroomId(storeroom); + //获取所有报警 List getCurAlarms = thirdApiService.getAllDeviceAlarm(getAddressUrl()); + //创建保存数组 List alarmDtos1 = new ArrayList<>(); //过滤设备id为空的数据 List alarmDtos2 = getCurAlarms.stream().filter(getCurAlarmDto -> Objects.equals(getCurAlarmDto.getDevice_id(), "")).collect(Collectors.toList()); - for (int i = 0; i < alarmDtos2.size(); i++) { + for (int i = 0; i < getCurAlarms.size(); i++) { for (int k = 0; k < deviceInfoList.size(); k++) { if (Objects.equals(getCurAlarms.get(i).getDevice_id(), deviceInfoList.get(k).getDeviceId())) { + //通过设备id查询报警日志 + AlarmLog alarmLog = alarmLogRepository.findByDeviceId(alarmDtos2.get(i).getDevice_id()); + //如果报警日志为空 + if (ObjectUtils.isEmpty(alarmLog)) { + AlarmLog alarmLogEntity = new AlarmLog(); + //创建日志 + alarmLogEntity.setId(NanoIdUtils.randomNanoId()); + alarmLogEntity.setDeviceId(alarmDtos2.get(i).getDevice_id()); + alarmLogEntity.setContent(alarmDtos2.get(i).getAlarm_value_descript()); + alarmLogEntity.setStoreroomName(alarmDtos2.get(i).getArea_name()); + alarmLogEntity.setState(false); + alarmLogEntity.setRemark(""); + alarmLogRepository.save(alarmLogEntity); + } alarmDtos1.add(getCurAlarms.get(i)); - // GetCurAlarm getCurAlarm = getCurAlarmMapper.toEntity(alarmDtos.get(i)); } } } + //查询所有报警信息 + List alarmsAll = getCurAlarmRepository.findAll(); + //对比已经保存的报警信息和最新报警信息 + List updateStateList = compare(alarmDtos1, alarmsAll); + if (updateStateList.size() != 0) { + //修改报警信息状态 + updateAlarmLogStete(updateStateList); + } return alarmDtos1; } @@ -180,9 +213,11 @@ public class AlarmInfoServiceImpl implements AlarmInfoService { AlarmLog alarmLog = alarmLogRepository.findByDeviceId(item.getDevice_id()); if (alarmLog.getState()) { alarmLog.setState(false); + alarmLogRepository.save(alarmLog); + }else { + alarmLog.setState(true); + alarmLogRepository.save(alarmLog); } - alarmLog.setState(true); - alarmLogRepository.save(alarmLog); }); } @@ -195,13 +230,18 @@ public class AlarmInfoServiceImpl implements AlarmInfoService { * @return */ private List compare(List t1, List t2) { - // List list1 = Arrays.asList(t1); //将t1数组转成list数组 + //List list1 = Arrays.asList(t1); //将t1数组转成list数组 List list2 = new ArrayList();//用来存放2个数组中不相同的元素 for (T t : t2) { if (!t1.contains(t)) { list2.add(t); } } + for (T t : t1) { + if (!t2.contains(t)) { + list2.add(t); + } + } return list2; } } diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/DisplayConfigImpl.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/DisplayConfigImpl.java index bfe321d..aee7aa2 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/DisplayConfigImpl.java +++ b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/service/impl/DisplayConfigImpl.java @@ -8,11 +8,13 @@ import com.storeroom.modules.storeroom3d.domain.DisplayConfig; import com.storeroom.modules.storeroom3d.repository.DisplayConfigRepository; import com.storeroom.modules.storeroom3d.service.DisplayConfigService; import com.storeroom.utils.NanoIdUtils; +import com.storeroom.utils.StringUtils; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; -import java.util.List; +import java.util.*; @Service @RequiredArgsConstructor @@ -28,8 +30,7 @@ public class DisplayConfigImpl implements DisplayConfigService { public void bind(DisplayConfig displayConfig) { displayConfig.setId(NanoIdUtils.randomNanoId()); displayConfig.setBindState(true); - displayConfig.getDisplayParams().forEach(item -> { - item.setId(NanoIdUtils.randomNanoId()); + displayConfig.getDeviceSpecParams().forEach(item -> { item.setDisplayConfigId(displayConfig.getId()); }); displayConfig.setStoreroom(displayConfig.getDeviceInfo().getStoreroomId()); @@ -44,6 +45,19 @@ public class DisplayConfigImpl implements DisplayConfigService { @Override public List getList(String storeroomId) { + if (StringUtils.isEmpty(storeroomId)) { + List deviceInfo = deviceInfoRepository.findByDeviceTypeId("7305DE3D273B0CAC079538"); + List displayConfigList = new ArrayList<>(); + + if (deviceInfo.size() != 0) { + deviceInfo.forEach(item -> { + DisplayConfig displayConfig = displayConfigRepository.findByDeviceInfo(item); + displayConfigList.add(displayConfig); + }); + displayConfigList.sort(Comparator.comparing(DisplayConfig::getDivPosition)); + return displayConfigList; + } + } return displayConfigRepository.findByStoreroomId(storeroomId); } } 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 183efec..b0729b0 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 @@ -75,7 +75,7 @@ public class ThirdApiServiceImpl implements ThirdApiService { map.put("Authorization", "Bearer" + token + ""); body.put("keys", ""); String s = FastjsonUtils.toJSONString(body); - HttpResponse response = HttpUtils.doPost("http://jiton.8800.org:800", "/Api/Third/GetDeviceList", "POST", map, null, s); + HttpResponse response = HttpUtils.doPost(url, "/Api/Third/GetDeviceList", "POST", map, null, s); if (response.getStatusLine().getStatusCode() == 200) { List deviceAllDtoList = new ArrayList<>(); String a = EntityUtils.toString(response.getEntity()); @@ -112,7 +112,7 @@ public class ThirdApiServiceImpl implements ThirdApiService { String token = findApiToken(url); map.put("Content-type", "application/json"); map.put("Authorization", "Bearer" + token + ""); - HttpResponse response = HttpUtils.doGet("http://" + url + "", "/Api/Third/GetCurAlarm", "Get", map, null); + HttpResponse response = HttpUtils.doGet(url, "/Api/Third/GetCurAlarm", "Get", map, null); if (response.getStatusLine().getStatusCode() == 200) { String result = EntityUtils.toString(response.getEntity()); Map dataMap = FastjsonUtils.toJavaMap(result); @@ -172,7 +172,7 @@ public class ThirdApiServiceImpl implements ThirdApiService { 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("" + url + "/Api/Third/GetRealTimeData") + Request request = new Request.Builder().url(url + "/Api/Third/GetRealTimeData") .addHeader("Authorization", "Bearer" + token + "") .post(body) .build();