From 75fb721ba216a37250651c97e72ae90f82f0db8d Mon Sep 17 00:00:00 2001
From: guoyujie <guoyujie@ng.com>
Date: 星期一, 15 十二月 2025 14:08:06 +0800
Subject: [PATCH] 修改文件上传既能上传dwg文件,又能上传图片文件

---
 north-glass-erp/src/main/java/com/example/erp/service/sd/OrderFileService.java |  139 +++++++++++++++++++++++++++++++++-------------
 1 files changed, 99 insertions(+), 40 deletions(-)

diff --git a/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderFileService.java b/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderFileService.java
index 5aa1675..e15bb07 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderFileService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderFileService.java
@@ -2,6 +2,7 @@
 
 import com.aspose.cad.Image;
 import com.aspose.cad.ImageOptionsBase;
+import com.aspose.cad.License;
 import com.aspose.cad.imageoptions.CadRasterizationOptions;
 import com.aspose.cad.imageoptions.PngOptions;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -17,6 +18,7 @@
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -31,7 +33,7 @@
         result = orderDetails.stream()
                 .collect(Collectors.collectingAndThen(
                         Collectors.toMap(
-                                map -> map.get("order_id") + "_" + map.get("order_number"),
+                                map -> map.get("order_id"),
                                 map -> map,
                                 (existing, replacement) -> existing // 淇濈暀绗竴涓嚭鐜扮殑
                         ),
@@ -40,62 +42,119 @@
         //寰幆鑾峰彇鍥剧墖
         List<OrderFile> orderFiles = new ArrayList<>();
         for (Map<String,Object> obj : result) {
-            OrderFile orderFile = orderFileMapper.selectOne(new QueryWrapper<OrderFile>()
+            List<OrderFile> orderFile = orderFileMapper.selectList(new QueryWrapper<OrderFile>()
                     .select("order_id, order_number, image_base64")
                     .eq("order_id", obj.get("order_id"))
-                    .eq("order_number", obj.get("order_number"))
             );
             if (orderFile != null){
-                orderFiles.add(orderFile);
+                orderFiles.addAll(orderFile);
             }
         }
        return orderFiles;
     }
 
-    public Object updateOrderFileByOrderNumber(MultipartFile file,String orderId,String orderNumber) throws IOException {
+    public Object updateOrderFileByOrderNumber(MultipartFile file,String name,String orderId,String orderNumber) throws IOException {
+       //鍒ゆ柇鏄惁瑙勫畾鐨勬牸寮忓悗缂�鍚�
+        if(!isAllowedFile(name)){
+           return null;
+       }
 
-        // 璋冪敤Image绫荤殑Load鏂规硶鏉ュ姞杞借緭鍏ョ殑DWG鏂囦欢銆�
-        Image image = Image.load(file.getInputStream());
-        // 鍒涘缓CadRasterizationOptions瀹炰緥浠ュ惎鐢–AD鏍呮牸鍖栭�夐」銆�
-        CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
-        // 璁剧疆瀹藉害
-        rasterizationOptions.setPageWidth(1000);
-        // 璁剧疆楂樺害
-        rasterizationOptions.setPageHeight(1000);
-        // 璋冪敤杩欎釜setEmbedBackground鏂规硶鏉ヨ缃儗鏅壊鏄惁涓嶇瓑浜庤緭鍑烘牸寮忕殑榛樿鑳屾櫙鑹�
-        rasterizationOptions.setEmbedBackground(true);
-        // 涓虹敓鎴愮殑鍥惧儚鍒涘缓涓�涓狿ngOptions鐨勫疄渚嬶紝骞跺皢鍏跺垎閰嶇粰ImageOptionsBase绫荤殑瀹炰緥銆�
-        ImageOptionsBase options = new PngOptions();
-        // 璋冪敤 setVectorRasterizationOptions 鏂规硶鏉ュ畾涔夊厜鏍呭寲閫夐」
-        options.setVectorRasterizationOptions(rasterizationOptions);
 
-        // 淇濆瓨鍒板瓧鑺傛祦
-        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-        image.save(outputStream, options);
-        byte[] imageBytes = outputStream.toByteArray();
-        String base64 = "data:image/png;base64," + Base64.getEncoder().encodeToString(imageBytes);
-        OrderFile orderFile = new OrderFile();
-        orderFile.setImageBase64(base64);
-        orderFile.setFileName(file.getName());
-        orderFile.setOrderId(orderId);
-        orderFile.setOrderNumber(orderNumber);
-        orderFile.setFileData(Arrays.toString(file.getBytes()));
+        try (InputStream is = License.class.getResourceAsStream("/lisence.xml")) {
+            String base64 = null;
+            if(name.toLowerCase().endsWith(".dwg")){
 
-        OrderFile orderFileExist = orderFileMapper
-                .selectOne(new LambdaQueryWrapper<OrderFile>()
+                License license = new License();
+                license.setLicense(is);
+
+
+                // 璋冪敤Image绫荤殑Load鏂规硶鏉ュ姞杞借緭鍏ョ殑DWG鏂囦欢銆�
+                Image image = Image.load(file.getInputStream());
+                // 鍒涘缓CadRasterizationOptions瀹炰緥浠ュ惎鐢–AD鏍呮牸鍖栭�夐」銆�
+                CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
+                // 璁剧疆瀹藉害
+                rasterizationOptions.setPageWidth(1000);
+                // 璁剧疆楂樺害
+                rasterizationOptions.setPageHeight(700);
+                // 璋冪敤杩欎釜setEmbedBackground鏂规硶鏉ヨ缃儗鏅壊鏄惁涓嶇瓑浜庤緭鍑烘牸寮忕殑榛樿鑳屾櫙鑹�
+                //rasterizationOptions.setEmbedBackground(true);
+                // 涓虹敓鎴愮殑鍥惧儚鍒涘缓涓�涓狿ngOptions鐨勫疄渚嬶紝骞跺皢鍏跺垎閰嶇粰ImageOptionsBase绫荤殑瀹炰緥銆�
+                ImageOptionsBase options = new PngOptions();
+                // 璋冪敤 setVectorRasterizationOptions 鏂规硶鏉ュ畾涔夊厜鏍呭寲閫夐」
+                options.setVectorRasterizationOptions(rasterizationOptions);
+
+                // 淇濆瓨鍒板瓧鑺傛祦
+                ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+                image.save(outputStream, options);
+                byte[] imageBytes = outputStream.toByteArray();
+                base64 = "data:image/png;base64," + Base64.getEncoder().encodeToString(imageBytes);
+            }else{
+                base64 = "data:image/png;base64," + Base64.getEncoder().encodeToString(file.getBytes());
+            }
+
+            OrderFile orderFile = new OrderFile();
+            orderFile.setImageBase64(base64);
+            orderFile.setFileName(file.getName());
+            orderFile.setOrderId(orderId);
+            orderFile.setOrderNumber(orderNumber);
+            orderFile.setFileData(Arrays.toString(file.getBytes()));
+
+            OrderFile orderFileExist = orderFileMapper
+                    .selectOne(new LambdaQueryWrapper<OrderFile>()
+                            .eq(OrderFile::getOrderId, orderId)
+                            .eq(OrderFile::getOrderNumber, orderNumber)
+                    );
+            if (orderFileExist == null) {
+                orderFileMapper.insert(orderFile);
+            }else {
+                orderFileMapper.update(orderFile,new LambdaUpdateWrapper<OrderFile>()
                         .eq(OrderFile::getOrderId, orderId)
                         .eq(OrderFile::getOrderNumber, orderNumber)
                 );
-        if (orderFileExist == null) {
-            orderFileMapper.insert(orderFile);
-        }else {
-            orderFileMapper.update(orderFile,new LambdaUpdateWrapper<OrderFile>()
-                    .eq(OrderFile::getOrderId, orderId)
-                    .eq(OrderFile::getOrderNumber, orderNumber)
-            );
+            }
+
+
+            return orderFile;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
         }
 
 
-        return base64;
+
+
+    }
+
+    public Object getOrderNumberFile(String orderId, String orderNumber) {
+        return orderFileMapper.selectOne(new QueryWrapper<OrderFile>()
+                    .eq("order_id", orderId)
+                    .eq("order_number", orderNumber)
+                );
+    }
+
+    public Boolean deleteOrderNumberFile(String orderId, String orderNumber) {
+        return orderFileMapper.delete(new QueryWrapper<OrderFile>()
+                    .eq("order_id", orderId)
+                    .eq("order_number", orderNumber)
+                ) > 0;
+    }
+
+    public static boolean isAllowedFile(String fileName) {
+        List<String> allowedExtensions = Arrays.asList(".dwg", ".png", ".jpg");
+        if (fileName == null || fileName.isEmpty()) {
+            return false;
+        }
+
+        String lowerFileName = fileName.toLowerCase();
+
+        for (String ext : allowedExtensions) {
+            if (!ext.startsWith(".")) {
+                ext = "." + ext;
+            }
+            if (lowerFileName.endsWith(ext)) {
+                return true;
+            }
+        }
+        return false;
     }
 }

--
Gitblit v1.8.0