From 929c6698f4d7598997fc233e09c39c3bdce9fcf8 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期四, 14 八月 2025 10:23:15 +0800
Subject: [PATCH] 判断合格绝对值的问题
---
performance-server/src/main/java/com/yuanchu/mom/service/impl/PerformanceShiftServiceImpl.java | 85 +++++++++++++++++++++++++++++++++---------
1 files changed, 66 insertions(+), 19 deletions(-)
diff --git a/performance-server/src/main/java/com/yuanchu/mom/service/impl/PerformanceShiftServiceImpl.java b/performance-server/src/main/java/com/yuanchu/mom/service/impl/PerformanceShiftServiceImpl.java
index 91d2ce3..8d6978e 100644
--- a/performance-server/src/main/java/com/yuanchu/mom/service/impl/PerformanceShiftServiceImpl.java
+++ b/performance-server/src/main/java/com/yuanchu/mom/service/impl/PerformanceShiftServiceImpl.java
@@ -55,29 +55,44 @@
@Override
public void performanceShiftAdd(PerformanceShiftAddDto performanceShiftAddDto) {
List<PerformanceShift> list = new ArrayList<>();
+ LocalDateTime startWeek = performanceShiftAddDto.getStartWeek();
+ LocalDateTime endWeek = performanceShiftAddDto.getEndWeek();
+
+
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedDateTime = performanceShiftAddDto.getStartWeek().format(formatter);
String[] splitUserId = performanceShiftAddDto.getUserId().split(",");
for (String userId : splitUserId) {
- boolean exists = baseMapper.exists(Wrappers.<PerformanceShift>lambdaQuery()
- .eq(PerformanceShift::getWorkTime, formattedDateTime)
- .eq(PerformanceShift::getUserId, userId));
- // 濡傛灉涓嶅瓨鍦ㄦ坊鍔犳暟鎹�
- if (!exists) {
- LocalDate firstDayOfMonth = performanceShiftAddDto.getEndWeek().toLocalDate().withDayOfMonth(1);
- LocalDate lastDayOfMonth = performanceShiftAddDto.getEndWeek().toLocalDate().with(TemporalAdjusters.lastDayOfMonth());
- List<LocalDateTime> localDateTimesBetween = getLocalDateTimesBetween(firstDayOfMonth.atStartOfDay(), lastDayOfMonth.atStartOfDay());
- localDateTimesBetween.forEach(i -> {
- PerformanceShift performanceShift = new PerformanceShift();
- performanceShift.setUserId(Integer.valueOf(userId));
- performanceShift.setWorkTime(i);
- performanceShift.setShift("");
- list.add(performanceShift);
- if (list.size() >= 1000) {
- baseMapper.insertBatchSomeColumn(list);
- list.clear();
- }
- });
+ //鍒ゆ柇鏄惁璺ㄦ湀
+ boolean isMonth = startWeek.getMonthValue() != endWeek.getMonthValue();
+ if (isMonth){
+ //濡傛灉璺ㄦ湀,鍒欎袱涓湀閮藉垽鏂竴涓嬬湅鏁版嵁搴撴槸鍝釜鏈堜唤鐨勬暟鎹病鏈�
+ boolean exists1 = baseMapper.exists(Wrappers.<PerformanceShift>lambdaQuery()
+ .eq(PerformanceShift::getWorkTime, startWeek)
+ .eq(PerformanceShift::getUserId, userId));
+ boolean exists2 = baseMapper.exists(Wrappers.<PerformanceShift>lambdaQuery()
+ .eq(PerformanceShift::getWorkTime, endWeek)
+ .eq(PerformanceShift::getUserId, userId));
+ if (!exists1 && !exists2){
+ //涓や釜鏈堥兘涓嶅瓨鍦ㄦ暟鎹�
+ list = saveMonth(performanceShiftAddDto.getStartWeek(), userId, list);
+ list = saveMonth(performanceShiftAddDto.getEndWeek(), userId, list);
+ }else if (!exists1 && exists2){
+ //寮�濮嬬殑鏈堜唤涓嶅瓨鍦ㄦ暟鎹�
+ list = saveMonth(performanceShiftAddDto.getStartWeek(), userId, list);
+ }else if (exists1 && !exists2){
+ //缁撴潫鐨勬湀浠戒笉瀛樺湪鏁版嵁
+ list = saveMonth(performanceShiftAddDto.getEndWeek(), userId, list);
+ }
+ }else {
+ //涓嶈法鏈�
+ boolean exists = baseMapper.exists(Wrappers.<PerformanceShift>lambdaQuery()
+ .in(PerformanceShift::getWorkTime, formattedDateTime)
+ .eq(PerformanceShift::getUserId, userId));
+ // 濡傛灉涓嶅瓨鍦ㄦ坊鍔犳暟鎹�
+ if (!exists) {
+ list = saveMonth(performanceShiftAddDto.getEndWeek(), userId, list);
+ }
}
}
if (!list.isEmpty()) {
@@ -99,6 +114,24 @@
.eq(PerformanceShift::getWorkTime, formatterDateTime));
}
}
+ }
+
+ private List<PerformanceShift> saveMonth (LocalDateTime week,String userId,List<PerformanceShift> list){
+ LocalDate firstDayOfMonth = week.toLocalDate().withDayOfMonth(1);
+ LocalDate lastDayOfMonth = week.toLocalDate().with(TemporalAdjusters.lastDayOfMonth());
+ List<LocalDateTime> localDateTimesBetween = getLocalDateTimesBetween(firstDayOfMonth.atStartOfDay(), lastDayOfMonth.atStartOfDay());
+ localDateTimesBetween.forEach(i -> {
+ PerformanceShift performanceShift = new PerformanceShift();
+ performanceShift.setUserId(Integer.valueOf(userId));
+ performanceShift.setWorkTime(i);
+ performanceShift.setShift("");
+ list.add(performanceShift);
+ if (list.size() >= 1000) {
+ baseMapper.insertBatchSomeColumn(list);
+ list.clear();
+ }
+ });
+ return list;
}
@Override
@@ -217,6 +250,20 @@
@Override
public IPage<Map<String, Object>> performanceShiftPageYear(Page<Object> page, String time, String userName, String laboratory) {
+ //鏌ヨ褰撳墠鐧诲綍浜哄憳鐨勬灦鏋�
+ Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+ //鍒ゆ柇鍏ㄩ儴,涓汉,缁勭粐鐨勬潈闄�
+ User user = userMapper.selectById(userId);//褰撳墠鐧诲綍鐨勪汉
+ //鑾峰彇褰撳墠浜烘墍灞炲疄楠屽id
+ String departLimsId = user.getDepartLimsId();
+ if (com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isNotEmpty(departLimsId) && !departLimsId.equals("")) {
+ String[] split = departLimsId.split(",");
+ //鏌ヨ瀵瑰簲鏋舵瀯鍚嶇О(閫氫俊瀹為獙瀹�,鐢靛姏瀹為獙瀹�,妫�娴嬪姙)
+ String departLims = baseMapper.seldepLimsId(Integer.parseInt(split[split.length - 1]));
+ if (departLims.contains("瀹為獙瀹�")) {
+ laboratory = departLims;
+ }
+ }
IPage<Map<String, Object>> mapYearIPage = baseMapper.performanceShiftYear(page, time, userName, laboratory);
List<Enums> shiftType = enumService.selectEnumByCategory("鐝绫诲瀷");
mapYearIPage.setRecords(annualAttendanceProcessing(mapYearIPage.getRecords(), shiftType));
--
Gitblit v1.9.3