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-system/src/main/java/com/finance/system/service/impl/AsyncServiceImpl.java | 103 ++++++++++++++++++++++++++++++++------------------- 1 files changed, 65 insertions(+), 38 deletions(-) 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 811f8ab..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: 财政经济形势-重大财税政策落实情况-减税降费落实情况 @@ -319,11 +318,11 @@ provinceDividendValue = getProvinceBigDecimal(provinceFieldsMap, BasicDataFieldEnum.BASIC_DATA_FIELD7); provinceDivisorValue = getProvinceBigDecimal(provinceFieldsMap, - BasicDataFieldEnum.BASIC_DATA_FIELD7); + BasicDataFieldEnum.BASIC_DATA_FIELD13); res1 = validateDivisorValue(deptDivisorValue); res2 = validateDivisorValue(provinceDivisorValue); score = 0D; - if (!res1 && res2) { + if (!res1 && !res2) { score = getScore2(deptDividendValue, deptDivisorValue, provinceDividendValue, provinceDivisorValue, vo); } @@ -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,27 +387,34 @@ // 13:预算执行方面-库款管理-库款保障水平 BigDecimal currentData = getBigDecimal(sysUser.getAreaName(), deptFieldsMap, BasicDataFieldEnum.BASIC_DATA_FIELD35); - BigDecimal part1; - BigDecimal part2; - if (currentData.compareTo(BigDecimal.valueOf(0.8D)) < 0) { - BigDecimal add = currentData.subtract(BigDecimal.valueOf(0.8D)) - .divide(BigDecimal.valueOf(0.1D), 2, RoundingMode.HALF_UP) - .multiply(BigDecimal.valueOf(0.6D)) - .add(BigDecimal.valueOf(4D)); - part1 = add.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : add; - } else { - part1 = BigDecimal.valueOf(4D); - } 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); - part2 = first.compareTo(BigDecimal.valueOf(0.3D)) < 0 - || second.compareTo(BigDecimal.valueOf(0.3D)) < 0 || third.compareTo( - BigDecimal.valueOf(0.3D)) < 0 ? BigDecimal.ZERO - : BigDecimal.valueOf(2D); + BigDecimal part1; + BigDecimal part2 = BigDecimal.ZERO; + 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)) + .setScale(2, RoundingMode.HALF_UP); + part1 = add.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : add; + } else { + part1 = 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: @@ -417,6 +423,21 @@ BasicDataFieldEnum.BASIC_DATA_FIELD15); deptDivisorValue = getBigDecimal(sysUser.getAreaName(), deptFieldsMap, BasicDataFieldEnum.BASIC_DATA_FIELD14); + String substring = tbBasicData.getQuarter().substring(4); + if (substring.equals("四季度")) { + // 使用全年评价 + BigDecimal divide = deptDividendValue.divide(deptDivisorValue, 2, + RoundingMode.HALF_UP); + if (divide.compareTo(BigDecimal.valueOf(0.98D)) < 0) { + score = divide.subtract(BigDecimal.valueOf(0.98D)) + .multiply(BigDecimal.valueOf(100D)) + .divide(BigDecimal.valueOf(3D), 2, RoundingMode.HALF_UP) + .add(BigDecimal.valueOf(vo.getMaxScore())) + .setScale(2, RoundingMode.HALF_UP).doubleValue(); + } else { + score = vo.getMaxScore(); + } + } score = getScoreByMonth(deptDividendValue, deptDivisorValue, month, vo); break; case INDICATOR_ITEM15: @@ -434,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(); @@ -464,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: @@ -488,8 +508,11 @@ 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(); } break; case INDICATOR_ITEM21: @@ -554,6 +577,7 @@ return false; } + private static List<TbQuestion> getQuestList(List<TbQuestion> list, String deptAreaCode, QuestionTypeEnum type) { return list.stream() @@ -583,7 +607,8 @@ } return BigDecimal.valueOf( - Double.parseDouble(tbBasicDataField.getFieldValue().replace(",", ""))); + Double.parseDouble( + tbBasicDataField.getFieldValue().replace(",", "").replace("%", ""))); } /** @@ -615,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()); @@ -643,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(); -- Gitblit v1.7.1