From fe97e3191aaa5f5db104541946f6ac7937e46e15 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期四, 30 四月 2026 16:10:17 +0800
Subject: [PATCH] 人员考勤统计调整&原材料下单导出检验项详情

---
 performance-server/src/main/java/com/ruoyi/performance/service/impl/PerformanceShiftServiceImpl.java |   99 +++++++------------------------------------------
 1 files changed, 15 insertions(+), 84 deletions(-)

diff --git a/performance-server/src/main/java/com/ruoyi/performance/service/impl/PerformanceShiftServiceImpl.java b/performance-server/src/main/java/com/ruoyi/performance/service/impl/PerformanceShiftServiceImpl.java
index 4b003f0..64228e2 100644
--- a/performance-server/src/main/java/com/ruoyi/performance/service/impl/PerformanceShiftServiceImpl.java
+++ b/performance-server/src/main/java/com/ruoyi/performance/service/impl/PerformanceShiftServiceImpl.java
@@ -47,6 +47,7 @@
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.TemporalAdjusters;
@@ -66,9 +67,6 @@
 @Slf4j
 @Service
 public class PerformanceShiftServiceImpl extends ServiceImpl<PerformanceShiftMapper, PerformanceShift> implements PerformanceShiftService {
-
-    @Autowired
-    private ISysDictTypeService dictTypeService;
 
     @Autowired
     private StaffAttendanceTrackingRecordService trackingRecordService;
@@ -103,11 +101,11 @@
     public void performanceShiftAdd(PerformanceShiftAddDto performanceShiftAddDto) {
         //1.鏌ヨ鎵�閫夊懆娆℃椂闂磋寖鍥村唴宸叉帓鐝殑鏁版嵁
         List<PerformanceShift> shiftList = baseMapper.selectList(Wrappers.<PerformanceShift>lambdaQuery()
-                .between(ObjectUtils.allNotNull(performanceShiftAddDto.getStartWeek(), performanceShiftAddDto.getEndWeek()),
-                        PerformanceShift::getWorkTime, performanceShiftAddDto.getStartWeek(), performanceShiftAddDto.getEndWeek())
+                .between(ObjectUtils.allNotNull(performanceShiftAddDto.getStartTime(), performanceShiftAddDto.getEndTime()),
+                        PerformanceShift::getWorkTime, performanceShiftAddDto.getStartTime(), performanceShiftAddDto.getEndTime())
                 .in(!performanceShiftAddDto.getUserIdList().isEmpty(), PerformanceShift::getUserId, performanceShiftAddDto.getUserIdList())
         );
-        List<LocalDateTime> timeList = getLocalDateTimesBetween(performanceShiftAddDto.getStartWeek(), performanceShiftAddDto.getEndWeek());
+        List<LocalDateTime> timeList = getLocalDateTimesBetween(performanceShiftAddDto.getStartTime(), performanceShiftAddDto.getEndTime());
         //澶勭悊閫変腑浜哄憳
         List<PerformanceShift> newShiftList = new ArrayList<>();
         performanceShiftAddDto.getUserIdList().forEach(userId->{
@@ -158,14 +156,24 @@
         List<PerformanceShiftMapDto> mapIPage = baseMapper.performanceShift(firstDayOfMonth,lastDayOfMonth, userName, laboratory);
         Map<Integer, List<PerformanceShiftMapDto>> groupByUserId = mapIPage.stream().collect(Collectors.groupingBy(PerformanceShiftMapDto::getUserId));
         List<PerformanceShiftMapDto> newRecords = new ArrayList<>();
+        List<LocalDateTime> timeList = getLocalDateTimesBetween(LocalDateTime.of(firstDayOfMonth, LocalTime.MIN), LocalDateTime.of(lastDayOfMonth, LocalTime.MIN));
         groupByUserId.keySet().forEach(key->{
             PerformanceShiftMapDto shiftMapDto = new PerformanceShiftMapDto();
             List<PerformanceShiftMapDto> shiftMapDtos = groupByUserId.get(key);
+            List<PerformanceShiftMapDto> newShiftMapDtos = new ArrayList<>();
+            timeList.forEach(t->{
+                PerformanceShiftMapDto mapDto = shiftMapDtos.stream().filter(s -> t.isEqual(s.getWorkTime())).findFirst().orElse(null);
+                if(ObjectUtils.isNotEmpty(mapDto)){
+                    newShiftMapDtos.add(mapDto);
+                }else{
+                    newShiftMapDtos.add(null);
+                }
+            });
             //缁熻鍚勭彮娆″ぉ鏁�
             Map<String, Long> countShift = countShift(shiftMapDtos);
             shiftMapDto.setMonthlyAttendance(countShift);
             shiftMapDto.setMonthlyAttendanceStr(formateMap(countShift));
-            shiftMapDto.setList(shiftMapDtos);
+            shiftMapDto.setList(newShiftMapDtos);
 
             shiftMapDto.setUserName(shiftMapDtos.isEmpty()?"":shiftMapDtos.get(0).getUserName());
             shiftMapDto.setUserId(key);
@@ -602,82 +610,5 @@
             default:
                 return "鏈煡";
         }
-    }
-
-    /**
-     * 杩斿洖琛ㄥご
-     * <p>
-     * 澶栧眰List浠h〃琛屽唴灞� List浠h〃鍒�  鐩稿悓鐨勫垪鏁版嵁浼氳涓诲姩鍚堝苟
-     * 鏋勯�犲弻鍒楄〃澶�
-     *
-     * @return List<List < String>>
-     */
-    private static List<List<String>> getYearHeader(String year, List<SysDictData> enums) {
-        List<List<String>> line = new ArrayList<>();
-        line.add(Arrays.asList("鑰冨嫟姹囨��", "搴忓彿", "搴忓彿"));
-        line.add(Arrays.asList("鑰冨嫟姹囨��", "宸ュ彿", "宸ュ彿"));
-        line.add(Arrays.asList("鑰冨嫟姹囨��", "濮撳悕", "濮撳悕"));
-        line.add(Arrays.asList("鍑哄嫟璇︽儏", year, "鍑哄嫟"));
-        // 骞� header
-        for (SysDictData anEnum : enums) {
-            if (!anEnum.getDictValue().equals("5")) {
-                line.add(Arrays.asList("鑰冨嫟姹囨��", year, anEnum.getDictLabel()));
-            }
-        }
-        // 鏈坔eader
-        for (int i = 1; i < 13; i++) {
-            line.add(Arrays.asList("鍑哄嫟璇︽儏", i + " 鏈�", "鍑哄嫟"));
-            for (SysDictData anEnum : enums) {
-                if (!anEnum.getDictValue().equals("5")) {
-                    line.add(Arrays.asList("鍑哄嫟璇︽儏", i + " 鏈�", anEnum.getDictLabel()));
-                }
-            }
-        }
-        return line;
-    }
-
-    private static List<List<String>> getMonthHeader(LocalDateTime localDateTimeYear, List<SysDictData> enums) {
-        String year = localDateTimeYear.getYear() + " 骞翠汉鍛樼彮娆�";
-        List<List<String>> line = new ArrayList<>();
-        line.add(Arrays.asList(year, "搴忓彿", "搴忓彿", "搴忓彿"));
-        line.add(Arrays.asList(year, "濮撳悕", "濮撳悕", "濮撳悕"));
-        line.add(Arrays.asList(year, "瀹為獙瀹�", "瀹為獙瀹�", "瀹為獙瀹�"));
-        line.add(Arrays.asList(year, localDateTimeYear.getYear() + "", localDateTimeYear.getYear() + "", "鍑哄嫟"));
-        line.add(Arrays.asList(year, localDateTimeYear.getYear() + "", localDateTimeYear.getYear() + "", enums.get(3).getDictLabel()));
-        line.add(Arrays.asList(year, "骞�", "骞�", enums.get(4).getDictLabel()));
-        line.add(Arrays.asList(year, localDateTimeYear.getMonthValue() + "", localDateTimeYear.getMonthValue() + "", enums.get(0).getDictLabel()));
-        line.add(Arrays.asList(year, "鏈�", "鏈�", enums.get(1).getDictLabel()));
-        line.add(Arrays.asList(year, "", "", enums.get(2).getDictLabel()));
-        line.add(Arrays.asList(year, "鍛ㄦ", "鏄熸湡", "鍑哄樊"));
-        LocalDate firstDayOfMonth = localDateTimeYear.toLocalDate().withDayOfMonth(1);
-        LocalDate lastDayOfMonth = localDateTimeYear.toLocalDate().with(TemporalAdjusters.lastDayOfMonth());
-        List<LocalDateTime> timeList = getLocalDateTimesBetween(firstDayOfMonth.atStartOfDay(), lastDayOfMonth.atStartOfDay());
-        timeList.forEach(i -> {
-            int dayOfYear = i.getDayOfMonth();
-            Date from = Date.from(i.atZone(ZoneId.systemDefault()).toInstant());
-            String weekDay = getWeekDay(i.getDayOfWeek().getValue());
-            line.add(Arrays.asList(year, DateUtil.weekOfYear(DateUtil.offsetDay(from, 1)) + "", weekDay, dayOfYear + ""));
-        });
-        return line;
-    }
-
-    public List<List<Object>> dataRequiredForProcessingIntoExcelMonth(List<PerformanceShiftMapDto> list, List<SysDictData> enums) {
-        List<List<Object>> data = new ArrayList<>();
-        for (int i = 0; i < list.size(); i++) {
-            List<Object> excelRowList = new ArrayList<>();
-            excelRowList.add(i + 1);
-            excelRowList.add(list.get(i).getUserName());
-            excelRowList.add(list.get(i).getDepartment());
-            excelRowList.add(list.get(i).getMonthlyAttendance().get("totalAttendance"));
-            excelRowList.add(list.get(i).getMonthlyAttendance().get(enums.get(3).getDictLabel())); // 浼�
-            excelRowList.add(list.get(i).getMonthlyAttendance().get(enums.get(4).getDictLabel())); // 鍋�
-            excelRowList.add(list.get(i).getMonthlyAttendance().get(enums.get(0).getDictLabel())); // 鏃�
-            excelRowList.add(list.get(i).getMonthlyAttendance().get(enums.get(1).getDictLabel())); // 涓�
-            excelRowList.add(list.get(i).getMonthlyAttendance().get(enums.get(2).getDictLabel())); // 澶�
-            excelRowList.add(list.get(i).getMonthlyAttendance().get(enums.get(6).getDictLabel())); // 宸�
-
-            data.add(excelRowList);
-        }
-        return data;
     }
 }

--
Gitblit v1.9.3