hsy
2026-08-28 a8e4132c3e2e9c3b3fcb0360901b35571b6464ea
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,15 +116,15 @@
        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();
@@ -127,4 +140,55 @@
        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;
    }
}