From 9e1a75cb81c360ab1d2046fd98bd73b643d2b503 Mon Sep 17 00:00:00 2001
From: fei <791364011@qq.com>
Date: 星期二, 14 十月 2025 16:55:02 +0800
Subject: [PATCH] 修改了对应的代码
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/archive/archiveAllExportController.java | 345 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 330 insertions(+), 15 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/archive/archiveAllExportController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/archive/archiveAllExportController.java
index 7936234..3f7963e 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/archive/archiveAllExportController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/archive/archiveAllExportController.java
@@ -8,15 +8,10 @@
import com.itextpdf.text.pdf.PdfWriter;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.utils.file.FileUtils;
-import com.ruoyi.common.utils.poi.ExcelExp;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.common.utils.poi.ExcelUtilManySheet;
-import com.ruoyi.common.utils.poi.ExcelUtilManySheetSecond;
+import com.ruoyi.common.utils.poi.*;
+import com.ruoyi.domain.ArchiveRecords;
import com.ruoyi.domain.DocumentMaterials;
-import com.ruoyi.domain.vo.ArchiveInfoVo;
-import com.ruoyi.domain.vo.DocumentMaterialsVo;
-import com.ruoyi.domain.vo.DocumentMaterialsVoLarge;
-import com.ruoyi.domain.vo.DocumentMaterialsVoSmall;
+import com.ruoyi.domain.vo.*;
import com.ruoyi.framework.web.domain.server.Sys;
import com.ruoyi.service.IArchiveRecordsService;
import com.ruoyi.service.IDocumentMaterialsService;
@@ -30,6 +25,7 @@
import org.apache.poi.xssf.usermodel.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -43,6 +39,8 @@
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.List;
import java.util.stream.Collectors;
@@ -121,7 +119,320 @@
+ @PostMapping("/exportChooseArchive/{ids}")
+ public void exportChooseArchive(HttpServletResponse response, @PathVariable Long[] ids)throws Exception
+ {
+ //璁$畻鏂囦欢鐨勫ぇ灏�
+ Double siz = 0.0;
+ for(int i = 0; i < ids.length; i++) {
+ // 鑾峰彇鏂囦欢鐨勪繚瀛樹綅缃�,璇诲彇鏁版嵁搴�,
+ DocumentMaterials documentMaterials = new DocumentMaterials();
+ documentMaterials.setRecordId(ids[i]);
+ List<DocumentMaterialsVoLarge> docs = documentMaterialsService.selectDocumentMaterialsAllByRecordId(ids[i]);
+ System.out.println(docs.size()+"----009");
+ for (DocumentMaterialsVoLarge dc : docs) {
+ if(dc!=null)
+ siz += dc.getFileSize()!=null?dc.getFileSize():0;
+ }
+ }
+ System.out.println(siz/1000);
+ //鍒ゆ柇鏄惁澶т簬4G锛屾槸鐨勮瘽锛岀洿鎺ユ姏鍑哄紓甯�
+ System.out.println("092939932");
+ String zipFileName ="test" +".zip";
+ //鐢熸垚鍘嬬缉鍖呭瓨鍌ㄥ湴鍧�锛堟渶鍚庝細鍒犳帀锛�
+ String fileZip = RuoYiConfig.getProfile() + "/download/" + zipFileName;
+ OutputStream os=null;
+ ZipOutputStream zos = null ;
+ System.out.println("==============_______________");
+ System.out.println(ids.length);
+ File file = new File(fileZip);
+ try {
+ if (!file.getParentFile().exists()) {
+ file.getParentFile().mkdirs();
+ }
+ os = new FileOutputStream(file);
+ //鍘嬬缉鏂囦欢
+ zos = new ZipOutputStream(os);
+ //鎷垮埌褰撳墠鐨勬椂闂�
+ LocalDate date = LocalDate.now();
+ System.out.println("褰撳墠鏃ユ湡: " + date);
+
+
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
+ String formattedDate = date.format(formatter);
+ System.out.println(formattedDate);
+ String fna = "GH"+20250908+"/";
+ zos.putNextEntry(new ZipEntry(fna));
+
+
+ //娣诲姞ids鐨勫叏閮ㄦ暟鎹埌excel
+ ArchiveRecords archiveRecords = new ArchiveRecords();
+ archiveRecords.setIds(ids);
+ List<ArchiveRecords> lis = iArchiveRecordsService.selectArchiveRecordsList(archiveRecords);
+ //妗堝嵎鐩綍瀵煎嚭
+ ZipEntry entry = new ZipEntry("妗堝嵎鐩綍" + ".xls");
+ ExcelUtil<ArchiveRecords> util = new ExcelUtil<ArchiveRecords>(ArchiveRecords.class);
+
+ zos.putNextEntry(entry);
+ ByteOutputStream bos = new ByteOutputStream();
+ util.byteOutputStreamExcel(bos, lis,"妗堝嵎鐩綍", "");
+ bos.writeTo(zos);
+
+ //绉讳氦娓呭崟
+ List<ArchiveRecordSmall> lrs = iArchiveRecordsService.findByIds(archiveRecords);
+ System.out.println(lrs);
+ System.out.println("99999999990000");
+ ZipEntry entry1 = new ZipEntry("绉讳氦娓呭崟" + ".xls");
+ ExcelUtil<ArchiveRecordSmall> util1 = new ExcelUtil<ArchiveRecordSmall>(ArchiveRecordSmall.class);
+
+
+
+ ExcelExp e6 = new ExcelExp("绉讳氦娓呭崟",lrs, ArchiveRecordSmall.class);
+ // ExcelExp e4 = new ExcelExp("妗堝嵎灏侀潰", arsi, recordId1, imgr1,sedcode, ArchiveInfoVo.class);
+ List<ExcelExp> mysheet6 = new ArrayList<ExcelExp>();
+ mysheet6.add(e6);
+ // mysheet1.add(e4);
+ ByteOutputStream bos6 = new ByteOutputStream();
+ ExcelUtilManySheetThird<List<ExcelExp>> util6 = new ExcelUtilManySheetThird<List<ExcelExp>>(mysheet6);
+
+ util6.exportExcelManySheet(bos6, mysheet6);
+
+ // System.out.println(bos2);
+ zos.putNextEntry(entry1);
+ // ByteOutputStream bos1 = new ByteOutputStream();
+ // util6.byteOutputStreamExcel(bos1, lrs,"绉讳氦娓呭崟", "");
+ bos6.writeTo(zos);
+
+
+
+
+ for(int i = 0; i < ids.length; i++) {
+
+ // 鑾峰彇鏂囦欢鐨勪繚瀛樹綅缃�,璇诲彇鏁版嵁搴�,
+ DocumentMaterials documentMaterials = new DocumentMaterials();
+ documentMaterials.setRecordId(ids[i]);
+ List<DocumentMaterialsVoLarge> docs = documentMaterialsService.selectDocumentMaterialsAllByRecordId(ids[i]);
+ System.out.println(docs.size()+"----009");
+
+
+ //.selectDocumentMaterialsList(documentMaterials);
+ List<DocumentMaterialsVo> dsvs = documentMaterialsService.findArchMInfo(ids[i].toString());
+ ArchiveInfoVo aIV = iArchiveRecordsService.selectByRecordId(ids[i]);
+
+ String adir = aIV.getInquiryNumber() + " " + aIV.getRecordId();
+ System.out.println(fna+adir);
+ zos.putNextEntry(new ZipEntry(fna + adir + "/"));
+
+ //鍦ㄩ噷闈㈡坊鍔犳枃浠�
+ boolean res = true;
+ if(res) {
+ zos.putNextEntry(new ZipEntry(fna + adir + "/01-鐢宠鏉愭枡/"));
+ zos.putNextEntry(new ZipEntry(fna + adir + "/02-鍔炴杩囩▼鏉愭枡/"));
+ zos.putNextEntry(new ZipEntry(fna + adir + "/03-缁撹鎬ф枃浠�/"));
+ zos.putNextEntry(new ZipEntry(fna + adir + "/04-鍏朵粬鏉愭枡/"));
+ zos.putNextEntry(new ZipEntry(fna + adir + "/05-妗f鍙樻洿鏉愭枡/"));
+ zos.putNextEntry(new ZipEntry(fna + adir + "/06-涓氬姟鏁版嵁/"));
+ res = false;
+ }
+ //娣诲姞07 鐨刾df
+ //pdf鐩綍灏侀潰
+ String pdfPathF = "07-妗堝嵎灏侀潰.pdf";
+ pdfGenerateService.generatePdf(pdfPathF, ids[i]);
+ // 2. 鍘嬬缉PDF鍒癦IP鏂囦欢
+ // 娣诲姞PDF鏂囦欢鍒癦IP
+ ZipEntry zipEntry2 = new ZipEntry(fna + adir +"/"+pdfPathF);
+ zos.putNextEntry(zipEntry2);
+
+ // 璇诲彇PDF鏂囦欢鍐呭骞跺啓鍏IP
+ try (FileInputStream fis = new FileInputStream(pdfPathF)) {
+ byte[] buffer = new byte[1024];
+ int len;
+ while ((len = fis.read(buffer)) > 0) {
+ zos.write(buffer, 0, len);
+ }
+ }
+
+ //08-鍗峰唴鍗峰唴鐩綍鐨刾df
+ String pdf08Path= "08-鍗峰唴鐩綍.pdf";
+ List<DocumentMaterialsVo> list3 = dsvs;
+ if(list3.size()>0) {
+ pdfGenerateService.generateFileDirectoryPdf(pdf08Path, list3);
+ ZipEntry zipEntry3 = new ZipEntry(fna + adir +"/"+pdf08Path);
+ zos.putNextEntry(zipEntry3);
+
+ // 璇诲彇PDF鏂囦欢鍐呭骞跺啓鍏IP
+ try (FileInputStream fis = new FileInputStream(pdf08Path)) {
+ byte[] buffer = new byte[1024];
+ int len;
+ while ((len = fis.read(buffer)) > 0) {
+ zos.write(buffer, 0, len);
+ }
+ }
+ }
+ //09-澶囪�冭〃.pdf
+ String pdf09Path = "09-澶囪�冭〃.pdf";
+ pdfGenerateService.generateFileStyleInfo(pdf09Path, aIV.getRecordId(), ids[i]);
+ // 2. 鍘嬬缉PDF鍒癦IP鏂囦欢
+ // 娣诲姞PDF鏂囦欢鍒癦IP
+ ZipEntry zipEntry4 = new ZipEntry(fna + adir +"/"+pdf09Path);
+ zos.putNextEntry(zipEntry4);
+
+ // 璇诲彇PDF鏂囦欢鍐呭骞跺啓鍏IP
+ try (FileInputStream fis = new FileInputStream(pdf09Path)) {
+ byte[] buffer = new byte[1024];
+ int len;
+ while ((len = fis.read(buffer)) > 0) {
+ zos.write(buffer, 0, len);
+ }
+ }
+
+ //excel 鍗峰唴灏侀潰瀵煎嚭zip
+ ZipEntry entryiv = new ZipEntry(fna + adir +"/"+"妗堝嵎灏侀潰" + ".xls");
+
+ List<ArchiveInfoVo> arsi = new ArrayList<>();
+ arsi.add(aIV);
+
+ String recordId1 = aIV.getRecordId();
+ byte[] imgr1 = barcodeService.generateBarcodeImage(recordId1);
+ byte[] sedcode = pdfGenerateService.createQrCodeN(recordId1, 30, 30);
+ ExcelExp e3 = new ExcelExp("妗堝嵎灏侀潰鏁版嵁",arsi, ArchiveInfoVo.class);
+ ExcelExp e4 = new ExcelExp("妗堝嵎灏侀潰", arsi, recordId1, imgr1,sedcode, ArchiveInfoVo.class);
+ List<ExcelExp> mysheet1 = new ArrayList<ExcelExp>();
+ mysheet1.add(e3);
+ mysheet1.add(e4);
+ ByteOutputStream bos2 = new ByteOutputStream();
+ ExcelUtilManySheetSecond<List<ExcelExp>> util3 = new ExcelUtilManySheetSecond<List<ExcelExp>>(mysheet1);
+
+ util3.exportExcelManySheet(bos2, mysheet1);
+
+ // System.out.println(bos2);
+ zos.putNextEntry(entryiv);
+
+// ExcelUtil<ArchiveInfoVo> utilsv = new ExcelUtil<ArchiveInfoVo>(ArchiveInfoVo.class);
+//
+//
+// ByteOutputStream boss = new ByteOutputStream();
+// List<ArchiveInfoVo> aivs = new ArrayList<>();
+// aivs.add(aIV);
+// utilsv.byteOutputStreamExcel(boss, aivs,"Date List", "");
+ bos2.writeTo(zos);
+
+
+
+ //鍐欏叆鐢靛瓙鐩綍 xsxl
+
+ ZipEntry entry5 = new ZipEntry(fna + adir +"/"+"鐢靛瓙鏂囦欢鐩綍" + ".xls");
+ ExcelUtil<DocumentMaterialsVoLarge> util5 = new ExcelUtil<DocumentMaterialsVoLarge>(DocumentMaterialsVoLarge.class);
+
+ zos.putNextEntry(entry5);
+ ByteOutputStream bos5 = new ByteOutputStream();
+ util5.byteOutputStreamExcel(bos5, docs,"鐢靛瓙鏂囦欢鐩綍", "");
+ bos5.writeTo(zos);
+
+ //鎷垮埌鍗峰唴鐩綍鐨別xcel
+ List<DocumentMaterialsVoSmall> list2 = dsvs.stream().map(res1 -> new DocumentMaterialsVoSmall(res1.getNum(), res1.getDocumentNumber(),res1.getCreator(),
+ res1.getTitle(), res1.getDate(), res1.getPageNumber(), res1.getRemarks())).collect(Collectors.toList());
+ if(!dsvs.isEmpty()) {
+ String recordId = dsvs.get(0).getRecordId();
+ byte[] imgr = barcodeService.generateBarcodeImage(recordId);
+ ExcelExp e1 = new ExcelExp("鍗峰唴鐩綍鏁版嵁", dsvs, DocumentMaterialsVo.class);
+ ExcelExp e2 = new ExcelExp("鍗峰唴鏁版嵁", list2, recordId, imgr, DocumentMaterialsVoSmall.class);
+ List<ExcelExp> mysheet = new ArrayList<ExcelExp>();
+ mysheet.add(e1);
+ mysheet.add(e2);
+ ExcelUtilManySheet<List<ExcelExp>> util2 = new ExcelUtilManySheet<List<ExcelExp>>(mysheet);
+ ZipEntry entr = new ZipEntry(fna + adir + "/" + "鍗峰唴鐩綍" + ".xls");
+ // ExcelUtil<DocumentMaterialsVo> util1 = new ExcelUtil<DocumentMaterialsVo>(DocumentMaterialsVo.class);
+ System.out.println(dsvs);
+ zos.putNextEntry(entr);
+ ByteOutputStream bos8 = new ByteOutputStream();
+
+ util2.exportExcelManySheet(bos6, mysheet);
+
+ // util1.byteOutputStreamExcel(bos1, dsvs,"Date List", "");
+ bos8.writeTo(zos);
+ }
+ //鎶奺xcel杞负pdf
+
+
+
+ byte[] buf = new byte[1024];
+ for (DocumentMaterialsVoLarge dc : docs) {
+ String filePath = dc.getUrl();
+ if(filePath==null)
+ continue;
+ filePath = filePath.replace("/profile/", RuoYiConfig.getProfile() + "/");
+
+ System.out.println(filePath);
+ File tempFile = new File(filePath);
+
+ //鍦ㄥ帇缂╁寘涓坊鍔犳枃浠跺す
+
+ //寰楀埌鏂囦欢鍚峟rontCompWithZore(4, dc.get)+
+ String fname = frontCompWithZore(4, dc.getFileNumber().intValue())+"-"+dc.getTitle()+"-"+frontCompWithZore(4,dc.getPageNumber().intValue())+"."
+ +dc.getUrl().split("\\.")[1];
+ if(dc.getStage().equals("01-鐢宠鏉愭枡"))
+ zos.putNextEntry(new ZipEntry(fna + adir + "/01-鐢宠鏉愭枡/"+fname));
+ else if(dc.getStage().equals("02-鍔炴杩囩▼鏉愭枡"))
+ zos.putNextEntry(new ZipEntry(fna + adir + "/02-鍔炴杩囩▼鏉愭枡/"+fname));
+ else if(dc.getStage().equals("03-缁撹鎬ф枃浠�"))
+ zos.putNextEntry(new ZipEntry(fna + adir + "/03-缁撹鎬ф枃浠�/"+fname));
+ else if(dc.getStage().equals("04-鍏朵粬鏉愭枡")) {
+ zos.putNextEntry(new ZipEntry(fna + adir + "/04-鍏朵粬鏉愭枡/" + fname));
+ }
+ else if(dc.getStage().equals("05-妗f鍙樻洿鏉愭枡"))
+ zos.putNextEntry(new ZipEntry(fna + adir + "/05-妗f鍙樻洿鏉愭枡/"+fname));
+ else if(dc.getStage().equals("06-涓氬姟鏁版嵁"))
+ zos.putNextEntry(new ZipEntry(fna + adir + "/06-涓氬姟鏁版嵁/"+fname));
+ else
+ zos.putNextEntry(new ZipEntry(fna + adir + "/"+fname));
+
+
+
+ int len;
+ FileInputStream in = new FileInputStream(tempFile);
+ while ((len = in.read(buf)) != -1){
+ zos.write(buf, 0, len);
+ }
+ // zos.putNextEntry(new ZipEntry("04-鍏朵粬鏉愭枡"));
+ zos.closeEntry();
+ in.close();
+ }
+ }
+
+ //鍒犻櫎鍘嬬缉鍖�
+// if(file.exists()){
+// file.delete();
+// }
+
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }finally {
+ //鍏抽棴娴�
+ if(zos != null){
+ try {
+ zos.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ //鍏抽棴娴�
+ if(os!= null){
+ try {
+ os.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ System.out.println(file.getName());
+ System.out.println(file.getTotalSpace());
+ // file.
+ writeFileToRes(response, file.getName(), file);
+
+ }
@@ -133,9 +444,9 @@
* @param response
* @param
*/
- @PostMapping("/export")
+ @PostMapping("/export/{id}")
- public void packDownload(HttpServletResponse response, Long id) throws Exception {
+ public void packDownload(HttpServletResponse response, @PathVariable Long id) throws Exception {
// 鑾峰彇鏂囦欢鐨勪繚瀛樹綅缃�,璇诲彇鏁版嵁搴�,
DocumentMaterials documentMaterials = new DocumentMaterials();
documentMaterials.setRecordId(id);
@@ -170,6 +481,7 @@
System.out.println(file.getName());
String fileName =aIV.getRecordId()+".zip";
+
//杈撳嚭鏂囦欢娴�
writeFileToRes(response, file.getName(), file);
//鍒犻櫎鍘嬬缉鍖�
@@ -184,8 +496,9 @@
String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
String filePath = RuoYiConfig.getDownloadPath() + fileName;
-
-
+ if(file.exists())
+ System.out.println("322329323232323");
+ System.out.println(filePath+"0009999999999");
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
FileUtils.setAttachmentResponseHeader(response, realFileName);
FileUtils.writeBytes(filePath, response.getOutputStream());
@@ -252,8 +565,8 @@
zos = new ZipOutputStream(os);
//pdf鐩綍灏侀潰
- String pdfPathF = "07-鍗烽潰灏侀潰.pdf";
- pdfGenerateService.generatePdf(pdfPathF);
+ String pdfPathF = "07-妗堝嵎灏侀潰.pdf";
+ pdfGenerateService.generatePdf(pdfPathF, 55L);
// 2. 鍘嬬缉PDF鍒癦IP鏂囦欢
// 娣诲姞PDF鏂囦欢鍒癦IP
ZipEntry zipEntry = new ZipEntry(pdfPathF);
@@ -303,7 +616,7 @@
//excel 鍗峰唴灏侀潰瀵煎嚭zip
- ZipEntry entryiv = new ZipEntry("鍗峰唴灏侀潰" + ".xls");
+ ZipEntry entryiv = new ZipEntry("妗堝嵎灏侀潰" + ".xls");
List<ArchiveInfoVo> arsi = new ArrayList<>();
arsi.add(aIV);
@@ -374,6 +687,8 @@
byte[] buf = new byte[1024];
for (DocumentMaterialsVoLarge dc : docs) {
String filePath = dc.getUrl();
+ if(filePath==null)
+ continue;
filePath = filePath.replace("/profile/", RuoYiConfig.getProfile() + "/");
System.out.println(filePath);
--
Gitblit v1.9.1