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 | 163 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 160 insertions(+), 3 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 e6bd8c5..d1f1897 100644
--- a/src/main/java/com/ruoyi/projectManagement/service/impl/InfoServiceImpl.java
+++ b/src/main/java/com/ruoyi/projectManagement/service/impl/InfoServiceImpl.java
@@ -1,15 +1,43 @@
package com.ruoyi.projectManagement.service.impl;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.enums.IsDeleteEnum;
import com.ruoyi.common.enums.SaleEnum;
+import com.ruoyi.projectManagement.dto.ContractInfoDto;
+import com.ruoyi.projectManagement.dto.SaveInfoDto;
+import com.ruoyi.projectManagement.dto.ShippingAddressDto;
+import com.ruoyi.projectManagement.dto.UpdateStateInfo;
+import com.ruoyi.projectManagement.mapper.InfoMapper;
+import com.ruoyi.projectManagement.pojo.Info;
import com.ruoyi.projectManagement.service.InfoService;
import com.ruoyi.projectManagement.service.impl.handle.ContractInfoHandleService;
import com.ruoyi.projectManagement.service.impl.handle.InfoHandleService;
import com.ruoyi.projectManagement.service.impl.handle.ShippingAddressHandleService;
+import com.ruoyi.projectManagement.vo.InfoVo;
+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;
/**
* @author buhuazhen
@@ -21,17 +49,146 @@
@Transactional(readOnly = true)
public class InfoServiceImpl implements InfoService {
private final InfoHandleService infoHandleService;
+ private final InfoMapper infoMapper;
private final ContractInfoHandleService contractInfoHandleService;
private final ShippingAddressHandleService shippingAddressHandleService;
private final ISalesLedgerService salesLedgerService;
+ private final StorageAttachmentService storageAttachmentService;
+ private final ISalesLawsuitService salesLawsuitService;
+
@Transactional(rollbackFor = Exception.class)
@Override
public void save(SaveInfoVo saveInfoVo) {
// 淇濆瓨涓讳俊鎭�
Long infoId = infoHandleService.save(saveInfoVo.getInfo());
- shippingAddressHandleService.save(infoId, saveInfoVo.getShippingAddress());
- contractInfoHandleService.save(infoId, saveInfoVo.getContractInfo());
- salesLedgerService.handleSalesLedgerProducts(infoId, saveInfoVo.getSalesLedgerProductList(), SaleEnum.MANAGEMENT);
+ if(saveInfoVo.getShippingAddress() != null){
+ shippingAddressHandleService.save(infoId, saveInfoVo.getShippingAddress());
+ }
+ if(saveInfoVo.getContractInfo() != null){
+ contractInfoHandleService.save(infoId, saveInfoVo.getContractInfo());
+ }
+ if(saveInfoVo.getSalesLedgerProductList() != null){
+ salesLedgerService.handleSalesLedgerProducts(infoId, saveInfoVo.getSalesLedgerProductList(), SaleEnum.MANAGEMENT);
+ }
+ }
+
+ @Override
+ @Transactional
+ public void updateStatus(UpdateStateInfo updateStateInfo) {
+ Info info = new Info();
+ info.setId(updateStateInfo.getId());
+ // 瀹℃壒鐘舵��
+ if(updateStateInfo.getReviewStatus() != null){
+ info.setReviewStatus(updateStateInfo.getReviewStatus().getCode());
+ }
+
+ // 杩涘害鐘舵��
+ if(updateStateInfo.getStage() != null){
+ info.setStatus(updateStateInfo.getStage().getCode());
+ }
+
+ infoMapper.updateById(info);
+ }
+
+ @Override
+ @Transactional
+ public void deleteInfo(Long id) {
+ LambdaUpdateWrapper<Info> updateWrapper = new LambdaUpdateWrapper<Info>();
+ updateWrapper.eq(Info::getId, id);
+ updateWrapper.set(Info::getIsDelete, IsDeleteEnum.DELETED.getCode());
+
+ // 瀵瑰簲闄勮〃淇℃伅鏄惁鍒犻櫎寰呯‘瀹氾紙鍥犱负鍚庣画鍙兘浼氳繘琛屽紩鐢ㄦ墍浠ュ厛涓嶅垹闄�
+ }
+
+ @Override
+ public Page<ListInfoVo> searchListInfo(SearchInfoVo vo) {
+ Page<ListInfoVo> listInfoVoPage = infoMapper.searchListInfo(vo);
+
+
+ return listInfoVoPage;
+ }
+
+ @Override
+ @SneakyThrows
+ public InfoVo getInfoById(Long id) {
+
+ 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,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