Explorar el Código

build 从oss获取模版

mamingxu hace 2 días
padre
commit
5d5ea2da99
Se han modificado 45 ficheros con 1091 adiciones y 144 borrados
  1. 29 0
      easier-common/easier-common-oss/pom.xml
  2. 21 0
      easier-common/easier-common-oss/src/main/java/com/yaoyicloud/easier/common/file/FileAutoConfiguration.java
  3. 32 0
      easier-common/easier-common-oss/src/main/java/com/yaoyicloud/easier/common/file/core/FileProperties.java
  4. 129 0
      easier-common/easier-common-oss/src/main/java/com/yaoyicloud/easier/common/file/core/FileTemplate.java
  5. 24 0
      easier-common/easier-common-oss/src/main/java/com/yaoyicloud/easier/common/file/local/LocalFileAutoConfiguration.java
  6. 21 0
      easier-common/easier-common-oss/src/main/java/com/yaoyicloud/easier/common/file/local/LocalFileProperties.java
  7. 185 0
      easier-common/easier-common-oss/src/main/java/com/yaoyicloud/easier/common/file/local/LocalFileTemplate.java
  8. 35 0
      easier-common/easier-common-oss/src/main/java/com/yaoyicloud/easier/common/file/oss/OssAutoConfiguration.java
  9. 63 0
      easier-common/easier-common-oss/src/main/java/com/yaoyicloud/easier/common/file/oss/OssProperties.java
  10. 122 0
      easier-common/easier-common-oss/src/main/java/com/yaoyicloud/easier/common/file/oss/http/OssEndpoint.java
  11. 266 0
      easier-common/easier-common-oss/src/main/java/com/yaoyicloud/easier/common/file/oss/service/OssTemplate.java
  12. 1 0
      easier-common/easier-common-oss/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  13. 19 0
      easier-common/pom.xml
  14. 0 2
      easier-report-api/src/main/java/com/yaoyicloud/dto/ReportDTO.java
  15. 7 0
      easier-report-biz/pom.xml
  16. 0 3
      easier-report-biz/src/main/java/com/yaoyicloud/controller/CsoReportController.java
  17. 4 4
      easier-report-biz/src/main/java/com/yaoyicloud/render/AbstractNewRender.java
  18. 4 4
      easier-report-biz/src/main/java/com/yaoyicloud/render/AbstractRender.java
  19. 5 4
      easier-report-biz/src/main/java/com/yaoyicloud/render/InterestConflictsRender.java
  20. 4 3
      easier-report-biz/src/main/java/com/yaoyicloud/render/ProjectInfoRender.java
  21. 4 3
      easier-report-biz/src/main/java/com/yaoyicloud/render/PublicRecordRender.java
  22. 4 3
      easier-report-biz/src/main/java/com/yaoyicloud/render/ServiceProviderInfoRender.java
  23. 4 3
      easier-report-biz/src/main/java/com/yaoyicloud/render/association/AssociationAttachmentSectionRender.java
  24. 5 4
      easier-report-biz/src/main/java/com/yaoyicloud/render/association/AssociationBasicInfoRender.java
  25. 4 3
      easier-report-biz/src/main/java/com/yaoyicloud/render/cso/EntAppendixRender.java
  26. 4 3
      easier-report-biz/src/main/java/com/yaoyicloud/render/cso/EntHeaderSectionRender.java
  27. 4 3
      easier-report-biz/src/main/java/com/yaoyicloud/render/cso/EntPromotionDetailsRender.java
  28. 4 3
      easier-report-biz/src/main/java/com/yaoyicloud/render/cso/EntPromotionSummaryRender.java
  29. 4 3
      easier-report-biz/src/main/java/com/yaoyicloud/render/foundation/FoundationAttachmentSectionRender.java
  30. 4 3
      easier-report-biz/src/main/java/com/yaoyicloud/render/foundation/FoundationBasicInfoRender.java
  31. 4 3
      easier-report-biz/src/main/java/com/yaoyicloud/render/foundation/FoundationfinancialInfoRender.java
  32. 4 3
      easier-report-biz/src/main/java/com/yaoyicloud/render/platform/AntiBriberyRender.java
  33. 4 3
      easier-report-biz/src/main/java/com/yaoyicloud/render/platform/AttachmentSectionRender.java
  34. 4 3
      easier-report-biz/src/main/java/com/yaoyicloud/render/platform/BasicInfoRender.java
  35. 5 3
      easier-report-biz/src/main/java/com/yaoyicloud/render/platform/FinancialInfoRender.java
  36. 4 3
      easier-report-biz/src/main/java/com/yaoyicloud/render/platform/update/AntiBriberyNewRender.java
  37. 4 4
      easier-report-biz/src/main/java/com/yaoyicloud/render/platform/update/BasicInfoNewRender.java
  38. 4 3
      easier-report-biz/src/main/java/com/yaoyicloud/render/platform/update/FinancialInfoNewRender.java
  39. 4 4
      easier-report-biz/src/main/java/com/yaoyicloud/render/platform/update/PublicRecordNewRender.java
  40. 4 4
      easier-report-biz/src/main/java/com/yaoyicloud/render/platform/update/TaxNewRender.java
  41. 0 1
      easier-report-biz/src/main/java/com/yaoyicloud/service/CsoReportService.java
  42. 19 14
      easier-report-biz/src/main/java/com/yaoyicloud/service/impl/CsoReportServiceImpl.java
  43. 0 3
      easier-report-biz/src/main/java/com/yaoyicloud/service/impl/ReportUpdateServiceImpl.java
  44. 6 20
      easier-report-biz/src/main/resources/application.yml
  45. 13 22
      pom.xml

+ 29 - 0
easier-common/easier-common-oss/pom.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.yaoyicloud</groupId>
+        <artifactId>easier-common</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>easier-common-oss</artifactId>
+    <packaging>jar</packaging>
+    <version>1.0.0</version>
+
+
+    <dependencies>
+        <dependency>
+            <groupId>com.amazonaws</groupId>
+            <artifactId>aws-java-sdk-s3</artifactId>
+            <version>${aws.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-core</artifactId>
+            <version>${hutool.version}</version>
+        </dependency>
+    </dependencies>
+</project>

+ 21 - 0
easier-common/easier-common-oss/src/main/java/com/yaoyicloud/easier/common/file/FileAutoConfiguration.java

@@ -0,0 +1,21 @@
+package com.yaoyicloud.easier.common.file;
+
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Import;
+
+import com.yaoyicloud.easier.common.file.core.FileProperties;
+import com.yaoyicloud.easier.common.file.local.LocalFileAutoConfiguration;
+import com.yaoyicloud.easier.common.file.oss.OssAutoConfiguration;
+
+/**
+ * aws 自动配置类
+ *
+ * @author jimmy
+ * @version 1.0.0
+ * @date 2022-12-02 21:22
+ */
+@Import({LocalFileAutoConfiguration.class, OssAutoConfiguration.class})
+@EnableConfigurationProperties({FileProperties.class})
+public class FileAutoConfiguration {
+
+}

+ 32 - 0
easier-common/easier-common-oss/src/main/java/com/yaoyicloud/easier/common/file/core/FileProperties.java

@@ -0,0 +1,32 @@
+package com.yaoyicloud.easier.common.file.core;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.context.properties.NestedConfigurationProperty;
+
+import com.yaoyicloud.easier.common.file.local.LocalFileProperties;
+import com.yaoyicloud.easier.common.file.oss.OssProperties;
+
+import lombok.Data;
+
+@Data
+@ConfigurationProperties(prefix = "file")
+public class FileProperties {
+
+    /**
+     * 默认的存储桶名称
+     */
+    private String bucketName = "local";
+
+    /**
+     * 本地文件配置信息
+     */
+    @NestedConfigurationProperty
+    private LocalFileProperties local;
+
+    /**
+     * oss 文件配置信息
+     */
+    @NestedConfigurationProperty
+    private OssProperties oss;
+
+}

+ 129 - 0
easier-common/easier-common-oss/src/main/java/com/yaoyicloud/easier/common/file/core/FileTemplate.java

@@ -0,0 +1,129 @@
+package com.yaoyicloud.easier.common.file.core;
+
+import java.io.InputStream;
+import java.util.List;
+
+import org.springframework.beans.factory.InitializingBean;
+
+import com.amazonaws.services.s3.model.Bucket;
+import com.amazonaws.services.s3.model.S3Object;
+import com.amazonaws.services.s3.model.S3ObjectSummary;
+
+/**
+ * 文件操作模板
+ *
+ * @author jimmy
+ * @version 1.0.0
+ * @date 2022-12-02 21:18
+ */
+public interface FileTemplate extends InitializingBean {
+
+    /**
+     * 创建bucket
+     *
+     * @param bucketName bucket名称
+     */
+    void createBucket(String bucketName);
+
+    /**
+     * 获取全部bucket
+     */
+    List<Bucket> getAllBuckets();
+
+    /**
+     * 删除桶
+     *
+     * @param bucketName bucket名称
+     */
+    void removeBucket(String bucketName);
+
+    /**
+     * 上传文件
+     *
+     * @param bucketName bucket名称
+     * @param objectName 文件名称
+     * @param dir 文件夹名称
+     * @param stream 文件流
+     * @param contextType 文件类型
+     * @throws Exception 异常
+     */
+    void putObject(String bucketName, String dir, String objectName, InputStream stream, String contextType)
+        throws Exception;
+
+    /**
+     * 上传文件
+     *
+     * @param bucketName bucket名称
+     * @param objectName 文件名称
+     * @param stream 文件流
+     * @param contextType 文件类型
+     * @throws Exception 异常
+     */
+    void putObject(String bucketName, String objectName, InputStream stream, String contextType) throws Exception;
+
+    /**
+     * 上传文件(流格式)
+     *
+     * @param bucketName bucket名称
+     * @param objectName 文件名称
+     * @param stream 文件流
+     * @throws Exception 上传文件
+     */
+    void putObject(String bucketName, String objectName, InputStream stream) throws Exception;
+
+    /**
+     * 获取文件
+     *
+     * @param bucketName bucket名称
+     * @param dir 文件夹名称
+     * @param objectName 文件名称
+     * @return 二进制流 API Documentation
+     */
+    S3Object getObject(String bucketName, String dir, String objectName);
+
+    /**
+     * 获取文件
+     *
+     * @param bucketName bucket名称
+     * @param objectName 文件名称
+     * @return 二进制流 API Documentation</a>
+     */
+    S3Object getObject(String bucketName, String objectName);
+
+    /**
+     * 获取文件外链
+     *
+     * @param bucketName 桶名称
+     * @param objectName 文件名称
+     * @param expires 有效期
+     * @return 外链接
+     */
+    String getObjectURL(String bucketName, String objectName, Integer expires);
+
+    /**
+     * 删除对象
+     *
+     * @param bucketName 桶名称
+     * @param objectName 对象名称
+     * @throws Exception 异常
+     */
+    void removeObject(String bucketName, String objectName) throws Exception;
+
+    /**
+     * 初始化后续动作
+     */
+    @Override
+    default void afterPropertiesSet() {}
+
+    /**
+     * 根据文件前置查询文件
+     *
+     * @param bucketName bucket名称
+     * @param prefix 前缀
+     * @param recursive 是否递归查询
+     * @return S3ObjectSummary 列表
+     * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjects">AWS API Documentation</a>
+     */
+    List<S3ObjectSummary> getAllObjectsByPrefix(String bucketName, String prefix, boolean recursive);
+
+}

+ 24 - 0
easier-common/easier-common-oss/src/main/java/com/yaoyicloud/easier/common/file/local/LocalFileAutoConfiguration.java

@@ -0,0 +1,24 @@
+package com.yaoyicloud.easier.common.file.local;
+
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Bean;
+
+import com.yaoyicloud.easier.common.file.core.FileProperties;
+import com.yaoyicloud.easier.common.file.core.FileTemplate;
+
+import lombok.AllArgsConstructor;
+
+@AllArgsConstructor
+public class LocalFileAutoConfiguration {
+
+    private final FileProperties properties;
+
+    @Bean
+    @ConditionalOnMissingBean(LocalFileTemplate.class)
+    @ConditionalOnProperty(name = "file.local.enable", havingValue = "true", matchIfMissing = true)
+    public FileTemplate localFileTemplate() {
+        return new LocalFileTemplate(properties);
+    }
+
+}

+ 21 - 0
easier-common/easier-common-oss/src/main/java/com/yaoyicloud/easier/common/file/local/LocalFileProperties.java

@@ -0,0 +1,21 @@
+package com.yaoyicloud.easier.common.file.local;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+import lombok.Data;
+
+@Data
+@ConfigurationProperties(prefix = "local")
+public class LocalFileProperties {
+
+    /**
+     * 是否开启
+     */
+    private boolean enable;
+
+    /**
+     * 默认路径
+     */
+    private String basePath;
+
+}

+ 185 - 0
easier-common/easier-common-oss/src/main/java/com/yaoyicloud/easier/common/file/local/LocalFileTemplate.java

@@ -0,0 +1,185 @@
+package com.yaoyicloud.easier.common.file.local;
+
+import java.io.File;
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import com.amazonaws.services.s3.model.Bucket;
+import com.amazonaws.services.s3.model.S3Object;
+import com.amazonaws.services.s3.model.S3ObjectSummary;
+import com.yaoyicloud.easier.common.file.core.FileProperties;
+import com.yaoyicloud.easier.common.file.core.FileTemplate;
+
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.util.StrUtil;
+import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
+
+@RequiredArgsConstructor
+public class LocalFileTemplate implements FileTemplate {
+
+    private final FileProperties properties;
+
+    /**
+     * 创建bucket
+     * 
+     * @param bucketName bucket名称
+     */
+    @Override
+    public void createBucket(String bucketName) {
+        FileUtil.mkdir(properties.getLocal().getBasePath() + FileUtil.FILE_SEPARATOR + bucketName);
+    }
+
+    /**
+     * 获取全部bucket
+     * <p>
+     * <p>
+     * API Documentation</a>
+     */
+    @Override
+    public List<Bucket> getAllBuckets() {
+        return Arrays.stream(FileUtil.ls(properties.getLocal().getBasePath())).filter(FileUtil::isDirectory)
+            .map(dir -> new Bucket(dir.getName())).collect(Collectors.toList());
+    }
+
+    /**
+     * @param bucketName bucket名称
+     * @see <a href= Documentation</a>
+     */
+    @Override
+    public void removeBucket(String bucketName) {
+        FileUtil.del(properties.getLocal().getBasePath() + FileUtil.FILE_SEPARATOR + bucketName);
+    }
+
+    /**
+     * 上传文件
+     * 
+     * @param bucketName bucket名称
+     * @param objectName 文件名称
+     * @param stream 文件流
+     * @param contextType 文件类型
+     */
+    @Override
+    public void putObject(String bucketName, String objectName, InputStream stream, String contextType) {
+        // 当 Bucket 不存在时创建
+        String dir = properties.getLocal().getBasePath() + FileUtil.FILE_SEPARATOR + bucketName;
+        if (!FileUtil.isDirectory(properties.getLocal().getBasePath() + FileUtil.FILE_SEPARATOR + bucketName)) {
+            createBucket(bucketName);
+        }
+
+        // 写入文件
+        File file = FileUtil.file(dir + FileUtil.FILE_SEPARATOR + objectName);
+        FileUtil.writeFromStream(stream, file);
+    }
+
+    /**
+     * 上传文件
+     * 
+     * @param bucketName bucket名称
+     * @param dir 文件夹名称
+     * @param objectName 文件名称
+     * @param stream 文件流
+     * @param contextType 文件类型
+     * @throws Exception
+     */
+    @Override
+    public void putObject(String bucketName, String dir, String objectName, InputStream stream, String contextType)
+        throws Exception {
+        if (StrUtil.isNotBlank(dir)) {
+            bucketName = bucketName + FileUtil.FILE_SEPARATOR + dir;
+        }
+        putObject(bucketName, objectName, stream, contextType);
+    }
+
+    /**
+     * 获取文件
+     * 
+     * @param bucketName bucket名称
+     * @param objectName 文件名称
+     * @return 二进制流 API Documentation</a>
+     */
+    @Override
+    @SneakyThrows
+    public S3Object getObject(String bucketName, String objectName) {
+        String dir = properties.getLocal().getBasePath() + FileUtil.FILE_SEPARATOR + bucketName;
+        S3Object s3Object = new S3Object();
+        s3Object.setObjectContent(FileUtil.getInputStream(dir + FileUtil.FILE_SEPARATOR + objectName));
+        return s3Object;
+    }
+
+    /**
+     * 获取文件外链
+     *
+     * @param bucketName 桶名称
+     * @param objectName 文件名称
+     * @param expires 有效期
+     * @return 外链接
+     */
+    @Override
+    public String getObjectURL(String bucketName, String objectName, Integer expires) {
+        return null;
+    }
+
+    /**
+     * 获取文件
+     * 
+     * @param bucketName bucket名称
+     * @param dir 文件夹名称
+     * @param objectName 文件名称
+     * @return 二进制流 API Documentation</a>
+     */
+    @Override
+    public S3Object getObject(String bucketName, String dir, String objectName) {
+        if (StrUtil.isNotBlank(dir)) {
+            bucketName = bucketName + FileUtil.FILE_SEPARATOR + dir;
+        }
+        return getObject(bucketName, objectName);
+    }
+
+    /**
+     * @param bucketName
+     * @param objectName
+     * @throws Exception
+     */
+    @Override
+    public void removeObject(String bucketName, String objectName) throws Exception {
+        String dir = properties.getLocal().getBasePath() + FileUtil.FILE_SEPARATOR + bucketName;
+        FileUtil.del(dir + FileUtil.FILE_SEPARATOR + objectName);
+    }
+
+    /**
+     * 上传文件
+     * 
+     * @param bucketName bucket名称
+     * @param objectName 文件名称
+     * @param stream 文件流
+     * @throws Exception
+     */
+    @Override
+    public void putObject(String bucketName, String objectName, InputStream stream) throws Exception {
+        putObject(bucketName, objectName, stream, null);
+    }
+
+    /**
+     * 根据文件前置查询文件
+     * 
+     * @param bucketName bucket名称
+     * @param prefix 前缀
+     * @param recursive 是否递归查询
+     * @return S3ObjectSummary 列表
+     * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjects">AWS API Documentation</a>
+     */
+    @Override
+    public List<S3ObjectSummary> getAllObjectsByPrefix(String bucketName, String prefix, boolean recursive) {
+        String dir = properties.getLocal().getBasePath() + FileUtil.FILE_SEPARATOR + bucketName;
+
+        return Arrays.stream(FileUtil.ls(dir)).filter(file -> file.getName().startsWith(prefix)).map(file -> {
+            S3ObjectSummary summary = new S3ObjectSummary();
+            summary.setKey(file.getName());
+            return new S3ObjectSummary();
+        }).collect(Collectors.toList());
+    }
+
+}

+ 35 - 0
easier-common/easier-common-oss/src/main/java/com/yaoyicloud/easier/common/file/oss/OssAutoConfiguration.java

@@ -0,0 +1,35 @@
+package com.yaoyicloud.easier.common.file.oss;
+
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Primary;
+
+import com.yaoyicloud.easier.common.file.core.FileProperties;
+import com.yaoyicloud.easier.common.file.core.FileTemplate;
+import com.yaoyicloud.easier.common.file.oss.http.OssEndpoint;
+import com.yaoyicloud.easier.common.file.oss.service.OssTemplate;
+
+import lombok.AllArgsConstructor;
+
+@AllArgsConstructor
+public class OssAutoConfiguration {
+
+    private final FileProperties properties;
+
+    @Bean
+    @Primary
+    @ConditionalOnMissingBean(OssTemplate.class)
+    @ConditionalOnProperty(name = "file.oss.enable", havingValue = "true")
+    public FileTemplate ossTemplate() {
+        return new OssTemplate(properties);
+    }
+
+    @Bean
+    @ConditionalOnMissingBean
+    @ConditionalOnProperty(name = "file.oss.info", havingValue = "true")
+    public OssEndpoint ossEndpoint(OssTemplate template) {
+        return new OssEndpoint(template);
+    }
+
+}

+ 63 - 0
easier-common/easier-common-oss/src/main/java/com/yaoyicloud/easier/common/file/oss/OssProperties.java

@@ -0,0 +1,63 @@
+package com.yaoyicloud.easier.common.file.oss;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+import lombok.Data;
+
+/**
+ * aws 配置信息 配置文件添加: oss: enable: true endpoint: <a href="http://127.0.0.1:9000">...</a> #pathStyleAccess 采用nginx反向代理或者AWS S3
+ * 配置成true,支持第三方云存储配置成false pathStyleAccess: false access-key: <access-key> secret-key: <secret-key> bucket-name: <bucket-name> region:
+ * custom-domain:<a href="https://oss.xxx.com/">...</a><bucket-name>
+ * <p>
+ * bucket 设置公共读权限
+ *
+ * @author jimmy
+ * @version 1.0.0
+ * @date 2022-12-02 21:23
+ */
+@Data
+@ConfigurationProperties(prefix = "oss")
+public class OssProperties {
+
+    /**
+     * 对象存储服务的URL
+     */
+    private String endpoint;
+
+    /**
+     * 自定义域名
+     */
+    private String customDomain;
+
+    /**
+     * true path-style nginx 反向代理和S3默认支持 pathStyle {<a href="http://endpoint/bucketname">...</a>} false supports virtual-hosted-style 阿里云等需要配置为
+     * virtual-hosted-style 模式{<a href="http://bucketname.endpoint">...</a>}
+     */
+    private Boolean pathStyleAccess = true;
+
+    /**
+     * 应用ID
+     */
+    private String appId;
+
+    /**
+     * 区域
+     */
+    private String region;
+
+    /**
+     * Access key就像用户ID,可以唯一标识你的账户
+     */
+    private String accessKey;
+
+    /**
+     * Secret key是你账户的密码
+     */
+    private String secretKey;
+
+    /**
+     * 最大线程数,默认: 100
+     */
+    private Integer maxConnections = 100;
+
+}

+ 122 - 0
easier-common/easier-common-oss/src/main/java/com/yaoyicloud/easier/common/file/oss/http/OssEndpoint.java

@@ -0,0 +1,122 @@
+package com.yaoyicloud.easier.common.file.oss.http;
+
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseStatus;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import com.amazonaws.services.s3.model.Bucket;
+import com.amazonaws.services.s3.model.S3Object;
+import com.amazonaws.services.s3.model.S3ObjectSummary;
+import com.yaoyicloud.easier.common.file.oss.service.OssTemplate;
+
+import lombok.AllArgsConstructor;
+import lombok.Cleanup;
+import lombok.SneakyThrows;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/oss")
+@ConditionalOnProperty(name = "file.oss.info", havingValue = "true")
+public class OssEndpoint {
+
+    private final OssTemplate template;
+
+    /**
+     * Bucket Endpoints
+     */
+    @SneakyThrows
+    @PostMapping("/bucket/{bucketName}")
+    public Bucket createBucker(@PathVariable String bucketName) {
+
+        template.createBucket(bucketName);
+        return template.getBucket(bucketName).get();
+
+    }
+
+    @SneakyThrows
+    @GetMapping("/bucket")
+    public List<Bucket> getBuckets() {
+        return template.getAllBuckets();
+    }
+
+    @SneakyThrows
+    @GetMapping("/bucket/{bucketName}")
+    public Bucket getBucket(@PathVariable String bucketName) {
+        return template.getBucket(bucketName).orElseThrow(() -> new IllegalArgumentException("Bucket Name not found!"));
+    }
+
+    @SneakyThrows
+    @DeleteMapping("/bucket/{bucketName}")
+    @ResponseStatus(HttpStatus.ACCEPTED)
+    public void deleteBucket(@PathVariable String bucketName) {
+        template.removeBucket(bucketName);
+    }
+
+    /**
+     * Object Endpoints
+     */
+    @SneakyThrows
+    @PostMapping("/object/{bucketName}")
+    public S3Object createObject(@RequestBody MultipartFile object, @PathVariable String bucketName) {
+        String name = object.getOriginalFilename();
+        @Cleanup
+        InputStream inputStream = object.getInputStream();
+        template.putObject(bucketName, name, inputStream, object.getSize(), object.getContentType());
+        return template.getObjectInfo(bucketName, name);
+
+    }
+
+    @SneakyThrows
+    @PostMapping("/object/{bucketName}/{objectName}")
+    public S3Object createObject(@RequestBody MultipartFile object, @PathVariable String bucketName,
+        @PathVariable String objectName) {
+        @Cleanup
+        InputStream inputStream = object.getInputStream();
+        template.putObject(bucketName, objectName, inputStream, object.getSize(), object.getContentType());
+        return template.getObjectInfo(bucketName, objectName);
+
+    }
+
+    @SneakyThrows
+    @GetMapping("/object/{bucketName}/{objectName}")
+    public List<S3ObjectSummary> filterObject(@PathVariable String bucketName, @PathVariable String objectName) {
+
+        return template.getAllObjectsByPrefix(bucketName, objectName, true);
+
+    }
+
+    @SneakyThrows
+    @GetMapping("/object/{bucketName}/{objectName}/{expires}")
+    public Map<String, Object> getObject(@PathVariable String bucketName, @PathVariable String objectName,
+        @PathVariable Integer expires) {
+        Map<String, Object> responseBody = new HashMap<>(8);
+        // Put Object info
+        responseBody.put("bucket", bucketName);
+        responseBody.put("object", objectName);
+        responseBody.put("url", template.getObjectURL(bucketName, objectName, expires));
+        responseBody.put("expires", expires);
+        return responseBody;
+    }
+
+    @SneakyThrows
+    @ResponseStatus(HttpStatus.ACCEPTED)
+    @DeleteMapping("/object/{bucketName}/{objectName}/")
+    public void deleteObject(@PathVariable String bucketName, @PathVariable String objectName) {
+
+        template.removeObject(bucketName, objectName);
+    }
+
+}

+ 266 - 0
easier-common/easier-common-oss/src/main/java/com/yaoyicloud/easier/common/file/oss/service/OssTemplate.java

@@ -0,0 +1,266 @@
+package com.yaoyicloud.easier.common.file.oss.service;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.List;
+import java.util.Optional;
+
+import org.springframework.beans.factory.InitializingBean;
+
+import com.amazonaws.ClientConfiguration;
+import com.amazonaws.auth.AWSCredentials;
+import com.amazonaws.auth.AWSCredentialsProvider;
+import com.amazonaws.auth.AWSStaticCredentialsProvider;
+import com.amazonaws.auth.BasicAWSCredentials;
+import com.amazonaws.client.builder.AwsClientBuilder;
+import com.amazonaws.services.s3.AmazonS3;
+import com.amazonaws.services.s3.AmazonS3Client;
+import com.amazonaws.services.s3.model.Bucket;
+import com.amazonaws.services.s3.model.ObjectListing;
+import com.amazonaws.services.s3.model.ObjectMetadata;
+import com.amazonaws.services.s3.model.PutObjectResult;
+import com.amazonaws.services.s3.model.S3Object;
+import com.amazonaws.services.s3.model.S3ObjectSummary;
+import com.amazonaws.util.IOUtils;
+import com.yaoyicloud.easier.common.file.core.FileProperties;
+import com.yaoyicloud.easier.common.file.core.FileTemplate;
+
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.util.StrUtil;
+import lombok.Cleanup;
+import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
+
+/**
+ * aws-s3 通用存储操作 支持所有兼容s3协议的云存储: {阿里云OSS,腾讯云COS,七牛云,京东云,minio 等}
+ *
+ * @author jimmy
+ * @version 1.0.0
+ * @date 2022-12-02 21:21
+ */
+@RequiredArgsConstructor
+public class OssTemplate implements InitializingBean, FileTemplate {
+
+    private final FileProperties properties;
+
+    private AmazonS3 amazonS3;
+
+    /**
+     * 创建bucket
+     *
+     * @param bucketName bucket名称
+     */
+    @SneakyThrows
+    public void createBucket(String bucketName) {
+        if (!amazonS3.doesBucketExistV2(bucketName)) {
+            amazonS3.createBucket((bucketName));
+        }
+    }
+
+    /**
+     * 获取全部bucket
+     * <p>
+     *
+     * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBuckets">AWS API Documentation</a>
+     */
+    @SneakyThrows
+    public List<Bucket> getAllBuckets() {
+        return amazonS3.listBuckets();
+    }
+
+    /**
+     * @param bucketName bucket名称
+     * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBuckets">AWS API Documentation</a>
+     */
+    @SneakyThrows
+    public Optional<Bucket> getBucket(String bucketName) {
+        return amazonS3.listBuckets().stream().filter(b -> b.getName().equals(bucketName)).findFirst();
+    }
+
+    /**
+     * @param bucketName bucket名称
+     * @see <a href= "http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucket">AWS API Documentation</a>
+     */
+    @SneakyThrows
+    public void removeBucket(String bucketName) {
+        amazonS3.deleteBucket(bucketName);
+    }
+
+    /**
+     * 根据文件前置查询文件
+     *
+     * @param bucketName bucket名称
+     * @param prefix 前缀
+     * @param recursive 是否递归查询
+     * @return S3ObjectSummary 列表
+     * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjects">AWS API Documentation</a>
+     */
+    @SneakyThrows
+    public List<S3ObjectSummary> getAllObjectsByPrefix(String bucketName, String prefix, boolean recursive) {
+        ObjectListing objectListing = amazonS3.listObjects(bucketName, prefix);
+        return new ArrayList<>(objectListing.getObjectSummaries());
+    }
+
+    /**
+     * 获取文件外链
+     *
+     * @param bucketName bucket名称
+     * @param objectName 文件名称
+     * @param expires 过期时间 <=7
+     * @return url
+     */
+    @SneakyThrows
+    public String getObjectURL(String bucketName, String objectName, Integer expires) {
+        Date date = new Date();
+        Calendar calendar = new GregorianCalendar();
+        calendar.setTime(date);
+        calendar.add(Calendar.DAY_OF_MONTH, expires);
+        URL url = amazonS3.generatePresignedUrl(bucketName, objectName, calendar.getTime());
+        return url.toString();
+    }
+
+    /**
+     * 获取文件
+     *
+     * @param bucketName bucket名称
+     * @param objectName 文件名称
+     * @return 二进制流
+     * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObject">AWS API Documentation</a>
+     */
+    @SneakyThrows
+    public S3Object getObject(String bucketName, String objectName) {
+        return amazonS3.getObject(bucketName, objectName);
+    }
+
+    /**
+     * 获取文件
+     *
+     * @param bucketName bucket名称
+     * @param dir 文件夹名称
+     * @param objectName 文件名称
+     * @return 二进制流 API Documentation</a>
+     */
+    @Override
+    public S3Object getObject(String bucketName, String dir, String objectName) {
+        if (StrUtil.isNotBlank(dir)) {
+            objectName = dir + FileUtil.FILE_SEPARATOR + objectName;
+        }
+        return getObject(bucketName, objectName);
+    }
+
+    /**
+     * 上传文件
+     *
+     * @param bucketName bucket名称
+     * @param objectName 文件名称
+     * @param stream 文件流
+     * @throws Exception 异常
+     */
+    public void putObject(String bucketName, String objectName, InputStream stream) throws Exception {
+        putObject(bucketName, objectName, stream, stream.available(), "application/octet-stream");
+    }
+
+    /**
+     * 上传文件
+     *
+     * @param bucketName bucket名称
+     * @param objectName 文件名称
+     * @param stream 文件流
+     * @param contextType 文件类型
+     * @throws Exception 异常
+     */
+    public void putObject(String bucketName, String objectName, InputStream stream, String contextType)
+        throws Exception {
+        putObject(bucketName, objectName, stream, stream.available(), contextType);
+    }
+
+    /**
+     * 上传文件
+     *
+     * @param bucketName bucket名称
+     * @param dir 文件夹名称
+     * @param objectName 文件名称
+     * @param stream 文件流
+     * @param contextType 文件类型
+     * @throws Exception 异常
+     */
+    @Override
+    public void putObject(String bucketName, String dir, String objectName, InputStream stream, String contextType)
+        throws Exception {
+        if (StrUtil.isNotBlank(dir)) {
+            // dir 路径为 a/b
+            objectName = dir + FileUtil.FILE_SEPARATOR + objectName;
+        }
+
+        putObject(bucketName, objectName, stream, stream.available(), contextType);
+    }
+
+    /**
+     * 上传文件
+     *
+     * @param bucketName bucket名称
+     * @param objectName 文件名称
+     * @param stream 文件流
+     * @param size 大小
+     * @param contextType 类型
+     * @throws Exception 异常
+     * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObject">AWS API Documentation</a>
+     */
+    public PutObjectResult putObject(String bucketName, String objectName, InputStream stream, long size,
+        String contextType) throws Exception {
+        // String fileName = getFileName(objectName);
+        byte[] bytes = IOUtils.toByteArray(stream);
+        ObjectMetadata objectMetadata = new ObjectMetadata();
+        objectMetadata.setContentLength(size);
+        objectMetadata.setContentType(contextType);
+        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
+        // 上传
+        return amazonS3.putObject(bucketName, objectName, byteArrayInputStream, objectMetadata);
+
+    }
+
+    /**
+     * 获取文件信息
+     *
+     * @param bucketName bucket名称
+     * @param objectName 文件名称
+     * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObject">AWS API Documentation</a>
+     */
+    public S3Object getObjectInfo(String bucketName, String objectName) throws Exception {
+        @Cleanup
+        S3Object object = amazonS3.getObject(bucketName, objectName);
+        return object;
+    }
+
+    /**
+     * 删除文件
+     *
+     * @param bucketName bucket名称
+     * @param objectName 文件名称
+     * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObject">AWS API Documentation</a>
+     */
+    public void removeObject(String bucketName, String objectName) {
+        amazonS3.deleteObject(bucketName, objectName);
+    }
+
+    @Override
+    public void afterPropertiesSet() {
+        ClientConfiguration clientConfiguration = new ClientConfiguration();
+        clientConfiguration.setMaxConnections(properties.getOss().getMaxConnections());
+
+        AwsClientBuilder.EndpointConfiguration endpointConfiguration = new AwsClientBuilder.EndpointConfiguration(
+            properties.getOss().getEndpoint(), properties.getOss().getRegion());
+        AWSCredentials awsCredentials =
+            new BasicAWSCredentials(properties.getOss().getAccessKey(), properties.getOss().getSecretKey());
+        AWSCredentialsProvider awsCredentialsProvider = new AWSStaticCredentialsProvider(awsCredentials);
+        this.amazonS3 = AmazonS3Client.builder().withEndpointConfiguration(endpointConfiguration)
+            .withClientConfiguration(clientConfiguration).withCredentials(awsCredentialsProvider)
+            .disableChunkedEncoding().withPathStyleAccessEnabled(properties.getOss().getPathStyleAccess()).build();
+    }
+
+}

+ 1 - 0
easier-common/easier-common-oss/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -0,0 +1 @@
+com.yaoyicloud.easier.common.file.FileAutoConfiguration

+ 19 - 0
easier-common/pom.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.yaoyicloud</groupId>
+        <artifactId>easier-render</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>easier-common</artifactId>
+    <packaging>pom</packaging>
+    <modules>
+        <module>easier-common-oss</module>
+    </modules>
+
+
+</project>

+ 0 - 2
easier-report-api/src/main/java/com/yaoyicloud/dto/ReportDTO.java

@@ -74,8 +74,6 @@ public class ReportDTO {
         @NotNull(message = "map数据必填")
         private String data;
 
-        @NotNull(message = "模版必填")
-        private String reportTempFile;
 
         @NotNull(message = "relationId必填")
         private String relationId;

+ 7 - 0
easier-report-biz/pom.xml

@@ -18,9 +18,16 @@
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <aws.version>1.11.543</aws.version>
     </properties>
 
     <dependencies>
+        <dependency>
+            <groupId>com.yaoyicloud</groupId>
+            <artifactId>easier-common-oss</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-expression</artifactId>

+ 0 - 3
easier-report-biz/src/main/java/com/yaoyicloud/controller/CsoReportController.java

@@ -1,6 +1,5 @@
 package com.yaoyicloud.controller;
 
-import java.util.Base64;
 import java.util.HashMap;
 import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
@@ -42,13 +41,11 @@ public class CsoReportController {
     public Map<String, Object>
     createPlusVersionCheckReport(@Validated @RequestBody ReportDTO.CsoReport resource,
                                  HttpServletRequest request) throws Exception {
-        byte[] fileBytes = Base64.getDecoder().decode(resource.getReportTempFile());
 
         String relationId = request.getHeader("relationId");
         synchronized (this) {
             ReportGenerationResult plusVersionCheckReport = csoReportService.createCsoCheckReport(
                     resource.getData(),
-                    fileBytes,
                     Long.valueOf(resource.getRelationId()),
                     resource.getModuleType()
             );

+ 4 - 4
easier-report-biz/src/main/java/com/yaoyicloud/render/AbstractNewRender.java

@@ -1,10 +1,10 @@
 package com.yaoyicloud.render;
 
 import java.awt.image.BufferedImage;
-import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
 import java.net.URL;
 import java.text.DecimalFormat;
 import java.util.ArrayList;
@@ -93,12 +93,12 @@ public abstract class AbstractNewRender {
      * Docx 渲染
      *
      * 
-     * @param templateFileContent 模板内容
+     * @param inputStream 模板内容
      * @return 本地文件目录
      * @throws IOException
      */
     @SuppressWarnings("checkstyle:ParameterNumber")
-    public final String renderDocx(Map<String, Object> dataMap, byte[] templateFileContent,
+    public final String renderDocx(Map<String, Object> dataMap, InputStream inputStream,
         ConfigureBuilder builder, String relationId, String moduleType)
         throws IOException {
 
@@ -119,7 +119,7 @@ public abstract class AbstractNewRender {
 
         Configure config = builder.build();
         XWPFTemplate template =
-            XWPFTemplate.compile(new ByteArrayInputStream(templateFileContent), config).render(dataMap);
+            XWPFTemplate.compile(inputStream, config).render(dataMap);
 
 //        ArrayList<String> templateDele = new ArrayList<>();
 //        for (Map.Entry<String, Object> entry : specialMap.entrySet()) {

+ 4 - 4
easier-report-biz/src/main/java/com/yaoyicloud/render/AbstractRender.java

@@ -5,6 +5,7 @@ import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
 import java.net.URL;
 import java.text.DecimalFormat;
 import java.util.ArrayList;
@@ -106,11 +107,11 @@ public abstract class AbstractRender {
      * Docx 渲染
      *
      * 
-     * @param templateFileContent 模板内容
+     * @param inputStream 模板内容
      * @return 本地文件目录
      * @throws IOException
      */
-    public final String renderDocx(Map<String, Object> dataMap, byte[] templateFileContent,
+    public final String renderDocx(Map<String, Object> dataMap, InputStream inputStream,
         ConfigureBuilder builder, String relationId, String moduleType)
         throws IOException {
 
@@ -140,8 +141,7 @@ public abstract class AbstractRender {
             dataMap.put("nestfile", docxRenderData);
         }
         XWPFTemplate template =
-            XWPFTemplate.compile(new ByteArrayInputStream(templateFileContent), config).render(dataMap);
-
+            XWPFTemplate.compile(inputStream, config).render(dataMap);
         NiceXWPFDocument xwpfDocument = template.getXWPFDocument();
         List<XWPFTable> allTables = xwpfDocument.getAllTables();
 

+ 5 - 4
easier-report-biz/src/main/java/com/yaoyicloud/render/InterestConflictsRender.java

@@ -2,6 +2,7 @@ package com.yaoyicloud.render;
 
 import java.io.IOException;
 
+import java.io.InputStream;
 import java.util.List;
 import java.util.Map;
 
@@ -40,12 +41,12 @@ public final class InterestConflictsRender extends AbstractRender {
      * Docx 渲染
      *
      * @param info 数据
-     * @param templateFileContent 模板内容
+     * @param inputStream 模板内容
      * @return 本地文件目录
      * @throws IOException
      */
-    public String renderDocx(String info, byte[] templateFileContent,
-        String relationId) throws IOException {
+    public String renderDocx(String info, InputStream inputStream,
+                             String relationId) throws IOException {
         log.info("开始渲染利益冲突报告模块,relationId: {}", relationId);
 
         // 配置POI-TL渲染器
@@ -62,7 +63,7 @@ public final class InterestConflictsRender extends AbstractRender {
         fillDefaultValues(data);
         try {
             // 渲染文档
-            String resultPath = this.renderDocx(data, templateFileContent, builder, relationId, "interestConflicts");
+            String resultPath = this.renderDocx(data, inputStream, builder, relationId, "interestConflicts");
             log.info("渲染利益冲突报告模块成功,文件路径: {}", resultPath);
             return resultPath;
         } catch (Exception e) {

+ 4 - 3
easier-report-biz/src/main/java/com/yaoyicloud/render/ProjectInfoRender.java

@@ -1,6 +1,7 @@
 package com.yaoyicloud.render;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -49,11 +50,11 @@ public final class ProjectInfoRender extends AbstractRender {
      * Docx 渲染
      *
      * @param info 数据
-     * @param templateFileContent 模板内容
+     * @param inputStream 模板内容
      * @return 本地文件目录
      * @throws IOException
      */
-    public String renderDocx(String info, byte[] templateFileContent,
+    public String renderDocx(String info, InputStream inputStream,
         String relationId) throws IOException {
         log.info("开始渲染项目信息报告模块,relationId: {}", relationId);
 
@@ -92,7 +93,7 @@ public final class ProjectInfoRender extends AbstractRender {
         fillDefaultValues(data);
         try {
             // 渲染文档
-            String resultPath = this.renderDocx(data, templateFileContent, builder, relationId, "projectInfo");
+            String resultPath = this.renderDocx(data, inputStream, builder, relationId, "projectInfo");
             log.info("渲染项目信息报告模块成功,文件路径: {}", resultPath);
             return resultPath;
         } catch (Exception e) {

+ 4 - 3
easier-report-biz/src/main/java/com/yaoyicloud/render/PublicRecordRender.java

@@ -1,6 +1,7 @@
 package com.yaoyicloud.render;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -51,12 +52,12 @@ private final CommonDataCache commonDataCache;
      * Docx 渲染
      *
      * @param info 数据
-     * @param templateFileContent 模板内容
+     * @param inputStream 模板内容
      * @return 本地文件目录
      * @throws IOException
      */
 
-    public String renderDocx(String info, byte[] templateFileContent,
+    public String renderDocx(String info, InputStream inputStream,
         String relationId) throws IOException {
         log.info("开始渲染公共模块,relationId: {}", relationId);
 
@@ -93,7 +94,7 @@ private final CommonDataCache commonDataCache;
 
         try {
             // 渲染文档
-            String resultPath = this.renderDocx(data, templateFileContent, builder, relationId, "publicRecord");
+            String resultPath = this.renderDocx(data, inputStream, builder, relationId, "publicRecord");
             log.info("渲染公共模块成功,文件路径: {}", resultPath);
             return resultPath;
         } catch (Exception e) {

+ 4 - 3
easier-report-biz/src/main/java/com/yaoyicloud/render/ServiceProviderInfoRender.java

@@ -1,6 +1,7 @@
 package com.yaoyicloud.render;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.time.LocalDate;
 import java.util.HashMap;
 import java.util.Map;
@@ -47,12 +48,12 @@ public final class ServiceProviderInfoRender extends AbstractRender {
      * Docx 渲染
      *
      * @param info 数据
-     * @param templateFileContent 模板内容
+     * @param inputStream 模板内容
      * @return 本地文件目录
      * @throws IOException
      */
 
-    public String renderDocx(String info, byte[] templateFileContent,
+    public String renderDocx(String info, InputStream inputStream,
         String relationId, Integer counter) throws IOException {
         log.info("开始渲染公共封面模块,relationId: {}", relationId);
 
@@ -90,7 +91,7 @@ public final class ServiceProviderInfoRender extends AbstractRender {
         fillDefaultValues(data);
         try {
             // 渲染文档
-            String resultPath = this.renderDocx(data, templateFileContent, builder, relationId, "serviceProviderInfo");
+           String resultPath = this.renderDocx(data, inputStream, builder, relationId, "serviceProviderInfo");
             log.info("渲染公共封面成功,文件路径: {}", resultPath);
 
             return resultPath;

+ 4 - 3
easier-report-biz/src/main/java/com/yaoyicloud/render/association/AssociationAttachmentSectionRender.java

@@ -1,6 +1,7 @@
 package com.yaoyicloud.render.association;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -48,12 +49,12 @@ public final class AssociationAttachmentSectionRender extends AbstractRender {
      * Docx 渲染
      *
      * @param info 数据
-     * @param templateFileContent 模板内容
+     * @param inputStream 模板内容
      * @return 本地文件目录
      * @throws IOException
      */
 
-    public String renderDocx(String info, byte[] templateFileContent, String relationId) throws IOException {
+    public String renderDocx(String info, InputStream inputStream, String relationId) throws IOException {
         log.info("开始渲染学协会附件模块,relationId: {}", relationId);
 
         // 配置POI-TL渲染器
@@ -96,7 +97,7 @@ public final class AssociationAttachmentSectionRender extends AbstractRender {
         fillDefaultValues(data);
         try {
             // 渲染文档
-            String resultPath = this.renderDocx(data, templateFileContent, builder, relationId, "attachmentSection");
+            String resultPath = this.renderDocx(data, inputStream, builder, relationId, "attachmentSection");
             log.info("渲染学协会附件模块成功,文件路径: {}", resultPath);
             return resultPath;
         } catch (Exception e) {

+ 5 - 4
easier-report-biz/src/main/java/com/yaoyicloud/render/association/AssociationBasicInfoRender.java

@@ -1,6 +1,7 @@
 package com.yaoyicloud.render.association;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.Map;
 import java.util.Objects;
 
@@ -48,12 +49,12 @@ private final CommonDataCache commonDataCache;
      * Docx 渲染
      *
      * @param info 数据
-     * @param templateFileContent 模板内容
+     * @param inputStream 模板内容
      * @return 本地文件目录
      * @throws IOException
      */
-    public String renderDocx(String info, byte[] templateFileContent,
-        String relationId) throws IOException {
+    public String renderDocx(String info, InputStream inputStream,
+                             String relationId) throws IOException {
         log.info("开始渲染学协会基础信息报告模块,relationId: {}", relationId);
 
 
@@ -85,7 +86,7 @@ private final CommonDataCache commonDataCache;
         fillBasicDefaultValues(data);
         try {
             // 渲染文档
-            String resultPath = this.renderDocx(data, templateFileContent, builder, relationId, "basicInfo");
+            String resultPath = this.renderDocx(data, inputStream, builder, relationId, "basicInfo");
             log.info("渲染学协会基础信息报告模块成功,文件路径: {}", resultPath);
             return resultPath;
         } catch (Exception e) {

+ 4 - 3
easier-report-biz/src/main/java/com/yaoyicloud/render/cso/EntAppendixRender.java

@@ -1,6 +1,7 @@
 package com.yaoyicloud.render.cso;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.Map;
 import org.apache.commons.collections4.MapUtils;
 
@@ -37,12 +38,12 @@ public final class EntAppendixRender extends AbstractRender {
     /**
      *  Docx 渲染
      * @param info 数据
-     * @param templateFileContent 模板内容
+     * @param inputStream 模板内容
      * @param relationId  用于查询缓存
      * @return
      * @throws IOException
      */
-    public String renderDocx(String info, byte[] templateFileContent, String relationId) throws IOException {
+    public String renderDocx(String info, InputStream inputStream, String relationId) throws IOException {
         log.info("开始渲染CSO企业报告签章模块,relationId: {}", relationId);
 
         // 配置POI-TL渲染器
@@ -59,7 +60,7 @@ public final class EntAppendixRender extends AbstractRender {
         fillDefaultValues(data);
         try {
             // 渲染文档
-            String resultPath = this.renderDocx(data, templateFileContent, builder, relationId, "Appendix");
+            String resultPath = this.renderDocx(data, inputStream, builder, relationId, "Appendix");
             log.info("渲染CSO企业报告签章模块成功,文件路径: {}", resultPath);
             return resultPath;
         } catch (Exception e) {

+ 4 - 3
easier-report-biz/src/main/java/com/yaoyicloud/render/cso/EntHeaderSectionRender.java

@@ -1,6 +1,7 @@
 package com.yaoyicloud.render.cso;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.time.LocalDateTime;
 import java.util.Map;
 import cn.hutool.core.date.DateUtil;
@@ -41,12 +42,12 @@ public final class EntHeaderSectionRender extends AbstractRender {
     /**
      *  Docx 渲染
      * @param info 数据
-     * @param templateFileContent 模板内容
+     * @param inputStream 模板内容
      * @param relationId  用于查询缓存
      * @return
      * @throws IOException
      */
-    public String renderDocx(String info, byte[] templateFileContent, String relationId) throws IOException {
+    public String renderDocx(String info, InputStream inputStream, String relationId) throws IOException {
         log.info("开始渲染CSO企业报告封面模块,relationId: {}", relationId);
 
         // 配置POI-TL渲染器
@@ -86,7 +87,7 @@ public final class EntHeaderSectionRender extends AbstractRender {
         fillDefaultValues(data);
         try {
             // 渲染文档
-            String resultPath = this.renderDocx(data, templateFileContent, builder, relationId, "Header");
+            String resultPath = this.renderDocx(data, inputStream, builder, relationId, "Header");
             log.info("渲染CSO企业报告封面模块成功,文件路径: {}", resultPath);
             return resultPath;
         } catch (Exception e) {

+ 4 - 3
easier-report-biz/src/main/java/com/yaoyicloud/render/cso/EntPromotionDetailsRender.java

@@ -1,6 +1,7 @@
 package com.yaoyicloud.render.cso;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.Map;
 import com.deepoove.poi.policy.RenderPolicy;
 import org.apache.commons.collections4.MapUtils;
@@ -42,12 +43,12 @@ public final class EntPromotionDetailsRender extends AbstractRender {
      * Docx 渲染
      * 
      * @param info 数据
-     * @param templateFileContent 模板内容
+     * @param inputStream 模板内容
      * @param relationId 用于查询缓存
      * @return
      * @throws IOException
      */
-    public String renderDocx(String info, byte[] templateFileContent, String relationId) throws IOException {
+    public String renderDocx(String info, InputStream inputStream, String relationId) throws IOException {
         log.info("开始渲染CSO企业报告推广明细模块,relationId: {}", relationId);
 
         CSOProtos.PromotionDetails.Builder promotionSummary = CSOProtos.PromotionDetails.newBuilder();
@@ -109,7 +110,7 @@ public final class EntPromotionDetailsRender extends AbstractRender {
         builder.bind("taskType424344List", policy);
         try {
             // 渲染文档
-            String resultPath = this.renderDocx(data, templateFileContent, builder, relationId, "PromotionDetails");
+            String resultPath = this.renderDocx(data, inputStream, builder, relationId, "PromotionDetails");
             log.info("渲染CSO企业报告推广明细模块成功,文件路径: {}", resultPath);
             return resultPath;
         } catch (Exception e) {

+ 4 - 3
easier-report-biz/src/main/java/com/yaoyicloud/render/cso/EntPromotionSummaryRender.java

@@ -1,6 +1,7 @@
 package com.yaoyicloud.render.cso;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -52,12 +53,12 @@ public final class EntPromotionSummaryRender extends AbstractRender {
      * Docx 渲染
      * 
      * @param info 数据
-     * @param templateFileContent 模板内容
+     * @param inputStream 模板内容
      * @param relationId 用于查询缓存
      * @return
      * @throws IOException
      */
-    public String renderDocx(String info, byte[] templateFileContent, String relationId) throws IOException {
+    public String renderDocx(String info, InputStream inputStream, String relationId) throws IOException {
         log.info("开始渲染CSO企业报告推广总结模块,relationId: {}", relationId);
 
         CSOProtos.PromotionSummary.Builder promotionSummary = CSOProtos.PromotionSummary.newBuilder();
@@ -113,7 +114,7 @@ public final class EntPromotionSummaryRender extends AbstractRender {
         builder.bind("task_promotioner_quality_5_4_1_last", lastRowDaynamicPolicy);
         try {
             // 渲染文档
-            String resultPath = this.renderDocx(data, templateFileContent, builder, relationId, "PromotionSummary");
+            String resultPath = this.renderDocx(data, inputStream, builder, relationId, "PromotionSummary");
             log.info("渲染CSO企业报告推广总结模块成功,文件路径: {}", resultPath);
             return resultPath;
         } catch (Exception e) {

+ 4 - 3
easier-report-biz/src/main/java/com/yaoyicloud/render/foundation/FoundationAttachmentSectionRender.java

@@ -1,6 +1,7 @@
 package com.yaoyicloud.render.foundation;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -47,12 +48,12 @@ public final class FoundationAttachmentSectionRender extends AbstractRender {
      * Docx 渲染
      *
      * @param info 数据
-     * @param templateFileContent 模板内容
+     * @param inputStream 模板内容
      * @return 本地文件目录
      * @throws IOException
      */
 
-    public String renderDocx(String info, byte[] templateFileContent, String relationId) throws IOException {
+    public String renderDocx(String info, InputStream inputStream, String relationId) throws IOException {
         log.info("开始渲染基金会附件模块,relationId: {}", relationId);
 
         // 配置POI-TL渲染器
@@ -94,7 +95,7 @@ public final class FoundationAttachmentSectionRender extends AbstractRender {
         fillDefaultValues(data);
         try {
             // 渲染文档
-            String resultPath = this.renderDocx(data, templateFileContent, builder, relationId, "attachmentSection");
+            String resultPath = this.renderDocx(data, inputStream, builder, relationId, "attachmentSection");
             log.info("渲染基金会附件模块成功,文件路径: {}", resultPath);
             return resultPath;
         } catch (Exception e) {

+ 4 - 3
easier-report-biz/src/main/java/com/yaoyicloud/render/foundation/FoundationBasicInfoRender.java

@@ -2,6 +2,7 @@ package com.yaoyicloud.render.foundation;
 
 import java.io.IOException;
 
+import java.io.InputStream;
 import java.util.Map;
 import java.util.Objects;
 
@@ -51,11 +52,11 @@ public final class FoundationBasicInfoRender extends AbstractRender {
      * Docx 渲染
      *
      * @param info 数据
-     * @param templateFileContent 模板内容
+     * @param inputStream 模板内容
      * @return 本地文件目录
      * @throws IOException
      */
-    public String renderDocx(String info, byte[] templateFileContent,
+    public String renderDocx(String info, InputStream inputStream,
         String relationId) throws IOException {
         log.info("开始渲染基金会基础信息报告模块,relationId: {}", relationId);
 
@@ -90,7 +91,7 @@ public final class FoundationBasicInfoRender extends AbstractRender {
         fillBasicDefaultValues(data);
         try {
             // 渲染文档
-            String resultPath = this.renderDocx(data, templateFileContent, builder, relationId, "basicInfo");
+            String resultPath = this.renderDocx(data, inputStream, builder, relationId, "basicInfo");
             log.info("渲染基金会基础信息报告模块成功,文件路径: {}", resultPath);
             return resultPath;
         } catch (Exception e) {

+ 4 - 3
easier-report-biz/src/main/java/com/yaoyicloud/render/foundation/FoundationfinancialInfoRender.java

@@ -1,6 +1,7 @@
 package com.yaoyicloud.render.foundation;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -48,12 +49,12 @@ public final class FoundationfinancialInfoRender extends AbstractRender {
      * Docx 渲染
      *
      * @param info 数据
-     * @param templateFileContent 模板内容
+     * @param inputStream 模板内容
      * @return 本地文件目录
      * @throws IOException
      */
 
-    public String renderDocx(String info, byte[] templateFileContent, String relationId) throws IOException {
+    public String renderDocx(String info, InputStream inputStream, String relationId) throws IOException {
         log.info("开始渲染基金会财务模块,relationId: {}", relationId);
 
         // 配置POI-TL渲染器
@@ -85,7 +86,7 @@ public final class FoundationfinancialInfoRender extends AbstractRender {
         }
         try {
             // 渲染文档
-            String resultPath = this.renderDocx(data, templateFileContent, builder, relationId, "financialInfo");
+            String resultPath = this.renderDocx(data, inputStream, builder, relationId, "financialInfo");
             log.info("渲染基金会财务模块成功,文件路径: {}", resultPath);
             return resultPath;
         } catch (Exception e) {

+ 4 - 3
easier-report-biz/src/main/java/com/yaoyicloud/render/platform/AntiBriberyRender.java

@@ -1,6 +1,7 @@
 package com.yaoyicloud.render.platform;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -48,12 +49,12 @@ public final class AntiBriberyRender extends AbstractRender {
      *
      * @param info 数据
      * 
-     * @param templateFileContent 模板内容
+     * @param inputStream 模板内容
      * @param relationId 关联ID
      * @return 本地文件目录
      * @throws IOException
      */
-    public String renderDocx(String info, byte[] templateFileContent, String relationId) throws IOException {
+    public String renderDocx(String info, InputStream inputStream, String relationId) throws IOException {
         log.info("开始渲染防贿赂报告,relationId: {}", relationId);
 
         // 配置POI-TL渲染器
@@ -74,7 +75,7 @@ public final class AntiBriberyRender extends AbstractRender {
 
         try {
             // 渲染文档
-            String resultPath = this.renderDocx(data, templateFileContent, builder, relationId, "antiBribery");
+           String resultPath = this.renderDocx(data, inputStream, builder, relationId, "antiBribery");
             log.info("防贿赂报告渲染成功,文件路径: {}", resultPath);
             return resultPath;
         } catch (Exception e) {

+ 4 - 3
easier-report-biz/src/main/java/com/yaoyicloud/render/platform/AttachmentSectionRender.java

@@ -1,6 +1,7 @@
 package com.yaoyicloud.render.platform;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -46,12 +47,12 @@ public final class AttachmentSectionRender extends AbstractRender {
      * Docx 渲染
      *
      * @param info 数据
-     * @param templateFileContent 模板内容
+     * @param inputStream 模板内容
      * @return 本地文件目录
      * @throws IOException
      */
 
-    public String renderDocx(String info, byte[] templateFileContent, String relationId, Integer counter) throws IOException {
+    public String renderDocx(String info, InputStream inputStream, String relationId, Integer counter) throws IOException {
         log.info("开始渲染附件模块,relationId: {}", relationId);
 
         // 配置POI-TL渲染器
@@ -94,7 +95,7 @@ public final class AttachmentSectionRender extends AbstractRender {
         fillDefaultValues(data);
         try {
             // 渲染文档
-            String resultPath = this.renderDocx(data, templateFileContent, builder, relationId, "attachmentSection");
+            String resultPath = this.renderDocx(data, inputStream, builder, relationId, "attachmentSection");
             log.info("渲染附件模块成功,文件路径: {}", resultPath);
             return resultPath;
         } catch (Exception e) {

+ 4 - 3
easier-report-biz/src/main/java/com/yaoyicloud/render/platform/BasicInfoRender.java

@@ -2,6 +2,7 @@ package com.yaoyicloud.render.platform;
 
 import java.io.IOException;
 
+import java.io.InputStream;
 import java.util.Map;
 import java.util.Objects;
 
@@ -49,11 +50,11 @@ public final class BasicInfoRender extends AbstractRender {
      * Docx 渲染
      *
      * @param info 数据
-     * @param templateFileContent 模板内容
+     * @param inputStream 模板内容
      * @return 本地文件目录
      * @throws IOException
      */
-    public String renderDocx(String info, byte[] templateFileContent, String relationId) throws IOException {
+    public String renderDocx(String info, InputStream inputStream, String relationId) throws IOException {
         log.info("开始渲染基础信息报告模块,relationId: {}", relationId);
 
         // 配置POI-TL渲染器
@@ -85,7 +86,7 @@ public final class BasicInfoRender extends AbstractRender {
         }
         try {
             // 渲染文档
-            String resultPath = this.renderDocx(data, templateFileContent, builder, relationId, "basicInfo");
+            String resultPath = this.renderDocx(data, inputStream, builder, relationId, "basicInfo");
             log.info("渲染基础信息报告模块成功,文件路径: {}", resultPath);
             return resultPath;
         } catch (Exception e) {

+ 5 - 3
easier-report-biz/src/main/java/com/yaoyicloud/render/platform/FinancialInfoRender.java

@@ -2,6 +2,7 @@ package com.yaoyicloud.render.platform;
 
 import java.io.IOException;
 
+import java.io.InputStream;
 import java.util.Map;
 
 
@@ -47,12 +48,12 @@ public final class FinancialInfoRender extends AbstractRender {
      * Docx 渲染
      *
      * @param info 数据
-     * @param templateFileContent 模板内容
+     * @param inputStream 模板内容
      * @return 本地文件目录
      * @throws IOException
      */
 
-    public String renderDocx(String info, byte[] templateFileContent, String relationId) throws IOException {
+    public String renderDocx(String info, InputStream inputStream, String relationId) throws IOException {
         log.info("开始渲染财务模块,relationId: {}", relationId);
 
         // 配置POI-TL渲染器
@@ -83,7 +84,8 @@ public final class FinancialInfoRender extends AbstractRender {
         }
         try {
             // 渲染文档
-            String resultPath = this.renderDocx(data, templateFileContent, builder, relationId, "financialInfo");
+           // String resultPath = this.renderDocx(data, inputStream, builder, relationId, "financialInfo");
+            String resultPath = null;
             log.info("渲染财务模块成功,文件路径: {}", resultPath);
             return resultPath;
         } catch (Exception e) {

+ 4 - 3
easier-report-biz/src/main/java/com/yaoyicloud/render/platform/update/AntiBriberyNewRender.java

@@ -1,6 +1,7 @@
 package com.yaoyicloud.render.platform.update;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.Map;
 import com.deepoove.poi.config.Configure;
 import com.deepoove.poi.config.ConfigureBuilder;
@@ -42,12 +43,12 @@ public final class AntiBriberyNewRender extends AbstractNewRender {
      * Docx 渲染
      *
      * @param info 数据
-     * @param templateFileContent 模板内容
+     * @param inputStream 模板内容
      * @param relationId 关联ID
      * @return 本地文件目录
      * @throws IOException
      */
-    public String renderDocx(String info, byte[] templateFileContent, String relationId, Integer counter)
+    public String renderDocx(String info, InputStream inputStream, String relationId, Integer counter)
         throws IOException {
         log.info("开始渲染其他风险报告模块,relationId: {}", relationId);
 
@@ -86,7 +87,7 @@ public final class AntiBriberyNewRender extends AbstractNewRender {
 
         try {
             // 渲染文档
-            String resultPath = this.renderDocx(data, templateFileContent, builder, relationId, "antiBribery");
+            String resultPath = this.renderDocx(data, inputStream, builder, relationId, "antiBribery");
             log.info("其他风险报告模块渲染成功,文件路径: {}", resultPath);
             return resultPath;
         } catch (Exception e) {

+ 4 - 4
easier-report-biz/src/main/java/com/yaoyicloud/render/platform/update/BasicInfoNewRender.java

@@ -1,6 +1,7 @@
 package com.yaoyicloud.render.platform.update;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -48,11 +49,11 @@ public final class BasicInfoNewRender extends AbstractNewRender {
      * Docx 渲染
      *
      * @param info 数据
-     * @param templateFileContent 模板内容
+     * @param inputStream 模板内容
      * @return 本地文件目录
      * @throws IOException
      */
-    public String renderDocx(String info, byte[] templateFileContent,
+    public String renderDocx(String info, InputStream inputStream,
                              String relationId, Integer counter) throws IOException {
         log.info("开始渲染工商信息报告模块,relationId: {}", relationId);
 
@@ -107,8 +108,7 @@ public final class BasicInfoNewRender extends AbstractNewRender {
 //            basicInfoSummary.get("riskSummary").equals("") ? "-" : basicInfoSummary.get("riskSummary"));
         try {
             // 渲染文档
-            String resultPath =
-                this.renderDocx(data, templateFileContent, builder, relationId, "basicInfo");
+            String resultPath = this.renderDocx(data, inputStream, builder, relationId, "basicInfo");
             log.info("渲染工商信息报告模块成功,文件路径: {}", resultPath);
             return resultPath;
         } catch (Exception e) {

+ 4 - 3
easier-report-biz/src/main/java/com/yaoyicloud/render/platform/update/FinancialInfoNewRender.java

@@ -1,6 +1,7 @@
 package com.yaoyicloud.render.platform.update;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.Map;
 import java.util.Objects;
 
@@ -46,12 +47,12 @@ public final class FinancialInfoNewRender extends AbstractNewRender {
      * Docx 渲染
      *
      * @param info 数据
-     * @param templateFileContent 模板内容
+     * @param inputStream 模板内容
      * @return 本地文件目录
      * @throws IOException
      */
 
-    public String renderDocx(String info, byte[] templateFileContent, String relationId, Integer counter)
+    public String renderDocx(String info, InputStream inputStream, String relationId, Integer counter)
         throws IOException {
         log.info("开始渲染财务模块,relationId: {}", relationId);
 
@@ -88,7 +89,7 @@ public final class FinancialInfoNewRender extends AbstractNewRender {
         // data.put("fiancescore", financialSummary.get("score"));
         try {
             // 渲染文档
-            String resultPath = this.renderDocx(data, templateFileContent, builder, relationId, "financialInfo");
+            String resultPath = this.renderDocx(data, inputStream, builder, relationId, "financialInfo");
             log.info("渲染财务模块成功,文件路径: {}", resultPath);
             return resultPath;
         } catch (Exception e) {

+ 4 - 4
easier-report-biz/src/main/java/com/yaoyicloud/render/platform/update/PublicRecordNewRender.java

@@ -1,6 +1,7 @@
 package com.yaoyicloud.render.platform.update;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -43,12 +44,12 @@ public final class PublicRecordNewRender extends AbstractNewRender {
      * Docx 渲染
      *
      * @param info 数据
-     * @param templateFileContent 模板内容
+     * @param inputStream 模板内容
      * @return 本地文件目录
      * @throws IOException
      */
 
-    public String renderDocx(String info, byte[] templateFileContent,
+    public String renderDocx(String info, InputStream inputStream,
         String relationId, Integer counter) throws IOException {
         log.info("开始渲染司法风险模块,relationId: {}", relationId);
 
@@ -78,8 +79,7 @@ public final class PublicRecordNewRender extends AbstractNewRender {
         data.put("levelInteger", counter);
         try {
             // 渲染文档
-            String resultPath =
-                this.renderDocx(data, templateFileContent, builder, relationId, "publicRecord");
+            String resultPath = this.renderDocx(data, inputStream, builder, relationId, "publicRecord");
             log.info("渲染司法风险模块成功,文件路径: {}", resultPath);
             return resultPath;
         } catch (Exception e) {

+ 4 - 4
easier-report-biz/src/main/java/com/yaoyicloud/render/platform/update/TaxNewRender.java

@@ -1,6 +1,7 @@
 package com.yaoyicloud.render.platform.update;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -46,12 +47,12 @@ public final class TaxNewRender extends AbstractNewRender {
      * Docx 渲染
      *
      * @param info 数据
-     * @param templateFileContent 模板内容
+     * @param inputStream 模板内容
      * @return 本地文件目录
      * @throws IOException
      */
 
-    public String renderDocx(String info, byte[] templateFileContent,
+    public String renderDocx(String info, InputStream inputStream,
         String relationId, Integer count) throws IOException {
         log.info("开始渲染税务风险模块,relationId: {}", relationId);
 
@@ -88,8 +89,7 @@ public final class TaxNewRender extends AbstractNewRender {
         // publicRecordSummary.putIfAbsent("suggestion", "");
         try {
             // 渲染文档
-            String resultPath =
-                this.renderDocx(data, templateFileContent, builder, relationId, "tax");
+            String resultPath = this.renderDocx(data, inputStream, builder, relationId, "tax");
             log.info("渲染税务风险模块成功,文件路径: {}", resultPath);
             return resultPath;
         } catch (Exception e) {

+ 0 - 1
easier-report-biz/src/main/java/com/yaoyicloud/service/CsoReportService.java

@@ -8,7 +8,6 @@ public interface CsoReportService {
 
     ReportGenerationResult createCsoCheckReport(
             String data,
-            byte[] templateBytes,
             Long relationId,
             ModuleType moduleType
     ) throws Exception;

+ 19 - 14
easier-report-biz/src/main/java/com/yaoyicloud/service/impl/CsoReportServiceImpl.java

@@ -5,8 +5,15 @@ import static com.yaoyicloud.config.SessionInterceptor.SESSION_MAP;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
+
+import com.amazonaws.services.s3.model.S3Object;
+import com.amazonaws.services.s3.model.S3ObjectInputStream;
+import com.yaoyicloud.easier.common.file.core.FileProperties;
+import com.yaoyicloud.easier.common.file.core.FileTemplate;
+import com.yaoyicloud.easier.common.file.oss.service.OssTemplate;
 import com.yaoyicloud.render.cso.EntAppendixRender;
 import com.yaoyicloud.render.cso.EntPromotionDetailsRender;
 import org.apache.poi.xwpf.usermodel.XWPFDocument;
@@ -32,31 +39,32 @@ public class CsoReportServiceImpl implements CsoReportService {
     private final FilerepoProperties filerepoProperties;
     private final ReportPathManager reportPathManager;
     private final CommonDataCache commonDataCache;
-
+    private final FileTemplate ossTemplate;
+    private final FileProperties properties;
     /**
      * 处理单个模块的报告生成
      */
     @SuppressWarnings("checkstyle:ParameterNumber")
     private String processModule(ModuleType moduleType, String data,
-        byte[] templateBytes, String sessionId, Long relationId) throws Exception {
+                                 InputStream inputStream, String sessionId, Long relationId) throws Exception {
         String reportPath;
 
         switch (moduleType) {
             case CSO_HEADER:
                 reportPath = new EntHeaderSectionRender(sessionId, filerepoProperties, commonDataCache)
-                    .renderDocx(data, templateBytes, String.valueOf(relationId));
+                    .renderDocx(data, inputStream, String.valueOf(relationId));
                 break;
             case CSO_PROMOTION_SUMMARY:
                 reportPath = new EntPromotionSummaryRender(sessionId, filerepoProperties, commonDataCache)
-                    .renderDocx(data, templateBytes, String.valueOf(relationId));
+                    .renderDocx(data, inputStream, String.valueOf(relationId));
                 break;
             case CSO_PROMOTION_DETAILS:
                 reportPath = new EntPromotionDetailsRender(sessionId, filerepoProperties, commonDataCache)
-                    .renderDocx(data, templateBytes, String.valueOf(relationId));
+                    .renderDocx(data, inputStream, String.valueOf(relationId));
                 break;
             case CSO_APPENDIX:
                 reportPath = new EntAppendixRender(sessionId, filerepoProperties, commonDataCache)
-                    .renderDocx(data, templateBytes, String.valueOf(relationId));
+                    .renderDocx(data, inputStream, String.valueOf(relationId));
                 break;
             default:
                 throw new UnsupportedOperationException("Unsupported module type: " + moduleType);
@@ -65,17 +73,14 @@ public class CsoReportServiceImpl implements CsoReportService {
     }
 
     @Override
-    public ReportGenerationResult createCsoCheckReport(String data, byte[] templateBytes, Long relationId,
+    public ReportGenerationResult createCsoCheckReport(String data, Long relationId,
         ModuleType moduleType) throws Exception {
-        // 1. 将字节流模版写入临时文件
-        File tempTemplateFile = File.createTempFile("template_", ".docx");
-        try (FileOutputStream fos = new FileOutputStream(tempTemplateFile)) {
-            fos.write(templateBytes);
-        }
+        //oss 获取文件
+        S3Object s3Object = ossTemplate.getObject(properties.getBucketName(), moduleType.getType() + ".docx");
+        S3ObjectInputStream objectContent = s3Object.getObjectContent();
 
         String sessionId = SESSION_MAP.get(relationId.toString());
-
-        String reportPath = processModule(moduleType, data, templateBytes, sessionId, relationId);
+        String reportPath = processModule(moduleType, data, objectContent, sessionId, relationId);
         // 处理指定模块
         reportPathManager.addReportPath(sessionId, reportPath);
 

+ 0 - 3
easier-report-biz/src/main/java/com/yaoyicloud/service/impl/ReportUpdateServiceImpl.java

@@ -33,11 +33,8 @@ import com.yaoyicloud.render.platform.update.BasicInfoNewRender;
 import com.yaoyicloud.render.platform.update.FinancialInfoNewRender;
 import com.yaoyicloud.render.platform.update.PublicRecordNewRender;
 import com.yaoyicloud.render.platform.update.TaxNewRender;
-
 import com.yaoyicloud.service.ReportUpdateService;
-
 import com.yaoyicloud.tools.DocxUtil;
-
 import org.apache.poi.xwpf.usermodel.XWPFDocument;
 import org.springframework.stereotype.Service;
 import lombok.RequiredArgsConstructor;

+ 6 - 20
easier-report-biz/src/main/resources/application.yml

@@ -42,21 +42,7 @@ spring:
         wall:
           config:
             multi-statement-allow: true
-  mail:
-    host: smtp.feishu.cn
-    port: 465
-    username: yaoyi_report@yaoyi.net
-    protocol: smtps
-    password: heY0drWAGsgGNwxX
-    properties:
-      mail:
-        smtp:
-          auth: true
-          starttls:
-            enable: true
-        ssl:
-          enable: true
-    default-encoding: utf-8
+
 
 # 端点对外暴露
 management:
@@ -98,17 +84,17 @@ mybatis-plus-join:
 
 # 文件系统
 file:
-  bucket-name: yyc3-1321096020
+  bucket-name: render-12
   local:
     enable: true
     basePath: D:/tmp
   oss:
     info: true
     enable: true
-    endpoint: cos.ap-beijing.myqcloud.com
-    region: ap-beijing
-    access-key: AKIDRilauFg4fDfE9B6tJoNxTvHSdovqXBfw
-    secret-key: 8LeAWksnUDsXAhN0WEoBMYaCvmcbmx5G
+    endpoint: oss-cn-beijing.aliyuncs.com
+    region: cn-beijing
+    access-key: LTAI5tKdzAiofJSASgbKRv69
+    secret-key: o9Qzoj54LbtUgZkai9fvIyUKSDzI3Q
     # 使用云OSS 需要关闭
     path-style-access: false
 

+ 13 - 22
pom.xml

@@ -10,9 +10,10 @@
     <name>easier-render</name>
     <description>easier-render</description>
     <modules>
-<!--        <module>easier-common</module>-->
+        <!--        <module>easier-common</module>-->
         <module>easier-report-biz</module>
         <module>easier-report-api</module>
+        <module>easier-common</module>
     </modules>
 
     <properties>
@@ -28,15 +29,12 @@
         <git.commit.version>2.2.5</git.commit.version>
         <jasypt.version>3.0.5</jasypt.version>
         <spring-boot-admin.version>2.7.14</spring-boot-admin.version>
-        <cas.sdk.version>3.6.4</cas.sdk.version>
+        <aws.version>1.11.543</aws.version>
+        <hutool.version>5.8.22</hutool.version>
     </properties>
 
     <dependencies>
-        <!--feign 依赖-->
-<!--        <dependency>-->
-<!--            <groupId>org.springframework.cloud</groupId>-->
-<!--            <artifactId>spring-cloud-starter-openfeign</artifactId>-->
-<!--        </dependency>-->
+
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-context</artifactId>
@@ -116,13 +114,6 @@
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-starter-web</artifactId>
                 <version>${spring-boot.version}</version>
-<!--                <exclusions>-->
-<!--                    &lt;!&ndash;排除tomcat依赖&ndash;&gt;-->
-<!--                    <exclusion>-->
-<!--                        <artifactId>spring-boot-starter-tomcat</artifactId>-->
-<!--                        <groupId>org.springframework.boot</groupId>-->
-<!--                    </exclusion>-->
-<!--                </exclusions>-->
             </dependency>
 
 
@@ -228,19 +219,19 @@
                 <artifactId>protobuf-maven-plugin</artifactId>
                 <version>0.6.1</version>
                 <configuration>
-                <!--
-                <protocExecutable>/usr/local/bin/protoc</protocExecutable>
-                -->
+                    <!--
+                    <protocExecutable>/usr/local/bin/protoc</protocExecutable>
+                    -->
                     <clearOutputDirectory>false</clearOutputDirectory>
                     <protoSourceRoot>${project.basedir}/src/main/proto</protoSourceRoot>
                     <outputDirectory>${project.basedir}/src/main/java</outputDirectory>
                 </configuration>
                 <executions>
-                <execution>
-                    <goals>
-                    <goal>compile</goal>
-                    </goals>
-                </execution>
+                    <execution>
+                        <goals>
+                            <goal>compile</goal>
+                        </goals>
+                    </execution>
                 </executions>
             </plugin>
         </plugins>