Commit 93314088 by zhangxingmin

push

parent 2ae7be4d
......@@ -26,6 +26,45 @@
</content>
<orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-sts:3.0.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-core:4.6.0" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jaxb:jaxb-runtime:2.3.6" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jaxb:txw2:2.3.6" level="project" />
<orderEntry type="library" name="Maven: com.sun.istack:istack-commons-runtime:3.0.12" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.activation:jakarta.activation:1.2.2" level="project" />
<orderEntry type="library" name="Maven: org.jacoco:org.jacoco.agent:runtime:0.8.7" level="project" />
<orderEntry type="library" name="Maven: com.documents4j:documents4j-local:1.1.12" level="project" />
<orderEntry type="library" name="Maven: com.documents4j:documents4j-api:1.1.12" level="project" />
<orderEntry type="library" name="Maven: com.documents4j:documents4j-transformer:1.1.12" level="project" />
<orderEntry type="library" name="Maven: com.documents4j:documents4j-util-conversion:1.1.12" level="project" />
<orderEntry type="library" name="Maven: org.zeroturnaround:zt-exec:1.11" level="project" />
<orderEntry type="library" name="Maven: com.documents4j:documents4j-transformer-msoffice-word:1.1.12" level="project" />
<orderEntry type="library" name="Maven: com.documents4j:documents4j-transformer-msoffice-base:1.1.12" level="project" />
<orderEntry type="library" name="Maven: com.documents4j:documents4j-transformer-api:1.1.12" level="project" />
<orderEntry type="library" name="Maven: com.documents4j:documents4j-util-all:1.1.12" level="project" />
<orderEntry type="library" name="Maven: com.documents4j:documents4j-util-transformer-process:1.1.12" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi:5.2.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.6.1" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:SparseBitSet:1.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:5.2.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-lite:5.2.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.21" level="project" />
<orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.07" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:5.1.1" level="project" />
<orderEntry type="library" name="Maven: cn.afterturn:easypoi-base:4.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:4.1.1" level="project" />
<orderEntry type="library" name="Maven: ognl:ognl:3.2.6" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.20.0-GA" level="project" />
<orderEntry type="library" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" />
<orderEntry type="library" name="Maven: cn.afterturn:easypoi-web:4.4.0" level="project" />
<orderEntry type="library" name="Maven: cn.afterturn:easypoi-annotation:4.4.0" level="project" />
<orderEntry type="library" name="Maven: org.jxls:jxls:2.12.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-jexl3:3.2" level="project" />
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.4" level="project" />
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.slf4j:jcl-over-slf4j:1.7.36" level="project" />
<orderEntry type="library" name="Maven: org.jxls:jxls-poi:2.12.0" level="project" />
<orderEntry type="library" name="Maven: com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:2021.0.1.0" level="project" />
<orderEntry type="library" name="Maven: com.alibaba.cloud:spring-cloud-alibaba-commons:2021.0.1.0" level="project" />
<orderEntry type="library" name="Maven: com.alibaba.nacos:nacos-client:1.4.2" level="project" />
......
package com.yd.oss.service.service;
import com.aliyun.oss.OSS;
import com.yd.oss.service.dto.FileProdDto;
import com.yd.oss.service.model.FileTemplate;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.oss.service.model.OssProvider;
import java.io.InputStream;
......@@ -16,7 +18,7 @@ import java.io.InputStream;
*/
public interface IFileTemplateService extends IService<FileTemplate> {
InputStream getTemplateInputStreamFromOSS(String bucketName, String objectKey);
InputStream getTemplateInputStreamFromOSS(String bucketName, String objectKey, OssProvider provider, OSS ossClient);
FileProdDto getFileProd(String templateName, String templateType);
......
......@@ -172,7 +172,7 @@ public class AliYunOssServiceImpl implements OssService {
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(fileData);
// 生成文件key(这里使用ossUtils的方法,需要传入projectBizId,但此时provider已知,可根据需要调整)
String fileKey = ossUtils.getFilePrefix(provider.getProviderBizId(), "", fileName, type);
String fileKey = ossUtils.getFilePrefix(provider.getProjectBizId(), "", fileName, type);
String actualBucket = StringUtils.isNotBlank(bucketName) ? bucketName : provider.getBucketName();
String fileType = FileUtil.getFileType(fileName);
......@@ -621,16 +621,20 @@ public class AliYunOssServiceImpl implements OssService {
* 上传字节数组并设置公共读
*/
public String upload(byte[] content, String fileName,OSS ossClient, OssProvider provider) {
OssProvider defaultProvider = getDefaultProvider();
// OssProvider defaultProvider = getDefaultProvider();
// OSS ossClient = null;
try {
// ossClient = ossClientFactory.createOssClient(defaultProvider);
String objectName = "appointment/excel/" + UUID.randomUUID() + "/" + fileName;
// String objectName = "appointment/excel/" + UUID.randomUUID() + "/" + fileName;
//扩展名
String fileType = FileUtil.getFileType(fileName);
//获取通用文件路径的前缀
String filePrefix = ossUtils.getFilePrefix(provider.getProjectBizId(),"",fileName,fileType);
PutObjectRequest putObjectRequest = new PutObjectRequest(
defaultProvider.getBucketName(), objectName, new ByteArrayInputStream(content));
provider.getBucketName(), filePrefix, new ByteArrayInputStream(content));
ossClient.putObject(putObjectRequest);
ossClient.setObjectAcl(defaultProvider.getBucketName(), objectName, CannedAccessControlList.PublicRead);
return "https://" + defaultProvider.getBucketName() + "." + defaultProvider.getEndpoint() + "/" + objectName;
ossClient.setObjectAcl(provider.getBucketName(), filePrefix, CannedAccessControlList.PublicRead);
return "https://" + provider.getBucketName() + "." + provider.getEndpoint() + "/" + filePrefix;
} finally {
if (ossClient != null) {
ossClient.shutdown();
......@@ -641,23 +645,27 @@ public class AliYunOssServiceImpl implements OssService {
/**
* 上传输入流并设置公共读
*/
// public String upload(InputStream inputStream, String fileName) {
public String upload(InputStream inputStream, String fileName,OSS ossClient, OssProvider provider) {
// OssProvider defaultProvider = getDefaultProvider();
// OSS ossClient = null;
// try {
try {
// ossClient = ossClientFactory.createOssClient(defaultProvider);
// String objectName = "appointment/excel/" + UUID.randomUUID() + "/" + fileName;
// PutObjectRequest putObjectRequest = new PutObjectRequest(
// defaultProvider.getBucketName(), objectName, inputStream);
// ossClient.putObject(putObjectRequest);
// ossClient.setObjectAcl(defaultProvider.getBucketName(), objectName, CannedAccessControlList.PublicRead);
// return "https://" + defaultProvider.getBucketName() + "." + defaultProvider.getEndpoint() + "/" + objectName;
// } finally {
// if (ossClient != null) {
// ossClient.shutdown();
// }
// }
// }
//扩展名
String fileType = FileUtil.getFileType(fileName);
//获取通用文件路径的前缀
String filePrefix = ossUtils.getFilePrefix(provider.getProjectBizId(),"",fileName,fileType);
PutObjectRequest putObjectRequest = new PutObjectRequest(
provider.getBucketName(), filePrefix, inputStream);
ossClient.putObject(putObjectRequest);
ossClient.setObjectAcl(provider.getBucketName(), filePrefix, CannedAccessControlList.PublicRead);
return "https://" + provider.getBucketName() + "." + provider.getEndpoint() + "/" + filePrefix;
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
/**
* 批量上传文件
......
......@@ -8,6 +8,7 @@ import com.yd.oss.feign.response.ApiMaterialDownloadResponse;
import com.yd.oss.service.model.OssProvider;
import com.yd.oss.service.service.CompressedFileService;
import com.yd.oss.service.service.OssService;
import com.yd.oss.service.utils.OssUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -38,6 +39,9 @@ public class CompressedFileServiceImpl implements CompressedFileService {
// @Autowired
// private String defaultEndpoint; // 注入默认服务端点
@Autowired
private OssUtils ossUtils;
/**
* 下载-材料列表压缩包
......@@ -390,9 +394,9 @@ public class CompressedFileServiceImpl implements CompressedFileService {
try {
// 方法1: 直接调用public方法
java.lang.reflect.Method uploadMethod = AliYunOssServiceImpl.class
.getMethod("upload", InputStream.class, String.class);
.getMethod("upload", InputStream.class, String.class,OSS.class,OssProvider.class);
String ossUrl = (String) uploadMethod.invoke(aliYunOssService, fis, zipFileName);
String ossUrl = (String) uploadMethod.invoke(aliYunOssService, fis, zipFileName,ossClient,provider);
log.info("压缩包上传成功,URL: {}", ossUrl);
return ossUrl;
......@@ -404,9 +408,9 @@ public class CompressedFileServiceImpl implements CompressedFileService {
byte[] zipBytes = readFileToBytes(zipFile);
try {
java.lang.reflect.Method uploadMethod2 = AliYunOssServiceImpl.class
.getMethod("upload", byte[].class, String.class);
.getMethod("upload", byte[].class, String.class,OSS.class,OssProvider.class);
String ossUrl = (String) uploadMethod2.invoke(aliYunOssService, zipBytes, zipFileName);
String ossUrl = (String) uploadMethod2.invoke(aliYunOssService, zipBytes, zipFileName,ossClient,provider);
log.info("压缩包上传成功,URL: {}", ossUrl);
return ossUrl;
} catch (NoSuchMethodException e2) {
......
......@@ -37,8 +37,8 @@ public class FileTemplateServiceImpl extends ServiceImpl<FileTemplateMapper, Fil
@Autowired
private IOssProviderService ossProviderService;
@Autowired
private OSS ossClient; // 注入OSS客户端
// @Autowired
// private OSS ossClient; // 注入OSS客户端
/**
* 根据模板名称和模板类型获取云服务商和文件信息
......@@ -56,7 +56,7 @@ public class FileTemplateServiceImpl extends ServiceImpl<FileTemplateMapper, Fil
* @param objectKey
* @return
*/
public InputStream getTemplateInputStreamFromOSS(String bucketName, String objectKey) {
public InputStream getTemplateInputStreamFromOSS(String bucketName, String objectKey,OssProvider provider, OSS ossClient) {
OSSObject object = ossClient.getObject(bucketName, objectKey);
return object.getObjectContent();
}
......
......@@ -8,6 +8,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.yd.oss.service.dto.FileProdDto;
import com.yd.oss.service.model.OssProvider;
import com.yd.oss.service.service.*;
import com.yd.oss.service.utils.OssUtils;
import com.yd.oss.service.utils.PdfUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
......@@ -39,6 +40,9 @@ public class PdfServiceImpl<T> implements PdfService<T> {
@Autowired
private FieldValueProvider<T> fieldValueProvider;
@Autowired
private OssUtils ossUtils;
// @Autowired
// private OSS ossClient; // 注入OSS客户端
......@@ -57,7 +61,7 @@ public class PdfServiceImpl<T> implements PdfService<T> {
// 从OSS获取模板
InputStream templateStream = iFileTemplateService.getTemplateInputStreamFromOSS(
fileProdDto.getBucketName(), fileProdDto.getFileKey());
fileProdDto.getBucketName(), fileProdDto.getFileKey(),provider,ossClient);
// 创建临时文件
File tempInputFile = File.createTempFile("template", ".docx");
......@@ -72,10 +76,17 @@ public class PdfServiceImpl<T> implements PdfService<T> {
// 上传到OSS
String objectName = "";
//项目类型
String projectType = ossUtils.getProjectType(provider.getProjectBizId());
projectType = StringUtils.isNotBlank(projectType) ? projectType : "pc";
//环境变量
String env = ossUtils.getActiveEnv();
env = StringUtils.isNotBlank(env) ? env : "prod";
String prefix = projectType + "/" + env + "/";
if (StringUtils.isNotBlank(customFileName)) {
objectName = "insurance_schedules/" + System.currentTimeMillis() + "/" + customFileName + ".pdf";
objectName = prefix + "insurance_schedules/" + System.currentTimeMillis() + "/" + customFileName + ".pdf";
}else {
objectName = "insurance_schedules/" + objectId + "_" + System.currentTimeMillis() + ".pdf";
objectName = prefix + "insurance_schedules/" + objectId + "_" + System.currentTimeMillis() + ".pdf";
}
uploadToOSS(tempPdfFile, fileProdDto.getBucketName(), objectName,provider,ossClient);
......
......@@ -45,6 +45,24 @@ public class OssUtils {
}
/**
* 根据项目ID获取项目类型
* @param projectBizId
* @return
*/
public String getProjectType(String projectBizId) {
String projectType = "pc";
if (StringUtils.isNotBlank(projectBizId)) {
//通过项目ID查询项目类型
Result<ApiSysProjectDetailResponse> result = apiSysProjectFeignClient.detail(projectBizId);
if (result.getData() != null) {
ApiSysProjectDetailResponse response = result.getData();
projectType = StringUtils.isNotBlank(response.getProjectType()) ? response.getProjectType() : "pc";
}
}
return projectType;
}
/**
* 获取分片文件路径的前缀
* @param projectBizId
* @param env
......@@ -67,7 +85,7 @@ public class OssUtils {
return projectType + "/" + env + "/large_file/uploads/" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd/"));
}
private String getActiveEnv() {
public String getActiveEnv() {
String[] activeProfiles = environment.getActiveProfiles();
return activeProfiles.length > 0 ? activeProfiles[0] : "prod";
}
......
......@@ -26,6 +26,7 @@
</content>
<orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: com.google.guava:guava:30.0-jre" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.5.5" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.5.5" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.5.5" level="project" />
......
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