| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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>> { |
| | |
| | | // 查询需要填写的动态字段 |
| | | 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()); |
| | |
| | | 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()); |
| | |
| | | }); |
| | | } |
| | | |
| | | @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<>(); |
| | | //计算得分 |