|
@@ -3,8 +3,16 @@ package com.yaoyicloud.service.impl;
|
|
|
import java.io.File;
|
|
|
import java.io.FileOutputStream;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
+import com.deepoove.poi.data.NumberingFormat;
|
|
|
+import com.deepoove.poi.data.NumberingRenderData;
|
|
|
+import com.deepoove.poi.data.ParagraphRenderData;
|
|
|
+import com.deepoove.poi.data.Pictures;
|
|
|
+import com.deepoove.poi.data.Texts;
|
|
|
import com.yaoyicloud.constant.enums.ReportType;
|
|
|
import com.yaoyicloud.service.ReportService;
|
|
|
import com.yaoyicloud.template.PlatformCompanyReport;
|
|
@@ -27,29 +35,133 @@ public class ReportServiceImpl implements ReportService {
|
|
|
// private final FoundationReport foundationReport;
|
|
|
private final PlatformCompanyReport platformCompanyReport;
|
|
|
|
|
|
-
|
|
|
@Override
|
|
|
public String createPlusVersionCheckReport(
|
|
|
- ReportType reportType, Map<String, Object> data, byte[] templateBytes, String outputBasePath, Long relationId) throws Exception {
|
|
|
+ ReportType reportType, Map<String, Object> data, byte[] templateBytes, String outputBasePath, Long relationId)
|
|
|
+ throws Exception {
|
|
|
|
|
|
// 1. 将字节流模版写入临时文件
|
|
|
File tempTemplateFile = File.createTempFile("template_", ".docx");
|
|
|
try (FileOutputStream fos = new FileOutputStream(tempTemplateFile)) {
|
|
|
fos.write(templateBytes);
|
|
|
}
|
|
|
+ // 2.数据处理主要附件以及图片列表 针对raw数据封装poi-tl 1.12
|
|
|
+ String docurl1 = (String) data.get("docurl1");
|
|
|
+ data.put("docurl1", Texts.of(docurl1).link(docurl1).create());
|
|
|
+
|
|
|
+ if (data.containsKey("docurl1Text")) {
|
|
|
+ int i = 2;
|
|
|
+ while (data.containsKey("docurl" + i)) {
|
|
|
+ String url = (String) data.get("docurl" + i);
|
|
|
+ if (StrUtil.isNotBlank(url)) {
|
|
|
+ data.put("docurl" + i, Texts.of(url).link(url).create());
|
|
|
+ }
|
|
|
+ i++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ String socialSecurityDetailsLink = (String) data.get("socialSecurityDetailsLink");
|
|
|
+ data.put("socialSecurityDetailsLink", Texts.of(socialSecurityDetailsLink).link(socialSecurityDetailsLink).create());
|
|
|
+
|
|
|
+ String taxDeclarationImage = (String) data.get("taxDeclarationImage");
|
|
|
+ data.put("taxDeclarationImage", Texts.of(taxDeclarationImage).link(taxDeclarationImage).create());
|
|
|
+
|
|
|
+ String financialInfoLink = (String) data.get("financialInfoLink");
|
|
|
+ data.put("financialInfoLink", Texts.of(financialInfoLink).link(financialInfoLink).create());
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ List<ParagraphRenderData> paragraphImages = new ArrayList<>();
|
|
|
+ List<Map<String, Object>> relatedEntitiesImage = (List<Map<String, Object>>) data.get("relatedEntitiesImage");
|
|
|
+ for (Map<String, Object> relatedEntity : relatedEntitiesImage) {
|
|
|
+ ParagraphRenderData paragraphRenderData = new ParagraphRenderData();
|
|
|
+ paragraphRenderData.addPicture(Pictures.of((String) relatedEntity.get("url"))
|
|
|
+ .size((Integer) relatedEntity.get("width"), (Integer) relatedEntity.get("height")).create());
|
|
|
+ paragraphImages.add(paragraphRenderData);
|
|
|
+ }
|
|
|
+ NumberingFormat numberingFormat = new NumberingFormat(1, "");
|
|
|
+ NumberingRenderData numberedImages = new NumberingRenderData(
|
|
|
+ numberingFormat,
|
|
|
+ paragraphImages);
|
|
|
+ data.put("relatedEntitiesImage", numberedImages);
|
|
|
+
|
|
|
+
|
|
|
+// 处理 businessLicenseImage
|
|
|
+ processImageListToNumberedRenderData("businessLicenseImage", data);
|
|
|
+
|
|
|
+// 处理 bankCertificateImage
|
|
|
+ processImageListToNumberedRenderData("bankCertificateImage", data);
|
|
|
+
|
|
|
+// 处理 isoCertificationImage
|
|
|
+ processImageListToNumberedRenderData("isoCertificationImage", data);
|
|
|
+
|
|
|
+// 处理 securityLevelCertification
|
|
|
+ processImageListToNumberedRenderData("securityLevelCertification", data);
|
|
|
|
|
|
+// 处理 otherCertifications
|
|
|
+ processImageListToNumberedRenderData("otherCertifications", data);
|
|
|
+
|
|
|
+// 处理 organizationalStructureImage
|
|
|
+ processImageListToNumberedRenderData("organizationalStructureImage", data);
|
|
|
+
|
|
|
+// 处理 taxPaymentCertificateImage
|
|
|
+ processImageListToNumberedRenderData("taxPaymentCertificateImage", data);
|
|
|
+
|
|
|
+// 处理 nsxydjwj
|
|
|
+ processImageListToNumberedRenderData("nsxydjwj", data);
|
|
|
+
|
|
|
+// 处理 interestConflict
|
|
|
+ processImageListToNumberedRenderData("interestConflict", data);
|
|
|
+
|
|
|
+// 处理 disanfangcangzhao
|
|
|
+ processImageListToNumberedRenderData("disanfangcangzhao", data);
|
|
|
+
|
|
|
+// 处理 overallGuaranteeStatement
|
|
|
+ processImageListToNumberedRenderData("overallGuaranteeStatement", data);
|
|
|
switch (reportType) {
|
|
|
case PLATFORM_COMPANY:
|
|
|
return platformCompanyReport.exportReport(
|
|
|
- data,
|
|
|
- tempTemplateFile.getAbsolutePath(),
|
|
|
- outputBasePath,
|
|
|
- relationId
|
|
|
- );
|
|
|
+ data,
|
|
|
+ tempTemplateFile.getAbsolutePath(),
|
|
|
+ outputBasePath,
|
|
|
+ relationId);
|
|
|
case ACADEMIC_ASSOCIATIONS:
|
|
|
// 其他类型处理...
|
|
|
default:
|
|
|
throw new UnsupportedOperationException("Unsupported report type: " + reportType);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ private void processImageListToNumberedRenderData(String key, Map<String, Object> data) {
|
|
|
+ // 从 data 中获取原始图片数据列表
|
|
|
+ List<Map<String, Object>> rawImageDataList = (List<Map<String, Object>>) data.get(key);
|
|
|
+
|
|
|
+ if (rawImageDataList == null || rawImageDataList.isEmpty()) {
|
|
|
+ String textKey = key + "Text";
|
|
|
+ if (data.containsKey(textKey)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // 处理非空图片数据
|
|
|
+ List<ParagraphRenderData> paragraphImages = new ArrayList<>();
|
|
|
+ for (Map<String, Object> imageInfo : rawImageDataList) {
|
|
|
+ ParagraphRenderData paragraphRenderData = new ParagraphRenderData();
|
|
|
+ // 从原始数据中获取图片属性
|
|
|
+ String url = (String) imageInfo.get("url");
|
|
|
+ Integer width = (Integer) imageInfo.get("width");
|
|
|
+ Integer height = (Integer) imageInfo.get("height");
|
|
|
+
|
|
|
+ // 添加图片到段落渲染数据
|
|
|
+ paragraphRenderData.addPicture(Pictures.of(url)
|
|
|
+ .size(width, height)
|
|
|
+ .create());
|
|
|
+ paragraphImages.add(paragraphRenderData);
|
|
|
+ }
|
|
|
+
|
|
|
+ NumberingFormat numberingFormat = new NumberingFormat(1, "");
|
|
|
+ NumberingRenderData numberedImages = new NumberingRenderData(numberingFormat, paragraphImages);
|
|
|
+ data.put(key, numberedImages);
|
|
|
+ }
|
|
|
}
|