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 |   87 ++++++++++++++++++++++---------------------
 1 files changed, 45 insertions(+), 42 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 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();

--
Gitblit v1.7.1