From d341f0b509ba534418d9970a1a3541334bee0eba Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期六, 28 二月 2026 17:15:08 +0800
Subject: [PATCH] 修改排班统计查询bug

---
 xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpSchedulingDetailServiceImpl.java |   32 ++++++++++++++++++++------------
 1 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpSchedulingDetailServiceImpl.java b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpSchedulingDetailServiceImpl.java
index 46bcbc9..ccc3a2c 100644
--- a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpSchedulingDetailServiceImpl.java
+++ b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpSchedulingDetailServiceImpl.java
@@ -136,9 +136,11 @@
     public PageInfo<SchedulingDetailDto> pageList(SchedulingDetailVo query) {
         PageInfo<SchedulingDetailDto> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
         List<SchedulingDetailDto> schedulingDetailDtos = this.baseMapper.pageList(pageInfo, query.getMonth());
-        LocalDate parse1 = LocalDate.parse(query.getMonth(), DateTimeFormatter.ofPattern("yyyy-MM"));
+        LocalDate parse1 = LocalDate.parse(query.getMonth() + "-01", DateTimeFormatter.ofPattern("yyyy-MM-dd"));
         //找出月份的最大天
         int dayOfMonth = parse1.with(TemporalAdjusters.lastDayOfMonth()).getDayOfMonth();
+        List<XpShift> xpShifts = xpShiftService.list(new QueryWrapper<XpShift>().eq("is_deleted", 0).orderByAsc("id"));
+
         for (SchedulingDetailDto schedulingDetailDto : schedulingDetailDtos) {
             String days = schedulingDetailDto.getDays();
             if (StringUtils.isNotBlank(days)) {
@@ -157,14 +159,20 @@
                     }
                     setEnglishDay(i, schedulingDetailDto, map1);
                 }
-                long allDay = list.stream().filter(s -> s.contains("全天")).count();
-                long morning = list.stream().filter(s -> s.contains("早")).count();
-                long midDay = list.stream().filter(s -> s.contains("中")).count();
-                long evening = list.stream().filter(s -> s.contains("晚")).count();
-                schedulingDetailDto.setAllDay(allDay);
-                schedulingDetailDto.setMorning(morning);
-                schedulingDetailDto.setMidDay(midDay);
-                schedulingDetailDto.setEvening(evening);
+
+                List<Map<String, String>> maps = new ArrayList<>();
+                for (XpShift xpShift : xpShifts) {
+                    String shiftName = xpShift.getShiftName();
+                    long allDay = list.stream().filter(s -> s.contains(shiftName)).count();
+                    Map<String, String> map = new HashMap<>();
+                    map.put("shiftId", xpShift.getId().toString());
+                    map.put("shiftName", shiftName);
+                    map.put("shiftColor", xpShift.getShiftColor());
+                    map.put("count", allDay + "");
+                    maps.add(map);
+
+                }
+                schedulingDetailDto.setSubtotal(maps);
             }
         }
         pageInfo.setRecords(schedulingDetailDtos);
@@ -401,7 +409,7 @@
             xpScheduling.setCreateBy(userId.toString());
             xpScheduling.setUpdateBy(userId.toString());
         }
-        xpScheduling.setSchedulingDate(LocalDate.parse(month, DateTimeFormatter.ofPattern("yyyy-MM")));
+        xpScheduling.setSchedulingDate(LocalDate.parse(month + "-01", DateTimeFormatter.ofPattern("yyyy-MM-dd")));
         xpScheduling.setCommitUserId(userId);
         xpSchedulingService.saveOrUpdate(xpScheduling);
 
@@ -550,13 +558,13 @@
         List<SchedulingDetailDto> schedulingDetailDtos = this.baseMapper.pageList(pageInfo, month);
         List<ExportSchedulingDetailDto> exportSchedulingDetailDtos = new ArrayList<>();
         //获取月份的最大天数
-        LocalDate parse1 = LocalDate.parse(month, DateTimeFormatter.ofPattern("yyyy-MM"));
+        LocalDate parse1 = LocalDate.parse(month + "-01", DateTimeFormatter.ofPattern("yyyy-MM-dd"));
         int dayOfMonth = parse1.with(TemporalAdjusters.lastDayOfMonth()).getDayOfMonth();
         //构建表头第二行数据
         ExportSchedulingDetailDto exportSchedulingDetailDto = new ExportSchedulingDetailDto();
         exportSchedulingDetailDto.setFleetName("");
         for (int i = 1; i <= dayOfMonth; i++) {
-            LocalDate parse = LocalDate.parse(month + "-" + i, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+            LocalDate parse = LocalDate.parse(month + "-" + String.format("%02d", i), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
             String week = "";
             switch (parse.getDayOfWeek()){
                 case MONDAY:

--
Gitblit v1.7.1