From 6af08bad1986a72fa196afeb04c389c005fab673 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期五, 30 八月 2024 11:52:08 +0800 Subject: [PATCH] bug修改 --- finance-admin/src/main/java/com/finance/web/controller/api/CurrentQuarterController.java | 4 finance-system/src/main/resources/mapper/system/TbBasicDataMapper.xml | 5 finance-system/src/main/java/com/finance/system/service/impl/TbScoreServiceImpl.java | 76 ++++++++++++ finance-system/src/main/java/com/finance/system/service/impl/TbQuestionServiceImpl.java | 2 finance-system/src/main/java/com/finance/system/vo/FieldsTreeVO.java | 2 finance-system/src/main/java/com/finance/system/mapper/TbScoreMapper.java | 20 +++ finance-system/src/main/java/com/finance/system/service/impl/AsyncServiceImpl.java | 87 +++++++------- finance-system/src/main/java/com/finance/system/service/impl/TbBasicDataServiceImpl.java | 25 +++- finance-system/src/main/resources/mapper/system/TbScoreMapper.xml | 40 ++++++ finance-admin/src/main/java/com/finance/web/controller/service/ScreenService.java | 65 +++++----- finance-system/src/main/java/com/finance/system/vo/ScoreRankVO.java | 5 finance-common/src/main/java/com/finance/common/enums/BasicDataFieldEnum.java | 3 finance-system/src/main/java/com/finance/system/service/impl/TbFieldServiceImpl.java | 7 finance-system/src/main/java/com/finance/system/vo/RiskAndTransferVO.java | 5 finance-system/src/main/java/com/finance/system/service/TbScoreService.java | 3 15 files changed, 254 insertions(+), 95 deletions(-) diff --git a/finance-admin/src/main/java/com/finance/web/controller/api/CurrentQuarterController.java b/finance-admin/src/main/java/com/finance/web/controller/api/CurrentQuarterController.java index 1634b9b..145714b 100644 --- a/finance-admin/src/main/java/com/finance/web/controller/api/CurrentQuarterController.java +++ b/finance-admin/src/main/java/com/finance/web/controller/api/CurrentQuarterController.java @@ -68,7 +68,7 @@ @Validated @RequestBody CurrentFieldsQuery dto) { try { String previousQuarter = DateUtils.getPreviousQuarter(); - previousQuarter = "2024年一季度"; + // previousQuarter = "2024年一季度"; dto.setQuarter(previousQuarter); return tbBasicDataService.fieldsStatics(dto); } catch (Exception e) { @@ -150,7 +150,7 @@ @Validated @RequestBody ScoreCalculateQuery query) { try { String previousQuarter = DateUtils.getPreviousQuarter(); - previousQuarter = "2024年一季度"; + // previousQuarter = "2024年一季度"; query.setQuarter(previousQuarter); return R.ok(tbBasicDataService.scoreCalculatePage(query)); } catch (Exception e) { 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 d48f5cd..19e252a 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 @@ -116,9 +116,12 @@ } public RiskAndTransferVO getRiskAndTransfer() throws Exception { - String previousQuarter = DateUtils.getPreviousQuarter(); - previousQuarter = "2024年一季度"; RiskAndTransferVO riskAndTransferVO = new RiskAndTransferVO(); + // 查询省本级得分排名 + ScoreRankVO scoreRankVO = tbScoreService.queryRankAndScoreByAreaCode("510000"); + riskAndTransferVO.setScoreRankVO(scoreRankVO); + String previousQuarter = DateUtils.getPreviousQuarter(); + // previousQuarter = "2024年一季度"; // 查询转移支付规模总额 List<TbBasicData> list = tbBasicDataService.lambdaQuery() .select(TbBasicData::getTransferPaymentScale) @@ -134,7 +137,10 @@ List<RiskLevelVO> riskLevelVOList = formatRiskLevel(riskLevel); riskAndTransferVO.setRiskLevelVOList(riskLevelVOList); RiskCountVO riskCountVO = new RiskCountVO(); - List<RiskMapVO> riskMapVOList = tbScoreService.getCurrentScoreList(previousQuarter, null); + // 地图市域得分 + List<RiskMapVO> riskMapVOList = tbScoreService.getCityScore(previousQuarter, + riskLevel); + // List<RiskMapVO> riskMapVOList = tbScoreService.getCurrentScoreList(previousQuarter, null); String[] noRiskArr = riskLevel.getNoRisk().split("_"); String[] lowRiskArr = riskLevel.getLowRisk().split("_"); String[] mediumRiskArr = riskLevel.getMediumRisk().split("_"); @@ -153,7 +159,7 @@ long mediumRiskCount = cityRiskVO.stream() .filter(item -> item.getScore() >= Double.parseDouble(mediumRiskArr[0]) && item.getScore() <= Double.parseDouble(mediumRiskArr[1])).count(); - riskCountVO.setHighRiskCount((int) mediumRiskCount); + riskCountVO.setMediumRiskCount((int) mediumRiskCount); long highRiskCount = cityRiskVO.stream() .filter(item -> item.getScore() >= Double.parseDouble(highRiskArr[0]) && item.getScore() <= Double.parseDouble(highRiskArr[1])).count(); @@ -184,6 +190,7 @@ // 查询风险配置对应得分 // List<RiskMapVO> riskMapVOList = tbDataScreenScoreService.queryScore4Map(nowQuarter, // riskLevel.getId()); + riskAndTransferVO.setRiskMapVOList(riskMapVOList); return riskAndTransferVO; } @@ -234,26 +241,26 @@ public List<RiskRankingVO> riskRanking() throws Exception { DataScreenConfigVO riskLevel = tbDataScreenConfigService.getRiskLevel(); List<RiskLevelVO> riskLevelVOList = formatRiskLevel(riskLevel); - // List<RiskRankingVO> voList = tbScoreService.queryRiskRanking( - // DateUtils.getPreviousQuarter()); List<RiskRankingVO> voList = tbScoreService.queryRiskRanking( - "2024年一季度"); + DateUtils.getPreviousQuarter()); + // List<RiskRankingVO> voList = tbScoreService.queryRiskRanking( + // "2024年一季度"); int rank = 1; for (RiskRankingVO riskRankingVO : voList) { riskRankingVO.setRank(rank++); for (RiskLevelVO vo : riskLevelVOList) { - if (vo.getRiskLevel().equals(RiskLevelEnum.L1) - && riskRankingVO.getScore() <= vo.getMin()) { - riskRankingVO.setRiskLevel(vo.getRiskLevel().getCode()); - } + // if (vo.getRiskLevel().equals(RiskLevelEnum.L1) + // && riskRankingVO.getScore() <= vo.getMin()) { + // riskRankingVO.setRiskLevel(vo.getRiskLevel().getCode()); + // } if (riskRankingVO.getScore() >= vo.getMin() && riskRankingVO.getScore() <= vo.getMax()) { riskRankingVO.setRiskLevel(vo.getRiskLevel().getCode()); } - if (vo.getRiskLevel().equals(RiskLevelEnum.L4) - && riskRankingVO.getScore() >= vo.getMax()) { - riskRankingVO.setRiskLevel(vo.getRiskLevel().getCode()); - } + // if (vo.getRiskLevel().equals(RiskLevelEnum.L4) + // && riskRankingVO.getScore() >= vo.getMax()) { + // riskRankingVO.setRiskLevel(vo.getRiskLevel().getCode()); + // } } } return voList; @@ -261,7 +268,7 @@ public List<QuestionVO> queryQuestions() throws Exception { String previousQuarter = DateUtils.getPreviousQuarter(); - previousQuarter = "2024年一季度"; + // previousQuarter = "2024年一季度"; List<TbQuestion> list = tbQuestionService.lambdaQuery() .eq(TbQuestion::getQuarter, previousQuarter).list(); return BeanUtils.copyList(list, QuestionVO.class); @@ -277,7 +284,7 @@ dataAnalysisVO.setRank(scoreRankVO.getRank()); dataAnalysisVO.setScore(scoreRankVO.getScore()); String previousQuarter = DateUtils.getPreviousQuarter(); - previousQuarter = "2024年一季度"; + // previousQuarter = "2024年一季度"; // 查询问题 List<TbQuestion> list = tbQuestionService.lambdaQuery() .eq(TbQuestion::getQuarter, previousQuarter) @@ -302,18 +309,11 @@ // 查询风险等级 List<RiskMapVO> currentScoreList = tbScoreService.getCurrentScoreList(previousQuarter, areaCode); + for (RiskMapVO tbDataScreenScore : currentScoreList) { for (RiskLevelVO vo : riskLevelVOList) { - if (vo.getRiskLevel().equals(RiskLevelEnum.L1) - && tbDataScreenScore.getScore() <= vo.getMin()) { - dataAnalysisVO.setRiskLevel(vo.getRiskLevel().getCode()); - } if (tbDataScreenScore.getScore() >= vo.getMin() && tbDataScreenScore.getScore() <= vo.getMax()) { - dataAnalysisVO.setRiskLevel(vo.getRiskLevel().getCode()); - } - if (vo.getRiskLevel().equals(RiskLevelEnum.L4) - && tbDataScreenScore.getScore() >= vo.getMax()) { dataAnalysisVO.setRiskLevel(vo.getRiskLevel().getCode()); } } @@ -549,16 +549,15 @@ public List<DeptCalculateDetailVO> deptCalculateDetail(DeptCalculateDetailQuery query) throws Exception { String previousQuarter = DateUtils.getPreviousQuarter(); - previousQuarter = "2024年一季度"; + // previousQuarter = "2024年一季度"; return tbScoreService.deptCalculateDetail(query, previousQuarter); } public CurrentFieldsDetailVO viewRawData(String areaCode) throws Exception { String previousQuarter = DateUtils.getPreviousQuarter(); - previousQuarter = "2024年一季度"; + // previousQuarter = "2024年一季度"; Optional<TbBasicData> basicDataOptional = tbBasicDataService.lambdaQuery() .eq(TbBasicData::getDeptAreaCode, areaCode) - .eq(TbBasicData::getStatus, ReportingStatusEnum.FILLED) .eq(TbBasicData::getQuarter, previousQuarter).oneOpt(); if (basicDataOptional.isPresent()) { return tbBasicDataService.fieldsDetails(basicDataOptional.get().getId()).getData(); @@ -578,12 +577,18 @@ public List<SysUser> getCountyList(String areaCode) { String cityCode = areaCode.substring(0, 4); + if (areaCode.equals("510000")) { + cityCode = areaCode.substring(0, 3); + } List<SysUser> list = sysUserService.lambdaQuery() .select(SysUser::getAreaCode, SysUser::getAreaName, SysUser::getAreaAlias, SysUser::getUserId).eq(SysUser::getUserType, UserTypeEnum.DEPARTMENT) - .ne(SysUser::getAreaLevel, AreaLevelEnum.CITY) - .likeRight(SysUser::getAreaCode, cityCode).list(); + .likeRight(SysUser::getAreaCode, cityCode).or(cityCode.equals("5101")) + .in(cityCode.equals("5101"), SysUser::getAreaCode, "510008", "510015", "510017", + "510025") + .orderByAsc(!areaCode.equals("510100"), SysUser::getAreaCode) + .list(); return list; } } diff --git a/finance-common/src/main/java/com/finance/common/enums/BasicDataFieldEnum.java b/finance-common/src/main/java/com/finance/common/enums/BasicDataFieldEnum.java index f8abfc0..a18cf13 100644 --- a/finance-common/src/main/java/com/finance/common/enums/BasicDataFieldEnum.java +++ b/finance-common/src/main/java/com/finance/common/enums/BasicDataFieldEnum.java @@ -115,7 +115,8 @@ BASIC_DATA_FIELD85(85L, "(七)债务管理情况-当年已付息金额-一般债"), BASIC_DATA_FIELD86(86L, "(七)债务管理情况-当年已付息金额-专项债"), BASIC_DATA_FIELD87(87L, "(七)债务管理情况-当年已付息金额-一般债"), - BASIC_DATA_FIELD88(88L, "(七)债务管理情况-当年已付息金额-专项债"); + BASIC_DATA_FIELD88(88L, "(七)债务管理情况-当年已付息金额-专项债"), + BASIC_DATA_FIELD89(89L, "(八)中央直达资金-支付进度"); private final Long code; private final String desc; diff --git a/finance-system/src/main/java/com/finance/system/mapper/TbScoreMapper.java b/finance-system/src/main/java/com/finance/system/mapper/TbScoreMapper.java index fff6b26..c5fb45f 100644 --- a/finance-system/src/main/java/com/finance/system/mapper/TbScoreMapper.java +++ b/finance-system/src/main/java/com/finance/system/mapper/TbScoreMapper.java @@ -49,4 +49,24 @@ List<RiskMapVO> getScoreByYearType(@Param("areaCode") String areaCode, @Param("quarter") String quarter); + + /** + * 查询市的平均得分 + * + * @param areaCode + * @param previousQuarter + * @return + */ + Double getCityAverageScore(@Param("areaCode") String areaCode, + @Param("previousQuarter") String previousQuarter); + + /** + * 根据区划代码前四位查询区县得分列表 + * + * @param areaCode + * @param previousQuarter + * @return + */ + List<Double> getCountyScoreList(@Param("areaCode") String areaCode, + @Param("previousQuarter") String previousQuarter); } diff --git a/finance-system/src/main/java/com/finance/system/service/TbScoreService.java b/finance-system/src/main/java/com/finance/system/service/TbScoreService.java index 0ff9c03..5871d3e 100644 --- a/finance-system/src/main/java/com/finance/system/service/TbScoreService.java +++ b/finance-system/src/main/java/com/finance/system/service/TbScoreService.java @@ -10,6 +10,7 @@ import com.finance.system.query.HistoryScoreQuery; import com.finance.system.query.ScoreCalculateDetailQuery; import com.finance.system.query.ScoreQuery; +import com.finance.system.vo.DataScreenConfigVO; import com.finance.system.vo.DeptCalculateDetailVO; import com.finance.system.vo.RiskMapVO; import com.finance.system.vo.RiskRankingVO; @@ -52,4 +53,6 @@ List<RiskRankingVO> queryRiskRanking(String nowQuarter); List<RiskMapVO> getScoreByYearType(String areaCode, String quarter); + + List<RiskMapVO> getCityScore(String previousQuarter, DataScreenConfigVO riskLevel); } diff --git a/finance-system/src/main/java/com/finance/system/service/impl/AsyncServiceImpl.java b/finance-system/src/main/java/com/finance/system/service/impl/AsyncServiceImpl.java index 45382d1..a95142f 100644 --- a/finance-system/src/main/java/com/finance/system/service/impl/AsyncServiceImpl.java +++ b/finance-system/src/main/java/com/finance/system/service/impl/AsyncServiceImpl.java @@ -36,6 +36,7 @@ import com.finance.system.service.TbBasicDataFieldService; import com.finance.system.service.TbScoreService; import com.finance.system.vo.BasicDataConfigVO; +import com.google.common.collect.Lists; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; @@ -246,7 +247,6 @@ } else { score = 0D; } - break; case INDICATOR_ITEM2: // 2:财政经济形势-收入执行率-地方一般公共预算收入执行进度(地方一般公共预算收入/年初预算或调整预算); @@ -296,7 +296,6 @@ score = getScore(deptDividendValue, deptDivisorValue, provinceDividendValue, provinceDivisorValue, vo); } - break; case INDICATOR_ITEM5: // 5: 财政经济形势-重大财税政策落实情况-减税降费落实情况 @@ -359,13 +358,13 @@ BigDecimal add = BigDecimal.valueOf(0.6D).subtract(divided) .multiply(BigDecimal.valueOf(100D)) .divide(BigDecimal.valueOf(4D), 2, RoundingMode.HALF_UP) - .add(BigDecimal.valueOf(8)); + .add(BigDecimal.valueOf(8)) + .setScale(2, RoundingMode.HALF_UP); score = add.compareTo(BigDecimal.ZERO) >= 0 ? add.doubleValue() : 0D; } else { score = vo.getMaxScore(); } } - break; case INDICATOR_ITEM10: // 10:预算管理方面-“三保”保障情况-“三保”支出保障情况 @@ -388,35 +387,34 @@ // 13:预算执行方面-库款管理-库款保障水平 BigDecimal currentData = getBigDecimal(sysUser.getAreaName(), deptFieldsMap, BasicDataFieldEnum.BASIC_DATA_FIELD35); + BigDecimal first = getBigDecimal(sysUser.getAreaName(), deptFieldsMap, + BasicDataFieldEnum.BASIC_DATA_FIELD36); + BigDecimal second = getBigDecimal(sysUser.getAreaName(), deptFieldsMap, + BasicDataFieldEnum.BASIC_DATA_FIELD37); + BigDecimal third = getBigDecimal(sysUser.getAreaName(), deptFieldsMap, + BasicDataFieldEnum.BASIC_DATA_FIELD38); BigDecimal part1; BigDecimal part2 = BigDecimal.ZERO; - if (currentData.compareTo(BigDecimal.valueOf(0.8D)) < 0) { - BigDecimal add = currentData.subtract(BigDecimal.valueOf(0.8D)) + if (third.compareTo(BigDecimal.valueOf(0.8D)) < 0) { + BigDecimal add = third.subtract(BigDecimal.valueOf(0.8D)) .divide(BigDecimal.valueOf(0.1D), 2, RoundingMode.HALF_UP) .multiply(BigDecimal.valueOf(0.6D)) - .add(BigDecimal.valueOf(3D)); + .add(BigDecimal.valueOf(3D)) + .setScale(2, RoundingMode.HALF_UP); part1 = add.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : add; } else { part1 = BigDecimal.valueOf(3D); } - // BigDecimal first = getBigDecimal(sysUser.getAreaName(), deptFieldsMap, - // BasicDataFieldEnum.BASIC_DATA_FIELD36); - // BigDecimal second = getBigDecimal(sysUser.getAreaName(), deptFieldsMap, - // BasicDataFieldEnum.BASIC_DATA_FIELD37); - // BigDecimal third = getBigDecimal(sysUser.getAreaName(), deptFieldsMap, - // BasicDataFieldEnum.BASIC_DATA_FIELD38); - String year = tbBasicData.getQuarter().substring(0, 4); - List<BigDecimal> kuKuanList = tbBasicDataMapper.getKuKuanBaoZhangShuiPingByAreaCode( - sysUser.getAreaCode(), - year).stream() - .map(BigDecimal::new) - .collect(Collectors.toList()); - part2 = kuKuanList.stream() - .anyMatch(item -> item.compareTo(BigDecimal.valueOf(0.3D)) <= 0) - ? BigDecimal.ZERO - : BigDecimal.valueOf(3D); - + // String year = tbBasicData.getQuarter().substring(0, 4); + // List<BigDecimal> kuKuanList = tbBasicDataMapper.getKuKuanBaoZhangShuiPingByAreaCode( + // sysUser.getAreaCode(), + // year).stream() + // .map(BigDecimal::new) + // .collect(Collectors.toList()); + long count = Lists.newArrayList(first, second, third).stream() + .filter(item -> item.compareTo(BigDecimal.valueOf(0.3D)) >= 0).count(); + part2 = BigDecimal.valueOf(count); score = part1.add(part2).doubleValue(); break; case INDICATOR_ITEM14: @@ -434,7 +432,8 @@ score = divide.subtract(BigDecimal.valueOf(0.98D)) .multiply(BigDecimal.valueOf(100D)) .divide(BigDecimal.valueOf(3D), 2, RoundingMode.HALF_UP) - .add(BigDecimal.valueOf(vo.getMaxScore())).doubleValue(); + .add(BigDecimal.valueOf(vo.getMaxScore())) + .setScale(2, RoundingMode.HALF_UP).doubleValue(); } else { score = vo.getMaxScore(); } @@ -456,15 +455,14 @@ case INDICATOR_ITEM16: // 16:预算执行方面-中央直达资金-中央直达资金支付进度 deptDividendValue = getBigDecimal(sysUser.getAreaName(), deptFieldsMap, - BasicDataFieldEnum.BASIC_DATA_FIELD11); + BasicDataFieldEnum.BASIC_DATA_FIELD89); BigDecimal divided1 = month.divide(BigDecimal.valueOf(12D), 2, - RoundingMode.HALF_UP); + RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100L)); if (deptDividendValue.compareTo(divided1) < 0) { BigDecimal add = deptDividendValue.subtract(divided1) - .multiply(BigDecimal.valueOf(100D)) - .divide(BigDecimal.valueOf(5D), 2, - RoundingMode.HALF_UP) - .add(BigDecimal.valueOf(vo.getMaxScore())); + .divide(BigDecimal.valueOf(5D), 2, RoundingMode.HALF_UP) + .add(BigDecimal.valueOf(vo.getMaxScore())) + .setScale(2, RoundingMode.HALF_UP); score = add.compareTo(BigDecimal.ZERO) < 0 ? 0D : add.doubleValue(); } else { score = vo.getMaxScore(); @@ -486,14 +484,14 @@ case INDICATOR_ITEM19: // 19:风险防控方面-暂付款管理-暂付款累计余额 BigDecimal bk = getBigDecimal(sysUser.getAreaName(), deptFieldsMap, - BasicDataFieldEnum.BASIC_DATA_FIELD61); + BasicDataFieldEnum.BASIC_DATA_FIELD61);// 175414 BigDecimal t = getBigDecimal(sysUser.getAreaName(), deptFieldsMap, - BasicDataFieldEnum.BASIC_DATA_FIELD15); + BasicDataFieldEnum.BASIC_DATA_FIELD15);// 696635 BigDecimal ab = getBigDecimal(sysUser.getAreaName(), deptFieldsMap, - BasicDataFieldEnum.BASIC_DATA_FIELD23); - BigDecimal add = t.add(ab.divide(month.multiply( - BigDecimal.valueOf(12D).multiply(BigDecimal.valueOf(0.05D))), 2, - RoundingMode.HALF_UP)); + BasicDataFieldEnum.BASIC_DATA_FIELD23); // 56552 + BigDecimal add = t.add(ab).divide(month.multiply( + BigDecimal.valueOf(12D)).multiply(BigDecimal.valueOf(0.05D)), 2, + RoundingMode.HALF_UP); score = bk.compareTo(add) > 0 ? 0D : vo.getMaxScore(); break; case INDICATOR_ITEM20: @@ -510,7 +508,8 @@ BigDecimal d2 = month.divide(BigDecimal.valueOf(12D), 2, RoundingMode.HALF_UP); score = d1.compareTo(d2) < 0 ? d1.divide(d2, 2, RoundingMode.HALF_UP) - .multiply(BigDecimal.valueOf(vo.getMaxScore())).doubleValue() + .multiply(BigDecimal.valueOf(vo.getMaxScore())) + .setScale(2, RoundingMode.HALF_UP).doubleValue() : vo.getMaxScore(); } else { score = vo.getMaxScore(); @@ -578,6 +577,7 @@ return false; } + private static List<TbQuestion> getQuestList(List<TbQuestion> list, String deptAreaCode, QuestionTypeEnum type) { return list.stream() @@ -607,7 +607,8 @@ } return BigDecimal.valueOf( - Double.parseDouble(tbBasicDataField.getFieldValue().replace(",", ""))); + Double.parseDouble( + tbBasicDataField.getFieldValue().replace(",", "").replace("%", ""))); } /** @@ -639,7 +640,8 @@ if (deptDivided.compareTo(provinceDivided) < 0) { score = deptDivided.subtract(provinceDivided) .multiply(BigDecimal.valueOf(100L)) - .add(BigDecimal.valueOf(vo.getMaxScore())); + .add(BigDecimal.valueOf(vo.getMaxScore())) + .setScale(2, RoundingMode.HALF_UP); score = score.compareTo(BigDecimal.ZERO) >= 0 ? score : BigDecimal.ZERO; } else { score = BigDecimal.valueOf(vo.getMaxScore()); @@ -667,9 +669,10 @@ score = BigDecimal.valueOf(vo.getMaxScore()); } else { - score = deptDivided.subtract(provinceDivided) + score = provinceDivided.subtract(deptDivided) .multiply(BigDecimal.valueOf(100L)) - .add(BigDecimal.valueOf(vo.getMaxScore())); + .add(BigDecimal.valueOf(vo.getMaxScore())) + .setScale(2, RoundingMode.HALF_UP); score = score.compareTo(BigDecimal.ZERO) >= 0 ? score : BigDecimal.ZERO; } return score.doubleValue(); diff --git a/finance-system/src/main/java/com/finance/system/service/impl/TbBasicDataServiceImpl.java b/finance-system/src/main/java/com/finance/system/service/impl/TbBasicDataServiceImpl.java index bc7243a..3f9a208 100644 --- a/finance-system/src/main/java/com/finance/system/service/impl/TbBasicDataServiceImpl.java +++ b/finance-system/src/main/java/com/finance/system/service/impl/TbBasicDataServiceImpl.java @@ -128,6 +128,8 @@ if (tbBasicDataField != null) { field.setValue( tbBasicDataField.getFieldValue()); + } else { + field.setValue(""); } if (field.getChildren() != null && !field.getChildren().isEmpty()) { setFieldValues(field.getChildren(), fieldMap); @@ -155,7 +157,7 @@ LocalDate fifteenDaysLimit = quarterStartLocalDate.plusDays(14); LocalDate now = LocalDate.now(); String previousQuarter = DateUtils.getPreviousQuarter(); - previousQuarter = "2024年一季度"; + // previousQuarter = "2024年一季度"; DateUtils.getQuarterDate(previousQuarter); vo.setQuarter(previousQuarter); vo.setStatus(ReportingStatusEnum.UNFILLED); @@ -230,7 +232,7 @@ return; } String previousQuarter = DateUtils.getPreviousQuarter(); - previousQuarter = "2024年一季度"; + // previousQuarter = "2024年一季度"; // 查询需要填写的动态字段 List<TbField> fieldList = tbFieldService.lambdaQuery().eq(TbField::getStatus, ShowStatusEnum.SHOW).list(); @@ -240,6 +242,8 @@ .eq(TbBasicData::getDeptAreaCode, areaCode) .eq(TbBasicData::getQuarter, previousQuarter).oneOpt(); TbBasicData tbBasicData = BeanUtils.copyBean(dto, TbBasicData.class); + tbBasicData.setCurrentGdp(tbBasicData.getCurrentGdp().replace(",", "")); + tbBasicData.setTransferPaymentScale(tbBasicData.getTransferPaymentScale().replace(",", "")); if (basicDataOpt.isPresent()) { tbBasicData.setId(basicDataOpt.get().getId()); tbBasicData.setDeptAreaCode(areaCode); @@ -493,7 +497,7 @@ LoginUser loginUser = SecurityUtils.getLoginUser(); String areaCode = loginUser.getUser().getAreaCode(); String previousQuarter = DateUtils.getPreviousQuarter(); - previousQuarter = "2024年一季度"; + // previousQuarter = "2024年一季度"; EasyExcel.read( file.getInputStream(), new BasicDataListener( @@ -613,7 +617,7 @@ Date quarterStart = DateUtil.beginOfQuarter(date); Date quarterEnd = DateUtil.endOfQuarter(date); String previousQuarter = DateUtils.getPreviousQuarter(); - previousQuarter = "2024年一季度"; + // previousQuarter = "2024年一季度"; // 查询是否有当前季度的填报记录 TbBasicData basicData = this.getOne( @@ -784,7 +788,7 @@ roots.add(remark); vo.setFields(roots); String previousQuarter = DateUtils.getPreviousQuarter(); - previousQuarter = "2024年一季度"; + // previousQuarter = "2024年一季度"; // 查询上报的基础数据 List<TbBasicData> basicDataList = this.lambdaQuery() @@ -952,7 +956,7 @@ if (quarterLocalDate.isAfter(dateLocalDate) || quarterLocalDate.equals(dateLocalDate)) { throw new ServiceException("请导入过去季度的数据。"); } - + long start = System.currentTimeMillis(); EasyExcel.read( file.getInputStream(), new HistoryDataListener( @@ -966,6 +970,7 @@ .sheet() .headRowNumber(0) .doRead(); + log.info("历史数据导入完成,耗时{}毫秒", System.currentTimeMillis() - start); } @Override @@ -1142,6 +1147,8 @@ // 查询需要填写的动态字段 List<TbField> fieldList = tbFieldService.lambdaQuery().eq(TbField::getStatus, ShowStatusEnum.SHOW).list(); + Map<Long, TbField> allFieldMap = fieldList.stream() + .collect(Collectors.toMap(TbField::getId, e -> e)); List<TbBasicDataField> originFields = tbBasicDataFieldService.lambdaQuery() .eq(TbBasicDataField::getBasicDataId, basicData.getId()).list(); Set<Long> fieldIdList = originFields.stream().map(TbBasicDataField::getFieldId) @@ -1153,6 +1160,8 @@ BeanUtils.copyBean(dto, BasicDataDTO.class), fieldMap)); TbBasicData tbBasicData = BeanUtils.copyBean(dto, TbBasicData.class); + tbBasicData.setCurrentGdp(tbBasicData.getCurrentGdp().replace(",", "")); + tbBasicData.setTransferPaymentScale(tbBasicData.getTransferPaymentScale().replace(",", "")); tbBasicData.setDeptAreaCode(basicData.getDeptAreaCode()); tbBasicData.setQuarter(basicData.getQuarter()); // 保存基础数据动态字段数据 @@ -1194,6 +1203,10 @@ if (StringUtils.isNotBlank(item.getFieldValue())) { item.setFieldValue(item.getFieldValue().replace(",", "")); } + } else { + TbField field = allFieldMap.get(item.getFieldId()); + item.setFieldName(field.getFieldName()); + item.setBasicDataId(basicData.getId()); } }).collect(Collectors.toList()); diff --git a/finance-system/src/main/java/com/finance/system/service/impl/TbFieldServiceImpl.java b/finance-system/src/main/java/com/finance/system/service/impl/TbFieldServiceImpl.java index 7e95dea..416112d 100644 --- a/finance-system/src/main/java/com/finance/system/service/impl/TbFieldServiceImpl.java +++ b/finance-system/src/main/java/com/finance/system/service/impl/TbFieldServiceImpl.java @@ -13,6 +13,7 @@ import com.finance.common.exception.ServiceException; import com.finance.common.utils.BeanUtils; import com.finance.common.utils.CollUtils; +import com.finance.common.utils.DateUtils; import com.finance.common.utils.EasyExcelUtil; import com.finance.common.utils.SecurityUtils; import com.finance.common.utils.StringUtils; @@ -336,7 +337,7 @@ .eq(SysUser::getUserType, UserTypeEnum.DEPARTMENT).list(); String[] userNameArr = userList.stream().map(SysUser::getAreaName) .toArray(String[]::new); - selectedMap.put(0, userNameArr); + // selectedMap.put(0, userNameArr); // 生成下拉框的行数为部门的数量 rows = userList.size(); } @@ -378,8 +379,8 @@ columnNo.add(String.valueOf(i)); } excellist.add(columnNo); - excellist.add(Lists.newArrayList(areaName, isDept ? "2024年一季度" : "")); - // excellist.add(Lists.newArrayList(areaName, isDept ? DateUtils.getPreviousQuarter() : "")); + // excellist.add(Lists.newArrayList(areaName, isDept ? "2024年一季度" : "")); + excellist.add(Lists.newArrayList(areaName, isDept ? DateUtils.getPreviousQuarter() : "")); return excellist; } diff --git a/finance-system/src/main/java/com/finance/system/service/impl/TbQuestionServiceImpl.java b/finance-system/src/main/java/com/finance/system/service/impl/TbQuestionServiceImpl.java index b217cf3..e50f21a 100644 --- a/finance-system/src/main/java/com/finance/system/service/impl/TbQuestionServiceImpl.java +++ b/finance-system/src/main/java/com/finance/system/service/impl/TbQuestionServiceImpl.java @@ -48,7 +48,7 @@ TbQuestion tbQuestion = BeanUtils.copyBean(dto, TbQuestion.class); tbQuestion.setType(dto.getType()); String previousQuarter = DateUtils.getPreviousQuarter(); - previousQuarter = "2024年一季度"; + // previousQuarter = "2024年一季度"; tbQuestion.setQuarter(previousQuarter); this.save(tbQuestion); asyncService.subtractScoreWithFixedRules(dto.getDeptAreaCode()); diff --git a/finance-system/src/main/java/com/finance/system/service/impl/TbScoreServiceImpl.java b/finance-system/src/main/java/com/finance/system/service/impl/TbScoreServiceImpl.java index 60174f3..c79ef28 100644 --- a/finance-system/src/main/java/com/finance/system/service/impl/TbScoreServiceImpl.java +++ b/finance-system/src/main/java/com/finance/system/service/impl/TbScoreServiceImpl.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.finance.common.basic.PageDTO; import com.finance.common.core.domain.entity.SysUser; +import com.finance.common.enums.AreaLevelEnum; +import com.finance.common.enums.UserTypeEnum; import com.finance.common.exception.ServiceException; import com.finance.common.utils.BeanUtils; import com.finance.common.utils.CollUtils; @@ -16,8 +18,10 @@ import com.finance.system.query.HistoryScoreQuery; import com.finance.system.query.ScoreCalculateDetailQuery; import com.finance.system.query.ScoreQuery; +import com.finance.system.service.ISysUserService; import com.finance.system.service.TbBasicDataConfigService; import com.finance.system.service.TbScoreService; +import com.finance.system.vo.DataScreenConfigVO; import com.finance.system.vo.DeptCalculateDetailVO; import com.finance.system.vo.RiskMapVO; import com.finance.system.vo.RiskRankingVO; @@ -25,6 +29,8 @@ import com.finance.system.vo.ScoreDetailVO; import com.finance.system.vo.ScoreRankVO; import com.finance.system.vo.ScoreVO; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -47,6 +53,7 @@ TbScoreService { private final TbBasicDataConfigService basicDataConfigService; + private final ISysUserService sysUserService; @Override public Page<ScoreVO> pageScore(ScoreQuery query, Page<ScoreVO> page) { @@ -74,7 +81,7 @@ vo.setCalculateType(config.getCalculateType()); Page<ScoreDetailVO> page = new Page<>(query.getPageNum(), query.getPageSize()); String previousQuarter = DateUtils.getPreviousQuarter(); - previousQuarter = "2024年一季度"; + // previousQuarter = "2024年一季度"; query.setPreviousQuarter(previousQuarter); Page<ScoreDetailVO> pageVO = baseMapper.scoreCalculateDetail(query, page); vo.setTotal(pageVO.getTotal()); @@ -110,7 +117,7 @@ @Override public ScoreRankVO queryRankAndScoreByAreaCode(String areaCode) throws Exception { String previousQuarter = DateUtils.getPreviousQuarter(); - previousQuarter = "2024年一季度"; + // previousQuarter = "2024年一季度"; List<ScoreRankVO> voList = baseMapper.queryRankAndScoreByAreaCode(areaCode, previousQuarter); if (CollUtils.isNotEmpty(voList)) { @@ -174,4 +181,69 @@ public List<RiskMapVO> getScoreByYearType(String areaCode, String quarter) { return baseMapper.getScoreByYearType(areaCode, quarter); } + + @Override + public List<RiskMapVO> getCityScore(String previousQuarter, DataScreenConfigVO riskLevel) { + // 查询城市部门 + List<SysUser> cityList = getCityList(); + List<RiskMapVO> riskMapVOList = new ArrayList<>(); + for (SysUser sysUser : cityList) { + RiskMapVO vo = new RiskMapVO(); + vo.setAreaCode(sysUser.getAreaCode()); + vo.setAreaName(sysUser.getAreaName()); + vo.setAreaLevel(sysUser.getAreaLevel()); + String areaCode = sysUser.getAreaCode(); + areaCode = areaCode.substring(0, 4); + Double totalAverageScore = baseMapper.getCityAverageScore(areaCode, + previousQuarter); + // 查询区县的得分 + List<Double> countyScoreList = baseMapper.getCountyScoreList(areaCode, previousQuarter); + // 将风险范围解析为列表,只解析一次 + List<Double> mediumRange = Arrays.stream(riskLevel.getMediumRisk().split("_")) + .map(Double::valueOf) + .collect(Collectors.toList()); + + List<Double> noRiskRange = Arrays.stream(riskLevel.getNoRisk().split("_")) + .map(Double::valueOf) + .collect(Collectors.toList()); + + // 计算中等风险和无风险的数量 + long mediumCount = 0; + long noCount = 0; + for (Double score : countyScoreList) { + if (score >= mediumRange.get(0) && score <= mediumRange.get(1)) { + mediumCount++; + } else if (score >= noRiskRange.get(0) && score <= noRiskRange.get(1)) { + noCount++; + } + } + // 当中等风险的数量大于总数的1/3,总分减一 + if ((double) mediumCount / (double) countyScoreList.size() > 0.33) { + totalAverageScore = totalAverageScore - 1D; + } + // 当无风险的数量大于总数的1/3,总分加一 + if ((double) noCount / (double) countyScoreList.size() > 0.33) { + totalAverageScore = totalAverageScore + 1D; + } + vo.setScore(totalAverageScore); + riskMapVOList.add(vo); + } + return riskMapVOList; + } + + public List<SysUser> getCityList() { + List<SysUser> list = sysUserService.lambdaQuery() + .eq(SysUser::getAreaLevel, AreaLevelEnum.CITY) + .list(); + return list; + } + + public List<SysUser> getChildrenList(String areaCode) { + String cityCode = areaCode.substring(0, 4); + List<SysUser> list = sysUserService.lambdaQuery() + .select(SysUser::getAreaCode, SysUser::getAreaName, SysUser::getAreaAlias, + SysUser::getUserId).eq(SysUser::getUserType, + UserTypeEnum.DEPARTMENT).likeRight(SysUser::getAreaCode, cityCode).list(); + return list; + } } diff --git a/finance-system/src/main/java/com/finance/system/vo/FieldsTreeVO.java b/finance-system/src/main/java/com/finance/system/vo/FieldsTreeVO.java index bd7f932..1577ce0 100644 --- a/finance-system/src/main/java/com/finance/system/vo/FieldsTreeVO.java +++ b/finance-system/src/main/java/com/finance/system/vo/FieldsTreeVO.java @@ -1,5 +1,6 @@ package com.finance.system.vo; +import com.fasterxml.jackson.annotation.JsonInclude; import com.finance.common.enums.FieldTypeEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -22,6 +23,7 @@ private Long id; @ApiModelProperty(value = "数据详情") + @JsonInclude(JsonInclude.Include.ALWAYS) private String value; @ApiModelProperty(value = "名称") diff --git a/finance-system/src/main/java/com/finance/system/vo/RiskAndTransferVO.java b/finance-system/src/main/java/com/finance/system/vo/RiskAndTransferVO.java index b15a5e2..30f0d0e 100644 --- a/finance-system/src/main/java/com/finance/system/vo/RiskAndTransferVO.java +++ b/finance-system/src/main/java/com/finance/system/vo/RiskAndTransferVO.java @@ -21,8 +21,9 @@ private List<RiskMapVO> riskMapVOList; @ApiModelProperty("风险等级区间") private List<RiskLevelVO> riskLevelVOList; - @ApiModelProperty("得分") - private Double score; + @ApiModelProperty("省本级得分排名") + private ScoreRankVO scoreRankVO; + } diff --git a/finance-system/src/main/java/com/finance/system/vo/ScoreRankVO.java b/finance-system/src/main/java/com/finance/system/vo/ScoreRankVO.java index 7d343dc..6167fb5 100644 --- a/finance-system/src/main/java/com/finance/system/vo/ScoreRankVO.java +++ b/finance-system/src/main/java/com/finance/system/vo/ScoreRankVO.java @@ -1,5 +1,6 @@ package com.finance.system.vo; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** @@ -12,11 +13,13 @@ /** * 区划代码 */ + @ApiModelProperty("区划代码") private String areaCode; /** * 得分 */ + @ApiModelProperty("得分") private Double score; - + @ApiModelProperty("排名") private Integer rank; } diff --git a/finance-system/src/main/resources/mapper/system/TbBasicDataMapper.xml b/finance-system/src/main/resources/mapper/system/TbBasicDataMapper.xml index 93c3f67..5f5bdf7 100644 --- a/finance-system/src/main/resources/mapper/system/TbBasicDataMapper.xml +++ b/finance-system/src/main/resources/mapper/system/TbBasicDataMapper.xml @@ -95,7 +95,7 @@ <select id="getFieldAndScoreData" resultType="com.finance.system.vo.FieldAndScoreDataVO"> SELECT tbdc.id, tbdc.type_name, - ROUND(ts.score,2) AS score, + ROUND(ts.score,1) AS score, tbdc.max_score, tbd.dept_area_code, tbdc.basic_data_category_id AS basicDataCategoryId, @@ -111,7 +111,8 @@ <where> tbd.`quarter` = #{nowQuarter} AND su.user_id IN (SELECT user_id FROM sys_user WHERE area_code - LIKE CONCAT( SUBSTRING(#{areaCode}, 0, 4 ), '%' ) AND user_type = 2 AND area_level = 4) + LIKE CONCAT( SUBSTRING(#{areaCode}, 1, 4 ), '%' ) AND user_type = 2 AND area_level + in(1,2,3,4)) <if test="isAll!=null and isAll == 2"> AND tbd.dept_area_code = #{areaCode} </if> diff --git a/finance-system/src/main/resources/mapper/system/TbScoreMapper.xml b/finance-system/src/main/resources/mapper/system/TbScoreMapper.xml index bb66666..1ef4e11 100644 --- a/finance-system/src/main/resources/mapper/system/TbScoreMapper.xml +++ b/finance-system/src/main/resources/mapper/system/TbScoreMapper.xml @@ -72,9 +72,19 @@ CURDATE()) AND su.user_id in (SELECT user_id FROM sys_user - WHERE area_code LIKE CONCAT(SUBSTRING(#{areaCode}, 0, 4), '%') + WHERE ( + ( + #{areaCode} = '510000' + AND area_code LIKE CONCAT( SUBSTRING( #{areaCode}, 1, 2 ), '%' )) + OR ( + #{areaCode} != '510000' + AND area_code LIKE CONCAT( SUBSTRING( #{areaCode}, 1, 4 ), '%' )) + OR ( + #{areaCode}= '510100' + AND area_code IN ( '510008', '510015', '510017', '510025' )) + ) AND user_type = 2 - AND area_level = 4) + AND area_level in (1,2,3,4)) </where> GROUP BY tbc.dept_area_code @@ -153,7 +163,7 @@ LEFT JOIN sys_user su ON su.area_code = tbd.dept_area_code <where> AND tbd.quarter = #{nowQuarter} - AND su.area_level = '${@com.finance.common.enums.AreaLevelEnum@COUNTY.getCode()}' + # AND su.area_level = '${@com.finance.common.enums.AreaLevelEnum@COUNTY.getCode()}' </where> GROUP BY tbd.id) rs ORDER BY rs.score ASC @@ -170,5 +180,29 @@ GROUP BY tbd.id) rs ORDER BY rs.score DESC </select> + <select id="getCityAverageScore" resultType="java.lang.Double"> + SELECT IFNULL(ROUND(SUM(res.score), 2), 0) AS total_score + FROM (SELECT SUM(ts.score) / COUNT(DISTINCT ts.basic_data_id) AS score + FROM tb_score ts + JOIN tb_basic_data tbd ON tbd.id = ts.basic_data_id + WHERE tbd.quarter = #{previousQuarter} + AND ( + tbd.dept_area_code LIKE CONCAT(#{areaCode}, '%') + OR ( + #{areaCode} = '5101' + AND tbd.dept_area_code IN ('510008', '510015', '510017', '510025') + ) + ) + GROUP BY ts.basic_data_config_id) AS res + + </select> + <select id="getCountyScoreList" resultType="java.lang.Double"> + SELECT IFNULL(ROUND(SUM(ts.score), 2), 0) AS score + FROM tb_score ts + JOIN tb_basic_data tbd ON tbd.id = ts.basic_data_id + WHERE tbd.quarter = #{previousQuarter} + AND tbd.dept_area_code LIKE CONCAT(#{areaCode}, '%') + GROUP BY ts.basic_data_id + </select> </mapper> -- Gitblit v1.7.1