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-admin/src/main/java/com/finance/web/controller/api/CurrentQuarterController.java        |    1 
 finance-system/src/main/java/com/finance/system/service/impl/TbOperLogServiceImpl.java          |    1 
 finance-system/src/main/resources/mapper/system/TbBasicDataMapper.xml                           |    9 +++
 finance-system/src/main/java/com/finance/system/service/impl/TbScoreServiceImpl.java            |   19 ++++++
 finance-system/src/main/java/com/finance/system/query/CalculateDetailQuery.java                 |    5 +
 finance-admin/src/main/java/com/finance/web/controller/api/HistoryDataController.java           |    2 
 finance-system/src/main/java/com/finance/system/service/impl/TbDataScreenConfigServiceImpl.java |    8 ++
 finance-system/src/main/java/com/finance/system/service/impl/AsyncServiceImpl.java              |   54 +++++++++++++-----
 finance-system/src/main/java/com/finance/system/service/impl/TbBasicDataServiceImpl.java        |    2 
 finance-system/src/main/resources/mapper/system/TbScoreMapper.xml                               |    6 ++
 finance-admin/src/main/java/com/finance/web/controller/service/ScreenService.java               |   20 +++---
 finance-system/src/main/java/com/finance/system/mapper/TbBasicDataMapper.java                   |    3 +
 finance-system/src/main/java/com/finance/system/service/TbScoreService.java                     |    3 +
 finance-system/src/main/java/com/finance/system/query/ScoreCalculateDetailQuery.java            |    4 
 14 files changed, 105 insertions(+), 32 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 ca43d79..1634b9b 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
@@ -167,7 +167,6 @@
      */
     @PostMapping("/score-calculate-detail")
     @ApiOperation("得分计算-查看详情")
-    @ApiImplicitParam(name = "areaName", value = "部门名称", required = false, dataType = "string", paramType = "query", dataTypeClass = String.class)
     public R<ScoreCalculateDetailVO> scoreCalculateDetail(
             @Validated @RequestBody ScoreCalculateDetailQuery query) {
         try {
diff --git a/finance-admin/src/main/java/com/finance/web/controller/api/HistoryDataController.java b/finance-admin/src/main/java/com/finance/web/controller/api/HistoryDataController.java
index 75a415b..8ad69b4 100644
--- a/finance-admin/src/main/java/com/finance/web/controller/api/HistoryDataController.java
+++ b/finance-admin/src/main/java/com/finance/web/controller/api/HistoryDataController.java
@@ -190,7 +190,7 @@
     public R<ScoreCalculateDetailVO> scoreCalculateDetail(
             @Validated @RequestBody ScoreCalculateDetailQuery query) {
         try {
-            return R.ok(tbScoreService.scoreCalculateDetail(query));
+            return R.ok(tbScoreService.scoreCalculateHistoryDetail(query));
         } catch (Exception e) {
             throw new RuntimeException(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 0024565..d48f5cd 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
@@ -135,10 +135,10 @@
         riskAndTransferVO.setRiskLevelVOList(riskLevelVOList);
         RiskCountVO riskCountVO = new RiskCountVO();
         List<RiskMapVO> riskMapVOList = tbScoreService.getCurrentScoreList(previousQuarter, null);
-        String[] noRiskArr = riskLevel.getNoRisk().split("-");
-        String[] lowRiskArr = riskLevel.getLowRisk().split("-");
-        String[] mediumRiskArr = riskLevel.getMediumRisk().split("-");
-        String[] highRiskArr = riskLevel.getHighRisk().split("-");
+        String[] noRiskArr = riskLevel.getNoRisk().split("_");
+        String[] lowRiskArr = riskLevel.getLowRisk().split("_");
+        String[] mediumRiskArr = riskLevel.getMediumRisk().split("_");
+        String[] highRiskArr = riskLevel.getHighRisk().split("_");
         List<RiskMapVO> cityRiskVO = riskMapVOList.stream()
                 .filter(r -> r.getAreaLevel().equals(AreaLevelEnum.CITY))
                 .collect(Collectors.toList());
@@ -189,10 +189,10 @@
     }
 
     private List<RiskLevelVO> formatRiskLevel(DataScreenConfigVO riskLevel) {
-        String[] noRiskArr = riskLevel.getNoRisk().split("-");
-        String[] lowRiskArr = riskLevel.getLowRisk().split("-");
-        String[] mediumRiskArr = riskLevel.getMediumRisk().split("-");
-        String[] highRiskArr = riskLevel.getHighRisk().split("-");
+        String[] noRiskArr = riskLevel.getNoRisk().split("_");
+        String[] lowRiskArr = riskLevel.getLowRisk().split("_");
+        String[] mediumRiskArr = riskLevel.getMediumRisk().split("_");
+        String[] highRiskArr = riskLevel.getHighRisk().split("_");
         return handleRiskLevel(noRiskArr, lowRiskArr, mediumRiskArr,
                 highRiskArr);
     }
@@ -322,7 +322,7 @@
         List<FieldAndScoreDataVO> voList =
                 tbBasicDataService.getFieldAndScoreData(areaCode, previousQuarter, 1, 2);
         List<FieldAndScoreDataVO> lastYearList =
-                tbBasicDataService.getFieldAndScoreData(areaCode, previousQuarter, 2, 2);
+                tbBasicDataService.getFieldAndScoreData(areaCode, lastYearQuarter, 2, 2);
         // 查询四个指标下的三级指标
         List<FieldAndScoreDataVO> allDeptVoList =
                 tbBasicDataService.getFieldAndScoreData(areaCode, previousQuarter, 1, 1);
@@ -582,7 +582,7 @@
                 .select(SysUser::getAreaCode, SysUser::getAreaName, SysUser::getAreaAlias,
                         SysUser::getUserId).eq(SysUser::getUserType,
                         UserTypeEnum.DEPARTMENT)
-                .ne(SysUser::getAreaCode, areaCode)
+                .ne(SysUser::getAreaLevel, AreaLevelEnum.CITY)
                 .likeRight(SysUser::getAreaCode, cityCode).list();
         return list;
     }
diff --git a/finance-system/src/main/java/com/finance/system/mapper/TbBasicDataMapper.java b/finance-system/src/main/java/com/finance/system/mapper/TbBasicDataMapper.java
index 655d909..dccb69c 100644
--- a/finance-system/src/main/java/com/finance/system/mapper/TbBasicDataMapper.java
+++ b/finance-system/src/main/java/com/finance/system/mapper/TbBasicDataMapper.java
@@ -33,4 +33,7 @@
     List<FieldAndScoreDataVO> getFieldAndScoreData(@Param("areaCode") String areaCode,
             @Param("nowQuarter") String nowQuarter, @Param("yearType") Integer yearType,
             @Param("isAll") Integer isAll);
+
+    List<String> getKuKuanBaoZhangShuiPingByAreaCode(@Param("areaCode") String areaCode,
+            @Param("year") String year);
 }
diff --git a/finance-system/src/main/java/com/finance/system/query/CalculateDetailQuery.java b/finance-system/src/main/java/com/finance/system/query/CalculateDetailQuery.java
index e0a733e..5163019 100644
--- a/finance-system/src/main/java/com/finance/system/query/CalculateDetailQuery.java
+++ b/finance-system/src/main/java/com/finance/system/query/CalculateDetailQuery.java
@@ -27,7 +27,10 @@
 
     @ApiModelProperty(value = "部门区划代码")
     private String areaCode;
-    
+
     @ApiModelProperty(value = "季度", hidden = true)
     private String previousQuarter;
+    
+    @ApiModelProperty(value = "得分排序 1=正序 2=倒序")
+    private Integer sort;
 }
diff --git a/finance-system/src/main/java/com/finance/system/query/ScoreCalculateDetailQuery.java b/finance-system/src/main/java/com/finance/system/query/ScoreCalculateDetailQuery.java
index 6dbab43..f018df4 100644
--- a/finance-system/src/main/java/com/finance/system/query/ScoreCalculateDetailQuery.java
+++ b/finance-system/src/main/java/com/finance/system/query/ScoreCalculateDetailQuery.java
@@ -22,7 +22,7 @@
 
     @ApiModelProperty(value = "部门名称")
     private String areaName;
-    
-    @ApiModelProperty(value = "季度", hidden = true)
+
+    @ApiModelProperty(value = "季度")
     private 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 d683fd3..0ff9c03 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
@@ -34,6 +34,9 @@
 
     ScoreCalculateDetailVO scoreCalculateDetail(ScoreCalculateDetailQuery query) throws Exception;
 
+    ScoreCalculateDetailVO scoreCalculateHistoryDetail(ScoreCalculateDetailQuery query)
+            throws Exception;
+
     List<ScoreRankVO> queryTotalScoreList();
 
     ScoreRankVO queryRankAndScoreByAreaCode(String areaCode) throws Exception;
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:
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 8060fbc..bc7243a 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
@@ -455,6 +455,7 @@
                         field.getFieldValue(), tbOperlogList, result.toString());
             }
         }
+        tbOperLogService.saveBatch(tbOperlogList);
     }
 
     private static void wrapOperLog(LoginUser loginUser, TbBasicData tbBasicData, String before,
@@ -1152,6 +1153,7 @@
                         BeanUtils.copyBean(dto, BasicDataDTO.class),
                         fieldMap));
         TbBasicData tbBasicData = BeanUtils.copyBean(dto, TbBasicData.class);
+        tbBasicData.setDeptAreaCode(basicData.getDeptAreaCode());
         tbBasicData.setQuarter(basicData.getQuarter());
         // 保存基础数据动态字段数据
         List<TbBasicDataField> tbBasicDataFields =
diff --git a/finance-system/src/main/java/com/finance/system/service/impl/TbDataScreenConfigServiceImpl.java b/finance-system/src/main/java/com/finance/system/service/impl/TbDataScreenConfigServiceImpl.java
index 6aaa352..ab70a5c 100644
--- a/finance-system/src/main/java/com/finance/system/service/impl/TbDataScreenConfigServiceImpl.java
+++ b/finance-system/src/main/java/com/finance/system/service/impl/TbDataScreenConfigServiceImpl.java
@@ -68,10 +68,14 @@
                 .eq(TbDataScreenConfig::getType, DataScreenConfigEnum.RISK_LEVEL)
                 .oneOpt().orElseGet(() -> BeanUtils.copyBean(dto,
                         TbDataScreenConfig.class));
-        List<CalculateItemDTO> calculateItemList = dto.getCalculateItemList();
+        // List<CalculateItemDTO> calculateItemList = dto.getCalculateItemList();
         // validateCalculateItemList(calculateItemList);
-        String numberCalculateFormulaJsonStr = JSON.toJSONString(calculateItemList);
+        // String numberCalculateFormulaJsonStr = JSON.toJSONString(calculateItemList);
         // tbDataScreenConfig.setCalculateFormula(numberCalculateFormulaJsonStr);
+        tbDataScreenConfig.setNoRisk(dto.getNoRisk());
+        tbDataScreenConfig.setLowRisk(dto.getLowRisk());
+        tbDataScreenConfig.setMediumRisk(dto.getMediumRisk());
+        tbDataScreenConfig.setHighRisk(dto.getHighRisk());
         tbDataScreenConfig.setType(DataScreenConfigEnum.RISK_LEVEL);
         this.saveOrUpdate(tbDataScreenConfig);
         DataScreenConfigVO dataScreenConfigVO = BeanUtils.copyBean(tbDataScreenConfig,
diff --git a/finance-system/src/main/java/com/finance/system/service/impl/TbOperLogServiceImpl.java b/finance-system/src/main/java/com/finance/system/service/impl/TbOperLogServiceImpl.java
index a57d8a8..90d23e2 100644
--- a/finance-system/src/main/java/com/finance/system/service/impl/TbOperLogServiceImpl.java
+++ b/finance-system/src/main/java/com/finance/system/service/impl/TbOperLogServiceImpl.java
@@ -35,6 +35,7 @@
                 .between(StringUtils.isNotBlank(query.getStartTime()) && StringUtils.isNotBlank(
                                 query.getEndTime()), TbOperLog::getCreateTime,
                         query.getStartTime(), query.getEndTime())
+                .orderByDesc(TbOperLog::getCreateTime)
                 .page(new Page<>(query.getPageNum(), query.getPageSize()));
         return PageDTO.of(page, OperLogVO.class);
     }
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 570f678..60174f3 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
@@ -84,6 +84,25 @@
     }
 
     @Override
+    public ScoreCalculateDetailVO scoreCalculateHistoryDetail(ScoreCalculateDetailQuery query)
+            throws Exception {
+        // 查询计算类型
+        TbBasicDataConfig config = basicDataConfigService.getById(query.getId());
+        if (Objects.isNull(config)) {
+            throw new ServiceException("非法参数");
+        }
+        ScoreCalculateDetailVO vo = new ScoreCalculateDetailVO();
+        vo.setTypeName(config.getTypeName());
+        vo.setCalculateType(config.getCalculateType());
+        Page<ScoreDetailVO> page = new Page<>(query.getPageNum(), query.getPageSize());
+        Page<ScoreDetailVO> pageVO = baseMapper.scoreCalculateDetail(query, page);
+        vo.setTotal(pageVO.getTotal());
+        vo.setPages(pageVO.getPages());
+        vo.setList(pageVO.getRecords());
+        return vo;
+    }
+
+    @Override
     public List<ScoreRankVO> queryTotalScoreList() {
         return baseMapper.queryTotalScoreList();
     }
diff --git a/finance-system/src/main/resources/mapper/system/TbBasicDataMapper.xml b/finance-system/src/main/resources/mapper/system/TbBasicDataMapper.xml
index f5124c4..93c3f67 100644
--- a/finance-system/src/main/resources/mapper/system/TbBasicDataMapper.xml
+++ b/finance-system/src/main/resources/mapper/system/TbBasicDataMapper.xml
@@ -123,5 +123,14 @@
       </if>
     </where>
   </select>
+  <select id="getKuKuanBaoZhangShuiPingByAreaCode" resultType="java.lang.String">
+    SELECT
+    tbdc.field_value
+    FROM tb_basic_data tbd LEFT JOIN tb_basic_data_field tbdc ON tbd.id = tbdc.basic_data_id
+    <where>
+      tbd.`quarter` LIKE CONCAT(#{year},'%') AND tbd.dept_area_code = #{areaCode} AND tbdc.field_id
+      IN (36,37,38)
+    </where>
+  </select>
 
 </mapper>
diff --git a/finance-system/src/main/resources/mapper/system/TbScoreMapper.xml b/finance-system/src/main/resources/mapper/system/TbScoreMapper.xml
index 959a260..bb66666 100644
--- a/finance-system/src/main/resources/mapper/system/TbScoreMapper.xml
+++ b/finance-system/src/main/resources/mapper/system/TbScoreMapper.xml
@@ -121,6 +121,12 @@
       </if>
       group by su.area_code
     </where>
+    <if test="query.sort == 1">
+      ORDER BY ts.score ASC
+    </if>
+    <if test="query.sort == 2">
+      ORDER BY ts.score DESC
+    </if>
   </select>
   <select id="getCurrentScoreList" resultType="com.finance.system.vo.RiskMapVO">
     SELECT SUM(ts.score) score,

--
Gitblit v1.7.1