buhuazhen
4 天以前 24820701b09281e03edf2e22db62edab7f4da53b
feat(info): 支持获取并返回下级项目信息

- 在 InfoHandleService 中新增 getSubordinateInfo 方法,用于查询子项目信息
- 在 InfoHandleService 中新增 convert 方法,统一实体到 DTO 的转换过程
- 修改 InfoServiceImpl,异步获取下级项目信息并设置到 InfoVo 中
- 在 InfoVo 中添加 subordinateInfoList 字段以存储下级项目信息列表
- 优化代码格式,统一空格和花括号位置,提升代码可读性
已修改3个文件
35 ■■■■ 文件已修改
src/main/java/com/ruoyi/projectManagement/service/impl/InfoServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/projectManagement/service/impl/handle/InfoHandleService.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/projectManagement/vo/InfoVo.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/projectManagement/service/impl/InfoServiceImpl.java
@@ -105,6 +105,9 @@
        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));
        // 商品
        // 等待所有异步完成
@@ -114,13 +117,13 @@
        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;
    }
src/main/java/com/ruoyi/projectManagement/service/impl/handle/InfoHandleService.java
@@ -8,15 +8,12 @@
import com.ruoyi.basic.service.CustomerFollowUpFileService;
import com.ruoyi.common.enums.PlanStageEnum;
import com.ruoyi.common.enums.ReviewStatusEnum;
import com.ruoyi.common.utils.EnumUtil;
import com.ruoyi.projectManagement.dto.PlanStageDto;
import com.ruoyi.projectManagement.dto.SaveInfoDto;
import com.ruoyi.projectManagement.mapper.InfoMapper;
import com.ruoyi.projectManagement.pojo.Info;
import com.ruoyi.projectManagement.pojo.PlanNode;
import com.ruoyi.projectManagement.service.PlanService;
import com.ruoyi.projectManagement.service.impl.PlanServiceImpl;
import com.ruoyi.projectManagement.vo.PlanVo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@@ -73,11 +70,30 @@
    public SaveInfoDto getInfoById(@NotNull Long id){
        Info info = infoMapper.selectById(id);
        return convert(info);
    }
    private SaveInfoDto convert(Info info) {
        SaveInfoDto saveInfoDto = BeanUtil.copyProperties(info, SaveInfoDto.class);
        // 附件处理
        saveInfoDto.setTeamList(info.getTeam());
        customerFollowUpFileService.fillAttachment(Lists.newArrayList(saveInfoDto), SaveInfoDto::getAttachment, SaveInfoDto::setAttachmentList);
        return saveInfoDto;
    }
    /**
     * 获取改id下子项目信息
     *
     * @param id
     * @return
     */
    public List<SaveInfoDto> getSubordinateInfo(@NotNull Long id) {
        LambdaQueryWrapper<Info> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Info::getProjectManagementInfoParentId, id);
        queryWrapper.orderByAsc(Info::getCreateTime);
        List<Info> infoList = infoMapper.selectList(queryWrapper);
        return infoList.stream().map(this::convert).collect(Collectors.toList());
    }
@@ -89,6 +105,7 @@
    /**
     * 生成项目编号
     *
     * @return
     */
    private String generateSerialNumber() {
src/main/java/com/ruoyi/projectManagement/vo/InfoVo.java
@@ -1,11 +1,13 @@
package com.ruoyi.projectManagement.vo;
import com.ruoyi.projectManagement.dto.SaveInfoDto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
 * @author buhuazhen
@@ -21,4 +23,7 @@
    // 项目阶段
    private String xxx;
    // 下级项目
    private List<SaveInfoDto> subordinateInfoList;
}