From 80e73d98a876af4b6c9efff7c74e908b056d8f4e Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期三, 26 十一月 2025 11:28:39 +0800
Subject: [PATCH] 添加生产报表默认查询时间相关配置部分代码

---
 north-glass-erp/src/main/java/com/example/erp/service/sd/OrderFileService.java |  125 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 125 insertions(+), 0 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
new file mode 100644
index 0000000..116db21
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderFileService.java
@@ -0,0 +1,125 @@
+package com.example.erp.service.sd;
+
+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;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.example.erp.common.Result;
+import com.example.erp.entity.sd.OrderDetail;
+import com.example.erp.entity.sd.OrderFile;
+import com.example.erp.mapper.sd.OrderFileMapper;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+@RequiredArgsConstructor
+public class OrderFileService {
+    private final OrderFileMapper orderFileMapper;
+    public List<OrderFile> getOrderFilePicture(List<Map<String,Object>> orderDetails) throws NoSuchFieldException {
+        Set<String> seenKeys = new HashSet<>();
+        List<Map<String,Object>> result = new ArrayList<>();
+        // 閬嶅巻璁㈠崟璇︽儏鍒楄〃鍘婚噸
+        result = orderDetails.stream()
+                .collect(Collectors.collectingAndThen(
+                        Collectors.toMap(
+                                map -> map.get("order_id"),
+                                map -> map,
+                                (existing, replacement) -> existing // 淇濈暀绗竴涓嚭鐜扮殑
+                        ),
+                        map -> new ArrayList<>(map.values())
+                ));
+        //寰幆鑾峰彇鍥剧墖
+        List<OrderFile> orderFiles = new ArrayList<>();
+        for (Map<String,Object> obj : result) {
+            List<OrderFile> orderFile = orderFileMapper.selectList(new QueryWrapper<OrderFile>()
+                    .select("order_id, order_number, image_base64")
+                    .eq("order_id", obj.get("order_id"))
+            );
+            if (orderFile != null){
+                orderFiles.addAll(orderFile);
+            }
+        }
+       return orderFiles;
+    }
+
+    public Object updateOrderFileByOrderNumber(MultipartFile file,String orderId,String orderNumber) throws IOException {
+
+        try (InputStream is = License.class.getResourceAsStream("/lisence.xml")) {
+            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();
+            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()));
+
+            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)
+                );
+            }
+
+
+            return orderFile;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    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;
+    }
+}

--
Gitblit v1.8.0