From 4b5624af301dfbdcf54b65dc55aadde1b6a8efd5 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期三, 24 七月 2024 19:55:24 +0800 Subject: [PATCH] bug修改,查询季度写死“2024年一季度” --- finance-admin/src/main/java/com/finance/web/controller/service/ScreenService.java | 173 +++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 111 insertions(+), 62 deletions(-) diff --git a/finance-admin/src/main/java/com/finance/web/controller/service/ScreenService.java b/finance-admin/src/main/java/com/finance/web/controller/service/ScreenService.java index acf53a9..0024565 100644 --- a/finance-admin/src/main/java/com/finance/web/controller/service/ScreenService.java +++ b/finance-admin/src/main/java/com/finance/web/controller/service/ScreenService.java @@ -52,7 +52,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; -import java.util.Collections; +import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Objects; @@ -116,12 +116,13 @@ } public RiskAndTransferVO getRiskAndTransfer() throws Exception { - String nowQuarter = DateUtils.getNowQuarter(); + String previousQuarter = DateUtils.getPreviousQuarter(); + previousQuarter = "2024年一季度"; RiskAndTransferVO riskAndTransferVO = new RiskAndTransferVO(); // 查询转移支付规模总额 List<TbBasicData> list = tbBasicDataService.lambdaQuery() .select(TbBasicData::getTransferPaymentScale) - .eq(TbBasicData::getQuarter, nowQuarter) + .eq(TbBasicData::getQuarter, previousQuarter) // .eq(TbBasicData::getStatus, ReportingStatusEnum.FILLED) .list(); Optional<Double> reduce = list.stream() @@ -133,9 +134,32 @@ List<RiskLevelVO> riskLevelVOList = formatRiskLevel(riskLevel); riskAndTransferVO.setRiskLevelVOList(riskLevelVOList); RiskCountVO riskCountVO = new RiskCountVO(); - List<RiskMapVO> riskMapVOList = tbScoreService.getCurrentScoreList(nowQuarter, null); + List<RiskMapVO> riskMapVOList = tbScoreService.getCurrentScoreList(previousQuarter, null); + String[] noRiskArr = riskLevel.getNoRisk().split("-"); + String[] lowRiskArr = riskLevel.getLowRisk().split("-"); + String[] mediumRiskArr = riskLevel.getMediumRisk().split("-"); + String[] highRiskArr = riskLevel.getHighRisk().split("-"); + List<RiskMapVO> cityRiskVO = riskMapVOList.stream() + .filter(r -> r.getAreaLevel().equals(AreaLevelEnum.CITY)) + .collect(Collectors.toList()); + long noRiskCount = cityRiskVO.stream() + .filter(item -> item.getScore() >= Double.parseDouble(noRiskArr[0]) + && item.getScore() <= Double.parseDouble(noRiskArr[1])).count(); + riskCountVO.setNoRiskCount((int) noRiskCount); + long lowRiskCount = cityRiskVO.stream() + .filter(item -> item.getScore() >= Double.parseDouble(lowRiskArr[0]) + && item.getScore() <= Double.parseDouble(lowRiskArr[1])).count(); + riskCountVO.setLowRiskCount((int) lowRiskCount); + long mediumRiskCount = cityRiskVO.stream() + .filter(item -> item.getScore() >= Double.parseDouble(mediumRiskArr[0]) + && item.getScore() <= Double.parseDouble(mediumRiskArr[1])).count(); + riskCountVO.setHighRiskCount((int) mediumRiskCount); + long highRiskCount = cityRiskVO.stream() + .filter(item -> item.getScore() >= Double.parseDouble(highRiskArr[0]) + && item.getScore() <= Double.parseDouble(highRiskArr[1])).count(); + riskCountVO.setHighRiskCount((int) highRiskCount); - for (RiskLevelVO vo : riskLevelVOList) { + /*for (RiskLevelVO vo : riskLevelVOList) { long count = riskMapVOList.stream() .filter(r -> r.getAreaLevel().equals(AreaLevelEnum.CITY)) .filter(item -> item.getScore() >= vo.getMin() @@ -150,7 +174,7 @@ } else if (vo.getRiskLevel().equals(RiskLevelEnum.L4)) { riskCountVO.setHighRiskCount((int) count); } - } + }*/ // TODO // riskCountVO.setNoRiskCount(50); // riskCountVO.setLowRiskCount(45); @@ -210,7 +234,10 @@ public List<RiskRankingVO> riskRanking() throws Exception { DataScreenConfigVO riskLevel = tbDataScreenConfigService.getRiskLevel(); List<RiskLevelVO> riskLevelVOList = formatRiskLevel(riskLevel); - List<RiskRankingVO> voList = tbScoreService.queryRiskRanking(DateUtils.getNowQuarter()); + // List<RiskRankingVO> voList = tbScoreService.queryRiskRanking( + // DateUtils.getPreviousQuarter()); + List<RiskRankingVO> voList = tbScoreService.queryRiskRanking( + "2024年一季度"); int rank = 1; for (RiskRankingVO riskRankingVO : voList) { riskRankingVO.setRank(rank++); @@ -233,8 +260,10 @@ } public List<QuestionVO> queryQuestions() throws Exception { + String previousQuarter = DateUtils.getPreviousQuarter(); + previousQuarter = "2024年一季度"; List<TbQuestion> list = tbQuestionService.lambdaQuery() - .eq(TbQuestion::getQuarter, DateUtils.getNowQuarter()).list(); + .eq(TbQuestion::getQuarter, previousQuarter).list(); return BeanUtils.copyList(list, QuestionVO.class); } @@ -247,10 +276,12 @@ } dataAnalysisVO.setRank(scoreRankVO.getRank()); dataAnalysisVO.setScore(scoreRankVO.getScore()); - String nowQuarter = DateUtils.getNowQuarter(); + String previousQuarter = DateUtils.getPreviousQuarter(); + previousQuarter = "2024年一季度"; // 查询问题 List<TbQuestion> list = tbQuestionService.lambdaQuery() - .eq(TbQuestion::getQuarter, nowQuarter).eq(TbQuestion::getDeptAreaCode, areaCode) + .eq(TbQuestion::getQuarter, previousQuarter) + .eq(TbQuestion::getDeptAreaCode, areaCode) .list(); List<QuestionVO> questionVOS = BeanUtils.copyList(list, QuestionVO.class); dataAnalysisVO.setQuestions(questionVOS); @@ -265,11 +296,12 @@ DataScreenConfigVO riskLevel = tbDataScreenConfigService.getRiskLevel(); List<RiskLevelVO> riskLevelVOList = formatRiskLevel(riskLevel); - dataAnalysisVO.setYearScore(getYearScore(areaCode, 1)); - - dataAnalysisVO.setLastYearScore(getYearScore(areaCode, 2)); + dataAnalysisVO.setYearScore(getYearScore(areaCode, previousQuarter)); + String lastYearQuarter = DateUtils.getLastYearQuarter(previousQuarter); + dataAnalysisVO.setLastYearScore(getYearScore(areaCode, lastYearQuarter)); // 查询风险等级 - List<RiskMapVO> currentScoreList = tbScoreService.getCurrentScoreList(nowQuarter, areaCode); + List<RiskMapVO> currentScoreList = tbScoreService.getCurrentScoreList(previousQuarter, + areaCode); for (RiskMapVO tbDataScreenScore : currentScoreList) { for (RiskLevelVO vo : riskLevelVOList) { if (vo.getRiskLevel().equals(RiskLevelEnum.L1) @@ -288,12 +320,12 @@ } // 查询四个指标下的三级指标 List<FieldAndScoreDataVO> voList = - tbBasicDataService.getFieldAndScoreData(areaCode, nowQuarter, 1); + tbBasicDataService.getFieldAndScoreData(areaCode, previousQuarter, 1, 2); List<FieldAndScoreDataVO> lastYearList = - tbBasicDataService.getFieldAndScoreData(areaCode, nowQuarter, 2); + tbBasicDataService.getFieldAndScoreData(areaCode, previousQuarter, 2, 2); // 查询四个指标下的三级指标 List<FieldAndScoreDataVO> allDeptVoList = - tbBasicDataService.getFieldAndScoreData(null, nowQuarter, 1); + tbBasicDataService.getFieldAndScoreData(areaCode, previousQuarter, 1, 1); // 查询形式指标得分 dataAnalysisVO.setScoreDataList(handleDataIndicators(voList, lastYearList)); // 查询数据指标得分 @@ -328,39 +360,33 @@ "预算执行方面", "风险防控方面"); for (int i = 0; i < indicatorList.size(); i++) { ScoreRateDataVO scoreRateDataVO = new ScoreRateDataVO(); - Double indicatorOne = getLevelThreeIndicators(voList, indicatorList.get(i)).stream() - .map(FieldAndScoreDataVO::getScore).reduce(Double::sum).orElse(0D); - - List<Double> allIndicatorsScore = getAllIndicatorsScoreByName(allDeptVoList, - indicatorList.get(i)); - scoreRateDataVO.setRank(findPositionInList(allIndicatorsScore, indicatorOne)); - scoreRateDataVO.setScore(indicatorOne); - scoreRateDataVO.setSubType(SubTypeEnum.getEnumByCode(i + 1)); - scoreRateDataVO.setScoreRate(BigDecimal.valueOf(indicatorOne) - .divide(BigDecimal.valueOf(voList.get(i).getLevelOneIndicatorMaxScore()), 2, - RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100L)).doubleValue()); + if (CollUtils.isEmpty(voList)) { + scoreRateDataVO.setRank(0); + scoreRateDataVO.setScore(0D); + scoreRateDataVO.setSubType(SubTypeEnum.getEnumByCode(i + 1)); + scoreRateDataVO.setScoreRate(0D); + } else { + Double indicatorOne = getLevelThreeIndicators(voList, indicatorList.get(i)).stream() + .map(FieldAndScoreDataVO::getScore).reduce(Double::sum) + .map(BigDecimal::valueOf) + .orElse(BigDecimal.ZERO).setScale(2, RoundingMode.HALF_UP) + .doubleValue(); + List<Double> allIndicatorsScore = getAllIndicatorsScoreByName(allDeptVoList, + indicatorList.get(i)); + allIndicatorsScore.add(indicatorOne); + allIndicatorsScore.sort(Comparator.comparing(Double::doubleValue).reversed()); + scoreRateDataVO.setRank(allIndicatorsScore.indexOf(indicatorOne) + 1); + scoreRateDataVO.setScore(indicatorOne); + scoreRateDataVO.setSubType(SubTypeEnum.getEnumByCode(i + 1)); + scoreRateDataVO.setScoreRate(BigDecimal.valueOf(indicatorOne) + .divide(BigDecimal.valueOf(voList.get(i).getLevelOneIndicatorMaxScore()), 2, + RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100L)) + .doubleValue()); + } result.add(scoreRateDataVO); } - return result; } - - public static int findPositionInList(List<Double> list, Double value) { - // Sorting the list to use binary search - Collections.sort(list); - - // Finding the index using binary search - int index = Collections.binarySearch(list, value); - - if (index < 0) { - // If the value is not found, binarySearch returns (-(insertion point) - 1) - // Convert to the insertion point by doing (-index - 1) - index = -index - 1; - } - - return index + 1; - } - private List<Double> getAllIndicatorsScoreByName(List<FieldAndScoreDataVO> allDeptVoList, String indicatorName) { @@ -370,7 +396,7 @@ Double score = getLevelThreeIndicators(collect.get(key), indicatorName).stream() .map(FieldAndScoreDataVO::getScore).reduce(Double::sum).orElse(0D); return score; - }).collect(Collectors.toList()); + }).sorted(Comparator.comparing(Double::intValue).reversed()).collect(Collectors.toList()); } private List<ScoreDataVO> handleDataIndicators(List<FieldAndScoreDataVO> voList, @@ -379,16 +405,29 @@ List<String> indicatorList = Lists.newArrayList("财政经济形势", "预算管理方面", "预算执行方面", "风险防控方面"); for (int i = 0; i < indicatorList.size(); i++) { - Double indicatorOne = getLevelThreeIndicators(voList, indicatorList.get(i)).stream() - .map(FieldAndScoreDataVO::getScore).reduce(Double::sum).orElse(0D); - Double indicatorOneLastYear = getLevelThreeIndicators(lastYearList, - indicatorList.get(i)).stream() - .map(FieldAndScoreDataVO::getScore).reduce(Double::sum).orElse(0D); ScoreDataVO scoreDataVO = new ScoreDataVO(); - scoreDataVO.setLastScore(indicatorOneLastYear); - scoreDataVO.setScore(indicatorOne); - scoreDataVO.setMaxScore(voList.get(0).getLevelOneIndicatorMaxScore()); - scoreDataVO.setSubType(SubTypeEnum.getEnumByCode(i + 1)); + if (CollUtils.isEmpty(voList)) { + scoreDataVO.setLastScore(0D); + scoreDataVO.setScore(0D); + scoreDataVO.setMaxScore(0D); + scoreDataVO.setSubType(SubTypeEnum.getEnumByCode(i + 1)); + } else { + Double indicatorOne = getLevelThreeIndicators(voList, + indicatorList.get(i)).stream() + .map(FieldAndScoreDataVO::getScore).reduce(Double::sum) + .map(BigDecimal::valueOf) + .orElse(BigDecimal.ZERO).setScale(2, RoundingMode.HALF_UP) + .doubleValue(); + Double indicatorOneLastYear = getLevelThreeIndicators(lastYearList, + indicatorList.get(i)).stream() + .map(FieldAndScoreDataVO::getScore).reduce(Double::sum) + .map(BigDecimal::valueOf) + .orElse(BigDecimal.ZERO).setScale(2, RoundingMode.HALF_UP).doubleValue(); + scoreDataVO.setLastScore(indicatorOneLastYear); + scoreDataVO.setScore(indicatorOne); + scoreDataVO.setMaxScore(voList.get(0).getLevelOneIndicatorMaxScore()); + scoreDataVO.setSubType(SubTypeEnum.getEnumByCode(i + 1)); + } scoreDataVOList.add(scoreDataVO); } return scoreDataVOList; @@ -411,10 +450,12 @@ }).filter(Objects::nonNull).collect(Collectors.toList()); } - private Double getYearScore(String areaCode, Integer yearType) { - List<RiskMapVO> thisYearScoreList = tbScoreService.getScoreByYearType(areaCode, yearType); + private Double getYearScore(String areaCode, String previousQuarter) { + List<RiskMapVO> thisYearScoreList = tbScoreService.getScoreByYearType(areaCode, + previousQuarter); return thisYearScoreList.stream().map(RiskMapVO::getScore) - .reduce(Double::sum).orElse(0D); + .reduce(Double::sum).map(BigDecimal::valueOf).orElse(BigDecimal.ZERO) + .setScale(2, RoundingMode.HALF_UP).doubleValue(); } private void handleDataIndicators(String areaCode, List<ScoreDataVO> scoreDataVOList) { @@ -507,14 +548,18 @@ public List<DeptCalculateDetailVO> deptCalculateDetail(DeptCalculateDetailQuery query) throws Exception { - return tbScoreService.deptCalculateDetail(query, DateUtils.getNowQuarter()); + String previousQuarter = DateUtils.getPreviousQuarter(); + previousQuarter = "2024年一季度"; + return tbScoreService.deptCalculateDetail(query, previousQuarter); } public CurrentFieldsDetailVO viewRawData(String areaCode) throws Exception { + String previousQuarter = DateUtils.getPreviousQuarter(); + previousQuarter = "2024年一季度"; Optional<TbBasicData> basicDataOptional = tbBasicDataService.lambdaQuery() .eq(TbBasicData::getDeptAreaCode, areaCode) .eq(TbBasicData::getStatus, ReportingStatusEnum.FILLED) - .eq(TbBasicData::getQuarter, DateUtils.getNowQuarter()).oneOpt(); + .eq(TbBasicData::getQuarter, previousQuarter).oneOpt(); if (basicDataOptional.isPresent()) { return tbBasicDataService.fieldsDetails(basicDataOptional.get().getId()).getData(); } else { @@ -524,7 +569,11 @@ public ScoreCalculateDetailVO fieldsDetail(CalculateDetailQuery query) { List<SysUser> countyList = getCountyList(query.getCityAreaCode()); - return tbScoreService.fieldsDetail(query, countyList); + try { + return tbScoreService.fieldsDetail(query, countyList); + } catch (Exception e) { + throw new RuntimeException(e); + } } public List<SysUser> getCountyList(String areaCode) { -- Gitblit v1.7.1