From 9f911c1461ba33c1a561046eb1ac8e1c56fc9b9d Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Thu, 30 Oct 2025 11:47:20 +0800
Subject: [PATCH] 实体对象基类增加是否使用数据范围
---
ard-sample/src/main/java/com/ard/sample/manage/service/impl/DeviceServiceImpl.java | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 56 insertions(+), 3 deletions(-)
diff --git a/ard-sample/src/main/java/com/ard/sample/manage/service/impl/DeviceServiceImpl.java b/ard-sample/src/main/java/com/ard/sample/manage/service/impl/DeviceServiceImpl.java
index b6f48d4..7466075 100644
--- a/ard-sample/src/main/java/com/ard/sample/manage/service/impl/DeviceServiceImpl.java
+++ b/ard-sample/src/main/java/com/ard/sample/manage/service/impl/DeviceServiceImpl.java
@@ -1,5 +1,7 @@
package com.ard.sample.manage.service.impl;
+import com.alibaba.fastjson2.JSONObject;
+import com.ard.system.authorize.service.AuthorizeService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -89,6 +91,9 @@
@Autowired
private IDeviceFirmwareService deviceFirmwareService;
+
+ @Resource
+ private AuthorizeService authorizeService;
@Autowired
@Qualifier("gatewayOSDServiceImpl")
@@ -305,6 +310,9 @@
.collect(Collectors.toList());
}
+ /**
+ * 设备列表
+ * */
@Override
public List<DeviceDTO> getDevicesTopoForWeb() {
List<DeviceDTO> devicesList = this.getDevicesByParams(
@@ -533,7 +541,51 @@
mapper.updateById(entity);
return Optional.of(deviceEntity);
}
+ // 2025-10-20 zwy 添加时增加授权验证及数量限制,限制为3台机场设备,超出则抛出异常
+ try{
+ // 查询数据库中机器设备数量
+ // 根据参数获取设备列表
+ List<DeviceDTO> devicesList = this.getDevicesByParams(
+ DeviceQueryParam.builder()
+ // 过滤设备域为GATEWAY和DOCK的设备
+ .domains(List.of(DeviceDomainEnum.GATEWAY.getVal(), DeviceDomainEnum.DOCK.getVal()))
+ .build());
+ // 验证授权数量
+ validateAuthorization(devicesList.size(), 1);
+ }
+ catch (Exception e) {
+ return Optional.empty();
+ }
+ // 调用验证方法
+
return mapper.insert(entity) > 0 ? Optional.of(entity) : Optional.empty();
+ }
+
+ /**
+ * 验证授权数量
+ */
+ private void validateAuthorization(int existingCount, int newCount) {
+ int totalCount = existingCount + newCount;
+
+ JSONObject authInfo = authorizeService.getAuthorizationInfo();
+ String authType = authInfo.getString("Type");
+
+ switch (authType) {
+ case "normal":
+ int allowedDockNum = authInfo.getIntValue("dockNum");
+ if (totalCount > allowedDockNum) {
+ throw new RuntimeException(String.format(
+ "授权数量%d,当前操作将导致总数达到%d,超过授权限制",
+ allowedDockNum, totalCount));
+ }
+ break;
+ case "expired":
+ throw new RuntimeException("授权文件已过期");
+ case "mismatch":
+ throw new RuntimeException("授权文件不匹配");
+ default:
+ throw new RuntimeException("未知的授权类型: " + authType);
+ }
}
/**
@@ -679,9 +731,9 @@
public Boolean updateWorkType(String sn, Long workType) {
// 方式1:使用LambdaUpdateWrapper(推荐,类型安全,避免字段名硬编码)
LambdaUpdateWrapper<DeviceEntity> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
- // 设置更新条件:deviceSn = 100
+ // 设置更新条件:deviceSn = sn
lambdaUpdateWrapper.eq(DeviceEntity::getDeviceSn, sn)
- // 只更新status字段为"online"
+ // 只更新workType字段
.set(DeviceEntity::getWorkType, workType);
// 执行更新(第一个参数传null,因为更新字段已通过wrapper的set指定)
int update = mapper.update(null, lambdaUpdateWrapper);
@@ -818,11 +870,12 @@
*/
@Override
public PaginationData<DeviceDTO> getBoundDevicesWithDomain(Long page,
- Long pageSize, Integer domain) {
+ Long pageSize, Integer domain, Long deptId) {
Page<DeviceEntity> pagination = mapper.selectPage(new Page<>(page, pageSize),
new LambdaQueryWrapper<DeviceEntity>()
.eq(DeviceEntity::getDomain, domain)
+ .eq(deptId != null, DeviceEntity::getDeptId, deptId)
.isNotNull(DeviceEntity::getDeptId));
// .eq(DeviceEntity::getBoundStatus, true));
List<DeviceDTO> devicesList = pagination.getRecords().stream().map(this::deviceEntityConvertToDTO)
--
Gitblit v1.9.3