feat: license历史
This commit is contained in:
@@ -52,7 +52,7 @@ public class LicenseController {
|
||||
@Operation(summary = "创建License")
|
||||
@PreAuthorize("@ss.hasPermission('license:license:create')")
|
||||
public CommonResult<Long> createLicense(@Valid @RequestBody LicenseSaveReqVO createReqVO) {
|
||||
return success(licenseService.createLicense(createReqVO));
|
||||
return success(licenseService.createLicense(createReqVO, false));
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
@@ -105,6 +105,14 @@ public class LicenseController {
|
||||
return success(license);
|
||||
}
|
||||
|
||||
@GetMapping("/history")
|
||||
@Operation(summary = "获得License历史列表")
|
||||
@PreAuthorize("@ss.hasPermission('license:license:query')")
|
||||
public CommonResult<List<LicenseRespVO>> getLicensePage(@RequestParam("id") Long id) {
|
||||
List<LicenseRespVO> licenseHistory = licenseService.getLicenseHistory(id);
|
||||
return success(licenseHistory);
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获得License分页")
|
||||
@PreAuthorize("@ss.hasPermission('license:license:query')")
|
||||
|
||||
@@ -13,6 +13,7 @@ import org.agt.module.license.dal.dataobject.customer.CustomerDO;
|
||||
import org.agt.module.license.dal.dataobject.project.ProjectDO;
|
||||
import org.agt.module.system.api.user.AdminUserApi;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
@@ -47,12 +48,7 @@ public class LicenseRespVO implements VO {
|
||||
|
||||
@Schema(description = "到期时间")
|
||||
@ExcelProperty("到期时间")
|
||||
private LocalDateTime expiryDate;
|
||||
|
||||
@Schema(description = "网元开关")
|
||||
// @ExcelProperty(value = "网元开关", converter = DictConvert.class)
|
||||
@DictFormat("lic_ne_switch") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
|
||||
private List<Integer> neList;
|
||||
private LocalDate expiryDate;
|
||||
|
||||
@Schema(description = "网元")
|
||||
@ExcelProperty("网元")
|
||||
@@ -85,10 +81,6 @@ public class LicenseRespVO implements VO {
|
||||
@ExcelProperty("申请人")
|
||||
private String applicantName;
|
||||
|
||||
@Schema(description = "申请时间")
|
||||
// @ExcelProperty("申请时间")
|
||||
private LocalDateTime applicationTime;
|
||||
|
||||
@Schema(description = "审批人")
|
||||
@Trans(type = TransType.AUTO_TRANS, key = AdminUserApi.PREFIX, fields = "nickname", ref = "approverName")
|
||||
private Long approver;
|
||||
@@ -107,8 +99,14 @@ public class LicenseRespVO implements VO {
|
||||
private String remark;
|
||||
|
||||
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("创建时间")
|
||||
// @ExcelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@Schema(description = "申请时间")
|
||||
@ExcelProperty("申请时间")
|
||||
private LocalDateTime applicationTime;
|
||||
|
||||
private LicenseRespVO oldLicense;
|
||||
|
||||
private boolean hasHistory;
|
||||
}
|
||||
@@ -22,7 +22,7 @@ public interface LicenseService {
|
||||
* @param createReqVO 创建信息
|
||||
* @return 编号
|
||||
*/
|
||||
Long createLicense(@Valid LicenseSaveReqVO createReqVO);
|
||||
Long createLicense(@Valid LicenseSaveReqVO createReqVO, boolean isReapply);
|
||||
|
||||
/**
|
||||
* 更新License
|
||||
@@ -85,4 +85,6 @@ public interface LicenseService {
|
||||
* @return boolean
|
||||
*/
|
||||
Boolean validateLicenseSnUnique(String sn, Long id);
|
||||
|
||||
List<LicenseRespVO> getLicenseHistory(Long id);
|
||||
}
|
||||
@@ -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());
|
||||
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);
|
||||
}
|
||||
@@ -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);
|
||||
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();
|
||||
license.setHasHistory(histroyOptional.isPresent());
|
||||
if (LicenseStatusEnum.REAPPLYING.getCode().equals(license.getStatus())) {
|
||||
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);
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user