From a93ad50197f1626a12ba5067639119400542f455 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期六, 11 十月 2025 18:01:52 +0800 Subject: [PATCH] 修改指定季度获取方式 --- finance-system/src/main/java/com/finance/system/service/impl/AsyncServiceImpl.java | 50 +++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 45 insertions(+), 5 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 cbeba71..1aa19f7 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 @@ -20,7 +20,6 @@ import com.finance.common.utils.CollUtils; import com.finance.common.utils.DateUtils; import com.finance.common.utils.StringUtils; -import com.finance.system.constants.QuarterConstant; import com.finance.system.domain.TbBasicData; import com.finance.system.domain.TbBasicDataConfig; import com.finance.system.domain.TbBasicDataConfigDetail; @@ -52,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; @@ -71,6 +71,8 @@ private final TbBasicDataMapper tbBasicDataMapper; private final TbQuestionMapper tbQuestionMapper; private final ISysUserService sysUserService; + @Value("${fdb.quarter}") + private String quarter; @Async @Override @@ -274,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 { @@ -296,7 +298,7 @@ res2 = validateDivisorValue(provinceDivisorValue); score = 0D; if (!res1 && !res2) { - score = getScore(deptDividendValue, deptDivisorValue, + score = getScore5(deptDividendValue, deptDivisorValue, provinceDividendValue, provinceDivisorValue, vo); } break; @@ -622,7 +624,7 @@ } /** - * 通用计算公式获取得分 + * 通用计算公式获取得分(每低1个百分点扣1分) * * @param deptDividendValue 部门被除数 * @param deptDivisorValue 部门除数 @@ -650,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; @@ -794,7 +834,7 @@ @Override public void subtractScoreWithFixedRules(String deptAreaCode) throws Exception { String previousQuarter = DateUtils.getPreviousQuarter(); - previousQuarter = QuarterConstant.CURRENT_QUARTER; + previousQuarter = quarter; TbBasicData tbBasicData = tbBasicDataMapper.selectOne( Wrappers.lambdaQuery(TbBasicData.class).eq(TbBasicData::getQuarter, previousQuarter) .eq(TbBasicData::getDeptAreaCode, deptAreaCode)); -- Gitblit v1.7.1