From 25df88d0ab9d7444ed1d162b9efa1259ac2f6f66 Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期一, 27 四月 2026 10:13:53 +0800
Subject: [PATCH] 小程序对接finish
---
backend/src/main/java/com/sinata/appointment/service/AppointmentApplicationService.java | 97 ++++++++++++++++++++++++++++--------------------
1 files changed, 57 insertions(+), 40 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 3314f48..8de75bd 100644
--- a/backend/src/main/java/com/sinata/appointment/service/AppointmentApplicationService.java
+++ b/backend/src/main/java/com/sinata/appointment/service/AppointmentApplicationService.java
@@ -1,8 +1,6 @@
package com.sinata.appointment.service;
import com.alibaba.excel.EasyExcel;
-import com.alibaba.excel.ExcelWriter;
-import com.alibaba.excel.write.metadata.WriteSheet;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -117,44 +115,42 @@
String approvalStatus,
String visitorKeyword,
String visitReasonCode) {
- try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
- ExcelWriter writer = EasyExcel.write(bos, AppointmentAdminExportRow.class).build();
- WriteSheet sheet = EasyExcel.writerSheet("预约记录").build();
- long pageNo = 1L;
- long pageSize = 200L;
- while (true) {
- Page<AppointmentOrder> orderPage = new Page<>(pageNo, pageSize);
- IPage<AppointmentOrder> pagedOrders =
- appointmentOrderMapper.pageAdminOrders(
- orderPage,
- trimToNull(visitedUserName),
- visitedDeptId,
- 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);
- List<AppointmentAdminExportRow> rows =
- buildExportRows(
- orders,
- pageData.visitorRowsMap(),
- pageData.approvalInstanceMap(),
- pageData.reasonNameMap());
- writer.write(rows, sheet);
- if (pageNo * pageSize >= pagedOrders.getTotal()) {
- break;
- }
- pageNo++;
+ 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,
+ 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;
}
- writer.finish();
+ AdminPageData pageData = loadAdminPageData(orders);
+ rows.addAll(
+ buildExportRows(
+ orders,
+ pageData.visitorRowsMap(),
+ pageData.approvalInstanceMap(),
+ pageData.reasonNameMap()));
+ if (pageNo * pageSize >= pagedOrders.getTotal()) {
+ break;
+ }
+ pageNo++;
+ }
+ try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
+ EasyExcel.write(bos, AppointmentAdminExportRow.class).sheet("预约记录").doWrite(rows);
return bos.toByteArray();
} catch (Exception e) {
return new byte[0];
@@ -188,7 +184,7 @@
vo.setVisitedDeptName(defaultText(trimToNull(deptName)));
vo.setAccessAreaText(defaultText(buildJsonNameText(order.getPassAccessAreaNames())));
vo.setLocalUnitText(defaultText(buildJsonNameText(order.getPassLocalUnitNames())));
- vo.setPlateNoText(defaultText(joinUniqueTexts(visitorRows, AppointmentVisitor::getPlateNo)));
+ vo.setPlateNoText(defaultText(loadOrderPlateText(id)));
vo.setVisitReasonText(defaultText(buildVisitReasonText(order, reasonNameMap)));
vo.setVisitStartText(defaultText(resolveVisitStartText(order)));
vo.setVisitEndText(defaultText(resolveVisitEndText(order)));
@@ -294,6 +290,27 @@
return result;
}
+ private String loadOrderPlateText(Long orderId) {
+ if (orderId == null) {
+ return null;
+ }
+ List<AppointmentVehicle> rows =
+ appointmentVehicleMapper.selectList(
+ new LambdaQueryWrapper<AppointmentVehicle>()
+ .eq(AppointmentVehicle::getDelFlag, 0)
+ .eq(AppointmentVehicle::getOrderId, orderId)
+ .orderByAsc(AppointmentVehicle::getId));
+ if (rows == null || rows.isEmpty()) {
+ return null;
+ }
+ return rows.stream()
+ .map(AppointmentVehicle::getPlateNo)
+ .filter(StringUtils::hasText)
+ .map(String::trim)
+ .distinct()
+ .collect(Collectors.joining("、"));
+ }
+
private Map<Long, List<AppointmentVisitor>> loadVisitorRows(List<Long> orderIds) {
if (orderIds == null || orderIds.isEmpty()) {
return Map.of();
--
Gitblit v1.7.1