From c9f092e06021253b9de4e31c462d79995280ccc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AD=8F=E7=81=BF=E6=96=8C?= <15815221751@163.com> Date: Fri, 21 Nov 2025 13:38:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=93=E4=B8=9A,=E7=8F=AD=E7=BA=A7,=E5=AD=A6?= =?UTF-8?q?=E7=94=9F,=E6=95=99=E5=B8=88=E7=9A=84=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/dto/major/MajorReadListener.java | 45 ++++++++++++++++ .../domain/dto/stu/StudentReadListener.java | 51 +++++++++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 yuxingshi-sms-server/src/main/java/yuxingshi/sms/server/domain/dto/major/MajorReadListener.java create mode 100644 yuxingshi-sms-server/src/main/java/yuxingshi/sms/server/domain/dto/stu/StudentReadListener.java diff --git a/yuxingshi-sms-server/src/main/java/yuxingshi/sms/server/domain/dto/major/MajorReadListener.java b/yuxingshi-sms-server/src/main/java/yuxingshi/sms/server/domain/dto/major/MajorReadListener.java new file mode 100644 index 0000000..5d486f9 --- /dev/null +++ b/yuxingshi-sms-server/src/main/java/yuxingshi/sms/server/domain/dto/major/MajorReadListener.java @@ -0,0 +1,45 @@ +package yuxingshi.sms.server.domain.dto.major; + +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import yuxingshi.sms.common.core.utils.ExcelImportUtil; + +/** + * 专业Excel读取监听器 - 使用工具类基类 + */ +@Slf4j +public class MajorReadListener extends ExcelImportUtil.BaseReadListener { + + @Override + protected boolean shouldSkip(MajorExcelDTO data, int rowNo) { + if (data == null) { + return true; + } + // 如果所有主要字段都为空则跳过 + if (StringUtils.isAllBlank(data.getMajorCode(), data.getMajorName(), data.getDescription())) { + return true; + } + // 如果首行看起来像是表头,忽略这行 + if (rowNo == 1) { + if ("专业代码".equalsIgnoreCase(data.getMajorCode()) + || "专业名称".equalsIgnoreCase(data.getMajorName())) { + return true; + } + } + return false; + } + + @Override + protected void preProcess(MajorExcelDTO data) { + // 去除首尾空格 + if (data.getMajorCode() != null) { + data.setMajorCode(data.getMajorCode().trim()); + } + if (data.getMajorName() != null) { + data.setMajorName(data.getMajorName().trim()); + } + if (data.getDescription() != null) { + data.setDescription(data.getDescription().trim()); + } + } +} diff --git a/yuxingshi-sms-server/src/main/java/yuxingshi/sms/server/domain/dto/stu/StudentReadListener.java b/yuxingshi-sms-server/src/main/java/yuxingshi/sms/server/domain/dto/stu/StudentReadListener.java new file mode 100644 index 0000000..e7a8513 --- /dev/null +++ b/yuxingshi-sms-server/src/main/java/yuxingshi/sms/server/domain/dto/stu/StudentReadListener.java @@ -0,0 +1,51 @@ +package yuxingshi.sms.server.domain.dto.stu; + +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import yuxingshi.sms.common.core.utils.ExcelImportUtil; + +/** + * 学生Excel读取监听器 - 使用工具类基类 + */ +@Slf4j +public class StudentReadListener extends ExcelImportUtil.BaseReadListener { + + @Override + protected boolean shouldSkip(StudentExcelDTO data, int rowNo) { + if (data == null) { + return true; + } + // 如果所有主要字段都为空则跳过 + if (StringUtils.isAllBlank(data.getStudentNo(), data.getRealName(), data.getClassCode())) { + return true; + } + // 如果首行看起来像是表头,忽略这行 + if (rowNo == 1) { + if ("学号".equalsIgnoreCase(data.getStudentNo()) + || "真实姓名".equalsIgnoreCase(data.getRealName())) { + return true; + } + } + return false; + } + + @Override + protected void preProcess(StudentExcelDTO data) { + // 去除首尾空格 + if (data.getStudentNo() != null) { + data.setStudentNo(data.getStudentNo().trim()); + } + if (data.getRealName() != null) { + data.setRealName(data.getRealName().trim()); + } + if (data.getClassCode() != null) { + data.setClassCode(data.getClassCode().trim()); + } + if (data.getGender() != null) { + data.setGender(data.getGender().trim()); + } + if (data.getPhone() != null) { + data.setPhone(data.getPhone().trim()); + } + } +}