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