feat: 支持修改license申请

This commit is contained in:
caiyuchao
2025-09-04 17:11:54 +08:00
parent 20bb20b29b
commit 8bcd0744f5
2 changed files with 84 additions and 80 deletions

View File

@@ -113,6 +113,9 @@ public class LicenseRespVO implements VO {
@ExcelProperty("申请次数")
private Integer applyCount;
@Schema(description = "数据类型")
private Integer dataType;
private LicenseRespVO oldLicense;
private boolean hasHistory;

View File

@@ -130,6 +130,7 @@ public class LicenseServiceImpl implements LicenseService {
.eq(LicenseDO::getId, license.getId())
.set(LicenseDO::getExpiryDate, license.getExpiryDate())
.set(LicenseDO::getUserNumber, license.getUserNumber())
.set(LicenseDO::getSerialNo, license.getSerialNo())
.set(LicenseDO::getRanNumber, license.getRanNumber())
.set(LicenseDO::getRemark, StrUtil.isBlank(license.getRemark()) ? null : license.getRemark())
.set(LicenseDO::getApprover, license.getApprover())
@@ -139,14 +140,7 @@ public class LicenseServiceImpl implements LicenseService {
licenseMapper.insert(license);
}
List<LicenseDetailVO> neCodeList = createReqVO.getNeCodeList();
List<LicenseDetailDO> licenseDetails = BeanUtils.toBean(neCodeList, LicenseDetailDO.class);
for (LicenseDetailDO licenseDetail : licenseDetails) {
licenseDetail.setId(null);
licenseDetail.setLicenseId(license.getId());
}
licenseDetailMapper.insertBatch(licenseDetails);
List<LicenseDetailDO> licenseDetails = updateLicenseDetail(createReqVO.getNeCodeList(), license);
createReqVO.setId(license.getId());
applyLicense(createReqVO, licenseDetails);
@@ -168,6 +162,20 @@ public class LicenseServiceImpl implements LicenseService {
// 更新
LicenseDO updateObj = BeanUtils.toBean(updateReqVO, LicenseDO.class);
licenseMapper.updateById(updateObj);
licenseDetailMapper.delete(Wrappers.<LicenseDetailDO>lambdaQuery().eq(LicenseDetailDO::getLicenseId, updateObj.getId()));
updateLicenseDetail(updateReqVO.getNeCodeList(), updateObj);
}
private List<LicenseDetailDO> updateLicenseDetail(List<LicenseDetailVO> neCodeList, LicenseDO updateObj) {
List<LicenseDetailDO> licenseDetails = BeanUtils.toBean(neCodeList, LicenseDetailDO.class);
for (LicenseDetailDO licenseDetail : licenseDetails) {
licenseDetail.setId(null);
licenseDetail.setLicenseId(updateObj.getId());
}
licenseDetailMapper.insertBatch(licenseDetails);
return licenseDetails;
}
@Override
@@ -192,18 +200,67 @@ public class LicenseServiceImpl implements LicenseService {
notifySendApi.sendSingleMessageToAdmin(new NotifySendSingleToUserReqDTO()
.setUserId(userId).setTemplateCode(templateCode).setTemplateParams(templateParams));
// List<LicenseNeCodeVO> neCodeList = updateReqVO.getNeCodeList();
List<String> resultList = new ArrayList<>(); // 初始化结果列表
// 更新表
LicenseDO licenseDO = new LicenseDO();
licenseDO.setId(updateReqVO.getId());
licenseDO.setStatus(LicenseStatusEnum.IN_APPLICATION.getCode());
licenseDO.setApplicant(WebFrameworkUtils.getLoginUserId());
licenseDO.setApplicationTime(LocalDateTime.now());
licenseMapper.updateById(licenseDO);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void reapplyLicense(LicenseSaveReqVO updateReqVO) {
// 校验存在
validateLicenseExists(updateReqVO.getId());
// 将现有的license迁移到历史表
LicenseDO licenseDO = licenseMapper.selectById(updateReqVO.getId());
List<LicenseDetailDO> licenseDetailDOS = licenseDetailMapper.selectList(Wrappers.<LicenseDetailDO>lambdaQuery().eq(LicenseDetailDO::getLicenseId, licenseDO.getId()));
LicenseHistoryDO historyDO = BeanUtils.toBean(licenseDO, LicenseHistoryDO.class);
licenseDetailMapper.delete(Wrappers.<LicenseDetailDO>lambdaQuery().eq(LicenseDetailDO::getLicenseId, licenseDO.getId()));
for (LicenseDetailVO neCode : updateReqVO.getNeCodeList()) {
neCode.setId(null);
neCode.setFileUrlLegacy(null);
neCode.setFileUrl(null);
neCode.setProviderId(null);
}
Long licenseId = createLicense(updateReqVO, true);
historyDO.setId(null);
historyDO.setLicenseId(licenseId);
licenseHistoryMapper.insert(historyDO);
if (CollUtil.isNotEmpty(licenseDetailDOS)) {
List<LicenseDetailHistoryDO> detailHistoryDOList = BeanUtils.toBean(licenseDetailDOS, LicenseDetailHistoryDO.class);
detailHistoryDOList.forEach(c -> {
c.setId(null);
c.setLicenseId(historyDO.getId());
});
licenseDetailHistoryMapper.insertBatch(detailHistoryDOList);
}
licenseMapper.update(Wrappers.<LicenseDO>lambdaUpdate().eq(LicenseDO::getId, licenseId)
.set(LicenseDO::getStatus, LicenseStatusEnum.REAPPLYING.getCode()).set(LicenseDO::getDataType, null));
}
@Override
@Transactional(rollbackFor = Exception.class)
public String generate(Long id) {
LicenseDO licenseDO = licenseMapper.selectById(id);
List<LicenseDetailDO> licenseDetails = licenseDetailMapper.selectList(Wrappers.<LicenseDetailDO>lambdaQuery().eq(LicenseDetailDO::getLicenseId, licenseDO.getId()));
List<String> resultList = new ArrayList<>(); // 初始化结果列表
for (LicenseDetailDO neCodeVO : licenseDetails) {
// 添加数据到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());
licenseProviderDO.setProjectId(licenseDO.getProjectId());
licenseProviderDO.setSerialNo(licenseDO.getSerialNo());
licenseProviderDO.setExpiryDate(licenseDO.getExpiryDate());
licenseProviderDO.setRanNumber(licenseDO.getRanNumber());
licenseProviderDO.setUserNumber(licenseDO.getUserNumber());
List<Integer> neList = neCodeVO.getNeList();
List<String> neLabels = new ArrayList<>();
for (Integer ne : neList) {
@@ -247,9 +304,9 @@ public class LicenseServiceImpl implements LicenseService {
licenseProviderDO.setNeList(StrUtil.join(",", neLabels));
licenseProviderDO.setActivationCode(neCodeVO.getActivationCode());
licenseProviderDO.setOperationType(1);
licenseProviderDO.setState(1);
licenseProviderDO.setRemark(updateReqVO.getRemark());
licenseProviderDO.setApprover(updateReqVO.getApprover());
licenseProviderDO.setState(2);
licenseProviderDO.setRemark(licenseDO.getRemark());
licenseProviderDO.setApprover(licenseDO.getApprover());
licenseProviderMapper.insert(licenseProviderDO);
neCodeVO.setProviderId(licenseProviderDO.getId());
@@ -257,63 +314,6 @@ public class LicenseServiceImpl implements LicenseService {
licenseDetailMapper.updateBatch(licenseDetails);
// 更新表
LicenseDO licenseDO = new LicenseDO();
licenseDO.setId(updateReqVO.getId());
licenseDO.setStatus(LicenseStatusEnum.IN_APPLICATION.getCode());
licenseDO.setApplicant(WebFrameworkUtils.getLoginUserId());
licenseDO.setApplicationTime(LocalDateTime.now());
licenseMapper.updateById(licenseDO);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void reapplyLicense(LicenseSaveReqVO updateReqVO) {
// 校验存在
validateLicenseExists(updateReqVO.getId());
// 将现有的license迁移到历史表
LicenseDO licenseDO = licenseMapper.selectById(updateReqVO.getId());
List<LicenseDetailDO> licenseDetailDOS = licenseDetailMapper.selectList(Wrappers.<LicenseDetailDO>lambdaQuery().eq(LicenseDetailDO::getLicenseId, licenseDO.getId()));
LicenseHistoryDO historyDO = BeanUtils.toBean(licenseDO, LicenseHistoryDO.class);
licenseDetailMapper.delete(Wrappers.<LicenseDetailDO>lambdaQuery().eq(LicenseDetailDO::getLicenseId, licenseDO.getId()));
for (LicenseDetailVO neCode : updateReqVO.getNeCodeList()) {
neCode.setId(null);
neCode.setFileUrlLegacy(null);
neCode.setFileUrl(null);
neCode.setProviderId(null);
}
Long licenseId = createLicense(updateReqVO, true);
historyDO.setId(null);
historyDO.setLicenseId(licenseId);
licenseHistoryMapper.insert(historyDO);
if (CollUtil.isNotEmpty(licenseDetailDOS)) {
List<LicenseDetailHistoryDO> detailHistoryDOList = BeanUtils.toBean(licenseDetailDOS, LicenseDetailHistoryDO.class);
detailHistoryDOList.forEach(c -> {
c.setId(null);
c.setLicenseId(historyDO.getId());
});
licenseDetailHistoryMapper.insertBatch(detailHistoryDOList);
}
licenseMapper.updateById(new LicenseDO().setId(licenseId).setStatus(LicenseStatusEnum.REAPPLYING.getCode()));
}
@Override
@Transactional(rollbackFor = Exception.class)
public String generate(Long id) {
LicenseDO licenseDO = licenseMapper.selectById(id);
List<LicenseDetailDO> licenseDetailDOS = licenseDetailMapper.selectList(Wrappers.<LicenseDetailDO>lambdaQuery().eq(LicenseDetailDO::getLicenseId, licenseDO.getId()));
for (LicenseDetailDO neCodeVO : licenseDetailDOS) {
LicenseProviderDO licenseProviderDO = licenseProviderMapper.selectById(neCodeVO.getProviderId());
licenseProviderDO.setState(2);
licenseProviderMapper.updateById(licenseProviderDO);
}
licenseDO.setStatus(LicenseStatusEnum.GENERATING.getCode());
licenseMapper.updateById(licenseDO);
return "";
@@ -406,6 +406,7 @@ public class LicenseServiceImpl implements LicenseService {
if (isCompleted && CollUtil.isNotEmpty(licenseDetails)) {
licenseDO.setStatus(LicenseStatusEnum.COMPLETED.getCode());
licenseDO.setFileUrl(licenseDO.getSerialNo() + "_" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + ".tar.gz");
licenseMapper.updateById(licenseDO);
}
@@ -522,10 +523,6 @@ public class LicenseServiceImpl implements LicenseService {
activationCodeMap.put("old", oldDetails.get(i).getActivationCode());
neListMap.put("old", oldDetails.get(i).getNeList());
fileUrlListMap.put("old", null);
mergeDetail.setFileUrl(oldDetails.get(i).getFileUrl());
mergeDetail.setNeList(oldDetails.get(i).getNeList());
mergeDetail.setActivationCode(oldDetails.get(i).getActivationCode());
mergeDetail.setFileUrlList(oldDetails.get(i).getFileUrlList());
}
if (i < details.size()) {
@@ -536,6 +533,10 @@ public class LicenseServiceImpl implements LicenseService {
} else {
fileUrlListMap.put("new", null);
}
mergeDetail.setFileUrl(details.get(i).getFileUrl());
mergeDetail.setNeList(details.get(i).getNeList());
mergeDetail.setActivationCode(details.get(i).getActivationCode());
mergeDetail.setFileUrlList(details.get(i).getFileUrlList());
}
mergeDetail.setActivationCodeMap(activationCodeMap);
mergeDetail.setNeListMap(neListMap);