From c5badf4a2eafbaa4eff00f0941807626dda1d8ff Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Tue, 07 Apr 2026 20:10:46 +0800
Subject: [PATCH] opt: 人大金仓数据库改造

---
 drone-service/drone-fw/src/main/java/org/sxkj/fw/detection/service/impl/FwDeviceConfigServiceImpl.java |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 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 1a59b55..6c43c5e 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
@@ -62,19 +62,33 @@
 		return baseMapper.resetLatestByDeviceId(deviceId, excludeId);
 	}
 
+	/**
+	 * 新增或修改设备配置
+	 * <p>
+	 * 业务逻辑说明:
+	 * 1. 新增配置时:自动分配版本号(最大版本号+1),标记为最新版本,并将该设备其他配置的is_latest重置为0
+	 * 2. 更新配置时:保留原有版本号和is_latest标识(除非显式传入新值),若设置is_latest=1则重置该设备其他配置
+	 * </p>
+	 *
+	 * @param fwDeviceConfig 设备配置实体对象,必须包含deviceId;更新时需包含id
+	 * @return R 操作结果,成功返回R.status(true),失败返回错误信息
+	 */
 	@Override
 	public R saveOrUpdateConfig(FwDeviceConfigEntity fwDeviceConfig) {
+		// 参数校验:设备ID不能为空
 		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);
@@ -83,12 +97,14 @@
 			return R.status(this.save(fwDeviceConfig));
 		}
 
+		// 处理更新配置逻辑:保留原有字段值(除非显式传入新值)
 		if (fwDeviceConfig.getConfigVersion() == null) {
 			fwDeviceConfig.setConfigVersion(existing.getConfigVersion());
 		}
 		if (fwDeviceConfig.getIsLatest() == null) {
 			fwDeviceConfig.setIsLatest(existing.getIsLatest());
 		}
+		// 如果设置为最新版本,需要重置该设备其他配置的is_latest标识
 		if (fwDeviceConfig.getIsLatest() != null && fwDeviceConfig.getIsLatest() == 1) {
 			this.resetLatestByDeviceId(deviceId, fwDeviceConfig.getId());
 		}

--
Gitblit v1.9.3