From a93ad50197f1626a12ba5067639119400542f455 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期六, 11 十月 2025 18:01:52 +0800
Subject: [PATCH] 修改指定季度获取方式

---
 finance-admin/src/main/java/com/finance/web/controller/api/CurrentQuarterController.java |    9 +++-
 finance-system/src/main/java/com/finance/system/service/impl/AsyncServiceImpl.java       |   50 ++++++++++++++++++++++--
 finance-system/src/main/java/com/finance/system/service/impl/TbBasicDataServiceImpl.java |   10 +++--
 finance-system/src/main/java/com/finance/system/constants/QuarterConstant.java           |    4 +-
 finance-system/src/main/java/com/finance/system/service/impl/TbScoreServiceImpl.java     |   10 +++--
 finance-admin/src/main/java/com/finance/web/controller/service/ScreenService.java        |   16 ++++---
 finance-system/src/main/java/com/finance/system/service/impl/TbQuestionServiceImpl.java  |    6 ++-
 finance-admin/src/main/resources/application-dev.yml                                     |    3 +
 finance-admin/src/main/resources/application-prod-bak.yml                                |    0 
 9 files changed, 81 insertions(+), 27 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 72c6900..b3bfd46 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
@@ -5,7 +5,6 @@
 import com.finance.common.exception.ServiceException;
 import com.finance.common.utils.BeanUtils;
 import com.finance.common.utils.DateUtils;
-import com.finance.system.constants.QuarterConstant;
 import com.finance.system.domain.TbQuestion;
 import com.finance.system.dto.QuestionDTO;
 import com.finance.system.dto.update.BasicDataUpdDTO;
@@ -32,6 +31,7 @@
 import java.util.List;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -58,6 +58,9 @@
     private final TbScoreService tbScoreService;
     private final ISysUserService sysUserService;
 
+    @Value("${fdb.quarter}")
+    private String quarter;
+
     /**
      * 字段统计
      *
@@ -69,7 +72,7 @@
             @Validated @RequestBody CurrentFieldsQuery dto) {
         try {
             String previousQuarter = DateUtils.getPreviousQuarter();
-            previousQuarter = QuarterConstant.CURRENT_QUARTER;
+            previousQuarter = quarter;
             dto.setQuarter(previousQuarter);
             return tbBasicDataService.fieldsStatics(dto);
         } catch (Exception e) {
@@ -151,7 +154,7 @@
             @Validated @RequestBody ScoreCalculateQuery query) {
         try {
             String previousQuarter = DateUtils.getPreviousQuarter();
-            previousQuarter = QuarterConstant.CURRENT_QUARTER;
+            previousQuarter = quarter;
             query.setQuarter(previousQuarter);
             return R.ok(tbBasicDataService.scoreCalculatePage(query));
         } catch (Exception 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 8f4dfd5..3a14047 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
@@ -15,7 +15,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.TbBasicDataCategory;
 import com.finance.system.domain.TbQuestion;
@@ -61,6 +60,7 @@
 import java.util.stream.Collectors;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 /**
@@ -80,6 +80,8 @@
     private final TbScoreService tbScoreService;
     private final TbBasicDataConfigService tbBasicDataConfigService;
     private final TbBasicDataCategoryService tbBasicDataCategoryService;
+    @Value("${fdb.quarter}")
+    private String quarter;
 
     public ProvinceStaticsVO provinceStatics() {
         ProvinceStaticsVO vo = new ProvinceStaticsVO();
@@ -122,7 +124,7 @@
         ScoreRankVO scoreRankVO = tbScoreService.queryRankAndScoreByAreaCode("510000");
         riskAndTransferVO.setScoreRankVO(scoreRankVO);
         String previousQuarter = DateUtils.getPreviousQuarter();
-        previousQuarter = QuarterConstant.CURRENT_QUARTER;
+        previousQuarter = quarter;
         // 查询转移支付规模总额
         List<TbBasicData> list = tbBasicDataService.lambdaQuery()
                 .select(TbBasicData::getTransferPaymentScale)
@@ -243,7 +245,7 @@
         DataScreenConfigVO riskLevel = tbDataScreenConfigService.getRiskLevel();
         List<RiskLevelVO> riskLevelVOList = formatRiskLevel(riskLevel);
         String previousQuarter = DateUtils.getPreviousQuarter();
-        previousQuarter = QuarterConstant.CURRENT_QUARTER;
+        previousQuarter = quarter;
         List<RiskRankingVO> voList = tbScoreService.queryRiskRanking(
                 previousQuarter);
         int rank = 1;
@@ -269,7 +271,7 @@
 
     public List<QuestionVO> queryQuestions() throws Exception {
         String previousQuarter = DateUtils.getPreviousQuarter();
-        previousQuarter = QuarterConstant.CURRENT_QUARTER;
+        previousQuarter = quarter;
         List<TbQuestion> list = tbQuestionService.lambdaQuery()
                 .eq(TbQuestion::getQuarter, previousQuarter).list();
         return BeanUtils.copyList(list, QuestionVO.class);
@@ -285,7 +287,7 @@
         dataAnalysisVO.setRank(scoreRankVO.getRank());
         dataAnalysisVO.setScore(scoreRankVO.getScore());
         String previousQuarter = DateUtils.getPreviousQuarter();
-        previousQuarter = QuarterConstant.CURRENT_QUARTER;
+        previousQuarter = quarter;
         // 查询问题
         List<TbQuestion> list = tbQuestionService.lambdaQuery()
                 .eq(TbQuestion::getQuarter, previousQuarter)
@@ -558,13 +560,13 @@
     public List<DeptCalculateDetailVO> deptCalculateDetail(DeptCalculateDetailQuery query)
             throws Exception {
         String previousQuarter = DateUtils.getPreviousQuarter();
-        previousQuarter = QuarterConstant.CURRENT_QUARTER;
+        previousQuarter = quarter;
         return tbScoreService.deptCalculateDetail(query, previousQuarter);
     }
 
     public CurrentFieldsDetailVO viewRawData(String areaCode) throws Exception {
         String previousQuarter = DateUtils.getPreviousQuarter();
-        previousQuarter = QuarterConstant.CURRENT_QUARTER;
+        previousQuarter = quarter;
         Optional<TbBasicData> basicDataOptional = tbBasicDataService.lambdaQuery()
                 .eq(TbBasicData::getDeptAreaCode, areaCode)
                 .eq(TbBasicData::getQuarter, previousQuarter).oneOpt();
diff --git a/finance-admin/src/main/resources/application-dev.yml b/finance-admin/src/main/resources/application-dev.yml
index 9a12672..662936e 100644
--- a/finance-admin/src/main/resources/application-dev.yml
+++ b/finance-admin/src/main/resources/application-dev.yml
@@ -236,4 +236,7 @@
     accessKeySecret: 0SRb6XGkciQDPWn2rYqbJtq2qRMDY8
     signName: "四川金达通信工程"
     templateCode: "SMS_293985284"
+fdb:
+  #  quarter: "2024年三季度"
+  quarter: "2025年二季度"
 
diff --git a/finance-admin/src/main/resources/application-prod.yml b/finance-admin/src/main/resources/application-prod-bak.yml
similarity index 100%
rename from finance-admin/src/main/resources/application-prod.yml
rename to finance-admin/src/main/resources/application-prod-bak.yml
diff --git a/finance-system/src/main/java/com/finance/system/constants/QuarterConstant.java b/finance-system/src/main/java/com/finance/system/constants/QuarterConstant.java
index ee8d8b6..cbb44e9 100644
--- a/finance-system/src/main/java/com/finance/system/constants/QuarterConstant.java
+++ b/finance-system/src/main/java/com/finance/system/constants/QuarterConstant.java
@@ -6,7 +6,7 @@
  */
 public interface QuarterConstant {
 
-    // public static final String CURRENT_QUARTER = "2024年三季度";
-    public static final String CURRENT_QUARTER = "2024年四季度";
+    public static final String CURRENT_QUARTER = "2024年三季度";
+    // public static final String CURRENT_QUARTER = "2024年四季度";
 
 }
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));
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 cf1145e..5005d80 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
@@ -29,7 +29,6 @@
 import com.finance.common.utils.EasyExcelUtil;
 import com.finance.common.utils.SecurityUtils;
 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;
@@ -93,6 +92,7 @@
 import javax.servlet.http.HttpServletResponse;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
@@ -121,6 +121,8 @@
     private final TbDataScreenConfigService tbDataScreenConfigService;
     private final AsyncService asyncService;
     private final TbBasicDataCategoryService tbBasicDataCategoryService;
+    @Value("${fdb.quarter}")
+    private String quarter;
 
     public static void setFieldValues(
             List<FieldsTreeVO> fields, Map<Long, TbBasicDataField> fieldMap) {
@@ -158,7 +160,7 @@
         LocalDate fifteenDaysLimit = quarterStartLocalDate.plusDays(14);
         LocalDate now = LocalDate.now();
         String previousQuarter = DateUtils.getPreviousQuarter();
-        previousQuarter = QuarterConstant.CURRENT_QUARTER;
+        previousQuarter = quarter;
         DateUtils.getQuarterDate(previousQuarter);
         vo.setQuarter(previousQuarter);
         vo.setStatus(ReportingStatusEnum.UNFILLED);
@@ -233,7 +235,7 @@
             return;
         }
         String previousQuarter = DateUtils.getPreviousQuarter();
-        previousQuarter = QuarterConstant.CURRENT_QUARTER;
+        previousQuarter = quarter;
         // 查询需要填写的动态字段
         List<TbField> fieldList =
                 tbFieldService.lambdaQuery().eq(TbField::getStatus, ShowStatusEnum.SHOW).list();
@@ -498,7 +500,7 @@
         LoginUser loginUser = SecurityUtils.getLoginUser();
         String areaCode = loginUser.getUser().getAreaCode();
         String previousQuarter = DateUtils.getPreviousQuarter();
-        previousQuarter = QuarterConstant.CURRENT_QUARTER;
+        previousQuarter = quarter;
         EasyExcel.read(
                         file.getInputStream(),
                         new BasicDataListener(
diff --git a/finance-system/src/main/java/com/finance/system/service/impl/TbQuestionServiceImpl.java b/finance-system/src/main/java/com/finance/system/service/impl/TbQuestionServiceImpl.java
index fad5c66..2775327 100644
--- a/finance-system/src/main/java/com/finance/system/service/impl/TbQuestionServiceImpl.java
+++ b/finance-system/src/main/java/com/finance/system/service/impl/TbQuestionServiceImpl.java
@@ -9,7 +9,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.TbQuestion;
 import com.finance.system.dto.QuestionDTO;
 import com.finance.system.dto.update.QuestionUpdDTO;
@@ -24,6 +23,7 @@
 import java.util.Set;
 import java.util.stream.Collectors;
 import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -42,6 +42,8 @@
 
     private final ISysUserService sysUserService;
     private final AsyncService asyncService;
+    @Value("${fdb.quarter}")
+    private String quarter;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -49,7 +51,7 @@
         TbQuestion tbQuestion = BeanUtils.copyBean(dto, TbQuestion.class);
         tbQuestion.setType(dto.getType());
         String previousQuarter = DateUtils.getPreviousQuarter();
-        previousQuarter = QuarterConstant.CURRENT_QUARTER;
+        previousQuarter = quarter;
         tbQuestion.setQuarter(previousQuarter);
         this.save(tbQuestion);
         asyncService.subtractScoreWithFixedRules(dto.getDeptAreaCode());
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 44a0ced..d2f3d15 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
@@ -10,7 +10,6 @@
 import com.finance.common.utils.BeanUtils;
 import com.finance.common.utils.CollUtils;
 import com.finance.common.utils.DateUtils;
-import com.finance.system.constants.QuarterConstant;
 import com.finance.system.domain.TbBasicDataConfig;
 import com.finance.system.domain.TbScore;
 import com.finance.system.mapper.TbScoreMapper;
@@ -37,6 +36,7 @@
 import java.util.stream.Collectors;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 /**
@@ -55,6 +55,8 @@
 
     private final TbBasicDataConfigService basicDataConfigService;
     private final ISysUserService sysUserService;
+    @Value("${fdb.quarter}")
+    private String quarter;
 
     @Override
     public Page<ScoreVO> pageScore(ScoreQuery query, Page<ScoreVO> page) {
@@ -82,7 +84,7 @@
         vo.setCalculateType(config.getCalculateType());
         Page<ScoreDetailVO> page = new Page<>(query.getPageNum(), query.getPageSize());
         String previousQuarter = DateUtils.getPreviousQuarter();
-        previousQuarter = QuarterConstant.CURRENT_QUARTER;
+        previousQuarter = quarter;
         query.setPreviousQuarter(previousQuarter);
         Page<ScoreDetailVO> pageVO = baseMapper.scoreCalculateDetail(query, page);
         vo.setTotal(pageVO.getTotal());
@@ -118,7 +120,7 @@
     @Override
     public ScoreRankVO queryRankAndScoreByAreaCode(String areaCode) throws Exception {
         String previousQuarter = DateUtils.getPreviousQuarter();
-        previousQuarter = QuarterConstant.CURRENT_QUARTER;
+        previousQuarter = quarter;
         List<ScoreRankVO> voList = baseMapper.queryRankAndScoreByAreaCode(areaCode,
                 previousQuarter);
         if (CollUtils.isNotEmpty(voList)) {
@@ -156,7 +158,7 @@
         vo.setCalculateType(config.getCalculateType());
         Page<ScoreDetailVO> page = new Page<>(query.getPageNum(), query.getPageSize());
         String previousQuarter = DateUtils.getPreviousQuarter();
-        previousQuarter = QuarterConstant.CURRENT_QUARTER;
+        previousQuarter = quarter;
         query.setPreviousQuarter(previousQuarter);
         Page<ScoreDetailVO> pageVO = baseMapper.fieldsDetail(query, page, areaCodeList);
         vo.setTotal(pageVO.getTotal());

--
Gitblit v1.7.1