feat: 网元分组和接入License生成

This commit is contained in:
caiyuchao
2025-07-26 17:47:02 +08:00
parent 762e4757a8
commit e6c28cab0a
7 changed files with 162 additions and 38 deletions

View File

@@ -0,0 +1,28 @@
package org.agt.module.license.controller.admin.license.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
/**
* @description: License网元和激活码表单
* @author: cyc
* @since: 2025-07-25
*/
@Schema(description = "管理后台 - License新增/修改 网元和激活码表单 Request VO")
@Data
public class LicenseNeCodeVO {
@Schema(description = "网元开关")
private List<Integer> neList;
@Schema(description = "激活码")
private String activationCode;
@Schema(description = "文件url")
private String fileUrl;
@Schema(description = "提供者ID")
private Long providerId;
}

View File

@@ -34,6 +34,9 @@ public class LicensePageReqVO extends PageParam {
@Schema(description = "网元开关")
private List<Integer> neList;
@Schema(description = "网元激活码列表")
private List<LicenseNeCodeVO> neCodeList;
@Schema(description = "用户数")
private Integer userNumber;

View File

@@ -54,6 +54,9 @@ public class LicenseRespVO implements VO {
@DictFormat("lic_ne_switch") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private List<Integer> neList;
@Schema(description = "网元激活码列表")
private List<LicenseNeCodeVO> neCodeList;
@Schema(description = "用户数")
@ExcelProperty("用户数")
private Integer userNumber;

View File

@@ -42,6 +42,9 @@ public class LicenseSaveReqVO {
@Schema(description = "激活码")
private String activationCode;
@Schema(description = "网元激活码列表")
private List<LicenseNeCodeVO> neCodeList;
@Schema(description = "文件URL")
private String fileUrl;

View File

@@ -12,6 +12,7 @@ import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.agt.framework.mybatis.core.dataobject.BaseDO;
import org.agt.module.license.controller.admin.license.vo.LicenseNeCodeVO;
import java.time.LocalDateTime;
import java.util.List;
@@ -59,6 +60,12 @@ public class LicenseDO extends BaseDO {
*/
@TableField(typeHandler = JacksonTypeHandler.class)
private List<Integer> neList;
/**
* 网元激活码列表
*
*/
@TableField(typeHandler = JacksonTypeHandler.class)
private List<LicenseNeCodeVO> neCodeList;
/**
* 用户数
*/

View File

@@ -82,13 +82,23 @@ public class LicenseProviderDO extends BaseDO {
*/
private String cause;
/**
* 授权文件路径(含文件名),扩容或续期时带入
* 授权文件路径-legacy(含文件名),扩容或续期时带入
*/
private String oldFilePath;
private String oldFilePath_0;
/**
* 授权文件路径(含文件名),新生产授权文件
* 授权文件路径-45G(含文件名),扩容或续期时带入
*/
private String newFilePath;
private String oldFilePath_1;
/**
* 授权文件路径-legacy含文件名,新生产授权文件
*/
private String newFilePath_0;
/**
* 授权文件路径-45G含文件名,新生产授权文件
*/
private String newFilePath_1;
/**
* 备注
*/

View File

@@ -1,13 +1,16 @@
package org.agt.module.license.service.license;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.resource.ResourceUtil;
import cn.hutool.core.util.StrUtil;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.agt.framework.common.pojo.PageResult;
import org.agt.framework.common.util.object.BeanUtils;
import org.agt.framework.dict.core.DictFrameworkUtils;
import org.agt.framework.web.core.util.WebFrameworkUtils;
import org.agt.module.infra.api.file.FileApi;
import org.agt.module.license.controller.admin.license.vo.LicenseNeCodeVO;
import org.agt.module.license.controller.admin.license.vo.LicensePageReqVO;
import org.agt.module.license.controller.admin.license.vo.LicenseSaveReqVO;
import org.agt.module.license.dal.dataobject.customer.CustomerDO;
@@ -42,6 +45,7 @@ import static org.agt.module.license.enums.ErrorCodeConstants.LICENSE_SN_DUPLICA
*
* @author 管理员
*/
@Slf4j
@Service
@Validated
public class LicenseServiceImpl implements LicenseService {
@@ -119,32 +123,51 @@ public class LicenseServiceImpl implements LicenseService {
notifySendApi.sendSingleMessageToAdmin(new NotifySendSingleToUserReqDTO()
.setUserId(userId).setTemplateCode(templateCode).setTemplateParams(templateParams));
// 添加数据到License提供者表
LicenseProviderDO licenseProviderDO = new LicenseProviderDO();
licenseProviderDO.setCustomerId(updateReqVO.getCustomerId());
licenseProviderDO.setProjectId(updateReqVO.getProjectId());
licenseProviderDO.setSerialNo(updateReqVO.getSerialNo());
licenseProviderDO.setExpiryDate(updateReqVO.getExpiryDate());
licenseProviderDO.setRanNumber(updateReqVO.getRanNumber());
licenseProviderDO.setUserNumber(updateReqVO.getUserNumber());
List<Integer> neList = updateReqVO.getNeList();
List<String> neLabels = new ArrayList<>();
for (Integer ne : neList) {
String label = DictFrameworkUtils.parseDictDataLabel("lic_ne_list", ne.toString());
neLabels.add(label);
List<LicenseNeCodeVO> neCodeList = updateReqVO.getNeCodeList();
for (LicenseNeCodeVO neCodeVO : neCodeList) {
// 添加数据到License提供者表
LicenseProviderDO licenseProviderDO = new LicenseProviderDO();
licenseProviderDO.setCustomerId(updateReqVO.getCustomerId());
licenseProviderDO.setProjectId(updateReqVO.getProjectId());
licenseProviderDO.setSerialNo(updateReqVO.getSerialNo());
licenseProviderDO.setExpiryDate(updateReqVO.getExpiryDate());
licenseProviderDO.setRanNumber(updateReqVO.getRanNumber());
licenseProviderDO.setUserNumber(updateReqVO.getUserNumber());
List<Integer> neList = neCodeVO.getNeList();
List<String> neLabels = new ArrayList<>();
for (Integer ne : neList) {
String label = DictFrameworkUtils.parseDictDataLabel("lic_ne_all", ne.toString());
if (StrUtil.isBlank(label)) {
label = DictFrameworkUtils.parseDictDataLabel("lic_ne_5g", ne.toString());
if (StrUtil.isBlank(label)) {
label = DictFrameworkUtils.parseDictDataLabel("lic_ne_4g", ne.toString());
if (StrUtil.isBlank(label)) {
label = DictFrameworkUtils.parseDictDataLabel("lic_ne_23g", ne.toString());
if (StrUtil.isBlank(label)) {
label = DictFrameworkUtils.parseDictDataLabel("lic_ne_add", ne.toString());
}
}
}
}
neLabels.add(label);
}
licenseProviderDO.setNeList(StrUtil.join(",", neLabels));
licenseProviderDO.setActivationCode(updateReqVO.getActivationCode());
licenseProviderDO.setOperationType(1);
licenseProviderDO.setState(1);
licenseProviderDO.setRemark(updateReqVO.getRemark());
licenseProviderMapper.insert(licenseProviderDO);
neCodeVO.setProviderId(licenseProviderDO.getId());
}
licenseProviderDO.setNeList(StrUtil.join(",", neLabels));
licenseProviderDO.setActivationCode(updateReqVO.getActivationCode());
licenseProviderDO.setOperationType(1);
licenseProviderDO.setState(1);
licenseProviderDO.setRemark(updateReqVO.getRemark());
licenseProviderMapper.insert(licenseProviderDO);
// 更新表
updateReqVO.setStatus(LicenseStatusEnum.IN_APPLICATION.getCode());
updateReqVO.setApplicant(WebFrameworkUtils.getLoginUserId());
updateReqVO.setApplicationTime(LocalDateTime.now());
updateReqVO.setProviderId(licenseProviderDO.getId());
updateReqVO.setNeCodeList(neCodeList);
updateLicense(updateReqVO);
}
@@ -152,26 +175,73 @@ public class LicenseServiceImpl implements LicenseService {
public String generate(Long id) {
LicenseDO licenseDO = licenseMapper.selectById(id);
List<Integer> neList = licenseDO.getNeList();
List<String> neLabels = new ArrayList<>();
for (Integer ne : neList) {
String label = DictFrameworkUtils.parseDictDataLabel("lic_ne_list", ne.toString());
neLabels.add(label);
List<LicenseNeCodeVO> neCodeList = licenseDO.getNeCodeList();
for (LicenseNeCodeVO neCodeVO : neCodeList) {
LicenseProviderDO licenseProviderDO = licenseProviderMapper.selectById(neCodeVO.getProviderId());
licenseProviderDO.setState(2);
licenseProviderMapper.updateById(licenseProviderDO);
}
String neListStr = StrUtil.join("_", neLabels);
if (StrUtil.isNotBlank(neListStr)) {
neListStr = neListStr + "_";
try {
System.out.println("线程开始睡眠...");
Thread.sleep(2000); // 暂停2000毫秒即2秒
System.out.println("线程醒来!");
} catch (InterruptedException e) {
log.error("睡眠失败");
}
String fileName = neListStr + licenseDO.getSerialNo() + "_" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))+ "_system.ini";
// 上传到文件服务
byte[] fileContent = ResourceUtil.readBytes("file/MME_13750602_2024-08-02_system.ini");
String fileURL = fileApi.createFile(fileContent, fileName);
for (LicenseNeCodeVO neCodeVO : neCodeList) {
LicenseProviderDO licenseProviderDO = licenseProviderMapper.selectById(neCodeVO.getProviderId());
if (licenseProviderDO.getState() != 3) {
// continue;
}
String newFilePath1 = licenseProviderDO.getNewFilePath_1();
licenseDO.setFileUrl(fileURL);
List<Integer> neList = neCodeVO.getNeList();
List<String> neLabels = new ArrayList<>();
for (Integer ne : neList) {
String label = DictFrameworkUtils.parseDictDataLabel("lic_ne_all", ne.toString());
if (StrUtil.isBlank(label)) {
label = DictFrameworkUtils.parseDictDataLabel("lic_ne_5g", ne.toString());
if (StrUtil.isBlank(label)) {
label = DictFrameworkUtils.parseDictDataLabel("lic_ne_4g", ne.toString());
if (StrUtil.isBlank(label)) {
label = DictFrameworkUtils.parseDictDataLabel("lic_ne_23g", ne.toString());
if (StrUtil.isBlank(label)) {
label = DictFrameworkUtils.parseDictDataLabel("lic_ne_add", ne.toString());
}
}
}
}
neLabels.add(label);
}
String neListStr = StrUtil.join("_", neLabels);
if (StrUtil.isNotBlank(neListStr)) {
neListStr = neListStr + "_";
}
String fileName = neListStr + licenseDO.getSerialNo() + "_" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "_system.ini";
// 上传到文件服务
byte[] fileContent = null;
try {
fileContent = FileUtil.readBytes(newFilePath1);
} catch (Exception e) {
log.error("读取文件失败", e);
}
if (fileContent == null) {
log.error("读取文件失败为空");
fileContent = ResourceUtil.readBytes("file/MME_13750602_2024-08-02_system.ini");
}
String fileURL = fileApi.createFile(fileContent, fileName);
neCodeVO.setFileUrl(fileURL);
}
licenseDO.setNeCodeList(neCodeList);
licenseDO.setStatus(LicenseStatusEnum.COMPLETED.getCode());
licenseMapper.updateById(licenseDO);
return fileURL;
return "";
}
@Override