| | |
| | | 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); |
| | |
| | | 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()); |
| | | } |