From 7a1e9b29aa74f0ae130f462af7bf2b1f15d17b3c Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期五, 05 七月 2024 09:56:07 +0800
Subject: [PATCH] bug修改

---
 finance-system/src/main/java/com/finance/system/listener/BasicDataListener.java |   54 ++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 42 insertions(+), 12 deletions(-)

diff --git a/finance-system/src/main/java/com/finance/system/listener/BasicDataListener.java b/finance-system/src/main/java/com/finance/system/listener/BasicDataListener.java
index 73e81a2..1a71082 100644
--- a/finance-system/src/main/java/com/finance/system/listener/BasicDataListener.java
+++ b/finance-system/src/main/java/com/finance/system/listener/BasicDataListener.java
@@ -8,7 +8,6 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.google.common.collect.Lists;
 import com.finance.common.enums.CalculateTypeEnum;
 import com.finance.common.enums.DataScreenConfigEnum;
 import com.finance.common.enums.FieldInputTypeEnum;
@@ -37,6 +36,7 @@
 import com.finance.system.service.TbFieldService;
 import com.finance.system.service.TbScoreService;
 import com.finance.system.vo.DataScreenConfigVO;
+import com.google.common.collect.Lists;
 import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.List;
@@ -46,6 +46,7 @@
 import java.util.concurrent.CompletableFuture;
 import java.util.stream.Collectors;
 import lombok.extern.slf4j.Slf4j;
+import org.jetbrains.annotations.NotNull;
 
 @Slf4j
 public class BasicDataListener extends AnalysisEventListener<Map<Integer, String>> {
@@ -157,16 +158,25 @@
         // 查询需要填写的动态字段
         List<TbField> fieldList =
                 tbFieldService.lambdaQuery().eq(TbField::getStatus, ShowStatusEnum.SHOW).list();
-        Map<Integer, String> headMap = cachedDataList.get(cachedDataList.size() - 3);
-        Map<Integer, String> dataMap = cachedDataList.get(cachedDataList.size() - 1);
+
+        Map<Integer, String> categoryOneMap = cachedDataList.get(0);
+        Map<Integer, String> categoryTwoMap = cachedDataList.get(1);
+        Map<Integer, String> categoryThreeMap = cachedDataList.get(2);
+        Map<Integer, String> headMap = cachedDataList.get(3);
+        Map<Integer, String> dataMap = cachedDataList.get(5);
         log.info("{}条数据,开始存储数据库!", cachedDataList.size());
         log.info("表头:{}", JSON.toJSONString(headMap));
         log.info("填写的数据:{}", JSON.toJSONString(dataMap));
+
+        log.info("所有数据:{}", JSON.toJSONString(cachedDataList));
         int remarkIndex = headMap.size() - 1;
-        Map<Integer, String> dynamicFieldsMap = headMap.entrySet().stream()
-                .filter(entry -> !(Lists.newArrayList(0, 1, 2, 3).contains(entry.getKey())
-                        || entry.getKey() == remarkIndex))
-                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
+        Map<Integer, String> dynamicFieldsMap = getIntegerStringMap(headMap, remarkIndex);
+        Map<Integer, String> dynamicCategoryOneMap = getIntegerStringMap(categoryOneMap,
+                remarkIndex);
+        Map<Integer, String> dynamicCategoryTwoMap = getIntegerStringMap(categoryTwoMap,
+                remarkIndex);
+        Map<Integer, String> dynamicCategoryThreeMap = getIntegerStringMap(categoryThreeMap,
+                remarkIndex);
         List<String> dynamicFields = new ArrayList<>(dynamicFieldsMap.values());
         List<String> collect = fieldList.stream().map(TbField::getFieldName)
                 .collect(Collectors.toList());
@@ -208,11 +218,21 @@
         fields.add(currentGdp);
         //遍历动态字段map
         for (Map.Entry<Integer, String> integerStringEntry : dynamicFieldsMap.entrySet()) {
-            Optional<TbField> tbField = tbFieldService.lambdaQuery()
-                    .eq(TbField::getFieldName, integerStringEntry.getValue())
-                    .eq(TbField::getStatus, ShowStatusEnum.SHOW).oneOpt();
-            if (tbField.isPresent()) {
-                TbField field = tbField.get();
+            String categoryOne = dynamicCategoryOneMap.get(integerStringEntry.getKey());
+            String categoryTwo = dynamicCategoryTwoMap.get(integerStringEntry.getKey());
+            String categoryThree = dynamicCategoryThreeMap.get(integerStringEntry.getKey());
+            String fieldStr = integerStringEntry.getValue();
+            boolean res = !fieldStr.equals(categoryTwo);
+            List<TbField> tbField = tbFieldService.lambdaQuery()
+                    .eq(TbField::getFieldName, fieldStr)
+                    .eq(TbField::getStatus, ShowStatusEnum.SHOW)
+                    .eq(TbField::getLevelOneCategory, categoryOne)
+                    .eq(res, TbField::getLevelTwoCategory, categoryTwo)
+                    .eq(!fieldStr.equals(categoryThree) && res, TbField::getLevelThreeCategory,
+                            categoryThree)
+                    .list();
+            if (CollUtils.isNotEmpty(tbField)) {
+                TbField field = tbField.get(0);
                 String value = validateFields(integerStringEntry, dataMap, field);
                 TbBasicDataField tbBasicDataField = new TbBasicDataField();
                 tbBasicDataField.setBasicDataId(tbBasicData.getId());
@@ -232,6 +252,16 @@
         });
     }
 
+    @NotNull
+    private static Map<Integer, String> getIntegerStringMap(Map<Integer, String> headMap,
+            int remarkIndex) {
+        Map<Integer, String> dynamicFieldsMap = headMap.entrySet().stream()
+                .filter(entry -> !(Lists.newArrayList(0, 1, 2, 3).contains(entry.getKey())
+                        || entry.getKey() == remarkIndex))
+                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
+        return dynamicFieldsMap;
+    }
+
     private void calculateScore(TbBasicData tbBasicData, List<TbBasicDataField> fields) {
         List<TbScore> scoreList = new ArrayList<>();
         //计算得分

--
Gitblit v1.7.1