From f131b3b98fe3e236eb4544871d16d89619dc04eb Mon Sep 17 00:00:00 2001
From: zhaowenyu <35589726@qq.com>
Date: Tue, 28 Oct 2025 15:07:03 +0800
Subject: [PATCH] 2025-10-28 zwy 更新,发送websocket消息机场状态信息、远程调试操控状态、远程调试操控进度信息给客户端
---
ard-sample/src/main/java/com/ard/sample/manage/service/impl/DeviceServiceImpl.java | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 54 insertions(+), 1 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 955316b..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);
+ }
}
/**
@@ -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