From a8e4132c3e2e9c3b3fcb0360901b35571b6464ea Mon Sep 17 00:00:00 2001
From: hsy <1029150275@qq.com>
Date: 星期五, 28 八月 2026 10:13:01 +0800
Subject: [PATCH] feat: 综合业务模块功能补充与实体拓展

---
 src/main/java/com/ruoyi/projectManagement/service/impl/InfoServiceImpl.java |   75 +++++++++++++++++++++++++++++++++++--
 1 files changed, 71 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/ruoyi/projectManagement/service/impl/InfoServiceImpl.java b/src/main/java/com/ruoyi/projectManagement/service/impl/InfoServiceImpl.java
index 2c21be4..d1f1897 100644
--- a/src/main/java/com/ruoyi/projectManagement/service/impl/InfoServiceImpl.java
+++ b/src/main/java/com/ruoyi/projectManagement/service/impl/InfoServiceImpl.java
@@ -18,12 +18,23 @@
 import com.ruoyi.projectManagement.vo.ListInfoVo;
 import com.ruoyi.projectManagement.vo.SaveInfoVo;
 import com.ruoyi.projectManagement.vo.SearchInfoVo;
+import com.ruoyi.projectManagement.vo.AttachmentGroupVo;
 import com.ruoyi.sales.pojo.SalesLedgerProduct;
+import com.ruoyi.sales.pojo.SalesLedger;
+import com.baomidou.mybatisplus.extension.toolkit.Db;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.basic.dto.StorageAttachmentDTO;
+import com.ruoyi.basic.dto.StorageBlobVO;
+import com.ruoyi.basic.enums.RecordTypeEnum;
+import com.ruoyi.basic.service.StorageAttachmentService;
 import com.ruoyi.sales.service.ISalesLedgerService;
+import com.ruoyi.sales.pojo.SalesLawsuit;
+import com.ruoyi.sales.service.ISalesLawsuitService;
 import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.Assert;
 
 import java.util.List;
 import java.util.concurrent.CompletableFuture;
@@ -42,6 +53,8 @@
     private final ContractInfoHandleService contractInfoHandleService;
     private final ShippingAddressHandleService shippingAddressHandleService;
     private final ISalesLedgerService salesLedgerService;
+    private final StorageAttachmentService storageAttachmentService;
+    private final ISalesLawsuitService salesLawsuitService;
 
 
     @Transactional(rollbackFor = Exception.class)
@@ -103,25 +116,79 @@
         CompletableFuture<SaveInfoDto> infoFuture = CompletableFuture.supplyAsync(() -> infoHandleService.getInfoById(id));
         CompletableFuture<ContractInfoDto> contractFuture = CompletableFuture.supplyAsync(() -> contractInfoHandleService.getByInfoId(id));
         CompletableFuture<ShippingAddressDto> shippingFuture = CompletableFuture.supplyAsync(() -> shippingAddressHandleService.getByInfoId(id));
+        // 鍟嗗搧
         CompletableFuture<List<SalesLedgerProduct>> listCompletableFuture = CompletableFuture.supplyAsync(() -> salesLedgerService.getSalesLedgerProductListByRelateId(id,SaleEnum.MANAGEMENT));
 
-        // 鍟嗗搧
+        // 涓嬬骇椤圭洰淇℃伅
+        CompletableFuture<List<SaveInfoDto>> subordinateInfoListFuture = CompletableFuture.supplyAsync(() -> infoHandleService.getSubordinateInfo(id));
+
 
         // 绛夊緟鎵�鏈夊紓姝ュ畬鎴�
-        CompletableFuture.allOf(infoFuture, contractFuture, shippingFuture).join();
+        CompletableFuture.allOf(infoFuture, contractFuture, shippingFuture,listCompletableFuture,subordinateInfoListFuture).join();
 
         SaveInfoDto info = infoFuture.get();
         ContractInfoDto contract = contractFuture.get();
         ShippingAddressDto shippingAddress = shippingFuture.get();
         List<SalesLedgerProduct> salesLedgerProductList = listCompletableFuture.get();
-
+        List<SaveInfoDto> saveInfoDtos = subordinateInfoListFuture.get();
         InfoVo vo = new InfoVo();
         vo.setInfo(info);
         vo.setContractInfo(contract);
         vo.setShippingAddress(shippingAddress);
         vo.setSalesLedgerProductList(salesLedgerProductList);
-
+        vo.setSubordinateInfoList(saveInfoDtos);
         return vo;
     }
 
+    @Override
+    public List<AttachmentGroupVo> getProjectAttachments(Long id) {
+        List<AttachmentGroupVo> result = new java.util.ArrayList<>();
+        
+        // 椤圭洰绠$悊闄勪欢
+        StorageAttachmentDTO infoDto = new StorageAttachmentDTO();
+        infoDto.setRecordType(RecordTypeEnum.INFO.getType());
+        infoDto.setRecordId(id);
+        List<StorageBlobVO> infoFiles = storageAttachmentService.list(infoDto);
+        if (infoFiles != null && !infoFiles.isEmpty()) {
+            result.add(new AttachmentGroupVo("椤圭洰绠$悊", infoFiles));
+        }
+
+        // 閿�鍞彴璐﹂檮浠�
+        List<SalesLedger> ledgers = salesLedgerService.list(Wrappers.<SalesLedger>lambdaQuery().eq(SalesLedger::getProjectId, id));
+        if (ledgers != null && !ledgers.isEmpty()) {
+            List<StorageBlobVO> ledgerFiles = new java.util.ArrayList<>();
+            for (SalesLedger ledger : ledgers) {
+                StorageAttachmentDTO dto = new StorageAttachmentDTO();
+                dto.setRecordType(RecordTypeEnum.SALES_LEDGER.getType());
+                dto.setRecordId(ledger.getId());
+                List<StorageBlobVO> files = storageAttachmentService.list(dto);
+                if (files != null && !files.isEmpty()) {
+                    ledgerFiles.addAll(files);
+                }
+            }
+            if (!ledgerFiles.isEmpty()) {
+                result.add(new AttachmentGroupVo("閿�鍞彴璐�", ledgerFiles));
+            }
+        }
+
+        // 璇夎绠$悊闄勪欢
+        List<SalesLawsuit> lawsuits = salesLawsuitService.list(Wrappers.<SalesLawsuit>lambdaQuery().eq(SalesLawsuit::getProjectId, id));
+        if (lawsuits != null && !lawsuits.isEmpty()) {
+            List<StorageBlobVO> lawsuitFiles = new java.util.ArrayList<>();
+            for (SalesLawsuit lawsuit : lawsuits) {
+                StorageAttachmentDTO dto = new StorageAttachmentDTO();
+                dto.setRecordType(RecordTypeEnum.SALES_LAWSUIT.getType());
+                dto.setRecordId(lawsuit.getId());
+                List<StorageBlobVO> files = storageAttachmentService.list(dto);
+                if (files != null && !files.isEmpty()) {
+                    lawsuitFiles.addAll(files);
+                }
+            }
+            if (!lawsuitFiles.isEmpty()) {
+                result.add(new AttachmentGroupVo("璇夎绠$悊", lawsuitFiles));
+            }
+        }
+
+        return result;
+    }
 }

--
Gitblit v1.9.3