From 8fe759f26e23fb594f4bf02d6d4889f4521d41a7 Mon Sep 17 00:00:00 2001
From: Xiajijian <1176061145@qq.com>
Date: Sat, 11 Oct 2025 15:26:43 +0800
Subject: [PATCH] 1.修该并合并无人机盒子对象相关关系。
---
ard-work/src/main/java/com/ard/work/service/impl/ArdDroneServiceImpl.java | 138 +++++++++++++++++++++++++++++++---------------
1 files changed, 93 insertions(+), 45 deletions(-)
diff --git a/ard-work/src/main/java/com/ard/work/service/impl/ArdDroneServiceImpl.java b/ard-work/src/main/java/com/ard/work/service/impl/ArdDroneServiceImpl.java
index 7011058..9c9e3fc 100644
--- a/ard-work/src/main/java/com/ard/work/service/impl/ArdDroneServiceImpl.java
+++ b/ard-work/src/main/java/com/ard/work/service/impl/ArdDroneServiceImpl.java
@@ -1,94 +1,142 @@
package com.ard.work.service.impl;
-import com.ard.common.utils.uuid.IdUtils;
+import com.ard.common.utils.DateUtils;
import com.ard.work.domain.entity.ArdDroneInfo;
+import com.ard.work.domain.receiver.BoxInfoReceiver;
import com.ard.work.mapper.ArdDroneInfoMapper;
+import com.ard.work.service.ITyService;
import com.ard.work.service.IArdDroneService;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Stack;
+import java.util.stream.Collectors;
/**
- * 无人机管理Service业务层处理
- *
- * @author xia
- * @date 2025-10-10
+ * 无人机盒子Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-03-04
*/
@Service
public class ArdDroneServiceImpl implements IArdDroneService {
- @Autowired
- private ArdDroneInfoMapper ardDroneInfoMapper;
+ @Resource
+ private ArdDroneInfoMapper ArdDroneInfoMapper;
+
+ @Resource
+ private ITyService tyService;
/**
- * 查询无人机管理
- *
- * @param id 无人机管理主键
- * @return 无人机管理
+ * 查询无人机盒子
+ *
+ * @param id 无人机盒子主键
+ * @return 无人机盒子
*/
@Override
- public ArdDroneInfo selectArdDroneManagementById(String id)
- {
- return ardDroneInfoMapper.selectArdDroneManagementById(id);
+ public ArdDroneInfo selectArdDroneById(String id) {
+ return ArdDroneInfoMapper.selectArdDroneById(id);
}
/**
- * 查询无人机管理列表
- *
- * @param ardDroneInfo 无人机管理
- * @return 无人机管理
+ * 查询无人机盒子列表
+ *
+ * @param ArdDroneInfo 无人机盒子
+ * @return 无人机盒子
*/
@Override
- public List<ArdDroneInfo> selectArdDroneManagementList(ArdDroneInfo ardDroneInfo) {
- return ardDroneInfoMapper.selectArdDroneManagementList(ardDroneInfo);
+ public List<ArdDroneInfo> selectArdDroneList(ArdDroneInfo ArdDroneInfo) {
+ return ArdDroneInfoMapper.selectArdDroneList(ArdDroneInfo);
}
/**
- * 新增无人机管理
- *
- * @param ardDroneInfo 无人机管理
+ * 新增无人机盒子
+ *
+ * @param ArdDroneInfo 无人机盒子
* @return 结果
*/
@Override
- public int insertArdDroneManagement(ArdDroneInfo ardDroneInfo) {
- ardDroneInfo.setId(IdUtils.fastUUID());
- return ardDroneInfoMapper.insertArdDroneManagement(ardDroneInfo);
+ public int insertArdDrone(ArdDroneInfo ArdDroneInfo) {
+ ArdDroneInfo.setCreateTime(DateUtils.getNowDate());
+ return ArdDroneInfoMapper.insertArdDrone(ArdDroneInfo);
}
/**
- * 修改无人机管理
- *
- * @param ardDroneInfo 无人机管理
+ * 修改无人机盒子
+ *
+ * @param ArdDroneInfo 无人机盒子
* @return 结果
*/
@Override
- public int updateArdDroneManagement(ArdDroneInfo ardDroneInfo)
- {
- return ardDroneInfoMapper.updateArdDroneManagement(ardDroneInfo);
+ public int updateArdDrone(ArdDroneInfo ArdDroneInfo) {
+ ArdDroneInfo.setUpdateTime(DateUtils.getNowDate());
+ return ArdDroneInfoMapper.updateArdDrone(ArdDroneInfo);
}
/**
- * 批量删除无人机管理
- *
- * @param ids 需要删除的无人机管理主键
+ * 批量删除无人机盒子
+ *
+ * @param ids 需要删除的无人机盒子主键
* @return 结果
*/
@Override
- public int deleteArdDroneManagementByIds(String[] ids)
- {
- return ardDroneInfoMapper.deleteArdDroneManagementByIds(ids);
+ public int deleteArdDroneByIds(String[] ids) {
+ return ArdDroneInfoMapper.deleteArdDroneByIds(ids);
}
/**
- * 删除无人机管理信息
- *
- * @param id 无人机管理主键
+ * 删除无人机盒子信息
+ *
+ * @param id 无人机盒子主键
* @return 结果
*/
@Override
- public int deleteArdDroneManagementById(String id)
- {
- return ardDroneInfoMapper.deleteArdDroneManagementById(id);
+ public int deleteArdDroneById(String id) {
+ return ArdDroneInfoMapper.deleteArdDroneById(id);
+ }
+
+ /**
+ * 同步盒子属性
+ *
+ * @return 结果
+ */
+ @Scheduled(fixedRate = 1000 * 60)
+ public void syncBoxInfo() {
+ List<ArdDroneInfo> ArdDroneeListEntity = selectArdDroneList(new ArdDroneInfo());
+ // 将本地列表转换为Map,方便快速查找
+ Map<String, ArdDroneInfo> localArdDroneMap = ArdDroneeListEntity.stream()
+ .collect(Collectors.toMap(ArdDroneInfo::getBoxSn, drone -> drone));
+ //遍历接口最新获取的无人机盒子信息
+ tyService.getBoxList().forEach(remoteArdDrone -> {
+ ArdDroneInfo localArdDroneInfo = localArdDroneMap.get(remoteArdDrone.getBoxSn());
+ if (localArdDroneInfo != null) {
+ if (!localArdDroneInfo.isSameAs(remoteArdDrone)) {
+ // 修改无人机(只更新变化的属性)
+ updateChangedAttributes(localArdDroneInfo, remoteArdDrone);
+ updateArdDrone(localArdDroneInfo);
+ }
+ }
+ });
+ }
+
+ // 更新变化的属性
+ private void updateChangedAttributes(ArdDroneInfo localBoxInfo, BoxInfoReceiver remoteArdDrone) {
+ if (!Objects.equals(localBoxInfo.getBoxName(), remoteArdDrone.getBoxName())) {
+ localBoxInfo.setBoxName(remoteArdDrone.getBoxName());
+ }
+ if (!Objects.equals(localBoxInfo.getBoxVersion(), remoteArdDrone.getBoxVersion())) {
+ localBoxInfo.setBoxVersion(remoteArdDrone.getBoxVersion());
+ }
+ if (!Objects.equals(localBoxInfo.getLastTaskId(), remoteArdDrone.getLastTaskId())) {
+ localBoxInfo.setLastTaskId(remoteArdDrone.getLastTaskId());
+ }
+ if (!Objects.equals(localBoxInfo.getOnLine(), remoteArdDrone.getOnLine())) {
+ localBoxInfo.setOnLine(remoteArdDrone.getOnLine());
+ }
+ // 更新其他属性
}
}
--
Gitblit v1.9.3