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