mitao
2024-08-23 3a6f2b349aaac3fd9f895c16f7d833252a2158ab
bug修改
14个文件已修改
133 ■■■■ 已修改文件
finance-admin/src/main/java/com/finance/web/controller/api/CurrentQuarterController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-admin/src/main/java/com/finance/web/controller/api/HistoryDataController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-admin/src/main/java/com/finance/web/controller/service/ScreenService.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-system/src/main/java/com/finance/system/mapper/TbBasicDataMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-system/src/main/java/com/finance/system/query/CalculateDetailQuery.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-system/src/main/java/com/finance/system/query/ScoreCalculateDetailQuery.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-system/src/main/java/com/finance/system/service/TbScoreService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-system/src/main/java/com/finance/system/service/impl/AsyncServiceImpl.java 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-system/src/main/java/com/finance/system/service/impl/TbBasicDataServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-system/src/main/java/com/finance/system/service/impl/TbDataScreenConfigServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-system/src/main/java/com/finance/system/service/impl/TbOperLogServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-system/src/main/java/com/finance/system/service/impl/TbScoreServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-system/src/main/resources/mapper/system/TbBasicDataMapper.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-system/src/main/resources/mapper/system/TbScoreMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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 {
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);
        }
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;
    }
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);
}
finance-system/src/main/java/com/finance/system/query/CalculateDetailQuery.java
@@ -30,4 +30,7 @@
    
    @ApiModelProperty(value = "季度", hidden = true)
    private String previousQuarter;
    @ApiModelProperty(value = "得分排序 1=正序 2=倒序")
    private Integer sort;
}
finance-system/src/main/java/com/finance/system/query/ScoreCalculateDetailQuery.java
@@ -23,6 +23,6 @@
    @ApiModelProperty(value = "部门名称")
    private String areaName;
    
    @ApiModelProperty(value = "季度", hidden = true)
    @ApiModelProperty(value = "季度")
    private String previousQuarter;
}
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;
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:
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 =
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,
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);
    }
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();
    }
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>
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,