From eb3f32e8a7ee0f736a2808432724cdfc0144d64b Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期三, 31 七月 2024 11:26:23 +0800
Subject: [PATCH] feat:考核结果月度季度

---
 ycl-server/src/main/java/com/ycl/platform/mapper/CheckScoreMapper.java            |    1 
 ycl-server/src/main/java/com/ycl/utils/DateUtils.java                             |   31 +++++++++++++++
 ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckScore.java             |   11 +++--
 ycl-server/src/main/resources/mapper/zgyw/CheckScoreMapper.xml                    |   19 +++++++++
 ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java |   43 +++++++++------------
 5 files changed, 76 insertions(+), 29 deletions(-)

diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckScore.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckScore.java
index 030bc2c..cf3e0a7 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckScore.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckScore.java
@@ -6,14 +6,9 @@
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ycl.system.entity.BaseEntity;
 import lombok.Data;
-import lombok.experimental.Accessors;
-import org.apache.commons.lang.builder.ToStringBuilder;
-import org.apache.commons.lang.builder.ToStringStyle;
-import org.springframework.format.annotation.DateTimeFormat;
 
 import java.math.BigDecimal;
 import java.util.Date;
-import java.util.Map;
 
 /**
  * 鑰冩牳绉垎鏄庣粏瀵硅薄 t_check_score
@@ -69,4 +64,10 @@
     @TableField(exist = false)
     private String date;
 
+    @TableField(exist = false)
+    private Date startDate;
+
+    @TableField(exist = false)
+    private Date endDate;
+
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/CheckScoreMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/CheckScoreMapper.java
index 526a05d..aaf2b40 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/CheckScoreMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/CheckScoreMapper.java
@@ -73,4 +73,5 @@
 
     void saveBatch(List<CheckScore> scoreList);
 
+    List<CheckScore> selectCheckScoreMap(CheckScore checkScore);
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java
index 4993e48..4767a29 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java
@@ -2,8 +2,6 @@
 
 import annotation.DataScope;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ycl.platform.base.BaseSelect;
-import com.ycl.platform.base.CheckIndex;
 import com.ycl.platform.domain.dto.CheckScoreDTO;
 import com.ycl.platform.domain.dto.CheckScoreIndexDTO;
 import com.ycl.platform.domain.dto.ScoreIndexDTO;
@@ -17,14 +15,11 @@
 import com.ycl.platform.service.ICheckIndexFaceService;
 import com.ycl.platform.service.ICheckIndexVideoService;
 import com.ycl.platform.service.ICheckScoreService;
-import com.ycl.system.Result;
 import com.ycl.system.entity.SysRole;
 import com.ycl.system.service.ISysDeptService;
+import com.ycl.utils.DateUtils;
 import com.ycl.utils.SecurityUtils;
 import com.ycl.utils.StringUtils;
-import com.ycl.utils.poi.ExcelUtil;
-import constant.CheckConstants;
-import enumeration.general.CheckScoreType;
 import enumeration.general.PublishType;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.extern.slf4j.Slf4j;
@@ -32,16 +27,13 @@
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 import pojo.ExcelExp;
-import utils.DateUtils;
 import utils.poi.ExcelUtilManySheet;
 
 import java.io.IOException;
 import java.text.SimpleDateFormat;
-import java.time.LocalDate;
-import java.time.format.DateTimeFormatter;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 /**
  * 鑰冩牳绉垎鏄庣粏Service涓氬姟灞傚鐞�
@@ -137,21 +129,24 @@
         //鍖哄幙鍙兘鐪嬪凡鍙戝竷
         roleControl(checkScore);
 
-        //鏌ヨ鎴愮哗
-        String date = checkScore.getDate();
-        if(StringUtils.isEmpty(date)){
-            //濡傛灉涓虹┖鏌ユ湰鏈堢殑鏁版嵁
-            Calendar now = Calendar.getInstance();
-            //鍙栨槰澶�
-            now.add(Calendar.DATE, -1);
-            Date yesterday = now.getTime();
-            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");
-            date = simpleDateFormat.format(yesterday);
-            checkScore.setDate(date);
+        // 鑾峰彇鏁版嵁鏃ユ湡鏃堕棿
+        Calendar calendar = Calendar.getInstance();
+        // 涓�鍙锋煡璇箣鍓嶇殑鏁版嵁
+        if (LocalDateTime.now().getDayOfMonth() == 1) { calendar.add(Calendar.DAY_OF_MONTH, -1); }
+        // 0 鐪佸巺鏈堝害 1 甯傚眬鏈堝害 2 鐪佸巺瀛e害 3 甯傚眬瀛e害
+        switch (checkScore.getExamineTag()) {
+            case 0, 1:
+                checkScore.setEndDate(calendar.getTime());
+                calendar.set(Calendar.DAY_OF_MONTH, 1);
+                checkScore.setStartDate(calendar.getTime());
+                break;
+            case 2, 3:
+                checkScore.setStartDate(DateUtils.getQuarterStart(calendar).getTime());
+                checkScore.setEndDate(DateUtils.getQuarterEnd(calendar).getTime());
+                checkScore.setExamineTag(checkScore.getExamineTag() == 2 ? 0 : 1);
+                break;
         }
-        List<CheckScore> checkScores = scoreMapper.selectCheckScoreList(checkScore);
-        Map<Long, List<CheckScore>> deptMap = checkScores.stream().collect(Collectors.groupingBy(CheckScore::getDeptId));
-        return deptMap;
+        return scoreMapper.selectCheckScoreMap(checkScore).stream().collect(Collectors.groupingBy(CheckScore::getDeptId));
     }
 
 
diff --git a/ycl-server/src/main/java/com/ycl/utils/DateUtils.java b/ycl-server/src/main/java/com/ycl/utils/DateUtils.java
index 0be7f5f..a27708e 100644
--- a/ycl-server/src/main/java/com/ycl/utils/DateUtils.java
+++ b/ycl-server/src/main/java/com/ycl/utils/DateUtils.java
@@ -8,6 +8,7 @@
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.*;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.Objects;
 
@@ -227,4 +228,34 @@
         LocalDateTime of = LocalDateTime.of(localDateTime.getYear(), localDateTime.getMonth(), localDateTime.getDayOfMonth(), 23, 59, 59);
         return Timestamp.valueOf(of);
     }
+
+    /**
+     * 鑾峰彇鎸囧畾Calendar鐨勫搴﹀紑濮嬫棩鏈�
+      * @param calendar 鏃ュ巻
+     * @return 瀛e害绗竴澶�
+     */
+    public static Calendar getQuarterStart(Calendar calendar) {
+        Calendar quarterStart = (Calendar) calendar.clone();
+        // 璁剧疆涓哄綋鍓嶅搴︾殑绗竴涓湀鐨勭涓�澶�
+        quarterStart.set(Calendar.DAY_OF_MONTH, 1);
+        int month = quarterStart.get(Calendar.MONTH);
+        quarterStart.set(Calendar.MONTH, (month / 3) * 3);
+        return quarterStart;
+    }
+
+    /**
+     * 鑾峰彇鎸囧畾Calendar鐨勫搴︾粨鏉熸棩鏈�
+     * @param calendar 鏃ュ巻
+     * @return 瀛e害鏈�鍚庝竴澶�
+     */
+    public static Calendar getQuarterEnd(Calendar calendar) {
+        Calendar quarterEnd = getQuarterStart(calendar);
+        // 灏嗘湀浠借缃负涓嬩竴涓搴︾殑绗竴涓湀
+        quarterEnd.add(Calendar.MONTH, 3);
+        // 璁剧疆涓洪偅涓湀鐨勬渶鍚庝竴澶�
+        quarterEnd.add(Calendar.DAY_OF_MONTH, -1);
+        return quarterEnd;
+    }
+
+
 }
diff --git a/ycl-server/src/main/resources/mapper/zgyw/CheckScoreMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/CheckScoreMapper.xml
index 45fc2ec..12fb02b 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/CheckScoreMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/CheckScoreMapper.xml
@@ -114,4 +114,23 @@
         (#{score.score},#{score.deptId},#{score.templateId},#{score.examineTag},#{score.examineCategory},#{score.createTime})
     </foreach>
     </insert>
+
+    <select id="selectCheckScoreMap" resultType="com.ycl.platform.domain.entity.CheckScore">
+        SELECT
+            tcs.dept_id,
+            examine_category,
+            AVG(score) AS score,
+            #{startDate} AS startDate,
+            #{endDate} AS endDate
+        FROM
+            t_check_score tcs
+                LEFT JOIN sys_dept d ON tcs.dept_id = d.dept_id
+        WHERE
+            examine_tag = #{examineTag}
+          AND tcs.create_time BETWEEN #{startDate} AND #{endDate}
+        GROUP BY
+            tcs.dept_id,
+            examine_category
+    </select>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0