From 75179cae29255cb16d9c544b0bf879b1e90bbfd4 Mon Sep 17 00:00:00 2001
From: zhaowenyu <35589726@qq.com>
Date: Tue, 16 Dec 2025 20:28:21 +0800
Subject: [PATCH] 2025-12-16 zwy 优化机场开盖时,不让重启机场。要关盖重启
---
ard-sample/src/main/java/com/ard/sample/manage/service/impl/DeviceHmsServiceImpl.java | 64 ++++++++++++++++++++++++++------
1 files changed, 52 insertions(+), 12 deletions(-)
diff --git a/ard-sample/src/main/java/com/ard/sample/manage/service/impl/DeviceHmsServiceImpl.java b/ard-sample/src/main/java/com/ard/sample/manage/service/impl/DeviceHmsServiceImpl.java
index e4ddeb3..8138c7c 100644
--- a/ard-sample/src/main/java/com/ard/sample/manage/service/impl/DeviceHmsServiceImpl.java
+++ b/ard-sample/src/main/java/com/ard/sample/manage/service/impl/DeviceHmsServiceImpl.java
@@ -1,5 +1,6 @@
package com.ard.sample.manage.service.impl;
+import com.ard.sample.manage.model.enums.DeviceDomainEnum;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -26,6 +27,7 @@
import com.ard.sample.manage.service.IDeviceHmsService;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.integration.annotation.ServiceActivator;
import org.springframework.integration.mqtt.support.MqttHeaders;
@@ -47,6 +49,7 @@
* @version 1.1
* @date 2022/7/6
*/
+@Slf4j
@Service
@Transactional
public class DeviceHmsServiceImpl implements IDeviceHmsService {
@@ -96,12 +99,21 @@
new TypeReference<List<DeviceHmsReceiver>>() {})
.forEach(hmsReceiver -> {
final DeviceHmsEntity hms = entity.clone();
- this.fillEntity(hms, hmsReceiver);
+ this.fillEntity(hms, hmsReceiver, device);
+ this.fillMessage(hms, hmsReceiver.getArgs());
// The same unread hms are no longer incremented.
if (hmsMap.contains(hms.getHmsKey())) {
+ // 修改已存在数据的创建时间,先查询到已存在记录,再修改。
+ DeviceHmsEntity exisHms=getDeviceHmsEntity(hms);
+ if (exisHms != null) {
+ LambdaUpdateWrapper<DeviceHmsEntity> updateWrapper = new LambdaUpdateWrapper<>();
+ updateWrapper.set(DeviceHmsEntity::getCreateTime, hms.getCreateTime());
+ updateWrapper.eq(DeviceHmsEntity::getId, exisHms.getId());
+
+ mapper.update(exisHms, updateWrapper);
+ }
return;
}
- this.fillMessage(hms, hmsReceiver.getArgs());
unReadList.add(entity2Dto(hms));
mapper.insert(hms);
});
@@ -109,7 +121,12 @@
if (unReadList.isEmpty()) {
return;
}
- RedisOpsUtils.listRPush(key, (Object) unReadList.stream().map(DeviceHmsDTO::getKey).toArray(String[]::new));
+ // RedisOpsUtils.listRPush(key, (Object) unReadList.stream().map(DeviceHmsDTO::getKey).toArray(String[]::new));
+ // 修正后:直接传入String数组,每个元素单独存
+ List<String> newHmsKeys = unReadList.stream()
+ .map(DeviceHmsDTO::getKey)
+ .collect(Collectors.toList());
+ RedisOpsUtils.listRPush(key, newHmsKeys.toArray(new String[0]));
// push to the web
// Collection<ConcurrentWebSocketSession> sessions = webSocketManageService.getValueWithWorkspaceAndUserType(
// device.getWorkspaceId(), UserTypeEnum.WEB.getVal());
@@ -184,7 +201,10 @@
return new PaginationData<DeviceHmsDTO>(deviceHmsList, new Pagination(pagination));
- // region 原代码注释备份一份
+
+ }
+
+ // region 原代码注释备份一份
// LambdaQueryWrapper<DeviceHmsEntity> queryWrapper = new LambdaQueryWrapper<DeviceHmsEntity>()
// .and(wrapper -> param.getDeviceSn().forEach(sn -> wrapper.eq(DeviceHmsEntity::getSn, sn).or()))
// .between(param.getBeginTime() != null && param.getEndTime() != null,
@@ -208,8 +228,7 @@
// List<DeviceHmsDTO> deviceHmsList = pagination.getRecords().stream().map(this::entity2Dto).collect(Collectors.toList());
//
// return new PaginationData<DeviceHmsDTO>(deviceHmsList, new Pagination(pagination));
- // endregion
- }
+ // endregion
@Override
public void updateUnreadHms(String deviceSn) {
@@ -238,8 +257,8 @@
.module(entity.getModule())
.messageEn(entity.getMessageEn())
.messageZh(entity.getMessageZh())
- .in_the_sky(entity.getIn_the_sky())
- .device_type(entity.getDevice_type())
+ .inTheSky(entity.getInTheSky())
+ .deviceType(entity.getDeviceType())
.build();
}
@@ -248,23 +267,30 @@
* @param dto
* @param receiver
*/
- private void fillEntity(DeviceHmsEntity dto, DeviceHmsReceiver receiver) {
+ private void fillEntity(DeviceHmsEntity dto, DeviceHmsReceiver receiver, DeviceDTO deviceDTO) {
dto.setLevel(receiver.getLevel());
dto.setModule(receiver.getModule());
dto.setHmsId(UUID.randomUUID().toString());
- dto.setIn_the_sky(receiver.getInTheSky());
- dto.setDevice_type(receiver.getDeviceType());
+ dto.setInTheSky(receiver.getInTheSky());
+ dto.setDeviceType(receiver.getDeviceType());
- if (HmsEnum.DomainType.DRONE_NEST.getDomain().equals(receiver.getDomainType())) {
+ // 不知道什么原因,在程序替换jar包重新启动时,报了个空指针异常,排查应该是因为 DeviceDTO对象为空,没有从redis中读取到设备信息。增加判断
+ if(deviceDTO !=null && deviceDTO.getDomain() == DeviceDomainEnum.DOCK.getVal()) {
dto.setHmsKey(HmsEnum.HmsFaqIdEnum.DOCK_TIP.getText() + receiver.getCode());
+// log.info("SN:{}的Hms匹配拼接规则值为:{}",deviceDTO.getDeviceSn(), HmsEnum.HmsFaqIdEnum.DOCK_TIP.getText() + receiver.getCode());
return;
}
+// if (HmsEnum.DomainType.DRONE_NEST.getDomain().equals(receiver.getDomainType())) {
+// dto.setHmsKey(HmsEnum.HmsFaqIdEnum.DOCK_TIP.getText() + receiver.getCode());
+// return;
+// }
StringBuilder key = new StringBuilder(HmsEnum.HmsFaqIdEnum.FPV_TIP.getText()).append(receiver.getCode());
if (receiver != null && HmsEnum.IN_THE_SKY.getVal() == (receiver.getInTheSky() != null ? receiver.getInTheSky() : -1)) {
key.append(HmsEnum.IN_THE_SKY.getText());
}
dto.setHmsKey(key.toString());
+// log.info("SN:{}的Hms匹配拼接规则值为:{}",deviceDTO.getDeviceSn(), key.toString());
}
/**
@@ -362,4 +388,18 @@
}
return list;
}
+
+ /**
+ * 按条件查询返回最新的一条数据
+ * */
+ public DeviceHmsEntity getDeviceHmsEntity(DeviceHmsEntity deviceHmsEntity) {
+ List <DeviceHmsEntity> lstHms = mapper.selectList(new LambdaQueryWrapper<DeviceHmsEntity>()
+ .eq(DeviceHmsEntity::getHmsKey, deviceHmsEntity.getHmsKey())
+ .eq(DeviceHmsEntity::getSn, deviceHmsEntity.getSn())
+ .eq(DeviceHmsEntity::getUpdateTime,0)
+ .orderByDesc(DeviceHmsEntity::getCreateTime)
+ );
+
+ return lstHms.isEmpty() ? null : lstHms.get(0);
+ }
}
--
Gitblit v1.9.3