From a5b1bad21ba279ade3954852a5e281e9086042f0 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期二, 26 十一月 2024 15:22:52 +0800
Subject: [PATCH] 前端联调修改2.0

---
 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