From 18891c60ab1c06a4acc85d0ec54dee50d1b1a19f Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期一, 07 四月 2025 17:20:07 +0800 Subject: [PATCH] bug修改 --- finance-system/src/main/java/com/finance/system/service/impl/AsyncServiceImpl.java | 91 ++++++++++++++++++++++++++------------------- 1 files changed, 52 insertions(+), 39 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 a95142f..cbeba71 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 @@ -1,5 +1,7 @@ package com.finance.system.service.impl; +import static com.finance.common.enums.IndicatorItemEnum.INDICATOR_ITEM8; + import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson2.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -18,6 +20,7 @@ import com.finance.common.utils.CollUtils; import com.finance.common.utils.DateUtils; import com.finance.common.utils.StringUtils; +import com.finance.system.constants.QuarterConstant; import com.finance.system.domain.TbBasicData; import com.finance.system.domain.TbBasicDataConfig; import com.finance.system.domain.TbBasicDataConfigDetail; @@ -346,23 +349,29 @@ score = res ? 0 : vo.getMaxScore(); break; case INDICATOR_ITEM9: + // 预算管理方面-“三保”保障情况-“三保”需求占可用财力的比重 BigDecimal au = getBigDecimal(sysUser.getAreaName(), deptFieldsMap, BasicDataFieldEnum.BASIC_DATA_FIELD45); BigDecimal r = getBigDecimal(sysUser.getAreaName(), deptFieldsMap, BasicDataFieldEnum.BASIC_DATA_FIELD13); res1 = validateDivisorValue(r); score = 0D; - if (!res1) { - BigDecimal divided = au.divide(r, 2, RoundingMode.HALF_UP); - if (divided.compareTo(BigDecimal.valueOf(0.6D)) > 0) { - BigDecimal add = BigDecimal.valueOf(0.6D).subtract(divided) - .multiply(BigDecimal.valueOf(100D)) - .divide(BigDecimal.valueOf(4D), 2, RoundingMode.HALF_UP) - .add(BigDecimal.valueOf(8)) - .setScale(2, RoundingMode.HALF_UP); - score = add.compareTo(BigDecimal.ZERO) >= 0 ? add.doubleValue() : 0D; - } else { - score = vo.getMaxScore(); + TbScore tbScore = scoreList.stream().filter(s -> s.getBasicDataConfigId() + .equals(INDICATOR_ITEM8.getCode())).findFirst().orElse(null); + if (tbScore != null) { + if (!res1 && tbScore.getScore() != 0) { + BigDecimal divided = au.divide(r, 4, RoundingMode.HALF_UP); + if (divided.compareTo(BigDecimal.valueOf(0.6D)) > 0) { + BigDecimal add = BigDecimal.valueOf(0.6D).subtract(divided) + .multiply(BigDecimal.valueOf(100D)) + .divide(BigDecimal.valueOf(4D), 4, RoundingMode.HALF_UP) + .add(BigDecimal.valueOf(8)) + .setScale(1, RoundingMode.HALF_UP); + score = add.compareTo(BigDecimal.ZERO) >= 0 ? add.doubleValue() + : 0D; + } else { + score = vo.getMaxScore(); + } } } break; @@ -397,10 +406,10 @@ 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) + .divide(BigDecimal.valueOf(0.1D), 4, RoundingMode.HALF_UP) .multiply(BigDecimal.valueOf(0.6D)) .add(BigDecimal.valueOf(3D)) - .setScale(2, RoundingMode.HALF_UP); + .setScale(1, RoundingMode.HALF_UP); part1 = add.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : add; } else { part1 = BigDecimal.valueOf(3D); @@ -426,14 +435,14 @@ String substring = tbBasicData.getQuarter().substring(4); if (substring.equals("四季度")) { // 使用全年评价 - BigDecimal divide = deptDividendValue.divide(deptDivisorValue, 2, + BigDecimal divide = deptDividendValue.divide(deptDivisorValue, 4, 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) + .divide(BigDecimal.valueOf(3D), 4, RoundingMode.HALF_UP) .add(BigDecimal.valueOf(vo.getMaxScore())) - .setScale(2, RoundingMode.HALF_UP).doubleValue(); + .setScale(1, RoundingMode.HALF_UP).doubleValue(); } else { score = vo.getMaxScore(); } @@ -456,13 +465,13 @@ // 16:预算执行方面-中央直达资金-中央直达资金支付进度 deptDividendValue = getBigDecimal(sysUser.getAreaName(), deptFieldsMap, BasicDataFieldEnum.BASIC_DATA_FIELD89); - BigDecimal divided1 = month.divide(BigDecimal.valueOf(12D), 2, + BigDecimal divided1 = month.divide(BigDecimal.valueOf(12D), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100L)); if (deptDividendValue.compareTo(divided1) < 0) { BigDecimal add = deptDividendValue.subtract(divided1) - .divide(BigDecimal.valueOf(5D), 2, RoundingMode.HALF_UP) + .divide(BigDecimal.valueOf(5D), 4, RoundingMode.HALF_UP) .add(BigDecimal.valueOf(vo.getMaxScore())) - .setScale(2, RoundingMode.HALF_UP); + .setScale(1, RoundingMode.HALF_UP); score = add.compareTo(BigDecimal.ZERO) < 0 ? 0D : add.doubleValue(); } else { score = vo.getMaxScore(); @@ -489,9 +498,10 @@ BasicDataFieldEnum.BASIC_DATA_FIELD15);// 696635 BigDecimal ab = getBigDecimal(sysUser.getAreaName(), deptFieldsMap, 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); + BigDecimal add = t.add(ab).divide(month, 4, RoundingMode.HALF_UP) + .multiply(BigDecimal.valueOf(12D)) + .multiply(BigDecimal.valueOf(0.05D)) + .setScale(1, RoundingMode.HALF_UP); score = bk.compareTo(add) > 0 ? 0D : vo.getMaxScore(); break; case INDICATOR_ITEM20: @@ -503,13 +513,13 @@ res1 = validateDivisorValue(deptDivisorValue); score = 0D; if (!res1) { - BigDecimal d1 = deptDividendValue.divide(deptDivisorValue, 2, + BigDecimal d1 = deptDividendValue.divide(deptDivisorValue, 4, RoundingMode.HALF_UP); - BigDecimal d2 = month.divide(BigDecimal.valueOf(12D), 2, + BigDecimal d2 = month.divide(BigDecimal.valueOf(12D), 4, RoundingMode.HALF_UP); - score = d1.compareTo(d2) < 0 ? d1.divide(d2, 2, RoundingMode.HALF_UP) + score = d1.compareTo(d2) < 0 ? d1.divide(d2, 4, RoundingMode.HALF_UP) .multiply(BigDecimal.valueOf(vo.getMaxScore())) - .setScale(2, RoundingMode.HALF_UP).doubleValue() + .setScale(1, RoundingMode.HALF_UP).doubleValue() : vo.getMaxScore(); } else { score = vo.getMaxScore(); @@ -629,19 +639,19 @@ BigDecimal deptDivided = BigDecimal.ZERO; if (deptDivisorValue.compareTo(BigDecimal.ZERO) > 0) { - deptDivided = deptDividendValue.divide(deptDivisorValue, 2, RoundingMode.HALF_UP); + deptDivided = deptDividendValue.divide(deptDivisorValue, 4, RoundingMode.HALF_UP); } BigDecimal provinceDivided = BigDecimal.ZERO; if (provinceDivisorValue.compareTo(BigDecimal.ZERO) > 0) { - provinceDivided = provinceDividendValue.divide(provinceDivisorValue, 2, + provinceDivided = provinceDividendValue.divide(provinceDivisorValue, 4, RoundingMode.HALF_UP); } if (deptDivided.compareTo(provinceDivided) < 0) { score = deptDivided.subtract(provinceDivided) .multiply(BigDecimal.valueOf(100L)) .add(BigDecimal.valueOf(vo.getMaxScore())) - .setScale(2, RoundingMode.HALF_UP); + .setScale(1, RoundingMode.HALF_UP); score = score.compareTo(BigDecimal.ZERO) >= 0 ? score : BigDecimal.ZERO; } else { score = BigDecimal.valueOf(vo.getMaxScore()); @@ -657,12 +667,12 @@ BigDecimal deptDivided = BigDecimal.ZERO; if (deptDivisorValue.compareTo(BigDecimal.ZERO) > 0) { - deptDivided = deptDividendValue.divide(deptDivisorValue, 2, RoundingMode.HALF_UP); + deptDivided = deptDividendValue.divide(deptDivisorValue, 4, RoundingMode.HALF_UP); } BigDecimal provinceDivided = BigDecimal.ZERO; if (provinceDivisorValue.compareTo(BigDecimal.ZERO) > 0) { - provinceDivided = provinceDividendValue.divide(provinceDivisorValue, 2, + provinceDivided = provinceDividendValue.divide(provinceDivisorValue, 4, RoundingMode.HALF_UP); } if (deptDivided.compareTo(provinceDivided) < 0) { @@ -672,7 +682,7 @@ score = provinceDivided.subtract(deptDivided) .multiply(BigDecimal.valueOf(100L)) .add(BigDecimal.valueOf(vo.getMaxScore())) - .setScale(2, RoundingMode.HALF_UP); + .setScale(1, RoundingMode.HALF_UP); score = score.compareTo(BigDecimal.ZERO) >= 0 ? score : BigDecimal.ZERO; } return score.doubleValue(); @@ -744,18 +754,19 @@ private Double getScoreByMonth(BigDecimal deptDividendValue, BigDecimal deptDivisorValue, BigDecimal currentMonth, BasicDataConfigVO vo) { double score; - BigDecimal divided1 = deptDividendValue.divide(deptDivisorValue, 2, + BigDecimal divided1 = deptDividendValue.divide(deptDivisorValue, 4, RoundingMode.HALF_UP); - BigDecimal divided2 = currentMonth.divide(BigDecimal.valueOf(12D), 2, + BigDecimal divided2 = currentMonth.divide(BigDecimal.valueOf(12D), 4, RoundingMode.HALF_UP); if (divided1.compareTo( - currentMonth.divide(BigDecimal.valueOf(12D), 2, RoundingMode.HALF_UP)) + currentMonth.divide(BigDecimal.valueOf(12D), 4, RoundingMode.HALF_UP)) < 0) { BigDecimal add = divided1.subtract(divided2) .multiply(BigDecimal.valueOf(100D)) - .divide(BigDecimal.valueOf(5D), 2, + .divide(BigDecimal.valueOf(5D), 4, RoundingMode.HALF_UP) - .add(BigDecimal.valueOf(vo.getMaxScore())); + .add(BigDecimal.valueOf(vo.getMaxScore())) + .setScale(1, RoundingMode.HALF_UP); score = add.compareTo(BigDecimal.ZERO) < 0 ? 0D : add.doubleValue(); } else { score = vo.getMaxScore(); @@ -783,6 +794,7 @@ @Override public void subtractScoreWithFixedRules(String deptAreaCode) throws Exception { String previousQuarter = DateUtils.getPreviousQuarter(); + previousQuarter = QuarterConstant.CURRENT_QUARTER; TbBasicData tbBasicData = tbBasicDataMapper.selectOne( Wrappers.lambdaQuery(TbBasicData.class).eq(TbBasicData::getQuarter, previousQuarter) .eq(TbBasicData::getDeptAreaCode, deptAreaCode)); @@ -829,15 +841,16 @@ // 23:风险防控方面-债务管理-隐性债务化解 questionList = getQuestList(list, deptAreaCode, QuestionTypeEnum.ENUM6); - score = CollUtils.isNotEmpty(questionList) ? vo.getMaxScore() : -3D; + score = CollUtils.isNotEmpty(questionList) ? -3D : vo.getMaxScore(); break; case INDICATOR_ITEM24: // 24:风险防控方面-债务管理-日常监督发现问题 questionList = getQuestList(list, deptAreaCode, QuestionTypeEnum.ENUM7); if (CollUtils.isNotEmpty(questionList)) { - score = -18D + questionList.size() * -1D; + score = questionList.size() * -1D; } + break; case INDICATOR_ITEM25: // 25:风险防控方面-日常监督发现问题 questionList = getQuestList(list, deptAreaCode, -- Gitblit v1.7.1