From 7bf05b3448140adabf70794f683c7f352a29d83b Mon Sep 17 00:00:00 2001
From: rain <1679827795@qq.com>
Date: Fri, 16 Jan 2026 11:15:16 +0800
Subject: [PATCH] 反无大屏设备相关优化

---
 drone-service/drone-fw/src/main/java/org/sxkj/fw/detection/service/impl/FwDeviceConfigServiceImpl.java |   56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 55 insertions(+), 1 deletions(-)

diff --git a/drone-service/drone-fw/src/main/java/org/sxkj/fw/detection/service/impl/FwDeviceConfigServiceImpl.java b/drone-service/drone-fw/src/main/java/org/sxkj/fw/detection/service/impl/FwDeviceConfigServiceImpl.java
index c3ada73..1a59b55 100644
--- a/drone-service/drone-fw/src/main/java/org/sxkj/fw/detection/service/impl/FwDeviceConfigServiceImpl.java
+++ b/drone-service/drone-fw/src/main/java/org/sxkj/fw/detection/service/impl/FwDeviceConfigServiceImpl.java
@@ -25,13 +25,14 @@
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.tool.api.R;
 import java.util.List;
 
 /**
  * 设备配置表 服务实现类
  *
  * @author lw
- * @since 2026-01-07
+ * @since 2026-01-08
  */
 @Service
 public class FwDeviceConfigServiceImpl extends BaseServiceImpl<FwDeviceConfigMapper, FwDeviceConfigEntity> implements IFwDeviceConfigService {
@@ -41,6 +42,59 @@
 		return page.setRecords(baseMapper.selectFwDeviceConfigPage(page, fwDeviceConfig));
 	}
 
+	@Override
+	public FwDeviceConfigEntity selectLatestByDeviceId(Long deviceId) {
+		return baseMapper.selectLatestByDeviceId(deviceId);
+	}
+
+	@Override
+	public FwDeviceConfigEntity selectLatestVersionByDeviceId(Long deviceId) {
+		return baseMapper.selectLatestVersionByDeviceId(deviceId);
+	}
+
+	@Override
+	public Integer selectMaxConfigVersion(Long deviceId) {
+		return baseMapper.selectMaxConfigVersion(deviceId);
+	}
+
+	@Override
+	public int resetLatestByDeviceId(Long deviceId, Long excludeId) {
+		return baseMapper.resetLatestByDeviceId(deviceId, excludeId);
+	}
+
+	@Override
+	public R saveOrUpdateConfig(FwDeviceConfigEntity fwDeviceConfig) {
+		if (fwDeviceConfig == null || fwDeviceConfig.getDeviceId() == null) {
+			return R.fail("设备id不能为空");
+		}
+		Long deviceId = fwDeviceConfig.getDeviceId();
+		FwDeviceConfigEntity existing = null;
+		if (fwDeviceConfig.getId() != null) {
+			existing = this.getById(fwDeviceConfig.getId());
+			if (existing == null) {
+				return R.fail("数据不存在");
+			}
+		}
+		if (existing == null) {
+			Integer maxVersion = this.selectMaxConfigVersion(deviceId);
+			fwDeviceConfig.setConfigVersion(maxVersion == null ? 1 : maxVersion + 1);
+			fwDeviceConfig.setIsLatest((byte) 1);
+			this.resetLatestByDeviceId(deviceId, null);
+			return R.status(this.save(fwDeviceConfig));
+		}
+
+		if (fwDeviceConfig.getConfigVersion() == null) {
+			fwDeviceConfig.setConfigVersion(existing.getConfigVersion());
+		}
+		if (fwDeviceConfig.getIsLatest() == null) {
+			fwDeviceConfig.setIsLatest(existing.getIsLatest());
+		}
+		if (fwDeviceConfig.getIsLatest() != null && fwDeviceConfig.getIsLatest() == 1) {
+			this.resetLatestByDeviceId(deviceId, fwDeviceConfig.getId());
+		}
+		return R.status(this.updateById(fwDeviceConfig));
+	}
+
 
 	@Override
 	public List<FwDeviceConfigExcel> exportFwDeviceConfig(Wrapper<FwDeviceConfigEntity> queryWrapper) {

--
Gitblit v1.9.3