From d429cb0403aed7f2b3e205d75d9b55df08c5fbb6 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期二, 10 三月 2026 18:49:39 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpSchedulingDetailServiceImpl.java | 177 ++++++++++++++++++++++++++--------------------------------
1 files changed, 79 insertions(+), 98 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 7895544..042d2c0 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
@@ -35,6 +35,7 @@
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
+import org.apache.poi.ss.util.CellRangeAddress;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -565,85 +566,80 @@
public void exportExcel(String month, HttpServletResponse response) {
PageInfo<SchedulingDetailDto> pageInfo = new PageInfo<>(0, 10000);
List<SchedulingDetailDto> schedulingDetailDtos = this.baseMapper.pageList(pageInfo, month);
- List<ExportSchedulingDetailDto> exportSchedulingDetailDtos = new ArrayList<>();
- HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
-// for (int i = 0; i < titles.size(); i++) {
-// HSSFSheet hssfSheet = hssfWorkbook.createSheet();
-// hssfSheet.setColumnWidth(0, 6 * 256);
-// hssfSheet.setDefaultRowHeightInPoints(20f);
-//
-// HSSFRow hssfRow = hssfSheet.createRow(0);//设置第一行数据(标题)
-// HSSFCellStyle style = hssfWorkbook.createCellStyle();
-// HSSFFont font = hssfWorkbook.createFont();
-// font.setBold(true);
-// style.setFont(font);
-// style.setAlignment(HorizontalAlignment.CENTER);
-// for (int l = 0; l < titles.get(i).size(); l++) {
-// HSSFCell hssfCell = hssfRow.createCell(l);
-// hssfCell.setCellType(CellType.STRING);//设置表格类型
-// hssfCell.setCellValue(titles.get(i).get(l));
-// hssfCell.setCellStyle(style);
-// hssfSheet.setColumnWidth(l, 20 * 256);
-// }
-//
-// //将数据添加到表格中
-// List<String> data = null;
-// for (int l = 0; l < datas.get(i).size(); l++) {
-// hssfRow = hssfSheet.createRow(l + 1);
-// data = datas.get(i).get(l);
-// for (int j = 0; j < data.size(); j++) {
-// HSSFCell hssfCell = hssfRow.createCell(j);
-// hssfCell.setCellType(CellType.STRING);//设置表格类型
-// hssfCell.setCellValue(data.get(j));
-// }
-// }
-// }
-
-
//获取月份的最大天数
+ int m = Integer.parseInt(month.split("-")[1]);
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 + "-" + String.format("%02d", i), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
- String week = "";
- switch (parse.getDayOfWeek()) {
- case MONDAY:
- week = "一";
- break;
- case TUESDAY:
- week = "二";
- break;
- case WEDNESDAY:
- week = "三";
- break;
- case THURSDAY:
- week = "四";
- break;
- case FRIDAY:
- week = "五";
- break;
- case SATURDAY:
- week = "六";
- break;
- case SUNDAY:
- week = "日";
- break;
- }
- setEnglishDay(i, exportSchedulingDetailDto, week);
- }
- exportSchedulingDetailDto.setAllDay("全天");
- exportSchedulingDetailDto.setMorning("早");
- exportSchedulingDetailDto.setMidDay("中");
- exportSchedulingDetailDto.setEvening("晚");
- exportSchedulingDetailDtos.add(exportSchedulingDetailDto);
+ HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
+ HSSFSheet hssfSheet = hssfWorkbook.createSheet();
+ hssfSheet.setColumnWidth(0, 6 * 256);
+ hssfSheet.setDefaultRowHeightInPoints(20f);
+ //添加第一行标题
+ HSSFRow hssfRow = hssfSheet.createRow(0);
+ List<XpShift> xpShifts = xpShiftService.list(new QueryWrapper<XpShift>().eq("is_deleted", 0));
+ //设置单元格数量
+ int totalCell = dayOfMonth + 1 + xpShifts.size();
+
+ //设置表头样式,合并单元格
+ CellRangeAddress region = new CellRangeAddress(0, 1, 0, 0);
+ hssfSheet.addMergedRegion(region);
+ region = new CellRangeAddress(0, 1, dayOfMonth + 1, totalCell);
+ hssfSheet.addMergedRegion(region);
+
+
+ //设置单元格数据
+ for (int i = 0; i < totalCell; i++) {
+ HSSFCell cell = hssfRow.createCell(i);
+ if(0 == i){
+ cell.setCellValue("车队");
+ }else if(i <= dayOfMonth){
+ cell.setCellValue(m + "/" + i);
+ }else{
+ cell.setCellValue("排班小计");
+ }
+ }
+ //添加第二行标题
+ HSSFRow hssfRow1 = hssfSheet.createRow(1);
+ //设置单元格数量
+ //设置单元格数据
+ for (int i = 0; i < totalCell; i++) {
+ HSSFCell cell = hssfRow1.createCell(i);
+ if(i > 0 && i <= dayOfMonth){
+ LocalDate parse = LocalDate.parse(month + "-" + String.format("%02d", i), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+ String week = "";
+ switch (parse.getDayOfWeek()) {
+ case MONDAY:
+ week = "一";
+ break;
+ case TUESDAY:
+ week = "二";
+ break;
+ case WEDNESDAY:
+ week = "三";
+ break;
+ case THURSDAY:
+ week = "四";
+ break;
+ case FRIDAY:
+ week = "五";
+ break;
+ case SATURDAY:
+ week = "六";
+ break;
+ case SUNDAY:
+ week = "日";
+ break;
+ }
+ cell.setCellValue(week);
+ }
+ }
//构建数据部分的内容
+ int rowNum = 2;
for (SchedulingDetailDto schedulingDetailDto : schedulingDetailDtos) {
- exportSchedulingDetailDto = new ExportSchedulingDetailDto();
- exportSchedulingDetailDto.setFleetName(schedulingDetailDto.getFleetName());
+ HSSFRow row = hssfSheet.createRow(rowNum);
+ row.createCell(0).setCellValue(schedulingDetailDto.getFleetName());
+
String days = schedulingDetailDto.getDays();
if (StringUtils.isNotBlank(days)) {
String[] split = days.split(",");
@@ -657,32 +653,17 @@
break;
}
}
- setEnglishDay(i, exportSchedulingDetailDto, shiftName);
- }
- 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();
- exportSchedulingDetailDto.setAllDay(allDay + "");
- exportSchedulingDetailDto.setMorning(morning + "");
- exportSchedulingDetailDto.setMidDay(midDay + "");
- exportSchedulingDetailDto.setEvening(evening + "");
- } else {
- for (int i = 1; i <= 31; i++) {
- String shiftName = "休";
- setEnglishDay(i, exportSchedulingDetailDto, shiftName);
- }
- exportSchedulingDetailDto.setAllDay("0");
- exportSchedulingDetailDto.setMorning("0");
- exportSchedulingDetailDto.setMidDay("0");
- exportSchedulingDetailDto.setEvening("0");
- }
- exportSchedulingDetailDtos.add(exportSchedulingDetailDto);
- }
- String[] split = month.split("-");
- ExcelUtil<ExportSchedulingDetailDto> excelUtil = new ExcelUtil<>(ExportSchedulingDetailDto.class);
- excelUtil.exportExcel(response, exportSchedulingDetailDtos, "排班计划[日期:" + split[0] + "年" + split[1] + "月]");
+ row.createCell(i).setCellValue(shiftName);
+ }
+
+ for (int i = 0; i < xpShifts.size(); i++) {
+ String shiftName = xpShifts.get(i).getShiftName();
+ long allDay = list.stream().filter(s -> s.contains(shiftName)).count();
+ row.createCell(dayOfMonth + 1 + i).setCellValue(allDay + allDay);
+ }
+ }
+ }
}
--
Gitblit v1.7.1