@@ -3,6 +3,7 @@ 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 com.baomidou.mybatisplus.core.toolkit.Wrappers ;
import jakarta.annotation.Resource ;
import lombok.extern.slf4j.Slf4j ;
import org.agt.framework.common.pojo.PageResult ;
@@ -15,9 +16,11 @@ 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 ;
import org.agt.module.license.dal.dataobject.license.LicenseDO ;
import org.agt.module.license.dal.dataobject.license.LicenseDetailDO ;
import org.agt.module.license.dal.dataobject.license.LicenseProviderDO ;
import org.agt.module.license.dal.dataobject.project.ProjectDO ;
import org.agt.module.license.dal.mysql.customer.CustomerMapper ;
import org.agt.module.license.dal.mysql.license.LicenseDetailMapper ;
import org.agt.module.license.dal.mysql.license.LicenseMapper ;
import org.agt.module.license.dal.mysql.license.LicenseProviderMapper ;
import org.agt.module.license.dal.mysql.project.ProjectMapper ;
@@ -71,6 +74,9 @@ public class LicenseServiceImpl implements LicenseService {
@Resource
private NotifyMessageSendApi notifySendApi ;
@Resource
private LicenseDetailMapper licenseDetailMapper ;
@Override
public Long createLicense ( LicenseSaveReqVO createReqVO ) {
// 校验项目Sn是否唯一
@@ -82,8 +88,16 @@ public class LicenseServiceImpl implements LicenseService {
license . setStatus ( LicenseStatusEnum . NOT_APPLIED . getCode ( ) ) ;
licenseMapper . insert ( license ) ;
List < LicenseNeCodeVO > neCodeList = createReqVO . getNeCodeList ( ) ;
List < LicenseDetailDO > licenseDetails = BeanUtils . toBean ( neCodeList , LicenseDetailDO . class ) ;
for ( LicenseDetailDO licenseDetail : licenseDetails ) {
licenseDetail . setLicenseId ( license . getId ( ) ) ;
}
licenseDetailMapper . insertBatch ( licenseDetails ) ;
createReqVO . setId ( license . getId ( ) ) ;
applyLicense ( createReqVO ) ;
applyLicense ( createReqVO , licenseDetails );
// 返回
return license . getId ( ) ;
}
@@ -102,7 +116,7 @@ public class LicenseServiceImpl implements LicenseService {
}
@Override
public void applyLicense ( LicenseSaveReqVO updateReqVO ) {
public void applyLicense ( LicenseSaveReqVO updateReqVO , List < LicenseDetailDO > licenseDetails ) {
// 发送邮件
// 1. 准备参数
Long userId = updateReqVO . getApprover ( ) ;
@@ -123,9 +137,9 @@ public class LicenseServiceImpl implements LicenseService {
notifySendApi . sendSingleMessageToAdmin ( new NotifySendSingleToUserReqDTO ( )
. setUserId ( userId ) . setTemplateCode ( templateCode ) . setTemplateParams ( templateParams ) ) ;
List< LicenseNeCodeVO> neCodeList = updateReqVO. getNeCodeList( ) ;
// List< LicenseNeCodeVO> neCodeList = updateReqVO. getNeCodeList() ;
for ( LicenseNeCodeV O neCodeVO : neCodeList ) {
for ( LicenseDetailD O neCodeVO : licenseDetails ) {
// 添加数据到License提供者表
LicenseProviderDO licenseProviderDO = new LicenseProviderDO ( ) ;
licenseProviderDO . setCustomerId ( updateReqVO . getCustomerId ( ) ) ;
@@ -162,12 +176,13 @@ public class LicenseServiceImpl implements LicenseService {
neCodeVO . setProviderId ( licenseProviderDO . getId ( ) ) ;
}
licenseDetailMapper . updateBatch ( licenseDetails ) ;
// 更新表
updateReqVO . setStatus ( LicenseStatusEnum . IN_APPLICATION . getCode ( ) ) ;
updateReqVO . setApplicant ( WebFrameworkUtils . getLoginUserId ( ) ) ;
updateReqVO . setApplicationTime ( LocalDateTime . now ( ) ) ;
updateReqVO. setNeCodeList( neCodeList) ;
// updateReqVO. setNeCodeList( neCodeList) ;
updateLicense ( updateReqVO ) ;
}
@@ -175,74 +190,147 @@ public class LicenseServiceImpl implements LicenseService {
public String generate ( Long id ) {
LicenseDO licenseDO = licenseMapper . selectById ( id ) ;
List< LicenseNeCodeVO> neCodeList = licenseDO. getNeCodeList( ) ;
for ( LicenseNeCodeVO neCodeVO : neCodeList ) {
// List< LicenseNeCodeVO> neCodeList = licenseDO. getNeCodeList() ;
List < LicenseDetailDO > licenseDetailDOS = licenseDetailMapper . selectList ( Wrappers . < LicenseDetailDO > lambdaQuery ( ) . eq ( LicenseDetailDO : : getLicenseId , licenseDO . getId ( ) ) ) ;
// List<LicenseNeCodeVO> neCodeList = BeanUtils.toBean(licenseDetailDOS, LicenseNeCodeVO.class);
for ( LicenseDetailDO neCodeVO : licenseDetailDOS ) {
LicenseProviderDO licenseProviderDO = licenseProviderMapper . selectById ( neCodeVO . getProviderId ( ) ) ;
licenseProviderDO . setState ( 2 ) ;
licenseProviderMapper . updateById ( licenseProviderDO ) ;
}
try {
System. out . println ( " 线程开始睡眠..." ) ;
Thread. sleep ( 8000 ) ; // 暂停2000毫秒, 即2秒
System. out . println ( " 线程醒来! " ) ;
} catch ( InterruptedException e ) {
log. error ( " 睡眠失败 " ) ;
}
// try {
// System.out.println(" 线程开始睡眠...") ;
// Thread.sleep(8000); // 暂停2000毫秒, 即2秒
// System.out.println("线程醒来!") ;
// } catch ( InterruptedException e) {
// log.error("睡眠失败") ;
// }
//
// for (LicenseDetailDO neCodeVO : licenseDetailDOS) {
// LicenseProviderDO licenseProviderDO = licenseProviderMapper.selectById(neCodeVO.getProviderId());
// if (licenseProviderDO.getState() != 3) {
//// continue;
// }
// String newFilePath1 = licenseProviderDO.getNewFilePath1();
//
// 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 {
// log.info("下载License文件路径为: {}", newFilePath1);
// 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);
// }
//
// licenseDetailMapper.updateBatch(licenseDetailDOS);
// licenseDO.setNeCodeList(neCodeList);
licenseDO . setStatus ( LicenseStatusEnum . GENERATING . getCode ( ) ) ;
licenseMapper . updateById ( licenseDO ) ;
return " " ;
}
for ( LicenseNeCodeVO neCodeVO : neCodeList ) {
LicenseProviderDO licenseProviderDO = licenseProvider Mapper . selectById ( neCodeVO . getProviderId ( ) ) ;
if ( l icenseProviderDO . getState ( ) ! = 3 ) {
// continue ;
}
String newFilePath1 = licenseProviderDO . getNewFilePath1 ( ) ;
public void genLicenseTask ( ) {
List < LicenseDO > licenses = licenseMapper . selectList ( Wrappers . < LicenseDO > lambdaQuery ( ) . eq ( LicenseDO : : getStatus , LicenseStatusEnum . GENERATING . getCode ( ) ) ) ;
for ( L icenseDO licenseDO : licenses ) {
List < LicenseDetailDO > licenseDetails = licenseDetailMapper . selectList ( Wrappers . < LicenseDetailDO > lambdaQuery ( ) . eq ( LicenseDetailDO : : getLicenseId , licenseDO . getId ( ) ) ) ;
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 = D ictFrameworkUtils . parseDictDataLabel ( " lic_ne_5g " , ne . toString ( ) ) ;
for ( LicenseDetailDO detail : licenseDetails ) {
if ( StrUtil . isNotBlank ( detail . getFileUrl ( ) ) ) {
continue ;
}
LicenseProviderDO licenseProviderDO = licenseProviderMapper . selectById ( detail . getProviderId ( ) ) ;
if ( l icenseProviderDO . getState ( ) ! = 3 ) {
continue ;
}
String newFilePath1 = licenseProviderDO . getNewFilePath1 ( ) ;
List < Integer > neList = detail . 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_4 g " , ne . toString ( ) ) ;
label = DictFrameworkUtils . parseDictDataLabel ( " lic_ne_5 g " , ne . toString ( ) ) ;
if ( StrUtil . isBlank ( label ) ) {
label = DictFrameworkUtils . parseDictDataLabel ( " lic_ne_23 g " , ne . toString ( ) ) ;
label = DictFrameworkUtils . parseDictDataLabel ( " lic_ne_4 g " , ne . toString ( ) ) ;
if ( StrUtil . isBlank ( label ) ) {
label = DictFrameworkUtils . parseDictDataLabel ( " lic_ne_add " , ne . toString ( ) ) ;
label = DictFrameworkUtils . parseDictDataLabel ( " lic_ne_23g " , ne . toString ( ) ) ;
if ( StrUtil . isBlank ( label ) ) {
label = DictFrameworkUtils . parseDictDataLabel ( " lic_ne_add " , ne . toString ( ) ) ;
}
}
}
}
neLabels . add ( label ) ;
}
neLabels . add ( l abel) ;
}
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 " ;
String neListStr = StrUtil . join ( " _ " , neL abels ) ;
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 {
log . info ( " 下载License文件路径为: {} " , newFilePath1 ) ;
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 " ) ;
// 上传到文件服务
byte [ ] fileContent = null ;
try {
log . info ( " 下载License文件路径为: {} " , newFilePath1 ) ;
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 ) ;
detail . setFileUrl ( fileURL ) ;
licenseDetailMapper . updateById ( detail ) ;
}
String fileURL = fileApi . c reateFile ( fileContent , fileName ) ;
boolean isCompleted = licenseDetails . st ream ( ) . allMatch ( c - > StrUtil . isNotBlank ( c . getFileUrl ( ) ) ) ;
if ( isCompleted ) {
licenseDO . setStatus ( LicenseStatusEnum . COMPLETED . getCode ( ) ) ;
licenseMapper . updateById ( licenseDO ) ;
}
neCodeVO . setFileUrl ( fileURL ) ;
}
licenseDO . setNeCodeList ( neCodeList ) ;
licenseDO . setStatus ( LicenseStatusEnum . COMPLETED . getCode ( ) ) ;
licenseMapper . updateById ( licenseDO ) ;
return " " ;
}
@Override
@@ -261,12 +349,22 @@ public class LicenseServiceImpl implements LicenseService {
@Override
public LicenseDO getLicense ( Long id ) {
return licenseMapper . selectById ( id ) ;
LicenseDO licenseDO = licenseMapper . selectById ( id ) ;
List < LicenseDetailDO > licenseDetailDOS = licenseDetailMapper . selectList ( Wrappers . < LicenseDetailDO > lambdaQuery ( ) . eq ( LicenseDetailDO : : getLicenseId , licenseDO . getId ( ) ) ) ;
List < LicenseNeCodeVO > details = BeanUtils . toBean ( licenseDetailDOS , LicenseNeCodeVO . class ) ;
licenseDO . setNeCodeList ( details ) ;
return licenseDO ;
}
@Override
public PageResult < LicenseDO > getLicensePage ( LicensePageReqVO pageReqVO ) {
return licenseMapper . selectPage ( pageReqVO ) ;
PageResult < LicenseDO > pageResult = licenseMapper . selectPage ( pageReqVO ) ;
for ( LicenseDO licenseDO : pageResult . getList ( ) ) {
List < LicenseDetailDO > licenseDetailDOS = licenseDetailMapper . selectList ( Wrappers . < LicenseDetailDO > lambdaQuery ( ) . eq ( LicenseDetailDO : : getLicenseId , licenseDO . getId ( ) ) ) ;
List < LicenseNeCodeVO > details = BeanUtils . toBean ( licenseDetailDOS , LicenseNeCodeVO . class ) ;
licenseDO . setNeCodeList ( details ) ;
}
return pageResult ;
}
@Override