From a7a8a50f48c1bff5ddc52b3bad1782328f8043d8 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期五, 12 四月 2024 18:50:20 +0800
Subject: [PATCH] 基础数据配置接口修改

---
 ruoyi-system/src/main/java/com/ruoyi/system/listener/HistoryDataListener.java |  102 ++++++++++++++++++++++++++++++++-------------------
 1 files changed, 64 insertions(+), 38 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/listener/HistoryDataListener.java b/ruoyi-system/src/main/java/com/ruoyi/system/listener/HistoryDataListener.java
index f084ed3..4a4ed90 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/listener/HistoryDataListener.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/listener/HistoryDataListener.java
@@ -18,6 +18,7 @@
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.CalculateUtil;
 import com.ruoyi.common.utils.CollUtils;
+import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.system.domain.TbBasicData;
 import com.ruoyi.system.domain.TbBasicDataConfig;
 import com.ruoyi.system.domain.TbBasicDataConfigDetail;
@@ -73,42 +74,6 @@
         this.tbScoreService = tbScoreService;
         this.sysUserService = sysUserService;
         this.quarter = quarter;
-    }
-
-    private static String validateFields(Map.Entry<Integer, String> integerStringEntry,
-            Map<Integer, String> dataMap, TbField field) {
-        String value = dataMap.get(integerStringEntry.getKey());
-        if (FieldTypeEnum.NUMBER.equals(field.getFieldType())) {
-            Integer numMin = field.getNumMin();
-            Integer numMax = field.getNumMax();
-            if (Objects.nonNull(numMin) && Objects.nonNull(numMax)) {
-                if (numMin > Integer.parseInt(value) || numMax < Integer.parseInt(value)) {
-                    throw new ServiceException(
-                            String.format("字段(%s)的内容不在%d~%d范围内", field.getFieldName(),
-                                    numMin, numMax));
-                }
-            }
-        }
-        if (FieldInputTypeEnum.MANUAL_INPUT.equals(field.getTextInputType())
-                && FieldTypeEnum.TEXT.equals(field.getFieldType())) {
-            Integer textMinNum = field.getTextMinNum();
-            Integer textMaxNum = field.getTextMaxNum();
-            if (Objects.nonNull(textMinNum) && Objects.nonNull(textMaxNum)) {
-                if (textMinNum > value.length() || textMaxNum < value.length()) {
-                    throw new ServiceException(
-                            String.format("字段(%s)的内容长度超出%d~%d的范围",
-                                    field.getFieldName(),
-                                    textMinNum, textMaxNum));
-                }
-            }
-        }
-        if (FieldTypeEnum.PERCENTAGE.equals(field.getFieldType())) {
-            if (0 > Double.parseDouble(value) || 100 < Double.parseDouble(value)) {
-                throw new ServiceException(
-                        String.format("字段(%s)的内容不在0~100范围内", field.getFieldName()));
-            }
-        }
-        return value;
     }
 
     @Override
@@ -190,6 +155,7 @@
             tbBasicData.setDeptAreaCode(areaCode);
             tbBasicData.setRemark(dataMap.get(remarkIndex));
             tbBasicData.setStatus(ReportingStatusEnum.MISSING_DATA);
+            tbBasicData.setReportingTime(DateUtils.getQuarterDate(quarter));
             tbBasicDataService.saveOrUpdate(tbBasicData);
             tbBasicDataFieldService.remove(Wrappers.<TbBasicDataField>lambdaQuery()
                     .eq(TbBasicDataField::getBasicDataId, tbBasicData.getId()));
@@ -233,6 +199,11 @@
         return tbBasicDataList;
     }
 
+    /**
+     * 需要导入的数据
+     *
+     * @return List<Map < Integer, String>>
+     */
     private List<Map<Integer, String>> getMapList() {
         for (int i = 0; i < cachedDataList.size(); i++) {
             if (cachedDataList.get(i).get(0).equals("栏号")) {
@@ -242,6 +213,11 @@
         return null;
     }
 
+    /**
+     * 表头
+     *
+     * @return Map<Integer, String>
+     */
     private Map<Integer, String> getHeadMap() {
         for (int i = 0; i < cachedDataList.size(); i++) {
             if (cachedDataList.get(i).get(0).equals("栏号")) {
@@ -251,9 +227,58 @@
         return null;
     }
 
+    /**
+     * 校验字段内容
+     *
+     * @param integerStringEntry 动态字段表头Entry
+     * @param dataMap            数据map
+     * @param field              字段
+     * @return 值
+     */
+    private static String validateFields(Map.Entry<Integer, String> integerStringEntry,
+            Map<Integer, String> dataMap, TbField field) {
+        String value = dataMap.get(integerStringEntry.getKey());
+        if (FieldTypeEnum.NUMBER.equals(field.getFieldType())) {
+            Integer numMin = field.getNumMin();
+            Integer numMax = field.getNumMax();
+            if (Objects.nonNull(numMin) && Objects.nonNull(numMax)) {
+                if (numMin > Integer.parseInt(value) || numMax < Integer.parseInt(value)) {
+                    throw new ServiceException(
+                            String.format("字段(%s)的内容不在%d~%d范围内", field.getFieldName(),
+                                    numMin, numMax));
+                }
+            }
+        }
+        if (FieldInputTypeEnum.MANUAL_INPUT.equals(field.getTextInputType())
+                && FieldTypeEnum.TEXT.equals(field.getFieldType())) {
+            Integer textMinNum = field.getTextMinNum();
+            Integer textMaxNum = field.getTextMaxNum();
+            if (Objects.nonNull(textMinNum) && Objects.nonNull(textMaxNum)) {
+                if (textMinNum > value.length() || textMaxNum < value.length()) {
+                    throw new ServiceException(
+                            String.format("字段(%s)的内容长度超出%d~%d的范围",
+                                    field.getFieldName(),
+                                    textMinNum, textMaxNum));
+                }
+            }
+        }
+        if (FieldTypeEnum.PERCENTAGE.equals(field.getFieldType())) {
+            if (0 > Double.parseDouble(value) || 100 < Double.parseDouble(value)) {
+                throw new ServiceException(
+                        String.format("字段(%s)的内容不在0~100范围内", field.getFieldName()));
+            }
+        }
+        return value;
+    }
+
+    /**
+     * 计算得分
+     *
+     * @param tbBasicDataList 基础数据集合
+     */
     private void calculateScore(List<TbBasicData> tbBasicDataList) {
+        List<TbScore> scoreList = new ArrayList<>();
         for (TbBasicData tbBasicData : tbBasicDataList) {
-            List<TbScore> scoreList = new ArrayList<>();
             //计算得分
             List<TbBasicDataConfig> list = tbBasicDataConfigService.lambdaQuery()
                     .eq(TbBasicDataConfig::getStatus, ShowStatusEnum.SHOW).list();
@@ -337,7 +362,8 @@
                     }
                 }
             }
-            tbScoreService.saveBatch(scoreList);
         }
+        tbScoreService.saveBatch(scoreList);
+        log.info(String.format("基础数据%s计算得分成功!", JSON.toJSONString(tbBasicDataList)));
     }
 }

--
Gitblit v1.7.1