|
|
|
|
@@ -98,8 +98,8 @@ public class LicenseServiceImpl implements LicenseService {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public Long createLicense(LicenseSaveReqVO createReqVO) {
|
|
|
|
|
// 校验项目Sn是否唯一
|
|
|
|
|
public Long createLicense(LicenseSaveReqVO createReqVO, boolean isReapply) {
|
|
|
|
|
// 校验项目Sn是否唯一, boolean isReapply
|
|
|
|
|
if (!validateLicenseSnUnique(createReqVO.getSerialNo(), createReqVO.getId())) {
|
|
|
|
|
throw exception(LICENSE_SN_DUPLICATE, createReqVO.getSerialNo());
|
|
|
|
|
}
|
|
|
|
|
@@ -110,7 +110,19 @@ public class LicenseServiceImpl implements LicenseService {
|
|
|
|
|
// 插入
|
|
|
|
|
LicenseDO license = BeanUtils.toBean(createReqVO, LicenseDO.class);
|
|
|
|
|
license.setStatus(LicenseStatusEnum.NOT_APPLIED.getCode());
|
|
|
|
|
licenseMapper.insert(license);
|
|
|
|
|
if (isReapply) {
|
|
|
|
|
licenseMapper.update(Wrappers.<LicenseDO>lambdaUpdate()
|
|
|
|
|
.eq(LicenseDO::getId, license.getId())
|
|
|
|
|
.set(LicenseDO::getExpiryDate, license.getExpiryDate())
|
|
|
|
|
.set(LicenseDO::getUserNumber, license.getUserNumber())
|
|
|
|
|
.set(LicenseDO::getRanNumber, license.getRanNumber())
|
|
|
|
|
.set(LicenseDO::getRemark, StrUtil.isBlank(license.getRemark()) ? null : license.getRemark())
|
|
|
|
|
.set(LicenseDO::getApprover, license.getApprover())
|
|
|
|
|
.set(LicenseDO::getFileUrl, null)
|
|
|
|
|
);
|
|
|
|
|
} else {
|
|
|
|
|
licenseMapper.insert(license);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<LicenseDetailVO> neCodeList = createReqVO.getNeCodeList();
|
|
|
|
|
|
|
|
|
|
@@ -207,10 +219,12 @@ public class LicenseServiceImpl implements LicenseService {
|
|
|
|
|
licenseDetailMapper.updateBatch(licenseDetails);
|
|
|
|
|
|
|
|
|
|
// 更新表
|
|
|
|
|
updateReqVO.setStatus(LicenseStatusEnum.IN_APPLICATION.getCode());
|
|
|
|
|
updateReqVO.setApplicant(WebFrameworkUtils.getLoginUserId());
|
|
|
|
|
updateReqVO.setApplicationTime(LocalDateTime.now());
|
|
|
|
|
updateLicense(updateReqVO);
|
|
|
|
|
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
|
|
|
|
|
@@ -224,23 +238,23 @@ public class LicenseServiceImpl implements LicenseService {
|
|
|
|
|
|
|
|
|
|
LicenseHistoryDO historyDO = BeanUtils.toBean(licenseDO, LicenseHistoryDO.class);
|
|
|
|
|
|
|
|
|
|
licenseMapper.deleteById(updateReqVO.getId());
|
|
|
|
|
licenseDetailMapper.delete(Wrappers.<LicenseDetailDO>lambdaQuery().eq(LicenseDetailDO::getLicenseId, licenseDO.getId()));
|
|
|
|
|
|
|
|
|
|
updateReqVO.setId(null);
|
|
|
|
|
Long licenseId = createLicense(updateReqVO);
|
|
|
|
|
|
|
|
|
|
for (LicenseDetailVO neCode : updateReqVO.getNeCodeList()) {
|
|
|
|
|
neCode.setFileUrlLegacy(null);
|
|
|
|
|
neCode.setFileUrl(null);
|
|
|
|
|
neCode.setProviderId(null);
|
|
|
|
|
}
|
|
|
|
|
Long licenseId = createLicense(updateReqVO, true);
|
|
|
|
|
historyDO.setId(null);
|
|
|
|
|
historyDO.setLicenseId(licenseId);
|
|
|
|
|
historyDO.setFileUrl(null);
|
|
|
|
|
licenseHistoryMapper.insert(historyDO);
|
|
|
|
|
|
|
|
|
|
if (CollUtil.isNotEmpty(licenseDetailDOS)) {
|
|
|
|
|
List<LicenseDetailHistoryDO> detailHistoryDOList = BeanUtils.toBean(licenseDetailDOS, LicenseDetailHistoryDO.class);
|
|
|
|
|
detailHistoryDOList.forEach(c -> {
|
|
|
|
|
c.setLicenseId(licenseId);
|
|
|
|
|
c.setFileUrlLegacy(null);
|
|
|
|
|
c.setFileUrl(null);
|
|
|
|
|
c.setProviderId(null);
|
|
|
|
|
c.setId(null);
|
|
|
|
|
c.setLicenseId(historyDO.getId());
|
|
|
|
|
});
|
|
|
|
|
licenseDetailHistoryMapper.insertBatch(detailHistoryDOList);
|
|
|
|
|
}
|
|
|
|
|
@@ -380,7 +394,7 @@ public class LicenseServiceImpl implements LicenseService {
|
|
|
|
|
// File tempFile = new File("D:/temp/temp.zip");
|
|
|
|
|
File tempFile = new File("/usr/local/licGen/temp.zip");
|
|
|
|
|
ZipUtil.zip(tempFile, pathList.toArray(new String[0]), inputStreamList.toArray(new ByteArrayInputStream[inputStreamList.size()]));
|
|
|
|
|
String fileURL = fileApi.createFile(FileUtil.readBytes(tempFile), licenseDO.getSerialNo() + "_" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))+".zip");
|
|
|
|
|
String fileURL = fileApi.createFile(FileUtil.readBytes(tempFile), licenseDO.getSerialNo() + "_" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + ".zip");
|
|
|
|
|
|
|
|
|
|
FileUtil.del(tempFile);
|
|
|
|
|
licenseDO.setFileUrl(fileURL);
|
|
|
|
|
@@ -423,6 +437,15 @@ public class LicenseServiceImpl implements LicenseService {
|
|
|
|
|
validateLicenseExists(id);
|
|
|
|
|
// 删除
|
|
|
|
|
licenseMapper.deleteById(id);
|
|
|
|
|
|
|
|
|
|
licenseDetailMapper.delete(Wrappers.<LicenseDetailDO>lambdaQuery().eq(LicenseDetailDO::getLicenseId, id));
|
|
|
|
|
|
|
|
|
|
List<LicenseHistoryDO> licenseHistoryDOS = licenseHistoryMapper.selectList(Wrappers.<LicenseHistoryDO>lambdaQuery().eq(LicenseHistoryDO::getLicenseId, id));
|
|
|
|
|
for (LicenseHistoryDO licenseHistoryDO : licenseHistoryDOS) {
|
|
|
|
|
licenseDetailHistoryMapper.delete(Wrappers.<LicenseDetailHistoryDO>lambdaQuery().eq(LicenseDetailHistoryDO::getLicenseId, licenseHistoryDO.getId()));
|
|
|
|
|
}
|
|
|
|
|
licenseHistoryMapper.delete(Wrappers.<LicenseHistoryDO>lambdaQuery().eq(LicenseHistoryDO::getLicenseId, id));
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void validateLicenseExists(Long id) {
|
|
|
|
|
@@ -443,11 +466,12 @@ public class LicenseServiceImpl implements LicenseService {
|
|
|
|
|
List<LicenseDetailDO> licenseDetailDOS = licenseDetailMapper.selectList(Wrappers.<LicenseDetailDO>lambdaQuery().eq(LicenseDetailDO::getLicenseId, license.getId()));
|
|
|
|
|
List<LicenseDetailVO> details = BeanUtils.toBean(licenseDetailDOS, LicenseDetailVO.class);
|
|
|
|
|
fillDetail(details, license);
|
|
|
|
|
List<LicenseHistoryDO> historyList = licenseHistoryMapper.selectList(Wrappers.<LicenseHistoryDO>lambdaQuery()
|
|
|
|
|
.eq(LicenseHistoryDO::getLicenseId, license.getId())
|
|
|
|
|
.orderByDesc(LicenseHistoryDO::getApplicationTime));
|
|
|
|
|
Optional<LicenseHistoryDO> histroyOptional = historyList.stream().findFirst();
|
|
|
|
|
license.setHasHistory(histroyOptional.isPresent());
|
|
|
|
|
if (LicenseStatusEnum.REAPPLYING.getCode().equals(license.getStatus())) {
|
|
|
|
|
List<LicenseHistoryDO> historyList = licenseHistoryMapper.selectList(Wrappers.<LicenseHistoryDO>lambdaQuery()
|
|
|
|
|
.eq(LicenseHistoryDO::getLicenseId, license.getId())
|
|
|
|
|
.orderByDesc(LicenseHistoryDO::getApplicationTime));
|
|
|
|
|
Optional<LicenseHistoryDO> histroyOptional = historyList.stream().findFirst();
|
|
|
|
|
if (histroyOptional.isPresent()) {
|
|
|
|
|
LicenseHistoryDO historyDO = histroyOptional.get();
|
|
|
|
|
LicenseRespVO oldLicense = BeanUtils.toBean(historyDO, LicenseRespVO.class);
|
|
|
|
|
@@ -473,7 +497,7 @@ public class LicenseServiceImpl implements LicenseService {
|
|
|
|
|
if (i < oldDetails.size()) {
|
|
|
|
|
activationCodeMap.put("old", oldDetails.get(i).getActivationCode());
|
|
|
|
|
neListMap.put("old", oldDetails.get(i).getNeList());
|
|
|
|
|
fileUrlListMap.put("old", oldDetails.get(i).getFileUrlList());
|
|
|
|
|
fileUrlListMap.put("old", null);
|
|
|
|
|
mergeDetail.setFileUrl(oldDetails.get(i).getFileUrl());
|
|
|
|
|
mergeDetail.setNeList(oldDetails.get(i).getNeList());
|
|
|
|
|
mergeDetail.setActivationCode(oldDetails.get(i).getActivationCode());
|
|
|
|
|
@@ -488,7 +512,7 @@ public class LicenseServiceImpl implements LicenseService {
|
|
|
|
|
neListMap.put("new", details.get(i).getNeList());
|
|
|
|
|
}
|
|
|
|
|
if (!(i < oldDetails.size() && Objects.equals(oldDetails.get(i).getFileUrlList(), details.get(i).getFileUrlList()))) {
|
|
|
|
|
fileUrlListMap.put("new", details.get(i).getFileUrlList());
|
|
|
|
|
fileUrlListMap.put("new", null);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
mergeDetail.setActivationCodeMap(activationCodeMap);
|
|
|
|
|
@@ -557,5 +581,21 @@ public class LicenseServiceImpl implements LicenseService {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<LicenseRespVO> getLicenseHistory(Long id) {
|
|
|
|
|
List<LicenseHistoryDO> historyDOList = licenseHistoryMapper.selectList(Wrappers.<LicenseHistoryDO>lambdaQuery()
|
|
|
|
|
.eq(LicenseHistoryDO::getLicenseId, id).orderByDesc(LicenseHistoryDO::getApplicationTime));
|
|
|
|
|
List<LicenseRespVO> voList = BeanUtils.toBean(historyDOList, LicenseRespVO.class);
|
|
|
|
|
for (LicenseRespVO licenseRespVO : voList) {
|
|
|
|
|
fillLicenseHistoryRespVO(licenseRespVO);
|
|
|
|
|
}
|
|
|
|
|
return voList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void fillLicenseHistoryRespVO(LicenseRespVO license) {
|
|
|
|
|
List<LicenseDetailHistoryDO> licenseDetailDOS = licenseDetailHistoryMapper.selectList(Wrappers.<LicenseDetailHistoryDO>lambdaQuery().eq(LicenseDetailHistoryDO::getLicenseId, license.getId()));
|
|
|
|
|
List<LicenseDetailVO> details = BeanUtils.toBean(licenseDetailDOS, LicenseDetailVO.class);
|
|
|
|
|
fillDetail(details, license);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|