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/TbBasicDataServiceImpl.java |   58 +++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 45 insertions(+), 13 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java
index 77e4182..301ee1b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java
@@ -22,8 +22,9 @@
 import com.ruoyi.system.mapper.TbDeptMapper;
 import com.ruoyi.system.query.ScoreQuery;
 import com.ruoyi.system.service.*;
+import com.ruoyi.system.utils.FieldBuildUtil;
 import com.ruoyi.system.vo.BasicDataReportingVO;
-import com.ruoyi.system.vo.FieldReportingVO;
+import com.ruoyi.system.vo.FieldsTreeVO;
 import com.ruoyi.system.vo.ScoreVO;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -62,7 +63,9 @@
     private final TbScoreService tbScoreService;
 
     @Override
-    public R<BasicDataReportingVO> getBasicFields(String deptAreaCode) throws Exception {
+    public R<BasicDataReportingVO> getBasicFields() throws Exception {
+        SysUser user = SecurityUtils.getLoginUser().getUser();
+        String deptAreaCode = user.getAreaCode();
         BasicDataReportingVO vo = new BasicDataReportingVO();
         //校验区划代码
         TbDept dept = tbDeptMapper.selectOne(Wrappers.<TbDept>lambdaQuery().eq(TbDept::getAreaCode, deptAreaCode));
@@ -95,9 +98,20 @@
                 .between(TbBasicData::getCreateTime, quarterStart,quarterEnd));
         //查询需要填写的字段
         List<TbField> list = tbFieldService.lambdaQuery().eq(TbField::getStatus, ShowStatusEnum.SHOW).list();
+        List<FieldsTreeVO> roots = new ArrayList<>();
+        FieldsTreeVO fieldsTreeVO = new FieldsTreeVO();
+        fieldsTreeVO.setId(-1L);
+        fieldsTreeVO.setName("转移支付规模");
+        fieldsTreeVO.setCategory(Boolean.FALSE);
+        FieldsTreeVO fieldsTreeVO2 = new FieldsTreeVO();
+        fieldsTreeVO2.setId(-2L);
+        fieldsTreeVO2.setName("当期GDP");
+        fieldsTreeVO2.setCategory(Boolean.FALSE);
+        roots.add(fieldsTreeVO);
+        roots.add(fieldsTreeVO2);
         if (CollUtils.isNotEmpty(list)) {
-            List<FieldReportingVO> fieldReportingVOS = BeanUtils.copyList(list, FieldReportingVO.class);
-            vo.setFields(fieldReportingVOS);
+            FieldBuildUtil.buildTreeFromTbFieldList(list,roots);
+            vo.setFields(roots);
         }
         if (Objects.isNull(basicData)) {
             vo.setQuarter(String.format("%s年%s季度",now.getYear(),quarterOfYearStr));
@@ -108,19 +122,26 @@
             //查询已填报数据 包含数据缺失和已填报
             List<TbBasicDataField> basicDataFields = tbBasicDataFieldService.lambdaQuery()
                     .eq(TbBasicDataField::getBasicDataId, basicData.getId()).list();
+
             if (CollUtils.isNotEmpty(basicDataFields)) {
                 Map<Long, TbBasicDataField> fieldMap = basicDataFields.stream()
                         .collect(Collectors.toMap(TbBasicDataField::getFieldId, Function.identity()));
-                vo.getFields().forEach(item -> {
-                    TbBasicDataField tbBasicDataField = fieldMap.get(item.getId());
-                    if (Objects.nonNull(tbBasicDataField)) {
-                        item.setValue(tbBasicDataField.getFieldValue());
-                    }
-                });
+                setFieldValues(vo.getFields(), fieldMap);
                 return R.ok(vo);
             }
         }
         return R.ok(vo);
+    }
+    public static void setFieldValues(List<FieldsTreeVO> fields, Map<Long, TbBasicDataField> fieldMap) {
+        for (FieldsTreeVO field : fields) {
+            TbBasicDataField tbBasicDataField = fieldMap.get(field.getId());
+            if (tbBasicDataField != null) {
+                field.setValue(tbBasicDataField.getFieldValue());
+            }
+            if (field.getChildren() != null && !field.getChildren().isEmpty()) {
+                setFieldValues(field.getChildren(), fieldMap);
+            }
+        }
     }
 
     @Override
@@ -138,9 +159,16 @@
         this.saveOrUpdate(tbBasicData);
         //保存基础数据动态字段数据
         List<TbBasicDataField> tbBasicDataFields = BeanUtils.copyList(dto.getFields(), TbBasicDataField.class);
-        tbBasicDataFields.forEach(item -> item.setBasicDataId(tbBasicData.getId()));
         //查询需要填写的动态字段
         List<TbField> fieldList = tbFieldService.lambdaQuery().eq(TbField::getStatus, ShowStatusEnum.SHOW).list();
+        Map<Long, TbField> fieldMap = fieldList.stream().collect(Collectors.toMap(TbField::getId, e -> e));
+        tbBasicDataFields.forEach(item -> {
+            item.setBasicDataId(tbBasicData.getId());
+            TbField tbField = fieldMap.get(item.getFieldId());
+            if (Objects.nonNull(tbField)) {
+                item.setFieldName(tbField.getFieldName());
+            }
+        });
         //添加固定字段 转移支付规模、当期GDP
         TbBasicDataField transferPaymentScale = new TbBasicDataField();
         transferPaymentScale.setBasicDataId(tbBasicData.getId());
@@ -215,6 +243,7 @@
         }
         return -1; // 返回-1表示未找到
     }
+
     private List<List<Object>> dataList(List<TbField> list) throws Exception {
         LoginUser loginUser = SecurityUtils.getLoginUser();
         String areaName = loginUser.getUser().getAreaName();
@@ -250,6 +279,7 @@
         headTitles.add(Lists.newArrayList("备注"));
         return headTitles;
     }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void importBasicData(MultipartFile file) throws Exception {
@@ -261,6 +291,7 @@
                 tbFieldService,areaCode,tbBasicDataFieldService,tbBasicDataConfigService,
                 tbBasicDataConfigDetailService,tbScoreService)).sheet().doRead();
     }
+
     private void calculateScore(TbBasicData tbBasicData) {
         //计算得分
         List<TbBasicDataConfig> list = tbBasicDataConfigService.lambdaQuery().eq(TbBasicDataConfig::getStatus, ShowStatusEnum.SHOW).list();
@@ -333,6 +364,7 @@
             }
         }
     }
+
     @Override
     public PageDTO<ScoreVO> pageScore(ScoreQuery query) {
         Page<ScoreVO> page = new Page<>(query.getPageNum(), query.getPageSize());
@@ -352,7 +384,7 @@
         }
         query.setBasicDataId(basicData.getId());
         //查询对应的基础数据配置
-        List<ScoreVO> vos = tbScoreService.pageScore(query,page);
-        return PageDTO.of(page, vos);
+        Page<ScoreVO> pageVO = tbScoreService.pageScore(query,page);
+        return PageDTO.of(pageVO);
     }
 }

--
Gitblit v1.7.1