mitao
2 天以前 a93ad50197f1626a12ba5067639119400542f455
finance-system/src/main/java/com/finance/system/service/impl/AsyncServiceImpl.java
@@ -51,6 +51,7 @@
import java.util.function.Function;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
@@ -70,6 +71,8 @@
    private final TbBasicDataMapper tbBasicDataMapper;
    private final TbQuestionMapper tbQuestionMapper;
    private final ISysUserService sysUserService;
    @Value("${fdb.quarter}")
    private String quarter;
    @Async
    @Override
@@ -273,7 +276,7 @@
                            BasicDataFieldEnum.BASIC_DATA_FIELD17);
                    res1 = validateDivisorValue(deptDivisorValue);
                    if (!res1) {
                        score = getScore(deptDividendValue, deptDivisorValue, month,
                        score = getScore5(deptDividendValue, deptDivisorValue, month,
                                BigDecimal.valueOf(12D),
                                vo);
                    } else {
@@ -295,7 +298,7 @@
                    res2 = validateDivisorValue(provinceDivisorValue);
                    score = 0D;
                    if (!res1 && !res2) {
                        score = getScore(deptDividendValue, deptDivisorValue,
                        score = getScore5(deptDividendValue, deptDivisorValue,
                                provinceDividendValue, provinceDivisorValue, vo);
                    }
                    break;
@@ -621,7 +624,7 @@
    }
    /**
     * 通用计算公式获取得分
     * 通用计算公式获取得分(每低1个百分点扣1分)
     *
     * @param deptDividendValue     部门被除数
     * @param deptDivisorValue      部门除数
@@ -649,6 +652,44 @@
        if (deptDivided.compareTo(provinceDivided) < 0) {
            score = deptDivided.subtract(provinceDivided)
                    .multiply(BigDecimal.valueOf(100L))
                    .add(BigDecimal.valueOf(vo.getMaxScore()))
                    .setScale(1, RoundingMode.HALF_UP);
            score = score.compareTo(BigDecimal.ZERO) >= 0 ? score : BigDecimal.ZERO;
        } else {
            score = BigDecimal.valueOf(vo.getMaxScore());
        }
        return score.doubleValue();
    }
    /**
     * 通用计算公式获取得分(每低5个百分点扣一分)
     *
     * @param deptDividendValue     部门被除数
     * @param deptDivisorValue      部门除数
     * @param provinceDividendValue 省份被除数
     * @param provinceDivisorValue  省份除数
     * @param vo                    基础数据配置
     * @return 得分
     */
    private Double getScore5(BigDecimal deptDividendValue, BigDecimal deptDivisorValue,
            BigDecimal provinceDividendValue, BigDecimal provinceDivisorValue,
            BasicDataConfigVO vo) {
        BigDecimal score = BigDecimal.ZERO;
        // 开始计算
        BigDecimal deptDivided = BigDecimal.ZERO;
        if (deptDivisorValue.compareTo(BigDecimal.ZERO) > 0) {
            deptDivided = deptDividendValue.divide(deptDivisorValue, 4, RoundingMode.HALF_UP);
        }
        BigDecimal provinceDivided = BigDecimal.ZERO;
        if (provinceDivisorValue.compareTo(BigDecimal.ZERO) > 0) {
            provinceDivided = provinceDividendValue.divide(provinceDivisorValue, 4,
                    RoundingMode.HALF_UP);
        }
        if (deptDivided.compareTo(provinceDivided) < 0) {
            score = deptDivided.subtract(provinceDivided)
                    .multiply(BigDecimal.valueOf(20))
                    .add(BigDecimal.valueOf(vo.getMaxScore()))
                    .setScale(1, RoundingMode.HALF_UP);
            score = score.compareTo(BigDecimal.ZERO) >= 0 ? score : BigDecimal.ZERO;
@@ -793,7 +834,7 @@
    @Override
    public void subtractScoreWithFixedRules(String deptAreaCode) throws Exception {
        String previousQuarter = DateUtils.getPreviousQuarter();
        // previousQuarter = "2024年二季度";
        previousQuarter = quarter;
        TbBasicData tbBasicData = tbBasicDataMapper.selectOne(
                Wrappers.lambdaQuery(TbBasicData.class).eq(TbBasicData::getQuarter, previousQuarter)
                        .eq(TbBasicData::getDeptAreaCode, deptAreaCode));