From 77556842bbe4f4c55513a50fb51f8a5622018f4a Mon Sep 17 00:00:00 2001
From: wujianwei <wjw@11.com>
Date: 星期二, 09 九月 2025 14:56:45 +0800
Subject: [PATCH] 新增接口

---
 service/src/main/java/com/ruoyi/cwgl/service/impl/DispatchOrderServiceImpl.java |   61 +++++++++++++++++-------------
 1 files changed, 34 insertions(+), 27 deletions(-)

diff --git a/service/src/main/java/com/ruoyi/cwgl/service/impl/DispatchOrderServiceImpl.java b/service/src/main/java/com/ruoyi/cwgl/service/impl/DispatchOrderServiceImpl.java
index 602e6f3..dc5a30e 100644
--- a/service/src/main/java/com/ruoyi/cwgl/service/impl/DispatchOrderServiceImpl.java
+++ b/service/src/main/java/com/ruoyi/cwgl/service/impl/DispatchOrderServiceImpl.java
@@ -1,6 +1,10 @@
 package com.ruoyi.cwgl.service.impl;
 
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
 import java.lang.reflect.Method;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.List;
 import java.math.BigDecimal;
@@ -12,7 +16,13 @@
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.PageUtil;
 import com.github.pagehelper.Page;
+import com.itextpdf.text.Document;
+import com.itextpdf.text.Font;
+import com.itextpdf.text.PageSize;
+import com.itextpdf.text.pdf.BaseFont;
+import com.itextpdf.text.pdf.PdfWriter;
 import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.config.RuoYiConfig;
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.utils.DateUtils;
 import javax.annotation.Resource;
@@ -23,6 +33,7 @@
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.cwgl.domain.vo.DispatchOrderVo;
 import com.ruoyi.cwgl.enums.FeeTypeEnums;
+import com.ruoyi.cwgl.utils.MultiPagePdfWithImageUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import com.ruoyi.cwgl.domain.DispatchOrderItem;
@@ -284,50 +295,35 @@
     @DataSource(DataSourceType.CWSJ)
     public List<DispatchOrderItemVo> selectDispatchOrderItems( Set<String> nos) {
         // 浣跨敤Map鏉ヤ复鏃跺瓨鍌ㄥ垎缁勭粨鏋�
-        Map<String, DispatchOrderItemVo> summaryMap = new HashMap<>();
-
+        List<DispatchOrderItemVo> vos = new ArrayList<>();
         List<DispatchOrderItem> dispatchOrderItems=dispatchOrderMapper.selectDispatchOrderItemByNos(nos);
-        Set<String> settableFeeItemSet = null;
         for (DispatchOrderItem dispatchOrderItem : dispatchOrderItems) {
-            String settableFeeItems = dispatchOrderItem.getSettableFeeItems();
-            if (settableFeeItemSet==null) {
-                settableFeeItemSet = new HashSet<>(
-                        Arrays.asList(settableFeeItems.split(",")));
-            }
+            HashSet<String> settableFeeItemSet = new HashSet<>(
+                    Arrays.asList(Optional.ofNullable(dispatchOrderItem.getSettableFeeItems()).orElse("").split(",")));
+
             // 鍒ゆ柇鏄惁鍙粨绠�
-            String feeItem = dispatchOrderItem.getFeeItem();
-            int isSettable = isFeeItemSettable(feeItem, settableFeeItemSet);
+            String feeItem = Optional.ofNullable(dispatchOrderItem.getFeeItem()).orElse("");
+            int isSettable = settableFeeItemSet.contains(feeItem)?1:0;
             // 濡傛灉Map涓笉瀛樺湪璇ヨ垂鐢ㄧ被鍨嬶紝鍒欏垱寤烘柊鏉$洰
-            if (!summaryMap.containsKey(feeItem)) {
+
                 DispatchOrderItemVo summary = new DispatchOrderItemVo();
                 summary.setDispatchNo(dispatchOrderItem.getDispatchNo());
                 summary.setFeeItem(feeItem);
                 summary.setReceivableFee(BigDecimal.ZERO);
                 summary.setActualFee(BigDecimal.ZERO);
                 summary.setIsSettlement(isSettable);
-                summaryMap.put(feeItem, summary);
-            }
-            // 鏍规嵁璐﹀崟绫诲瀷绱姞閲戦
-            DispatchOrderItemVo summary = summaryMap.get(feeItem);
+
             if ("R".equals(dispatchOrderItem.getBillType())) { // 搴旀敹
-                summary.setReceivableFee(summary.getReceivableFee().add(dispatchOrderItem.getSettleFee()));
+                summary.setReceivableFee(dispatchOrderItem.getSettleFee());
                 summary.setReceivableFeeCurrency(dispatchOrderItem.getCurrencyType());
             } else if ("P".equals(dispatchOrderItem.getBillType())) { // 搴斾粯
-                summary.setActualFee(summary.getActualFee().add(dispatchOrderItem.getSettleFee()));
+                summary.setActualFee(dispatchOrderItem.getSettleFee());
                 summary.setActualFeeCurrency(dispatchOrderItem.getCurrencyType());
 
             }
+            vos.add( summary);
         }
-        // 杞崲涓篖ist骞惰繃婊ゃ�佹帓搴�
-        return summaryMap.values().stream()
-                // 杩囨护鎺夊簲鏀跺簲浠橀兘涓�0鐨勮褰�
-                .filter(dto -> dto.getReceivableFee().compareTo(BigDecimal.ZERO) != 0
-                        || dto.getActualFee().compareTo(BigDecimal.ZERO) != 0)
-                // 鎺掑簭锛氬彲缁撶畻鐨勫湪鍓嶏紝涓嶅彲缁撶畻鐨勫湪鍚庯紱鐒跺悗鎸夋�婚噾棰濋檷搴�
-                .sorted(Comparator.comparing(DispatchOrderItemVo::getIsSettlement).reversed()
-                        .thenComparing(dto -> dto.getReceivableFee().add(dto.getActualFee()),
-                                Comparator.reverseOrder()))
-                .collect(Collectors.toList());
+        return vos;
     }
 
 
@@ -491,4 +487,15 @@
     public List<DispatchOrderAttachmentVo> selectDispatchOrderAttachment(String no) {
         return dispatchOrderMapper.selectDispatchOrderAttachment(no);
     }
+
+    @DataSource(DataSourceType.CWSJ)
+    @Override
+    public String  downAttachment(String no) throws Exception {
+        List<DispatchOrderAttachmentVo> dispatchOrderAttachmentVos = selectDispatchOrderAttachment(no);
+        return MultiPagePdfWithImageUtils.createPdf(dispatchOrderAttachmentVos, no);
+    }
+
+
+
+
 }

--
Gitblit v1.8.0