@@ -3,6 +3,7 @@ package org.agt.module.license.service.license;
import cn.hutool.core.io.FileUtil ;
import cn.hutool.core.io.FileUtil ;
import cn.hutool.core.io.resource.ResourceUtil ;
import cn.hutool.core.io.resource.ResourceUtil ;
import cn.hutool.core.util.StrUtil ;
import cn.hutool.core.util.StrUtil ;
import cn.hutool.core.util.ZipUtil ;
import com.baomidou.mybatisplus.core.toolkit.Wrappers ;
import com.baomidou.mybatisplus.core.toolkit.Wrappers ;
import jakarta.annotation.Resource ;
import jakarta.annotation.Resource ;
import lombok.extern.slf4j.Slf4j ;
import lombok.extern.slf4j.Slf4j ;
@@ -30,8 +31,11 @@ import org.agt.module.system.api.mail.dto.MailSendSingleToUserReqDTO;
import org.agt.module.system.api.notify.NotifyMessageSendApi ;
import org.agt.module.system.api.notify.NotifyMessageSendApi ;
import org.agt.module.system.api.notify.dto.NotifySendSingleToUserReqDTO ;
import org.agt.module.system.api.notify.dto.NotifySendSingleToUserReqDTO ;
import org.springframework.stereotype.Service ;
import org.springframework.stereotype.Service ;
import org.springframework.transaction.annotation.Transactional ;
import org.springframework.validation.annotation.Validated ;
import org.springframework.validation.annotation.Validated ;
import java.io.ByteArrayInputStream ;
import java.io.File ;
import java.time.LocalDateTime ;
import java.time.LocalDateTime ;
import java.time.format.DateTimeFormatter ;
import java.time.format.DateTimeFormatter ;
import java.util.ArrayList ;
import java.util.ArrayList ;
@@ -78,6 +82,7 @@ public class LicenseServiceImpl implements LicenseService {
private LicenseDetailMapper licenseDetailMapper ;
private LicenseDetailMapper licenseDetailMapper ;
@Override
@Override
@Transactional ( rollbackFor = Exception . class )
public Long createLicense ( LicenseSaveReqVO createReqVO ) {
public Long createLicense ( LicenseSaveReqVO createReqVO ) {
// 校验项目Sn是否唯一
// 校验项目Sn是否唯一
if ( ! validateLicenseSnUnique ( createReqVO . getSerialNo ( ) , createReqVO . getId ( ) ) ) {
if ( ! validateLicenseSnUnique ( createReqVO . getSerialNo ( ) , createReqVO . getId ( ) ) ) {
@@ -171,6 +176,7 @@ public class LicenseServiceImpl implements LicenseService {
licenseProviderDO . setOperationType ( 1 ) ;
licenseProviderDO . setOperationType ( 1 ) ;
licenseProviderDO . setState ( 1 ) ;
licenseProviderDO . setState ( 1 ) ;
licenseProviderDO . setRemark ( updateReqVO . getRemark ( ) ) ;
licenseProviderDO . setRemark ( updateReqVO . getRemark ( ) ) ;
licenseProviderDO . setApprover ( updateReqVO . getApprover ( ) ) ;
licenseProviderMapper . insert ( licenseProviderDO ) ;
licenseProviderMapper . insert ( licenseProviderDO ) ;
neCodeVO . setProviderId ( licenseProviderDO . getId ( ) ) ;
neCodeVO . setProviderId ( licenseProviderDO . getId ( ) ) ;
@@ -187,12 +193,11 @@ public class LicenseServiceImpl implements LicenseService {
}
}
@Override
@Override
@Transactional ( rollbackFor = Exception . class )
public String generate ( Long id ) {
public String generate ( Long id ) {
LicenseDO licenseDO = licenseMapper . selectById ( id ) ;
LicenseDO licenseDO = licenseMapper . selectById ( id ) ;
// List<LicenseNeCodeVO> neCodeList = licenseDO.getNeCodeList();
List < LicenseDetailDO > licenseDetailDOS = licenseDetailMapper . selectList ( Wrappers . < LicenseDetailDO > lambdaQuery ( ) . eq ( LicenseDetailDO : : getLicenseId , licenseDO . getId ( ) ) ) ;
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 ) {
for ( LicenseDetailDO neCodeVO : licenseDetailDOS ) {
LicenseProviderDO licenseProviderDO = licenseProviderMapper . selectById ( neCodeVO . getProviderId ( ) ) ;
LicenseProviderDO licenseProviderDO = licenseProviderMapper . selectById ( neCodeVO . getProviderId ( ) ) ;
@@ -200,65 +205,6 @@ public class LicenseServiceImpl implements LicenseService {
licenseProviderMapper . updateById ( licenseProviderDO ) ;
licenseProviderMapper . updateById ( licenseProviderDO ) ;
}
}
// 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 ( ) ) ;
licenseDO . setStatus ( LicenseStatusEnum . GENERATING . getCode ( ) ) ;
licenseMapper . updateById ( licenseDO ) ;
licenseMapper . updateById ( licenseDO ) ;
return " " ;
return " " ;
@@ -270,43 +216,21 @@ public class LicenseServiceImpl implements LicenseService {
List < LicenseDetailDO > licenseDetails = licenseDetailMapper . selectList ( Wrappers . < LicenseDetailDO > lambdaQuery ( ) . eq ( LicenseDetailDO : : getLicenseId , licenseDO . getId ( ) ) ) ;
List < LicenseDetailDO > licenseDetails = licenseDetailMapper . selectList ( Wrappers . < LicenseDetailDO > lambdaQuery ( ) . eq ( LicenseDetailDO : : getLicenseId , licenseDO . getId ( ) ) ) ;
for ( LicenseDetailDO detail : licenseDetails ) {
for ( LicenseDetailDO detail : licenseDetails ) {
if ( StrUtil . isNotBlank ( detail . getFileUrl ( ) ) ) {
if ( StrUtil . isNotBlank ( detail . getFileUrl ( ) ) & & StrUtil . isNotBlank ( detail . getFileUrlLegacy ( ) ) ) {
continue ;
continue ;
}
}
LicenseProviderDO licenseProviderDO = licenseProviderMapper . selectById ( detail . getProviderId ( ) ) ;
LicenseProviderDO licenseProviderDO = licenseProviderMapper . selectById ( detail . getProviderId ( ) ) ;
if ( licenseProviderDO . getState ( ) ! = 3 ) {
if ( licenseProviderDO = = null | | licenseProviderDO . getState ( ) ! = 3 ) {
continue ;
continue ;
}
}
String newFilePath1 = licenseProviderDO . getNewFilePath1 ( ) ;
List < Integer > neList = detail . getNeList ( ) ;
String fileName = getFileName ( licenseDO . getSerialNo ( ) , 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_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 ;
byte [ ] fileContent = null ;
try {
try {
log . info ( " 下载License文件路径为: {} " , n ewFilePath1) ;
String newFilePath1 = licenseProviderDO . getN ewFilePath1( );
log . info ( " 45G_下载License文件路径为: {} " , newFilePath1 ) ;
fileContent = FileUtil . readBytes ( newFilePath1 ) ;
fileContent = FileUtil . readBytes ( newFilePath1 ) ;
} catch ( Exception e ) {
} catch ( Exception e ) {
log . error ( " 读取文件失败 " , e ) ;
log . error ( " 读取文件失败 " , e ) ;
@@ -316,15 +240,61 @@ public class LicenseServiceImpl implements LicenseService {
fileContent = ResourceUtil . readBytes ( " file/MME_13750602_2024-08-02_system.ini " ) ;
fileContent = ResourceUtil . readBytes ( " file/MME_13750602_2024-08-02_system.ini " ) ;
}
}
String fileURL = fileApi . createFile ( fileContent , fileName ) ;
String fileURL = fileApi . createFile ( fileContent , " 45G_ " + fileName ) ;
detail . setFileUrl ( fileURL ) ;
detail . setFileUrl ( fileURL ) ;
// 上传到文件服务
byte [ ] fileContent0 = null ;
try {
String newFilePath0 = licenseProviderDO . getNewFilePath0 ( ) ;
log . info ( " 下载Legacy_License文件路径为: {} " , newFilePath0 ) ;
fileContent0 = FileUtil . readBytes ( newFilePath0 ) ;
} catch ( Exception e ) {
log . error ( " 读取文件失败 " , e ) ;
}
if ( fileContent0 = = null ) {
log . error ( " 读取文件失败为空 " ) ;
fileContent0 = ResourceUtil . readBytes ( " file/MME_13750602_2024-08-02_system.ini " ) ;
}
String fileURL0 = fileApi . createFile ( fileContent0 , " Legacy_ " + fileName ) ;
detail . setFileUrlLegacy ( fileURL0 ) ;
licenseDetailMapper . updateById ( detail ) ;
licenseDetailMapper . updateById ( detail ) ;
}
}
boolean isCompleted = licenseDetails . stream ( ) . allMatch ( c - > StrUtil . isNotBlank ( c . getFileUrl ( ) ) ) ;
boolean isCompleted = licenseDetails . stream ( ) . allMatch ( c - > StrUtil . isNotBlank ( c . getFileUrl ( ) ) ) ;
if ( isCompleted ) {
if ( isCompleted ) {
// 打包压缩上传
List < String > pathList = new ArrayList < > ( ) ;
List < ByteArrayInputStream > inputStreamList = new ArrayList < > ( ) ;
for ( LicenseDetailDO detail : licenseDetails ) {
LicenseProviderDO licenseProviderDO = licenseProviderMapper . selectById ( detail . getProviderId ( ) ) ;
String fileName = getFileName ( licenseDO . getSerialNo ( ) , detail . getNeList ( ) ) ;
if ( StrUtil . isNotBlank ( licenseProviderDO . getNewFilePath1 ( ) ) ) {
pathList . add ( " 45G_ " + fileName ) ;
inputStreamList . add ( new ByteArrayInputStream ( FileUtil . readBytes ( licenseProviderDO . getNewFilePath1 ( ) ) ) ) ;
} else {
pathList . add ( " 45G_ " + fileName ) ;
inputStreamList . add ( new ByteArrayInputStream ( FileUtil . readBytes ( " file/MME_13750602_2024-08-02_system.ini " ) ) ) ;
}
if ( StrUtil . isNotBlank ( licenseProviderDO . getNewFilePath0 ( ) ) ) {
pathList . add ( " Legacy_ " + fileName ) ;
inputStreamList . add ( new ByteArrayInputStream ( FileUtil . readBytes ( licenseProviderDO . getNewFilePath0 ( ) ) ) ) ;
} else {
pathList . add ( " Legacy_ " + fileName ) ;
inputStreamList . add ( new ByteArrayInputStream ( FileUtil . readBytes ( " file/MME_13750602_2024-08-02_system.ini " ) ) ) ;
}
}
File tempFile = new File ( " D:/temp/temp.zip " ) ;
// File tempFile = new File("/usr/local/licGen");
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 " ) ;
licenseDO . setFileUrl ( fileURL ) ;
licenseDO . setStatus ( LicenseStatusEnum . COMPLETED . getCode ( ) ) ;
licenseDO . setStatus ( LicenseStatusEnum . COMPLETED . getCode ( ) ) ;
licenseMapper . updateById ( licenseDO ) ;
licenseMapper . updateById ( licenseDO ) ;
}
}
@@ -333,6 +303,31 @@ public class LicenseServiceImpl implements LicenseService {
}
}
private static String getFileName ( String serialNo , List < Integer > neList ) {
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 + " _ " ;
}
return neListStr + serialNo + " _ " + LocalDateTime . now ( ) . format ( DateTimeFormatter . ofPattern ( " yyyy-MM-dd " ) ) + " _system.ini " ;
}
@Override
@Override
public void deleteLicense ( Long id ) {
public void deleteLicense ( Long id ) {
// 校验存在
// 校验存在
@@ -352,6 +347,16 @@ public class LicenseServiceImpl implements LicenseService {
LicenseDO licenseDO = licenseMapper . selectById ( id ) ;
LicenseDO licenseDO = licenseMapper . selectById ( id ) ;
List < LicenseDetailDO > licenseDetailDOS = licenseDetailMapper . selectList ( Wrappers . < LicenseDetailDO > lambdaQuery ( ) . eq ( LicenseDetailDO : : getLicenseId , licenseDO . getId ( ) ) ) ;
List < LicenseDetailDO > licenseDetailDOS = licenseDetailMapper . selectList ( Wrappers . < LicenseDetailDO > lambdaQuery ( ) . eq ( LicenseDetailDO : : getLicenseId , licenseDO . getId ( ) ) ) ;
List < LicenseNeCodeVO > details = BeanUtils . toBean ( licenseDetailDOS , LicenseNeCodeVO . class ) ;
List < LicenseNeCodeVO > details = BeanUtils . toBean ( licenseDetailDOS , LicenseNeCodeVO . class ) ;
for ( LicenseNeCodeVO detail : details ) {
List < String > fileUrlList = new ArrayList < > ( ) ;
if ( StrUtil . isNotBlank ( detail . getFileUrl ( ) ) ) {
fileUrlList . add ( detail . getFileUrl ( ) ) ;
}
if ( StrUtil . isNotBlank ( detail . getFileUrlLegacy ( ) ) ) {
fileUrlList . add ( detail . getFileUrlLegacy ( ) ) ;
}
detail . setFileUrlList ( fileUrlList ) ;
}
licenseDO . setNeCodeList ( details ) ;
licenseDO . setNeCodeList ( details ) ;
return licenseDO ;
return licenseDO ;
}
}
@@ -362,6 +367,16 @@ public class LicenseServiceImpl implements LicenseService {
for ( LicenseDO licenseDO : pageResult . getList ( ) ) {
for ( LicenseDO licenseDO : pageResult . getList ( ) ) {
List < LicenseDetailDO > licenseDetailDOS = licenseDetailMapper . selectList ( Wrappers . < LicenseDetailDO > lambdaQuery ( ) . eq ( LicenseDetailDO : : getLicenseId , licenseDO . getId ( ) ) ) ;
List < LicenseDetailDO > licenseDetailDOS = licenseDetailMapper . selectList ( Wrappers . < LicenseDetailDO > lambdaQuery ( ) . eq ( LicenseDetailDO : : getLicenseId , licenseDO . getId ( ) ) ) ;
List < LicenseNeCodeVO > details = BeanUtils . toBean ( licenseDetailDOS , LicenseNeCodeVO . class ) ;
List < LicenseNeCodeVO > details = BeanUtils . toBean ( licenseDetailDOS , LicenseNeCodeVO . class ) ;
for ( LicenseNeCodeVO detail : details ) {
List < String > fileUrlList = new ArrayList < > ( ) ;
if ( StrUtil . isNotBlank ( detail . getFileUrl ( ) ) ) {
fileUrlList . add ( detail . getFileUrl ( ) ) ;
}
if ( StrUtil . isNotBlank ( detail . getFileUrlLegacy ( ) ) ) {
fileUrlList . add ( detail . getFileUrlLegacy ( ) ) ;
}
detail . setFileUrlList ( fileUrlList ) ;
}
licenseDO . setNeCodeList ( details ) ;
licenseDO . setNeCodeList ( details ) ;
}
}
return pageResult ;
return pageResult ;