huangtf 2 лет назад
Родитель
Сommit
4e89fe6ac6

+ 3 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/ArchiveFile.java

@@ -261,4 +261,7 @@ public class ArchiveFile extends BaseEntity {
 	 */
 	@ApiModelProperty("数据源类型,1原生,2数字化")
 	private Integer sourceType;
+
+	@ApiModelProperty("打了页码的pdf文件")
+	private String pdfPageUrl;
 }

+ 12 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchivesAutoController.java

@@ -252,6 +252,18 @@ public class ArchivesAutoController extends BladeController {
 		return R.data("");
 	}
 
+	/**
+	 * 预览案卷文件
+	 */
+	@GetMapping("/printArchive")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "预览案卷文件")
+	public R printArchive(Long id) {
+		//统计案卷文件大小
+		String url = archivesAutoService.getMergeArchivesFile(id);
+		return R.data(url);
+	}
+
 
 
 }

+ 3 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/service/IArchiveAutoPdfService.java

@@ -25,4 +25,7 @@ public interface IArchiveAutoPdfService {
 
     //只刷新档号
     boolean refreshFileNumber(ArchivesAuto archive,String fileNumber);
+
+    //合并pdf
+    String MergePdfAndUpload(List<String> urlList,String fileName) ;
 }

+ 2 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/service/IArchivesAutoService.java

@@ -54,4 +54,6 @@ public interface IArchivesAutoService extends BaseService<ArchivesAuto> {
 	void archiveAutoMethod(Long project);
 
 	void splitArchvies(Long project);
+
+	public String getMergeArchivesFile(Long archiveId);
 }

+ 26 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveAutoPdfServiceImpl.java

@@ -265,7 +265,7 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
 
         List<String> pageUrls = FileUtils.doForPageNumberUseItextpdf(urls,newIOSSClient);
         for(int i=0;i<waitArchiveFiles.size();i++){
-            waitArchiveFiles.get(i).setPdfFileUrl(pageUrls.get(i));
+            waitArchiveFiles.get(i).setPdfPageUrl(pageUrls.get(i));
         }
 
         return;
@@ -734,4 +734,29 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
         return true;
     }
 
+    /**
+     * 合并pdf并上传到oss
+     * @param urlList
+     * @param fileName
+     * @return
+     */
+    public String MergePdfAndUpload(List<String> urlList,String fileName) {
+       String url = "";
+       Long id = SnowFlakeUtil.getId();
+       String trialPdf = FileUtils.LocalPath + "/pdf/" + id + ".pdf";
+
+       try {
+            //合并pdf
+            FileUtils.mergePdfPublicMethods(urlList,trialPdf);
+            //上传到oss
+            BladeFile file  = newIOSSClient.uploadFile(fileName+ ".pdf",trialPdf);
+            url = file.getLink();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return url;
+    }
+
+
+
 }

+ 61 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -27,14 +27,17 @@ import org.apache.commons.lang.StringUtils;
 import org.springblade.archive.entity.ArchivesAuto;
 import org.springblade.archive.service.IArchiveAutoPdfService;
 import org.springblade.archive.utils.ArchiveTreeUtil;
+import org.springblade.archive.utils.FileUtils;
 import org.springblade.archive.vo.ArchivesAutoVO;
 import org.springblade.archive.mapper.ArchivesAutoMapper;
 import org.springblade.archive.service.IArchivesAutoService;
 import org.springblade.business.entity.ArchiveFile;
 import org.springblade.business.feign.ArchiveFileClient;
+import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.oss.model.BladeFile;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.manager.entity.ArchiveTreeContract;
@@ -951,5 +954,63 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		this.updateBatchById(changeList);
 	}
 
+	/**
+	 *	获取案卷合成pdf文件
+	 * @param archiveId
+	 * @return
+	 */
+	public String getMergeArchivesFile(Long archiveId){
+		String url = "";
+
+		List<String> urlList= new ArrayList<>();//合成pdf集合
+
+		ArchivesAuto archivesAuto = this.getById(archiveId);
+
+		//判断archivesAuto是否为空
+		if (archivesAuto == null){
+			return url;
+		}
+		String outUrl = archivesAuto.getOutUrl();
+		//判断outUrl是否为空
+		String[] frontUrls = null;
+		if (StringUtils.isNotEmpty(outUrl)){
+			frontUrls = outUrl.split(",");
+		}
+
+		List<String> fileUrls =new ArrayList<>();
+		if (!archivesAuto.isMedia()) {
+			List<ArchiveFile> result = this.archiveFileClient.getArchiveFileByArchivesId(archivesAuto.getId().toString(),"");
+			if(result != null && result.size() > 0){
+				//循环访问result,如果pdfpageurl不为空则取出,否则取pdffileurl
+				for (ArchiveFile archiveFile : result) {
+					String pdfPageUrl = archiveFile.getPdfPageUrl();
+					if (StringUtils.isEmpty(pdfPageUrl)) {
+						fileUrls.add(archiveFile.getPdfFileUrl());
+					}else{
+						fileUrls.add(pdfPageUrl);
+					}
+				}
+			}
+		}
+
+		if (fileUrls.size() > 0){
+			//此处暂时这么处理,等oss上传接口里文件名可以区分后,再单独取
+			if (frontUrls != null && frontUrls.length > 3){
+				urlList.add(frontUrls[0]);
+				urlList.add(frontUrls[1]);
+			}
+
+			urlList.addAll(fileUrls);
+
+			if (frontUrls != null && frontUrls.length > 3){
+				urlList.add(frontUrls[2]);
+				urlList.add(frontUrls[3]);
+			}
+
+			url = archiveAutoPdfService.MergePdfAndUpload(urlList,archivesAuto.getName());
+		}
+		return  url;
+	}
+
 
 }

+ 1 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.xml

@@ -54,6 +54,7 @@
         <result column="page_num" property="pageNum"/>
         <result column="file_size" property="fileSize"/>
         <result column="source_type" property="sourceType"/>
+        <result column="pdf_page_url" property="pdfPageUrl"/>
     </resultMap>
     <update id="recoveryByIds">
         update u_archive_file set is_deleted = 0 where