guoyujie
15 小时以前 75fb721ba216a37250651c97e72ae90f82f0db8d
north-glass-erp/src/main/java/com/example/erp/service/sd/OrderFileService.java
@@ -53,33 +53,45 @@
       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;
       }
        try (InputStream is = License.class.getResourceAsStream("/lisence.xml")) {
            License license = new License();
            license.setLicense(is);
            String base64 = null;
            if(name.toLowerCase().endsWith(".dwg")){
                License license = new License();
                license.setLicense(is);
            // 调用Image类的Load方法来加载输入的DWG文件。
            Image image = Image.load(file.getInputStream());
            // 创建CadRasterizationOptions实例以启用CAD栅格化选项。
            CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
            // 设置宽度
            rasterizationOptions.setPageWidth(1000);
            // 设置高度
            rasterizationOptions.setPageHeight(700);
            // 调用这个setEmbedBackground方法来设置背景色是否不等于输出格式的默认背景色
            //rasterizationOptions.setEmbedBackground(true);
            // 为生成的图像创建一个PngOptions的实例,并将其分配给ImageOptionsBase类的实例。
            ImageOptionsBase options = new PngOptions();
            // 调用 setVectorRasterizationOptions 方法来定义光栅化选项
            options.setVectorRasterizationOptions(rasterizationOptions);
                // 调用Image类的Load方法来加载输入的DWG文件。
                Image image = Image.load(file.getInputStream());
                // 创建CadRasterizationOptions实例以启用CAD栅格化选项。
                CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
                // 设置宽度
                rasterizationOptions.setPageWidth(1000);
                // 设置高度
                rasterizationOptions.setPageHeight(700);
                // 调用这个setEmbedBackground方法来设置背景色是否不等于输出格式的默认背景色
                //rasterizationOptions.setEmbedBackground(true);
                // 为生成的图像创建一个PngOptions的实例,并将其分配给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);
                // 保存到字节流
                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());
@@ -107,6 +119,10 @@
            e.printStackTrace();
            return null;
        }
    }
    public Object getOrderNumberFile(String orderId, String orderNumber) {
@@ -122,4 +138,23 @@
                    .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;
    }
}