From 2d59c3e55978bd93741dae7a8ff21cf63b9ecf25 Mon Sep 17 00:00:00 2001
From: fei <791364011@qq.com>
Date: 星期三, 14 一月 2026 21:16:57 +0800
Subject: [PATCH] 修改了对应代码

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/archive/archiveAllExportController.java |  193 +++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 181 insertions(+), 12 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 ad3a559..d3900de 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
@@ -517,16 +517,176 @@
             for(int i = 0; i < ids.length; i++) {
                 System.out.println(ids[i]);
                 ArchiveRecords archiveRecords1 = iArchiveRecordsService.selectArchiveRecordsById(ids[i]);
+                ArchiveInfoVo aIV = iArchiveRecordsService.selectByRecordId(ids[i]);
                 // 鑾峰彇鏂囦欢鐨勪繚瀛樹綅缃�,璇诲彇鏁版嵁搴�,
                 DocumentMaterials documentMaterials = new DocumentMaterials();
                 documentMaterials.setRecordId(ids[i]);
-                List<DocumentMaterialsVoLarge> docs = documentMaterialsService.selectDocumentMaterialsAllByRecordId(ids[i]);
-                System.out.println(docs.size()+"----7777");
+
+                //鐢熸垚鏂扮殑璁板綍锛屼笉淇濆瓨鍐嶆暟鎹簱
+                List<DocumentMaterials> docAllInfo = documentMaterialsService.SelectAllRecordsByPageNumbersToList(ids[i], archiveRecords1.getPageCount());
+                //鎶奃ocumentMaterils杞埌docs
+                List<DocumentMaterialsVoLarge> docs = new ArrayList<>();
+                int nstar = 1;
+                for (DocumentMaterials mater : docAllInfo) {
+                    // physcialService.mySave(physcial);
+                    DocumentMaterialsVoLarge docum = new DocumentMaterialsVoLarge();
+                    BeanUtils.copyProperties(mater, docum);
+                    docum.setRecordId(archiveRecords1.getRecordId());
+                    docum.setNum(nstar++);
+                    docs.add(docum);
+                }
+
+
+
+                //鎶婇檮浠跺拰璁板綍涓�涓�瀵瑰簲
+                String fileSysPath = RuoYiConfig.getUploadPath();
+                AjaxResult ajax = AjaxResult.success();
+                String path = fileSysPath + File.separator + ids[i];
+                File desc = new File(fileSysPath + File.separator + ids[i]);
+                System.out.println("44444444444444456666666666666666");
+                if (!desc.exists())
+                {
+                    throw new RuntimeException("鐢靛瓙鏂囦欢淇℃伅娌℃湁涓婁紶锛岃琛ュ厖锛�");
+                }
+
+
+                Map<String, String> fileMap = new HashMap<>();
+                try (Stream<Path> paths = Files.walk(Paths.get(path))) {
+                    fileMap = paths
+                            .filter(Files::isRegularFile)
+                            .collect(Collectors.toMap(
+                                    // Key: 鏂囦欢鍚嶅墠缂�锛堜笉甯︽墿灞曞悕锛�
+                                    Path -> {
+                                        String fileNam = Path.getFileName().toString();
+                                        int dotIndex = fileNam.lastIndexOf('.');
+                                        return dotIndex > 0 ? fileNam.substring(0, dotIndex) : fileNam;
+                                    },
+                                    // Value: 鏂囦欢鍏ㄨ矾寰�
+                                    Path::toString,
+                                    // 澶勭悊閲嶅閿殑鎯呭喌锛堝鏋滄湁鐩稿悓鍓嶇紑鐨勬枃浠讹級
+                                    (existing, replacement) -> existing
+                            ));
+
+                }
+
+
+                //閲嶆柊灏佽涓�涓媎ocs,鍜岄檮浠剁粦瀹氬啀涓�璧�
+
+                for (int k = 0; k < docs.size(); k++) {
+                    DocumentMaterialsVoLarge dc = docs.get(k);
+                    if (dc.getSecurityLevel() != null && (dc.getSecurityLevel().equals("璇ラ〉鍙﹀瓨") ||
+                            dc.getSecurityLevel().equals("绉樺瘑") || dc.getSecurityLevel().equals("鍐呴儴鐢ㄩ��") ||
+                            dc.getSecurityLevel().equals("鍐呴儴鐢ㄥ浘"))) {
+                        // 鏇挎崲涓轰簡鍑嗗濂界殑鍥惧儚
+                        String fp = fileSysPath + "\\glc.jpg";
+                        Path path1 = Paths.get(fp);
+                        // 鎷垮埌鍥惧儚灞炴��
+                        BufferedImage bufferedImage = ImageIO.read(Files.newInputStream(path1));
+                        int wid = bufferedImage.getWidth();
+                        int hei = bufferedImage.getHeight();
+                        double sz = Double.parseDouble(String.format("%.2f", Files.size(path1) * 1.0 / 1024));
+
+                        // 鎷垮埌鍥惧儚鐨刣pi淇℃伅
+                        ImageInfo info = Imaging.getImageInfo(Files.readAllBytes(path1));
+                        int wdpi = info.getPhysicalWidthDpi();
+                        int hdpi = info.getPhysicalHeightDpi();
+
+                        // 璁$畻fileNumber
+                        //    Long fileNumber = documentMaterialsService.getFiNum(nam, recordId);
+                        // 璁$畻sizeType
+                        String sizeType = getPageSize(wid * hei);
+
+                        Graphics2D g2d = bufferedImage.createGraphics();
+                        g2d.setFont(new java.awt.Font("瀹嬩綋", Font.BOLD, 80)); // 璁剧疆瀛椾綋鏍峰紡鍜屽ぇ灏�
+                        g2d.setColor(Color.black);
+                        String pageNumber = dc.getPageNumber() + "";
+                        int fontHeight = g2d.getFontMetrics().getHeight();
+                        int x = bufferedImage.getWidth() - g2d.getFontMetrics().stringWidth(pageNumber) - 80;
+                        int y = bufferedImage.getHeight() - fontHeight / 2 - 100;
+                        g2d.drawString(pageNumber, x, y);
+                        g2d.dispose();
+
+                        // 灏咮ufferedImage杞崲涓篗ultipartFile
+                        MultipartFile multipartFile = null;
+                        ByteArrayOutputStream ost = new ByteArrayOutputStream();
+                        ImageIO.write(bufferedImage, "jpg", ost);
+                        InputStream input = new ByteArrayInputStream(ost.toByteArray());
+                        multipartFile = new MockMultipartFile(pageNumber, pageNumber + ".jpg", "text/plain", input);
+
+                        // 涓婁紶骞惰繑鍥炴柊鏂囦欢鍚嶇О
+                        String fileName1 = FileUploadUtils.upload(fileSysPath, multipartFile);
+                        // filePath = fileName1;
+                        dc.setWidth((long) wid);
+                        dc.setHeight((long) hei);
+                        dc.setFileSize(sz);
+                        dc.setFormat(".jpg");
+                        dc.setHorizontalResolution((long) wdpi);
+                        dc.setVerticalResolution((long) hdpi);
+                        dc.setSizeType(sizeType);
+                        fileMap.put(dc.getPageNumber()+"", fp);
+                        //   dc.set
+                        // 鏇存柊鏁版嵁搴�
+                        //   documentMaterialsService.updateByPageNumber(nam, sizeType, fileNumber, wid, hei, wdpi, hdpi, sz, fileName1, "jpg", recordId);
+
+//                        urls.add(serverConfig.getUrl() + fileName1);
+//                        fileNames.add(fileName1);
+//                        newFileNames.add(FileUtils.getName(fileName1));
+//                        originalFilenames.add(pageNumber + ".jpg");
+                    }
+                    else {
+                        //鏂囦欢鍚嶇О
+                        //  String pname = nams[1];
+                        //   ajax.put("url", url);
+                        //鎷垮埌鍥惧儚灞炴��
+                        System.out.println(dc.getPageNumber());
+                        String fip = fileMap.get(dc.getPageNumber().toString());
+// 鍒涘缓 File 瀵硅薄
+                        File fils = new File(fip);
+
+// 浣跨敤 ImageIO 璇诲彇鍥剧墖
+                        BufferedImage image = ImageIO.read(fils);
+                        BufferedImage bufferedImage = ImageIO.read(fils);
+                        int wid = bufferedImage.getWidth();
+                        int hei = bufferedImage.getHeight();
+                        double sz =  Double.parseDouble(String.format("%.2f", fils.length()*1.0/1024));
+                        System.out.println(wid+":"+hei+":"+sz);
+                        //鎷垮埌鍥惧儚鐨刣pi淇℃伅
+                        byte[] bytesArray = new byte[(int) fils.length()];
+
+                        FileInputStream fis = new FileInputStream(fils);
+                        fis.read(bytesArray); //read file into bytes[]
+
+                        ImageInfo info = Imaging.getImageInfo(bytesArray);
+
+
+                        int wdpi = info.getPhysicalWidthDpi() ;
+                        int hdpi = info.getPhysicalHeightDpi();
+                        //      System.out.println("DPI: " + info.getPhysicalWidthDpi()+nam+"dds");
+
+                        fis.close();
+                        //璁$畻fileNumber
+                        //  Long fileNumber = documentMaterialsService.getFiNum(dc.getPageNumber(), id);
+                        //璁$畻sizeType
+                        String sizeType = getPageSize(wid*hei);
+
+                        dc.setWidth((long) wid);
+                        dc.setHeight((long) hei);
+                        dc.setFileSize(sz);
+                        dc.setFormat(".jpg");
+                        dc.setHorizontalResolution((long) wdpi);
+                        dc.setVerticalResolution((long) hdpi);
+                        dc.setSizeType(sizeType);
+                    }
+                }
+
+                List<DocumentMaterialsVo> dsvs = documentMaterialsService.findArchMInfo(ids[i].toString(), archiveRecords1.getPageCount());
+
+//                List<DocumentMaterialsVoLarge> docs = documentMaterialsService.selectDocumentMaterialsAllByRecordId(ids[i]);
+//                System.out.println(docs.size()+"----7777");
 
 
                 //.selectDocumentMaterialsList(documentMaterials);
-                List<DocumentMaterialsVo> dsvs = documentMaterialsService.findArchMInfo(ids[i].toString(), archiveRecords1.getPageCount());
-                ArchiveInfoVo aIV = iArchiveRecordsService.selectByRecordId(ids[i]);
+
                 System.out.println(aIV.getInquiryNumber());
                 System.out.println(aIV.getRecordId());
                 String adir = aIV.getInquiryNumber() + " " + aIV.getRecordId();
@@ -929,10 +1089,10 @@
 
                 byte[] buf = new byte[1024];
                 for (DocumentMaterialsVoLarge dc : docs) {
-                    String filePath = dc.getUrl();
+                    String filePath = fileMap.get(dc.getPageNumber().toString());
                     if(filePath==null)
                         continue;
-                    filePath = filePath.replace("/profile/", RuoYiConfig.getProfile() + "/");
+                //    filePath = filePath.replace("/profile/", RuoYiConfig.getProfile() + "/");
 
                     System.out.println(filePath);
                     File tempFile = new File(filePath);
@@ -944,7 +1104,7 @@
                     String fname = "";
                     if(dc.getFileNumber()!=null&&dc.getPageNumber()!=null) {
                         fname = frontCompWithZore(4, dc.getFileNumber().intValue()) + "-" + dc.getTitle() + "-" + frontCompWithZore(4, dc.getPageNumber().intValue()) + "."
-                                + dc.getUrl().split("\\.")[1];
+                                + filePath.split("\\.")[1];
                         if (dc.getStage().equals("01-鐢宠鏉愭枡"))
                             zos.putNextEntry(new ZipEntry(fna + adir + "/01-鐢宠鏉愭枡/" + fname));
                         else if (dc.getStage().equals("02-鍔炴杩囩▼鏉愭枡"))
@@ -1019,16 +1179,19 @@
     public void packDownload(HttpServletResponse response,  @PathVariable Long id) throws Exception {
 
 
-
         // 鑾峰彇鏂囦欢鐨勪繚瀛樹綅缃�,璇诲彇鏁版嵁搴�,
         DocumentMaterials documentMaterials = new DocumentMaterials();
         documentMaterials.setRecordId(id);
-     //   List<DocumentMaterialsVoLarge> docs = documentMaterialsService.selectDocumentMaterialsAllByRecordId(id);
+        //   List<DocumentMaterialsVoLarge> docs = documentMaterialsService.selectDocumentMaterialsAllByRecordId(id);
         //鏍规嵁id鎷垮埌pageNumber
         ArchiveInfoVo aIV = iArchiveRecordsService.selectByRecordId(id);
-        System.out.println(aIV.getPageCount()+"++++++++++++++++==");
+        System.out.println(aIV.getPageCount() + "++++++++++++++++==");
         //鐢熸垚鏂扮殑璁板綍锛屼笉淇濆瓨鍐嶆暟鎹簱
         List<DocumentMaterials> docAllInfo = documentMaterialsService.SelectAllRecordsByPageNumbersToList(id, aIV.getPageCount());
+        if (docAllInfo==null||docAllInfo.isEmpty())
+        {
+            throw new RuntimeException("璇疯ˉ鍏呭畬鏁翠俊鎭紝鐒跺悗瀵煎嚭ISO鍖咃紒");
+        }
         //鎶奃ocumentMaterils杞埌docs
         List<DocumentMaterialsVoLarge> docs = new ArrayList<>();
         int nstar = 1;
@@ -1148,6 +1311,12 @@
                 System.out.println(dc.getPageNumber());
                 String fip = fileMap.get(dc.getPageNumber().toString());
 // 鍒涘缓 File 瀵硅薄
+                if(fip==null||fip.equals(""))
+                {
+                    throw new RuntimeException("鐢靛瓙鏂囦欢淇℃伅娌℃湁涓婁紶瀹屾暣锛岃琛ュ厖锛�");
+
+
+                }
                 File file = new File(fip);
 
 // 浣跨敤 ImageIO 璇诲彇鍥剧墖
@@ -1733,10 +1902,10 @@
                 String fname = "";
              //   if(dc.getFileNumber()!=null&&dc.getPageNumber()!=null) {
 
-                    if(dc.getPageNumber()!=null) {
+                    if(dc.getFileNumber()!=null&&dc.getPageNumber()!=null) {
                     //    fname = frontCompWithZore(4, dc.getFileNumber().intValue()) + "-" + dc.getTitle() + "-" + frontCompWithZore(4, dc.getPageNumber().intValue()) + "."
                           //      + filePath.split("\\.")[1];
-                    fname = "-" + dc.getTitle() + "-" + frontCompWithZore(4, dc.getPageNumber().intValue()) + "."
+                    fname = frontCompWithZore(4, dc.getFileNumber().intValue()) +"-" + dc.getTitle() + "-" + frontCompWithZore(4, dc.getPageNumber().intValue()) + "."
                             + filePath.split("\\.")[1];
 
                     System.out.println(fname);

--
Gitblit v1.9.1