Commit 0f5c9b9d authored by alex yao's avatar alex yao

feat:Ai软著

parent de1f0f89
......@@ -8,6 +8,10 @@ import cn.com.gsst.dify_client.exception.DifyApiException;
import cn.com.poc.ai_software_copyright.contant.AiSoftWareCopyRightEnum;
import cn.com.poc.ai_software_copyright.domian.BaseInfo;
import cn.com.poc.ai_software_copyright.domian.TechnicalContent;
import cn.com.poc.ai_software_copyright.dto.SoftwareCopyRightFilesDto;
import cn.com.poc.ai_software_copyright.entity.BizSoftwareCopyrightDocRecordEntity;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
/**
* AI软著-聚合服务
......@@ -37,9 +41,42 @@ public interface SoftwareCopyRightService {
* AI-生成技术内容
*
* @param fileUrls
* @param question
* @param baseInfo
* @return
*/
TechnicalContent createTechnicalContent(List<String> fileUrls, BaseInfo baseInfo) throws IOException;
/**
* AI软著-文件列表
*
* @param id biz_software_copyright 主键id
*/
BizSoftwareCopyrightDocRecordEntity listFile(Long id) throws Exception;
/**
* 获取下载地址
*
* @param id biz_software_copyright 主键id
* @return 文件下载地址
*/
String getDownloadUrl(Long id) throws Exception;
/**
* 文件上传
*
* @param file 文件
* @return 文件地址
*/
String upload(MultipartFile file) throws IOException;
/**
* 压缩文件并更新记录
*
* @param recordEntity
* @return 压缩文件地址
*/
String zipFilesAndUpdateRecord(BizSoftwareCopyrightDocRecordEntity recordEntity);
}
......@@ -3,10 +3,14 @@ package cn.com.poc.ai_software_copyright.aggregate.impl;
import javax.annotation.Resource;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CopyOnWriteArrayList;
import cn.com.gsst.dify_client.exception.DifyApiException;
import cn.com.poc.ai_software_copyright.agent.SoftwareCopyRightAgent;
......@@ -14,6 +18,14 @@ import cn.com.poc.ai_software_copyright.aggregate.SoftwareCopyRightService;
import cn.com.poc.ai_software_copyright.contant.AiSoftWareCopyRightEnum;
import cn.com.poc.ai_software_copyright.domian.BaseInfo;
import cn.com.poc.ai_software_copyright.domian.TechnicalContent;
import cn.com.poc.ai_software_copyright.entity.BizSoftwareCopyrightDocRecordEntity;
import cn.com.poc.ai_software_copyright.entity.BizSoftwareCopyrightEntity;
import cn.com.poc.ai_software_copyright.service.BizSoftwareCopyrightDocRecordService;
import cn.com.poc.ai_software_copyright.service.BizSoftwareCopyrightService;
import cn.com.poc.common.constant.CommonConstant;
import cn.com.poc.common.model.BizFileUploadRecordModel;
import cn.com.poc.common.service.BizFileUploadRecordService;
import cn.com.poc.common.service.BosConfigService;
import cn.com.poc.common.utils.DocumentLoad;
import cn.com.poc.common.utils.JsonUtils;
import cn.com.poc.common.utils.StringUtils;
......@@ -21,10 +33,12 @@ import cn.com.yict.framemax.core.exception.BusinessException;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ZipUtil;
import cn.hutool.crypto.digest.MD5;
import org.apache.commons.collections4.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
/**
* @author alex.yao
......@@ -35,9 +49,22 @@ public class SoftwareCopyRightServiceImpl implements SoftwareCopyRightService {
private final Logger logger = LoggerFactory.getLogger(SoftwareCopyRightService.class);
@Resource
private BosConfigService bosConfigService;
@Resource
private BizFileUploadRecordService bizFileUploadRecordService;
@Resource
private SoftwareCopyRightAgent softwareCopyRightAgent;
@Resource
private BizSoftwareCopyrightService bizSoftwareCopyrightService;
@Resource
private BizSoftwareCopyrightDocRecordService bizSoftwareCopyrightDocRecordService;
@Override
public void softwareCopyRightAssistant(
AiSoftWareCopyRightEnum.AI_ASSISTANT_TYPE type,
......@@ -130,4 +157,149 @@ public class SoftwareCopyRightServiceImpl implements SoftwareCopyRightService {
return ListUtil.toList(extractedFiles);
}
@Override
public BizSoftwareCopyrightDocRecordEntity listFile(Long id) throws Exception {
checkTaskIsComplete(id);
BizSoftwareCopyrightDocRecordEntity bizSoftwareCopyrightDocRecordEntity =
new BizSoftwareCopyrightDocRecordEntity();
bizSoftwareCopyrightDocRecordEntity.setRelationId(id);
bizSoftwareCopyrightDocRecordEntity.setIsDeleted(CommonConstant.IsDeleted.N);
List<BizSoftwareCopyrightDocRecordEntity> recordEntities =
bizSoftwareCopyrightDocRecordService.findByExample(bizSoftwareCopyrightDocRecordEntity, null);
return recordEntities.get(0);
}
@Override
public String getDownloadUrl(Long id) throws Exception {
checkTaskIsComplete(id);
BizSoftwareCopyrightDocRecordEntity bizSoftwareCopyrightDocRecordEntity =
new BizSoftwareCopyrightDocRecordEntity();
bizSoftwareCopyrightDocRecordEntity.setRelationId(id);
bizSoftwareCopyrightDocRecordEntity.setIsDeleted(CommonConstant.IsDeleted.N);
List<BizSoftwareCopyrightDocRecordEntity> recordEntities =
bizSoftwareCopyrightDocRecordService.findByExample(bizSoftwareCopyrightDocRecordEntity, null);
if (CollectionUtils.isEmpty(recordEntities)) {
throw new BusinessException("查询无记录");
}
BizSoftwareCopyrightDocRecordEntity recordEntity = recordEntities.get(0);
if (StringUtils.isBlank(recordEntity.getAggregationUrl())) {
zipFilesAndUpdateRecord(recordEntity);
}
return recordEntity.getAggregationUrl();
}
private void checkTaskIsComplete(Long id) {
BizSoftwareCopyrightEntity bizSoftwareCopyrightEntity = bizSoftwareCopyrightService.get(id);
if (bizSoftwareCopyrightEntity == null) {
throw new BusinessException("查询任务失败");
}
String generatedStatus = bizSoftwareCopyrightEntity.getGeneratedStatus();
if (!generatedStatus.equals(AiSoftWareCopyRightEnum.GENERATED_STATUS.Complete.name())) {
throw new BusinessException("任务未完成");
}
}
@Override
public String upload(MultipartFile file) throws IOException {
String contentType = file.getContentType();
String originalFilename = file.getOriginalFilename();
String prefix = originalFilename.substring(originalFilename.lastIndexOf(".")).replaceAll("\\.", "");
String upload = bosConfigService.upload(file.getInputStream(), prefix, contentType);
//计算文件MD5值
InputStream inputStream = file.getInputStream();
byte[] bytes = new byte[inputStream.available()];
inputStream.read(bytes);
String md5 = MD5.create().digestHex(bytes);
BizFileUploadRecordModel bizFileUploadRecordModel = new BizFileUploadRecordModel();
bizFileUploadRecordModel.setFileName(file.getOriginalFilename());
bizFileUploadRecordModel.setFileUrl(upload);
bizFileUploadRecordModel.setMd5(md5);
bizFileUploadRecordModel.setCoverSheetUrl("");
bizFileUploadRecordService.save(bizFileUploadRecordModel);
return upload;
}
public String zipFilesAndUpdateRecord(BizSoftwareCopyrightDocRecordEntity recordEntity) {
String pcOperatingManualUrl = recordEntity.getPcOperatingManual();
String informationUrl = recordEntity.getInformation();
String phOperatingManualUrl = recordEntity.getPhOperatingManual();
String sourceCodeUrl = recordEntity.getSourceCode();
List<File> files = new CopyOnWriteArrayList<>();
// 添加所有有效的文件URL到文件列表,使用异步并行下载
CompletableFuture<Void> pcOperatingManualUrlFuture = CompletableFuture.runAsync(() -> {
addFileIfNotBlank(pcOperatingManualUrl, files);
});
CompletableFuture<Void> informationUrlFuture = CompletableFuture.runAsync(() -> {
addFileIfNotBlank(informationUrl, files);
});
CompletableFuture<Void> phOperatingManualUrlFuture = CompletableFuture.runAsync(() -> {
addFileIfNotBlank(phOperatingManualUrl, files);
});
CompletableFuture<Void> sourceCodeUrlFuture = CompletableFuture.runAsync(() -> {
addFileIfNotBlank(sourceCodeUrl, files);
});
// 等待所有文件下载完成后再执行压缩和上传
CompletableFuture.allOf(pcOperatingManualUrlFuture, informationUrlFuture,
phOperatingManualUrlFuture, sourceCodeUrlFuture).join();
if (CollectionUtils.isEmpty(files)) {
throw new BusinessException("文档下载失败");
}
File zipFile = null;
try {
// 创建临时文件用于存放压缩包
zipFile = File.createTempFile("aggregation_" + recordEntity.getId(), ".zip");
// 将所有文件打包成zip
ZipUtil.zip(zipFile, Charset.defaultCharset(), false, files.toArray(new File[0]));
// 上传压缩包到BOS并获取URL
String aggregationUrl = bosConfigService.upload(Files.newInputStream(zipFile.toPath()), "zip",
"application/zip");
// 更新数据库中的聚合URL
recordEntity.setAggregationUrl(aggregationUrl);
bizSoftwareCopyrightDocRecordService.update(recordEntity);
return aggregationUrl;
} catch (Exception e) {
throw new BusinessException("压缩包创建或上传失败", e);
} finally {
// 清理临时文件
files.forEach(file -> {
try {
Files.deleteIfExists(file.toPath());
} catch (IOException e) {
logger.error("删除临时文件失败: {}", file.getAbsolutePath(), e);
}
});
if (zipFile != null && zipFile.exists()) {
try {
Files.deleteIfExists(zipFile.toPath());
} catch (IOException e) {
logger.error("删除临时压缩文件失败: {}", zipFile.getAbsolutePath(), e);
}
}
}
}
/**
* 如果URL不为空白,则下载文件并添加到文件列表
*
* @param fileUrl 文件URL
* @param files 文件列表
*/
private void addFileIfNotBlank(String fileUrl, List<File> files) {
if (StringUtils.isNotBlank(fileUrl)) {
File file = DocumentLoad.downloadURLDocument(fileUrl);
files.add(file);
}
}
}
\ No newline at end of file
package cn.com.poc.ai_software_copyright.convert;
import java.util.ArrayList;
import java.util.List;
import cn.com.poc.ai_software_copyright.contant.AiSoftWareCopyRightEnum;
import cn.com.poc.ai_software_copyright.dto.SoftwareCopyRightFilesDto;
import cn.com.poc.ai_software_copyright.model.BizSoftwareCopyrightDocRecordModel;
import cn.com.poc.ai_software_copyright.entity.BizSoftwareCopyrightDocRecordEntity;
import org.apache.commons.lang3.StringUtils;
public class BizSoftwareCopyrightDocRecordConvert {
public static BizSoftwareCopyrightDocRecordEntity modelToEntity(BizSoftwareCopyrightDocRecordModel model) {
BizSoftwareCopyrightDocRecordEntity entity = new BizSoftwareCopyrightDocRecordEntity();
entity.setId(model.getId());
entity.setRelationId(model.getRelationId());
entity.setInformation(model.getInformation());
entity.setPcOperatingManual(model.getPcOperatingManual());
entity.setPhOperatingManual(model.getPhOperatingManual());
entity.setSourceCode(model.getSourceCode());
entity.setAggregationUrl(model.getAggregationUrl());
entity.setIsDeleted(model.getIsDeleted());
entity.setCreator(model.getCreator());
entity.setCreatedTime(model.getCreatedTime());
entity.setModifier(model.getModifier());
entity.setModifiedTime(model.getModifiedTime());
entity.setSysVersion(model.getSysVersion());
return entity;
}
public static BizSoftwareCopyrightDocRecordModel entityToModel(BizSoftwareCopyrightDocRecordEntity entity) {
BizSoftwareCopyrightDocRecordModel model = new BizSoftwareCopyrightDocRecordModel();
model.setId(entity.getId());
model.setRelationId(entity.getRelationId());
model.setInformation(entity.getInformation());
model.setPcOperatingManual(entity.getPcOperatingManual());
model.setPhOperatingManual(entity.getPhOperatingManual());
model.setSourceCode(entity.getSourceCode());
model.setAggregationUrl(entity.getAggregationUrl());
model.setIsDeleted(entity.getIsDeleted());
model.setCreator(entity.getCreator());
model.setCreatedTime(entity.getCreatedTime());
model.setModifier(entity.getModifier());
model.setModifiedTime(entity.getModifiedTime());
model.setSysVersion(entity.getSysVersion());
return model;
}
public static List<SoftwareCopyRightFilesDto> entityToDto(BizSoftwareCopyrightDocRecordEntity recordEntity) {
List<SoftwareCopyRightFilesDto> dtos = new ArrayList<>();
String information = recordEntity.getInformation();
String pcOperatingManual = recordEntity.getPcOperatingManual();
String phOperatingManual = recordEntity.getPhOperatingManual();
String sourceCode = recordEntity.getSourceCode();
if (StringUtils.isNotBlank(information)) {
SoftwareCopyRightFilesDto dto = new SoftwareCopyRightFilesDto();
dto.setType(AiSoftWareCopyRightEnum.DOC_TYPE.information.name());
dto.setFileUrl(information);
dtos.add(dto);
}
if (StringUtils.isNotBlank(sourceCode)) {
SoftwareCopyRightFilesDto dto = new SoftwareCopyRightFilesDto();
dto.setType(AiSoftWareCopyRightEnum.DOC_TYPE.source_code.name());
dto.setFileUrl(sourceCode);
dtos.add(dto);
}
if (StringUtils.isNotBlank(pcOperatingManual)) {
SoftwareCopyRightFilesDto dto = new SoftwareCopyRightFilesDto();
dto.setType(AiSoftWareCopyRightEnum.DOC_TYPE.pc_operating_manual.name());
dto.setFileUrl(pcOperatingManual);
dtos.add(dto);
}
if (StringUtils.isNotBlank(phOperatingManual)) {
SoftwareCopyRightFilesDto dto = new SoftwareCopyRightFilesDto();
dto.setType(AiSoftWareCopyRightEnum.DOC_TYPE.ph_operating_manual.name());
dto.setFileUrl(phOperatingManual);
dtos.add(dto);
}
return dtos;
}
}
\ No newline at end of file
package cn.com.poc.ai_software_copyright.entity;
public class BizSoftwareCopyrightDocRecordEntity {
private static final long serialVersionUID = 1L;
/** id
*
*/
private java.lang.Long id;
public java.lang.Long getId(){
return this.id;
}
public void setId(java.lang.Long id){
this.id = id;
}
/** relation_id
*任务id
*/
private java.lang.Long relationId;
public java.lang.Long getRelationId(){
return this.relationId;
}
public void setRelationId(java.lang.Long relationId){
this.relationId = relationId;
}
/** information
*信息采集表
*/
private java.lang.String information;
public java.lang.String getInformation(){
return this.information;
}
public void setInformation(java.lang.String information){
this.information = information;
}
/** pc_operating_manual
*电脑端使用说明书
*/
private java.lang.String pcOperatingManual;
public java.lang.String getPcOperatingManual(){
return this.pcOperatingManual;
}
public void setPcOperatingManual(java.lang.String pcOperatingManual){
this.pcOperatingManual = pcOperatingManual;
}
/** ph_operating_manual
*手机端使用说明书
*/
private java.lang.String phOperatingManual;
public java.lang.String getPhOperatingManual(){
return this.phOperatingManual;
}
public void setPhOperatingManual(java.lang.String phOperatingManual){
this.phOperatingManual = phOperatingManual;
}
/** source_code
*源代码文档
*/
private java.lang.String sourceCode;
public java.lang.String getSourceCode(){
return this.sourceCode;
}
public void setSourceCode(java.lang.String sourceCode){
this.sourceCode = sourceCode;
}
/** aggregation_url
*文档聚合下载地址
*/
private java.lang.String aggregationUrl;
public java.lang.String getAggregationUrl(){
return this.aggregationUrl;
}
public void setAggregationUrl(java.lang.String aggregationUrl){
this.aggregationUrl = aggregationUrl;
}
/** is_deleted
*是否删除 Y 是 N 否
*/
private java.lang.String isDeleted;
public java.lang.String getIsDeleted(){
return this.isDeleted;
}
public void setIsDeleted(java.lang.String isDeleted){
this.isDeleted = isDeleted;
}
/** CREATOR
*创建人
*/
private java.lang.String creator;
public java.lang.String getCreator(){
return this.creator;
}
public void setCreator(java.lang.String creator){
this.creator = creator;
}
/** CREATED_TIME
*创建时间
*/
private java.util.Date createdTime;
public java.util.Date getCreatedTime(){
return this.createdTime;
}
public void setCreatedTime(java.util.Date createdTime){
this.createdTime = createdTime;
}
/** MODIFIER
*修改人
*/
private java.lang.String modifier;
public java.lang.String getModifier(){
return this.modifier;
}
public void setModifier(java.lang.String modifier){
this.modifier = modifier;
}
/** MODIFIED_TIME
*修改时间
*/
private java.util.Date modifiedTime;
public java.util.Date getModifiedTime(){
return this.modifiedTime;
}
public void setModifiedTime(java.util.Date modifiedTime){
this.modifiedTime = modifiedTime;
}
/** SYS_VERSION
*乐观锁,版本号
*/
private java.lang.Integer sysVersion;
public java.lang.Integer getSysVersion(){
return this.sysVersion;
}
public void setSysVersion(java.lang.Integer sysVersion){
this.sysVersion = sysVersion;
}
}
\ No newline at end of file
package cn.com.poc.ai_software_copyright.model;
import java.io.Serializable;
import cn.com.yict.framemax.data.model.BaseModelClass;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Id;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.Version;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
/**
* Model class for biz_software_copyright_doc_record
* AI软著-文档记录
*/
@Entity
@Table(name = "biz_software_copyright_doc_record")
@DynamicInsert
@DynamicUpdate
public class BizSoftwareCopyrightDocRecordModel extends BaseModelClass implements Serializable {
private static final long serialVersionUID = 1L;
/** id
*
*/
private java.lang.Long id;
@Column(name = "id",length = 19)
@Id @GeneratedValue(strategy = GenerationType.AUTO)
public java.lang.Long getId(){
return this.id;
}
public void setId(java.lang.Long id){
this.id = id;
super.addValidField("id");
}
/** relation_id
*任务id
*/
private java.lang.Long relationId;
@Column(name = "relation_id",length = 19)
public java.lang.Long getRelationId(){
return this.relationId;
}
public void setRelationId(java.lang.Long relationId){
this.relationId = relationId;
super.addValidField("relationId");
}
/** information
*信息采集表
*/
private java.lang.String information;
@Column(name = "information",length = 200)
public java.lang.String getInformation(){
return this.information;
}
public void setInformation(java.lang.String information){
this.information = information;
super.addValidField("information");
}
/** pc_operating_manual
*电脑端使用说明书
*/
private java.lang.String pcOperatingManual;
@Column(name = "pc_operating_manual",length = 200)
public java.lang.String getPcOperatingManual(){
return this.pcOperatingManual;
}
public void setPcOperatingManual(java.lang.String pcOperatingManual){
this.pcOperatingManual = pcOperatingManual;
super.addValidField("pcOperatingManual");
}
/** ph_operating_manual
*手机端使用说明书
*/
private java.lang.String phOperatingManual;
@Column(name = "ph_operating_manual",length = 200)
public java.lang.String getPhOperatingManual(){
return this.phOperatingManual;
}
public void setPhOperatingManual(java.lang.String phOperatingManual){
this.phOperatingManual = phOperatingManual;
super.addValidField("phOperatingManual");
}
/** source_code
*源代码文档
*/
private java.lang.String sourceCode;
@Column(name = "source_code",length = 200)
public java.lang.String getSourceCode(){
return this.sourceCode;
}
public void setSourceCode(java.lang.String sourceCode){
this.sourceCode = sourceCode;
super.addValidField("sourceCode");
}
/** aggregation_url
*文档聚合下载地址
*/
private java.lang.String aggregationUrl;
@Column(name = "aggregation_url",length = 200)
public java.lang.String getAggregationUrl(){
return this.aggregationUrl;
}
public void setAggregationUrl(java.lang.String aggregationUrl){
this.aggregationUrl = aggregationUrl;
super.addValidField("aggregationUrl");
}
/** is_deleted
*是否删除 Y 是 N 否
*/
private java.lang.String isDeleted;
@Column(name = "is_deleted",length = 1)
public java.lang.String getIsDeleted(){
return this.isDeleted;
}
public void setIsDeleted(java.lang.String isDeleted){
this.isDeleted = isDeleted;
super.addValidField("isDeleted");
}
/** CREATOR
*创建人
*/
private java.lang.String creator;
@Column(name = "CREATOR",length = 50)
public java.lang.String getCreator(){
return this.creator;
}
public void setCreator(java.lang.String creator){
this.creator = creator;
super.addValidField("creator");
}
/** CREATED_TIME
*创建时间
*/
private java.util.Date createdTime;
@Column(name = "CREATED_TIME",length = 19)
public java.util.Date getCreatedTime(){
return this.createdTime;
}
public void setCreatedTime(java.util.Date createdTime){
this.createdTime = createdTime;
super.addValidField("createdTime");
}
/** MODIFIER
*修改人
*/
private java.lang.String modifier;
@Column(name = "MODIFIER",length = 50)
public java.lang.String getModifier(){
return this.modifier;
}
public void setModifier(java.lang.String modifier){
this.modifier = modifier;
super.addValidField("modifier");
}
/** MODIFIED_TIME
*修改时间
*/
private java.util.Date modifiedTime;
@Column(name = "MODIFIED_TIME",length = 19)
public java.util.Date getModifiedTime(){
return this.modifiedTime;
}
public void setModifiedTime(java.util.Date modifiedTime){
this.modifiedTime = modifiedTime;
super.addValidField("modifiedTime");
}
/** SYS_VERSION
*乐观锁,版本号
*/
private java.lang.Integer sysVersion;
@Column(name = "SYS_VERSION",length = 10)
@Version
public java.lang.Integer getSysVersion(){
return this.sysVersion;
}
public void setSysVersion(java.lang.Integer sysVersion){
this.sysVersion = sysVersion;
super.addValidField("sysVersion");
}
}
\ No newline at end of file
package cn.com.poc.ai_software_copyright.repository;
import cn.com.yict.framemax.data.repository.Repository;
import cn.com.poc.ai_software_copyright.model.BizSoftwareCopyrightDocRecordModel;
public interface BizSoftwareCopyrightDocRecordRepository extends Repository<BizSoftwareCopyrightDocRecordModel,java.lang.Long> {
}
\ No newline at end of file
......@@ -49,10 +49,10 @@ public interface BizSoftwareCopyrightRest extends BaseRest {
/**
* AI软著-文件列表
*/
List<SoftwareCopyRightFilesDto> listFile(@RequestParam Long id);
List<SoftwareCopyRightFilesDto> listFile(@RequestParam Long id) throws Exception;
/**
* 获取下载地址
*/
String getDownloadUrl(@RequestParam Long id);
String getDownloadUrl(@RequestParam Long id) throws Exception;
}
\ No newline at end of file
......@@ -2,16 +2,14 @@ package cn.com.poc.ai_software_copyright.rest.impl;
import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import cn.com.gsst.dify_client.exception.DifyApiException;
import cn.com.poc.ai_software_copyright.agent.SoftwareCopyRightAgent;
import cn.com.poc.ai_software_copyright.aggregate.SoftwareCopyRightService;
import cn.com.poc.ai_software_copyright.contant.AiSoftWareCopyRightEnum;
import cn.com.poc.ai_software_copyright.convert.BizSoftwareCopyrightConvert;
import cn.com.poc.ai_software_copyright.convert.BizSoftwareCopyrightDocRecordConvert;
import cn.com.poc.ai_software_copyright.domian.TechnicalContent;
import cn.com.poc.ai_software_copyright.dto.SoftwareCopyRightAssistantDto;
import cn.com.poc.ai_software_copyright.dto.SoftwareCopyRightDto;
......@@ -21,11 +19,7 @@ import cn.com.poc.ai_software_copyright.query.SoftwareCopyrightQueryCondition;
import cn.com.poc.ai_software_copyright.query.SoftwareCopyrightQueryItem;
import cn.com.poc.ai_software_copyright.rest.BizSoftwareCopyrightRest;
import cn.com.poc.ai_software_copyright.service.BizSoftwareCopyrightService;
import cn.com.poc.common.model.BizFileUploadRecordModel;
import cn.com.poc.common.service.BizFileUploadRecordService;
import cn.com.poc.common.service.BosConfigService;
import cn.com.yict.framemax.data.model.PagingInfo;
import cn.hutool.crypto.digest.MD5;
import org.springframework.stereotype.Component;
import org.springframework.util.Assert;
import org.springframework.web.multipart.MultipartFile;
......@@ -34,18 +28,14 @@ import org.springframework.web.multipart.MultipartFile;
public class BizSoftwareCopyrightRestImpl implements BizSoftwareCopyrightRest {
@Resource
private BosConfigService bosConfigService;
@Resource
private BizFileUploadRecordService bizFileUploadRecordService;
@Resource
private SoftwareCopyRightService softwareCopyRightService;
@Resource
private BizSoftwareCopyrightService bizSoftwareCopyrightService;
public SoftwareCopyRightDto getById(java.lang.Long id) throws Exception {
Assert.notNull(id);
return BizSoftwareCopyrightConvert.entityToDto(bizSoftwareCopyrightService.get(id));
......@@ -100,42 +90,17 @@ public class BizSoftwareCopyrightRestImpl implements BizSoftwareCopyrightRest {
@Override
public String upload(MultipartFile file) throws IOException {
cn.com.poc.common.utils.Assert.notNull(file);
String contentType = file.getContentType();
String originalFilename = file.getOriginalFilename();
String prefix = originalFilename.substring(originalFilename.lastIndexOf(".")).replaceAll("\\.", "");
String upload = bosConfigService.upload(file.getInputStream(), prefix, contentType);
//计算文件MD5值
InputStream inputStream = file.getInputStream();
byte[] bytes = new byte[inputStream.available()];
inputStream.read(bytes);
String md5 = MD5.create().digestHex(bytes);
BizFileUploadRecordModel bizFileUploadRecordModel = new BizFileUploadRecordModel();
bizFileUploadRecordModel.setFileName(file.getOriginalFilename());
bizFileUploadRecordModel.setFileUrl(upload);
bizFileUploadRecordModel.setMd5(md5);
bizFileUploadRecordModel.setCoverSheetUrl("");
bizFileUploadRecordService.save(bizFileUploadRecordModel);
return upload;
Assert.notNull(file);
return softwareCopyRightService.upload(file);
}
@Override
public List<SoftwareCopyRightFilesDto> listFile(Long id) {
List<SoftwareCopyRightFilesDto> dtos = new ArrayList<>();
for (AiSoftWareCopyRightEnum.DOC_TYPE value : AiSoftWareCopyRightEnum.DOC_TYPE.values()) {
SoftwareCopyRightFilesDto dto = new SoftwareCopyRightFilesDto();
dto.setType(value.name());
dto.setFileUrl("https://gsst-poe-sit.gz.bcebos.com/v1/1755516924342.docx");
dtos.add(dto);
}
return dtos;
public List<SoftwareCopyRightFilesDto> listFile(Long id) throws Exception {
return BizSoftwareCopyrightDocRecordConvert.entityToDto(softwareCopyRightService.listFile(id));
}
@Override
public String getDownloadUrl(Long id) {
return "https://gsst-poe-sit.gz.bcebos.com/v1/1755516924342.docx";
public String getDownloadUrl(Long id) throws Exception {
return softwareCopyRightService.getDownloadUrl(id);
}
}
\ No newline at end of file
package cn.com.poc.ai_software_copyright.service;
import cn.com.yict.framemax.core.service.BaseService;
import cn.com.poc.ai_software_copyright.entity.BizSoftwareCopyrightDocRecordEntity;
import cn.com.yict.framemax.data.model.PagingInfo;
import java.util.Collection;
import java.util.List;
public interface BizSoftwareCopyrightDocRecordService extends BaseService {
BizSoftwareCopyrightDocRecordEntity get(java.lang.Long id) throws Exception;
List<BizSoftwareCopyrightDocRecordEntity> findByExample(BizSoftwareCopyrightDocRecordEntity example,
PagingInfo pagingInfo) throws Exception;
BizSoftwareCopyrightDocRecordEntity save(BizSoftwareCopyrightDocRecordEntity entity) throws Exception;
BizSoftwareCopyrightDocRecordEntity update(BizSoftwareCopyrightDocRecordEntity entity) throws Exception;
void deletedById(java.lang.Long id) throws Exception;
}
\ No newline at end of file
package cn.com.poc.ai_software_copyright.service.impl;
import cn.com.yict.framemax.core.exception.BusinessException;
import cn.com.yict.framemax.core.service.impl.BaseServiceImpl;
import cn.com.poc.ai_software_copyright.service.BizSoftwareCopyrightDocRecordService;
import cn.com.poc.ai_software_copyright.model.BizSoftwareCopyrightDocRecordModel;
import cn.com.poc.ai_software_copyright.entity.BizSoftwareCopyrightDocRecordEntity;
import cn.com.poc.ai_software_copyright.convert.BizSoftwareCopyrightDocRecordConvert;
import cn.com.poc.ai_software_copyright.repository.BizSoftwareCopyrightDocRecordRepository;
import cn.com.yict.framemax.data.model.PagingInfo;
import cn.hutool.core.util.ZipUtil;
import org.springframework.stereotype.Service;
import org.apache.commons.collections4.CollectionUtils;
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.stream.Collectors;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.util.Assert;
@Service
public class BizSoftwareCopyrightDocRecordServiceImpl extends BaseServiceImpl
implements BizSoftwareCopyrightDocRecordService {
@Resource
private BizSoftwareCopyrightDocRecordRepository repository;
public BizSoftwareCopyrightDocRecordEntity get(java.lang.Long id) throws Exception {
Assert.notNull(id);
BizSoftwareCopyrightDocRecordModel model = this.repository.get(id);
if (model == null) {
return null;
}
if ("Y".equals(model.getIsDeleted())) {
return null;
}
return BizSoftwareCopyrightDocRecordConvert.modelToEntity(model);
}
public List<BizSoftwareCopyrightDocRecordEntity> findByExample(BizSoftwareCopyrightDocRecordEntity example,
PagingInfo pagingInfo) throws Exception {
List<BizSoftwareCopyrightDocRecordEntity> result = new ArrayList<BizSoftwareCopyrightDocRecordEntity>();
BizSoftwareCopyrightDocRecordModel model = new BizSoftwareCopyrightDocRecordModel();
if (example != null) {
model = BizSoftwareCopyrightDocRecordConvert.entityToModel(example);
}
model.setIsDeleted("N");
List<BizSoftwareCopyrightDocRecordModel> models = this.repository.findByExample(model, pagingInfo);
if (CollectionUtils.isNotEmpty(models)) {
result = models.stream().map(BizSoftwareCopyrightDocRecordConvert::modelToEntity)
.collect(Collectors.toList());
}
return result;
}
public BizSoftwareCopyrightDocRecordEntity save(BizSoftwareCopyrightDocRecordEntity entity) throws Exception {
Assert.notNull(entity);
entity.setId(null);
entity.setIsDeleted("N");
BizSoftwareCopyrightDocRecordModel model = BizSoftwareCopyrightDocRecordConvert.entityToModel(entity);
BizSoftwareCopyrightDocRecordModel saveModel = this.repository.save(model);
return BizSoftwareCopyrightDocRecordConvert.modelToEntity(saveModel);
}
public BizSoftwareCopyrightDocRecordEntity update(BizSoftwareCopyrightDocRecordEntity entity) throws Exception {
Assert.notNull(entity);
Assert.notNull(entity.getId(), "update pk can not be null");
BizSoftwareCopyrightDocRecordModel model = this.repository.get(entity.getId());
if (entity.getRelationId() != null) {
model.setRelationId(entity.getRelationId());
}
if (entity.getInformation() != null) {
model.setInformation(entity.getInformation());
}
if (entity.getPcOperatingManual() != null) {
model.setPcOperatingManual(entity.getPcOperatingManual());
}
if (entity.getPhOperatingManual() != null) {
model.setPhOperatingManual(entity.getPhOperatingManual());
}
if (entity.getSourceCode() != null) {
model.setSourceCode(entity.getSourceCode());
}
if (entity.getAggregationUrl() != null) {
model.setAggregationUrl(entity.getAggregationUrl());
}
if (entity.getIsDeleted() != null) {
model.setIsDeleted(entity.getIsDeleted());
}
if (entity.getCreator() != null) {
model.setCreator(entity.getCreator());
}
if (entity.getCreatedTime() != null) {
model.setCreatedTime(entity.getCreatedTime());
}
if (entity.getModifier() != null) {
model.setModifier(entity.getModifier());
}
if (entity.getModifiedTime() != null) {
model.setModifiedTime(entity.getModifiedTime());
}
if (entity.getSysVersion() != null) {
model.setSysVersion(entity.getSysVersion());
}
BizSoftwareCopyrightDocRecordModel saveModel = this.repository.save(model);
return BizSoftwareCopyrightDocRecordConvert.modelToEntity(saveModel);
}
public void deletedById(java.lang.Long id) throws Exception {
Assert.notNull(id);
BizSoftwareCopyrightDocRecordModel model = this.repository.get(id);
if (model != null) {
if ("N".equals(model.getIsDeleted())) {
model.setIsDeleted("Y");
this.repository.save(model);
}
}
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment