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