From 3a6f2b349aaac3fd9f895c16f7d833252a2158ab Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期五, 23 八月 2024 15:26:25 +0800
Subject: [PATCH] bug修改

---
 finance-system/src/main/java/com/finance/system/service/impl/AsyncServiceImpl.java |   54 +++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 39 insertions(+), 15 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..45382d1 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
@@ -319,11 +319,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);
                     }
@@ -389,26 +389,34 @@
                     BigDecimal currentData = getBigDecimal(sysUser.getAreaName(), deptFieldsMap,
                             BasicDataFieldEnum.BASIC_DATA_FIELD35);
                     BigDecimal part1;
-                    BigDecimal part2;
+                    BigDecimal part2 = BigDecimal.ZERO;
                     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));
+                                .add(BigDecimal.valueOf(3D));
                         part1 = add.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : add;
                     } else {
-                        part1 = BigDecimal.valueOf(4D);
+                        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);
-                    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 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);
+
                     score = part1.add(part2).doubleValue();
                     break;
                 case INDICATOR_ITEM14:
@@ -417,6 +425,20 @@
                             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())).doubleValue();
+                        } else {
+                            score = vo.getMaxScore();
+                        }
+                    }
                     score = getScoreByMonth(deptDividendValue, deptDivisorValue, month, vo);
                     break;
                 case INDICATOR_ITEM15:
@@ -490,6 +512,8 @@
                         score = d1.compareTo(d2) < 0 ? d1.divide(d2, 2, RoundingMode.HALF_UP)
                                 .multiply(BigDecimal.valueOf(vo.getMaxScore())).doubleValue()
                                 : vo.getMaxScore();
+                    } else {
+                        score = vo.getMaxScore();
                     }
                     break;
                 case INDICATOR_ITEM21:

--
Gitblit v1.7.1