From 321d507a5670cb36c1550445c4795a76c9d7d226 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期三, 03 四月 2024 18:06:49 +0800 Subject: [PATCH] 部门端历史数据模块、字段查看模块返回数据层级关系处理 --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldServiceImpl.java | 53 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 46 insertions(+), 7 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldServiceImpl.java index feab17d..12285e4 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldServiceImpl.java @@ -10,26 +10,26 @@ import com.ruoyi.common.utils.BeanUtils; import com.ruoyi.common.utils.CollUtils; import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.system.domain.TbBasicDataConfig; -import com.ruoyi.system.domain.TbField; -import com.ruoyi.system.domain.TbFieldCategory; +import com.ruoyi.system.domain.*; import com.ruoyi.system.dto.FieldDTO; import com.ruoyi.system.dto.ShowHideDTO; import com.ruoyi.system.dto.update.FieldUpdateDTO; +import com.ruoyi.system.mapper.TbBasicDataMapper; import com.ruoyi.system.mapper.TbFieldMapper; import com.ruoyi.system.query.FieldQuery; import com.ruoyi.system.service.TbBasicDataConfigService; +import com.ruoyi.system.service.TbBasicDataFieldService; import com.ruoyi.system.service.TbFieldCategoryService; import com.ruoyi.system.service.TbFieldService; +import com.ruoyi.system.utils.FieldBuildUtil; +import com.ruoyi.system.vo.BasicDataFieldVO; import com.ruoyi.system.vo.FieldVO; +import com.ruoyi.system.vo.FieldsTreeVO; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Objects; +import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; @@ -47,6 +47,8 @@ public class TbFieldServiceImpl extends ServiceImpl<TbFieldMapper, TbField> implements TbFieldService { private final TbFieldCategoryService tbFieldCategoryService; private final TbBasicDataConfigService tbBasicDataConfigService; + private final TbBasicDataMapper tbBasicDataMapper; + private final TbBasicDataFieldService tbBasicDataFieldService; @Override public void add(FieldDTO dto) { @@ -152,4 +154,41 @@ TbField tbField = BeanUtils.copyBean(dto, TbField.class); this.updateById(tbField); } + + @Override + public BasicDataFieldVO getHistoryFields(Long id) { + // 从数据库中获取基本数据 + TbBasicData basicData = tbBasicDataMapper.selectById(id); + if (Objects.isNull(basicData)) { + throw new ServiceException("非法参数"); + } + BasicDataFieldVO vo = BeanUtils.copyBean(basicData, BasicDataFieldVO.class); + // 查询动态字段 + List<TbBasicDataField> basicDataFields = tbBasicDataFieldService.lambdaQuery().eq(TbBasicDataField::getBasicDataId, basicData.getId()).list(); + // 获取所有字段ID + Set<Long> fieldIds = basicDataFields.stream().map(TbBasicDataField::getFieldId).collect(Collectors.toSet()); + // 根据字段ID查询字段信息并构建字段ID到字段对象的映射 + Map<Long, TbField> fieldMap = this.lambdaQuery().in(!fieldIds.isEmpty(), TbField::getId, fieldIds).list().stream().collect(Collectors.toMap(TbField::getId, e -> e)); + // 根节点 + List<FieldsTreeVO> root = new ArrayList<>(); + basicDataFields.stream().filter(item -> item.getFieldId()==-1).findFirst().ifPresent(item ->{ + FieldsTreeVO fieldsTreeVO = new FieldsTreeVO(); + fieldsTreeVO.setId(item.getFieldId()); + fieldsTreeVO.setName("转移支付规模"); + fieldsTreeVO.setValue(item.getFieldValue()); + fieldsTreeVO.setCategory(Boolean.FALSE); + root.add(fieldsTreeVO); + }); + basicDataFields.stream().filter(item -> item.getFieldId()==-2).findFirst().ifPresent(item ->{ + FieldsTreeVO fieldsTreeVO = new FieldsTreeVO(); + fieldsTreeVO.setId(item.getFieldId()); + fieldsTreeVO.setName("当期GDP"); + fieldsTreeVO.setValue(item.getFieldValue()); + fieldsTreeVO.setCategory(Boolean.FALSE); + root.add(fieldsTreeVO); + }); + FieldBuildUtil.buildTreeStructure(basicDataFields, fieldMap, root); + vo.setFields(root); + return vo; + } } \ No newline at end of file -- Gitblit v1.7.1