| | |
| | | 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; |
| | |
| | | |
| | | @Autowired |
| | | private IDeviceFirmwareService deviceFirmwareService; |
| | | |
| | | @Resource |
| | | private AuthorizeService authorizeService; |
| | | |
| | | @Autowired |
| | | @Qualifier("gatewayOSDServiceImpl") |
| | |
| | | .collect(Collectors.toList()); |
| | | } |
| | | |
| | | /** |
| | | * 设备列表 |
| | | * */ |
| | | @Override |
| | | public List<DeviceDTO> getDevicesTopoForWeb() { |
| | | List<DeviceDTO> devicesList = this.getDevicesByParams( |
| | |
| | | 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); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * Convert the received gateway device object into a database entity object. |
| | | * |
| | | * @param gateway |