From 5882ba8863d77fdcc168b176c3ffb30e8a20556a Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期一, 13 七月 2026 17:54:25 +0800
Subject: [PATCH] 缩短二维码原始参数
---
backend/src/main/java/com/sinata/appointment/service/AppointmentApplicationService.java | 93 +++++++++++++++++++++++++++-------------------
1 files changed, 54 insertions(+), 39 deletions(-)
diff --git a/backend/src/main/java/com/sinata/appointment/service/AppointmentApplicationService.java b/backend/src/main/java/com/sinata/appointment/service/AppointmentApplicationService.java
index d87666c..f2d6deb 100644
--- a/backend/src/main/java/com/sinata/appointment/service/AppointmentApplicationService.java
+++ b/backend/src/main/java/com/sinata/appointment/service/AppointmentApplicationService.java
@@ -38,7 +38,10 @@
import com.sinata.appointment.util.MobileMaskUtil;
import com.sinata.appointment.util.SensitiveDataUtil;
import com.sinata.appointment.util.UuidAssert;
-import java.io.ByteArrayOutputStream;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import jakarta.servlet.http.HttpServletResponse;
+import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@@ -110,7 +113,8 @@
return buildAdminPage(pagedOrders);
}
- public byte[] exportExcel(
+ public void exportExcel(
+ HttpServletResponse response,
String visitedUserName,
Long visitedDeptId,
Long accessAreaId,
@@ -121,49 +125,60 @@
String displayStatus,
String approvalStatus,
String visitorKeyword,
- String visitReasonCode) {
+ String visitReasonCode)
+ throws IOException {
+ prepareExcelResponse(response, "appointments.xlsx");
List<Long> accessAreaIds = resolveAccessAreaFilterIds(accessAreaId);
long pageNo = 1L;
long pageSize = 200L;
- List<AppointmentAdminExportRow> rows = new ArrayList<>();
- while (true) {
- Page<AppointmentOrder> orderPage = new Page<>(pageNo, pageSize);
- IPage<AppointmentOrder> pagedOrders =
- appointmentOrderMapper.pageAdminOrders(
- orderPage,
- trimToNull(visitedUserName),
- visitedDeptId,
- accessAreaIds,
- trimToNull(accessArea),
- trimToNull(localUnit),
- visitDateStart,
- visitDateEnd,
- trimToNull(displayStatus),
- trimToNull(approvalStatus),
- trimToNull(visitorKeyword),
- trimToNull(visitReasonCode));
- List<AppointmentOrder> orders = pagedOrders.getRecords();
- if (orders == null || orders.isEmpty()) {
- break;
+ boolean wroteAnyPage = false;
+ try (ExcelWriter writer =
+ EasyExcel.write(response.getOutputStream(), AppointmentAdminExportRow.class).build()) {
+ WriteSheet sheet = EasyExcel.writerSheet("预约记录").build();
+ while (true) {
+ Page<AppointmentOrder> orderPage = new Page<>(pageNo, pageSize);
+ IPage<AppointmentOrder> pagedOrders =
+ appointmentOrderMapper.pageAdminOrders(
+ orderPage,
+ trimToNull(visitedUserName),
+ visitedDeptId,
+ accessAreaIds,
+ trimToNull(accessArea),
+ trimToNull(localUnit),
+ visitDateStart,
+ visitDateEnd,
+ trimToNull(displayStatus),
+ trimToNull(approvalStatus),
+ trimToNull(visitorKeyword),
+ trimToNull(visitReasonCode));
+ List<AppointmentOrder> orders = pagedOrders.getRecords();
+ if (orders == null || orders.isEmpty()) {
+ break;
+ }
+ AdminPageData pageData = loadAdminPageData(orders);
+ writer.write(
+ buildExportRows(
+ orders,
+ pageData.visitorRowsMap(),
+ pageData.approvalInstanceMap(),
+ pageData.reasonNameMap()),
+ sheet);
+ wroteAnyPage = true;
+ if (pageNo * pageSize >= pagedOrders.getTotal()) {
+ break;
+ }
+ pageNo++;
}
- AdminPageData pageData = loadAdminPageData(orders);
- rows.addAll(
- buildExportRows(
- orders,
- pageData.visitorRowsMap(),
- pageData.approvalInstanceMap(),
- pageData.reasonNameMap()));
- if (pageNo * pageSize >= pagedOrders.getTotal()) {
- break;
+ if (!wroteAnyPage) {
+ writer.write(List.of(), sheet);
}
- pageNo++;
}
- try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
- EasyExcel.write(bos, AppointmentAdminExportRow.class).sheet("预约记录").doWrite(rows);
- return bos.toByteArray();
- } catch (Exception e) {
- return new byte[0];
- }
+ }
+
+ private void prepareExcelResponse(HttpServletResponse response, String filename) {
+ response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+ response.setCharacterEncoding("UTF-8");
+ response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
}
public AppointmentOrder getById(Long id, String uuid) {
--
Gitblit v1.7.1