refactor: 根包由 com.bestsch.bschclassmanage 重命名为 com.yunhai.bschclassmanage

- git mv src/main/java/com/bestsch/bschclassmanage -> src/main/java/com/yunhai/bschclassmanage
- 255 个 Java 文件的 package/import 同步替换为 com.yunhai.bschclassmanage
- pom.xml 项目 groupId 设为 com.yunhai(与外部依赖 com.bestsch:bsch-* 无关,未改动)
- IDE 缓存 workspace.xml 路径同步更新(外部依赖坐标 com.bestsch:bsch-* 保持不动)
This commit is contained in:
Allen
2026-08-12 17:21:22 +08:00
parent 66cd0f1515
commit dc217ca7a9
258 changed files with 1082 additions and 1067 deletions
@@ -0,0 +1,39 @@
package com.yunhai.bschclassmanage.model.constant;
/**
* 日志模块常量
* <p>
* 使用常量类的好处:
* 1. 集中管理,避免硬编码字符串
* 2. 配合 IDE 自动补全,减少拼写错误
* 3. 改动时只需修改一处
* 4. 值使用中文,便于日志展示和识别
*/
public final class LogModule {
private LogModule() {
// 私有构造,防止实例化
}
// ==================== 学制 ====================
public static final String BASE_SYSTEM = "系统管理";
// public static final String SCHOOL_SYSTEM = "学校管理";
// ==================== 字典管理 ====================
public static final String SUBJECT = "学科管理";
public static final String MAJORS = "专业管理";
public static final String DIVISION = "系部管理";
public static final String COURSE = "课程管理";
public static final String CAMPUS = "课程管理";
// ==================== 学生/教师/班级 ====================
public static final String STUDENT = "学生管理";
public static final String TEACHER = "教师管理";
public static final String CLASS = "班级管理";
public static final String TEACH = "任教管理";
public static final String CUSTOMGROUP = "自定义组";
}
@@ -0,0 +1,18 @@
package com.yunhai.bschclassmanage.model.dto;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* 添加组员请求DTO
*/
@Data
public class AddMemberDTO {
@NotNull(message = "组ID不能为空")
private Integer groupId;
@NotNull(message = "教师ID列表不能为空")
private List<Integer> teaIds;
}
@@ -0,0 +1,85 @@
package com.yunhai.bschclassmanage.model.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.validation.constraints.AssertTrue;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Positive;
import java.util.Date;
/**
* @Author wanghu
* @Date 2026-6-12 16:24 (可以根据需要修改)
* @Description:
*/
@Data
public class BaseYearTermDTO {
private Integer id;
@NotNull(message = "学年不能为空")
@Positive(message = "学年必须为正整数")
@Min(value = 2000, message = "学年不能小于2000")
private Integer year;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@NotNull(message = "学年开始日期不能为空")
private Date yearStartDate;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@NotNull(message = "学年结束日期不能为空")
private Date yearEndDate;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@NotNull(message = "第一学期开始日期不能为空")
private Date firstTermStartDate;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@NotNull(message = "第一学期结束日期不能为空")
private Date firstTermEndDate;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@NotNull(message = "第二学期开始日期不能为空")
private Date secondTermStartDate;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@NotNull(message = "第二学期结束日期不能为空")
private Date secondTermEndDate;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@NotNull(message = "毕业日期不能为空")
private Date upgradeDate;
@AssertTrue(message = "学年开始日期不能晚于学年结束日期")
public boolean isYearDateValid() {
if (yearStartDate == null || yearEndDate == null) return true;
return !yearStartDate.after(yearEndDate);
}
@AssertTrue(message = "第一学期开始日期不能晚于第一学期结束日期")
public boolean isFirstTermDateValid() {
if (firstTermStartDate == null || firstTermEndDate == null) return true;
return !firstTermStartDate.after(firstTermEndDate);
}
@AssertTrue(message = "第二学期开始日期不能晚于第二学期结束日期")
public boolean isSecondTermDateValid() {
if (secondTermStartDate == null || secondTermEndDate == null) return true;
return !secondTermStartDate.after(secondTermEndDate);
}
@AssertTrue(message = "第一学期结束日期不能晚于第二学期开始日期")
public boolean isFirstTermEndBeforeSecondTermStart() {
if (firstTermEndDate == null || secondTermStartDate == null) return true;
return !firstTermEndDate.after(secondTermStartDate);
}
@AssertTrue(message = "毕业日期不能早于学年结束日期")
public boolean isUpgradeDateNotBeforeYearEnd() {
if (upgradeDate == null || yearEndDate == null) return true;
return !upgradeDate.before(yearEndDate);
}
}
@@ -0,0 +1,28 @@
package com.yunhai.bschclassmanage.model.dto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
public class SchCustomGroupDTO {
private Integer id; // 更新时传
@NotBlank(message = "组名不能为空")
private String groupName;
@NotNull(message = "组类型不能为空")
private Integer groupType; // 1-年级组 2-教研组 3-备课组
private Integer sort;
private List<Integer> gradeIds;
private List<String> subjectIds;
private List<Integer> leaderIds;
private List<Integer> memberIds;
}
@@ -0,0 +1,41 @@
package com.yunhai.bschclassmanage.model.dto;
import com.yunhai.bschclassmanage.entity.SchDicDivision;
import com.yunhai.bschclassmanage.entity.SchDicMajors;
import lombok.Data;
import javax.persistence.Column;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.util.List;
import java.util.Set;
/**
* @Author wanghu
* @Date 2026-6-10 15:09 (可以根据需要修改)
* @Description:
*/
@Data
public class SchDicCourseDTO {
private Integer id;
@NotBlank(message = "名称不能为空")
@Size(max = 255, message = "名称长度不能超过255")
private String name;
@Size(max = 255, message = "别称长度不能超过255")
private String nickname;
@Size(max = 255, message = "编码长度不能超过255")
private String code;
private Set<Integer> majorsIds;
private Set<Integer> divisionIds;
private Integer type;
private String typeName;
}
@@ -0,0 +1,24 @@
package com.yunhai.bschclassmanage.model.dto;
import com.yunhai.bschclassmanage.entity.SchTeacher;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SchTeacherDTO extends SchTeacher {
@NotNull(message = "组ID不能为空")
@Min(value = 1, message = "至少选择一个组")
private Integer groupId;
}
@@ -0,0 +1,18 @@
package com.yunhai.bschclassmanage.model.dto;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
public class SetLeaderDTO {
@NotNull(message = "组ID不能为空")
private Integer groupId;
/**
* 组长教师ID列表(teaId),传入空列表表示清空所有组长
* 必须为该组的现有成员(组员或组长)
*/
private List<Integer> leaderIds;
}
@@ -0,0 +1,31 @@
package com.yunhai.bschclassmanage.model.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;
/**
* @Author wanghu
* @Date 2026-6-10 15:09 (可以根据需要修改)
* @Description:
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class StuAbnormalStatusDTO {
@NotNull(message = "学生ID列表不能为空")
@Size(min = 1, message = "至少选择一个学生")
private List<Integer> stuIds;
@NotNull(message = "异常状态不能为空")
@Min(value = 1, message = "异常状态不能为空须大于0")
private Integer abnormalStatus;
}
@@ -0,0 +1,31 @@
package com.yunhai.bschclassmanage.model.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;
/**
* @Author wanghu
* @Date 2026-6-10 15:09 (可以根据需要修改)
* @Description:
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class StuTransferClassDTO {
@NotNull(message = "学生ID列表不能为空")
@Size(min = 1, message = "至少选择一个学生")
private List<Integer> stuIds;
@NotNull(message = "目标班级ID不能为空")
@Min(value = 1, message = "目标班级ID必须大于0")
private Integer transferClassId;
}
@@ -0,0 +1,31 @@
package com.yunhai.bschclassmanage.model.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;
import java.util.Map;
/**
* @Author wanghu
* @Date 2026-6-10 15:09 (可以根据需要修改)
* @Description:
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TeaTransferGroupDTO {
@NotNull(message = "教师ID列表不能为空")
@Size(min = 1, message = "至少选择一个教师")
private List<Integer> ids;
@NotNull(message = "目标组ID不能为空")
@Size(min = 1, message = "至少选择一个组")
private List<Integer> transferGroupIds;
}
@@ -0,0 +1,30 @@
package com.yunhai.bschclassmanage.model.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;
/**
* @Author wanghu
* @Date 2026-6-10 15:09 (可以根据需要修改)
* @Description:
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TeaTransferInGroupDTO {
@NotNull(message = "教师ID列表不能为空")
@Size(min = 1, message = "至少选择一个教师")
private List<String> schTeaIds;
@NotNull(message = "目标组ID不能为空")
@Min(value=0, message = "至少选择一个组")
private Integer transferGroupId;
}
@@ -0,0 +1,15 @@
package com.yunhai.bschclassmanage.model.entityField;
/**
* @Author wanghu
* @Date 2026-6-12 18:03 (可以根据需要修改)
* @Description:
*/
public final class DbFieldNames {
public static final String id = "id";
public static final String schId = "sch_id";
public static final String create_date = "create_date";
public static final String update_date = "update_date";
public static final String create_user_id = "create_user_id";
public static final String update_user_id = "update_user_id";
}
@@ -0,0 +1,68 @@
package com.yunhai.bschclassmanage.model.entityField;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 实体类字段名称常量定义。
* <p>
* 集中管理所有实体类的公共字段名,避免硬编码字符串,
* 便于统一修改和 IDE 自动补全。
* </p>
*
* @author YourName
* @since 2026-07-10
*//**
* 实体类字段名称常量定义。
* <p>
* 集中管理所有实体类的公共字段名,避免硬编码字符串,
* 便于统一修改和 IDE 自动补全。
* </p>
*
* @author YourName
* @since 2026-07-10
*/
public final class EntityFieldNames {
// ==================== 基础字段 ====================
public static final String id = "id";
public static final String account = "account";
public static final String idCard = "idCard";
public static final String name = "name";
public static final String code = "code";
public static final String sort = "sort";
public static final String year = "year";
public static final String enrollYear = "enrollYear";
// ==================== 关联字段 ====================
public static final String gradeId = "gradeId";
public static final String groupId = "groupId";
public static final String schId = "schId";
public static final String classId = "classId";
public static final String schSystemId = "schSystemId";
public static final String teaId = "teaId";
public static final String stuId = "stuId";
// ==================== 状态字段 ====================
public static final String status = "status";
public static final String abnormalStatus = "abnormalStatus";
public static final String transferStatus = "transferStatus";
public static final String graduate = "graduate";
// ==================== 审计字段 ====================
public static final String createDate = "createDate";
public static final String updateDate = "updateDate";
public static final String createUserId = "createUserId";
public static final String updateUserId = "updateUserId";
/**
* 私有构造函数,防止实例化。
*/
private EntityFieldNames() {
throw new UnsupportedOperationException("This is a utility class and cannot be instantiated");
}
}
@@ -0,0 +1,40 @@
package com.yunhai.bschclassmanage.model.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
@Data
public class CustomGroupExcelColumn {
public static final String GROUP_NAME = "组名";
public static final String GROUP_TYPE = "组类型";
public static final String GRADE_BIN = "年级";
public static final String SUBJECT_BIN = "学科";
public static final String LEADER_NAME = "组长";
public static final String MEMBER_NAME = "组员";
@NotBlank(message = CustomGroupExcelColumn.GROUP_NAME+"不能为空")
@Size(max = 20, message = CustomGroupExcelColumn.GROUP_NAME +"长度不能超过20")
@Excel(name = CustomGroupExcelColumn.GROUP_NAME)
private String groupName;
@NotBlank(message = CustomGroupExcelColumn.GROUP_TYPE+"不能为空")
@Excel(name = CustomGroupExcelColumn.GROUP_TYPE)
private String groupType;
@Excel(name = CustomGroupExcelColumn.GRADE_BIN)
private String gradeBin;
@Excel(name = CustomGroupExcelColumn.SUBJECT_BIN)
private String subjectBin;
@Excel(name = CustomGroupExcelColumn.LEADER_NAME)
private String leaderName;
@Excel(name = CustomGroupExcelColumn.MEMBER_NAME)
private String memberName;
}
@@ -0,0 +1,13 @@
package com.yunhai.bschclassmanage.model.excel;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class ErrorExcelColumn {
private Integer rows;
private String columnValue;
private String errorMsg;
}
@@ -0,0 +1,16 @@
package com.yunhai.bschclassmanage.model.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
@Data
public class ImportRuleExcelColumn {
@Excel(name = "规则项")
private String ruleItem;
@Excel(name = "说明")
private String description;
@Excel(name = "填写内容")
private String content;
}
@@ -0,0 +1,40 @@
package com.yunhai.bschclassmanage.model.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
@Data
public class SchClassExcelColumn {
public static final String GRADE_NAME = "年级";
public static final String CLAZZ_NAME = "班级";
public static final String CLAZZ_CNAME = "班级别名";
public static final String BZR = "班主任";
public static final String FBZR = "副班主任";
@NotBlank(message = SchClassExcelColumn.GRADE_NAME+"不能为空")
@Size(max = 20, message = SchClassExcelColumn.GRADE_NAME +"长度不能超过20")
@Excel(name = SchClassExcelColumn.GRADE_NAME)
private String gradeName;
@NotBlank(message = SchClassExcelColumn.CLAZZ_NAME+"不能为空")
@Size(max = 20, message = SchClassExcelColumn.CLAZZ_NAME+"长度不能超过20")
@Excel(name = SchClassExcelColumn.CLAZZ_NAME)
private String clazzName;
@Size(max = 20, message = SchClassExcelColumn.CLAZZ_CNAME+"长度不能超过20")
@Excel(name = SchClassExcelColumn.CLAZZ_CNAME)
private String clazzCName;
@Excel(name = SchClassExcelColumn.BZR)
private String bzr;
@Excel(name = SchClassExcelColumn.FBZR)
private String fbzr;
}
@@ -0,0 +1,57 @@
package com.yunhai.bschclassmanage.model.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
@Data
public class SchHeightClassExcelColumn {
public static final String GRADE_NAME = "学级(必填)";
public static final String CLAZZ_CODE = "编号";
public static final String CLAZZ_NAME = "班级";
public static final String CLAZZ_CNAME = "别名";
public static final String CAMPUS = "校区";
public static final String DIVISION = "系部(必填)";
public static final String MAJORS = "专业(必填)";
public static final String BZR = "班主任";
@NotBlank(message = SchHeightClassExcelColumn.GRADE_NAME+"不能为空")
@Size(max = 20, message = SchHeightClassExcelColumn.GRADE_NAME +"长度不能超过20")
@Excel(name = SchHeightClassExcelColumn.GRADE_NAME)
private String gradeName;
@Excel(name = SchHeightClassExcelColumn.CLAZZ_CODE)
private String clazzCode;
@NotBlank(message = SchHeightClassExcelColumn.CLAZZ_NAME+"不能为空")
@Size(max = 20, message = SchHeightClassExcelColumn.CLAZZ_NAME+"长度不能超过20")
@Excel(name = SchHeightClassExcelColumn.CLAZZ_NAME)
private String clazzName;
@Size(max = 20, message = SchHeightClassExcelColumn.CLAZZ_CNAME+"长度不能超过20")
@Excel(name = SchHeightClassExcelColumn.CLAZZ_CNAME)
private String clazzCName;
@Excel(name = SchHeightClassExcelColumn.CAMPUS)
private String campus;
@NotBlank(message = SchHeightClassExcelColumn.DIVISION+"不能为空")
@Size(max = 20, message = SchHeightClassExcelColumn.DIVISION+"长度不能超过20")
@Excel(name = SchHeightClassExcelColumn.DIVISION)
private String divistion;
@NotBlank(message = SchHeightClassExcelColumn.MAJORS+"不能为空")
@Size(max = 20, message = SchHeightClassExcelColumn.MAJORS+"长度不能超过20")
@Excel(name = SchHeightClassExcelColumn.MAJORS)
private String majors;
@Excel(name = SchHeightClassExcelColumn.BZR)
private String bzr;
}
@@ -0,0 +1,44 @@
package com.yunhai.bschclassmanage.model.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
@Data
public class StudentClassNoExcelColumn {
public static final String GRADE_NAME = "年级";
public static final String CLAZZ_NAME = "班级";
public static final String STU_NAME = "姓名";
public static final String ACCOUNT = "账号";
public static final String CLAZZ_NO = "学号";
@NotBlank(message = StudentClassNoExcelColumn.GRADE_NAME+"不能为空")
@Size(max = 20, message = StudentClassNoExcelColumn.GRADE_NAME +"长度不能超过20")
@Excel(name = StudentClassNoExcelColumn.GRADE_NAME)
private String gradeName;
@NotBlank(message = StudentClassNoExcelColumn.CLAZZ_NAME+"不能为空")
@Size(max = 20, message = StudentClassNoExcelColumn.GRADE_NAME +"长度不能超过20")
@Excel(name = StudentClassNoExcelColumn.CLAZZ_NAME)
private String clazzName;
@NotBlank(message = StudentClassNoExcelColumn.STU_NAME+"不能为空")
@Size(max = 50, message = StudentClassNoExcelColumn.STU_NAME +"长度不能超过50")
@Excel(name = StudentClassNoExcelColumn.STU_NAME)
private String stuName;
@NotBlank(message = StudentClassNoExcelColumn.ACCOUNT+"不能为空")
@Size(max = 50, message = StudentClassNoExcelColumn.ACCOUNT +"长度不能超过50")
@Excel(name = StudentClassNoExcelColumn.ACCOUNT)
private String account;
@Excel(name = StudentClassNoExcelColumn.CLAZZ_NO)
private String clazzNo;
}
@@ -0,0 +1,58 @@
package com.yunhai.bschclassmanage.model.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
@Data
public class StudentExcelColumn {
public static final String GRADE_NAME = "年级";
public static final String CLAZZ_NAME = "班级";
public static final String STU_NAME = "姓名";
public static final String ACCOUNT = "账号";
public static final String PASSWORD = "密码";
public static final String ID_CARD = "身份证";
public static final String CLAZZ_NO = "学号";
public static final String GENDER = "性别(男,女)";
@NotBlank(message = StudentExcelColumn.GRADE_NAME+"不能为空")
@Size(max = 20, message = StudentExcelColumn.GRADE_NAME +"长度不能超过20")
@Excel(name = StudentExcelColumn.GRADE_NAME)
private String gradeName;
@NotBlank(message = StudentExcelColumn.CLAZZ_NAME+"不能为空")
@Size(max = 20, message = StudentExcelColumn.GRADE_NAME +"长度不能超过20")
@Excel(name = StudentExcelColumn.CLAZZ_NAME)
private String clazzName;
@NotBlank(message = StudentExcelColumn.STU_NAME+"不能为空")
@Size(max = 50, message = StudentExcelColumn.STU_NAME +"长度不能超过50")
@Excel(name = StudentExcelColumn.STU_NAME)
private String stuName;
@NotBlank(message = StudentExcelColumn.ACCOUNT+"不能为空")
@Size(max = 50, message = StudentExcelColumn.ACCOUNT +"长度不能超过50")
@Excel(name = StudentExcelColumn.ACCOUNT)
private String account;
@Excel(name = StudentExcelColumn.PASSWORD)
private String password;
@Pattern(regexp = "^$|^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]$",
message = "身份证号码格式不正确(若填写必须为18位有效格式)")
@Excel(name = StudentExcelColumn.ID_CARD)
private String idCard;
@Excel(name = StudentExcelColumn.CLAZZ_NO)
private String clazzNo;
@Pattern(regexp = "^(\\s*|男|女)$",
message = "请输入正确性别,若填写,必须为(男,女)")
@Excel(name = StudentExcelColumn.GENDER)
private String gender;
}
@@ -0,0 +1,61 @@
package com.yunhai.bschclassmanage.model.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
/**
* @program: ResearchLearn
* @description: 导入研学基地实体类
* @author: chenx
* @create: 2023-07-21 14:12
**/
@Data
public class TeacherExcelColumn {
public static final String GROUP_NAME = "组名(必填,多个组','隔开)";
public static final String ACCOUNT = "用户名(必填,教师手机号)";
public static final String PASSWORD = "密码(选填,若填写请按照强密码规则字母+数字+特殊符号,8位以上)";
public static final String TEA_NAME = "姓名(必填)";
public static final String ID_CARD = "身份证号";
public static final String TEL = "手机号";
public static final String GENDER = "性别(男,女)";
@NotBlank(message = TeacherExcelColumn.GROUP_NAME+"不能为空")
@Excel(name = TeacherExcelColumn.GROUP_NAME)
private String groupName;
@NotBlank(message = TeacherExcelColumn.ACCOUNT+"不能为空")
@Size(max = 50, message = TeacherExcelColumn.ACCOUNT +"长度不能超过50")
@Excel(name = TeacherExcelColumn.ACCOUNT)
private String account;
@Excel(name = TeacherExcelColumn.PASSWORD)
private String password;
@NotBlank(message = TeacherExcelColumn.TEA_NAME+"不能为空")
@Size(max = 50, message = TeacherExcelColumn.TEA_NAME +"长度不能超过50")
@Excel(name = TeacherExcelColumn.TEA_NAME)
private String teaName;
@Pattern(regexp = "^$|^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]$",
message = "身份证号码格式不正确(若填写必须为18位有效格式)")
@Excel(name = TeacherExcelColumn.ID_CARD)
private String idCard;
@Pattern(regexp = "^(\\s*|1[3-9]\\d{9})$",
message = "请输入有效手机号码(若填写,必须为11位手机号)")
@Excel(name = TeacherExcelColumn.TEL)
private String tel;
@Pattern(regexp = "^(\\s*|男|女)$",
message = "请输入正确性别,若填写,必须为(男,女)")
@Excel(name = TeacherExcelColumn.GENDER)
private String gender;
}
@@ -0,0 +1,30 @@
package com.yunhai.bschclassmanage.model.oa;
import lombok.Data;
@Data
public class TeaInfoVO {
private String SchSerID;
private String Teapolitical;
private String TeaWorkStart;
private String Account;
private String SchSerIDs;
private Integer role;
private String JiaoYuJu;
private String TeaSex;
private Integer IsLeadingMiddle;
private String TeaOriginPlace;
private String Photo;
private String TeaIDCard;
private String Name;
private Integer GroupID;
private String SchName;
private String TeaTeachStart;
private String TeaSerID;
private Integer UserID;
private String TeaNation;
private String Tel;
private String TeaWorkType;
private Integer TeaNo;
private String TeaBirth;
}
@@ -0,0 +1,19 @@
package com.yunhai.bschclassmanage.model.oa;
import lombok.Data;
@Data
public class UserInfoVO {
private String SchSerID; // 学校ID
private Integer No; // 教师编号
private String IDCard; // 身份证
private Integer UserID; // 用户ID
private Integer sex; // 性别
private Integer usertype; // 用户类型
private String SerID; // 序列号
private String Photo; // 头像
private String Tel; // 电话
private String Uids; // 账户
private Integer GroupID; // 分组ID
private String Name; // 姓名
}
@@ -0,0 +1,19 @@
package com.yunhai.bschclassmanage.model.tool;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class BaseGroup {
private Integer id;
private String code;
private String name;
private Integer type;
private Integer pid;
private Integer no;
}
@@ -0,0 +1,21 @@
package com.yunhai.bschclassmanage.model.tool;
import com.fasterxml.jackson.core.type.TypeReference;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class BaseTree {
private Integer id;
private String code;
private String name;
private Integer type;
private String order;
private boolean expand;
private List<BaseTree> children;
}
@@ -0,0 +1,48 @@
package com.yunhai.bschclassmanage.model.tool;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
import java.util.List;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class BaseUser {
private int id;
private Integer[] tags;
private String phone;
private String profilePicture;
private LocalDateTime birth;
private Integer[] depts;
private Integer status;
private String idcard;
private Integer type;
private String email;
private String name;
private String account;
private Integer gender;
private List<GroupInfo> groups;
private List<RoleInfo> roleList;
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class GroupInfo {
private Integer groupId;
private Integer no;
private Integer schoolId;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class RoleInfo {
private Integer roleId;
private Integer schId;
}
}
@@ -0,0 +1,13 @@
package com.yunhai.bschclassmanage.model.tool;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class DeleteUser {
private Integer userId;
private Integer groupId;
}
@@ -0,0 +1,26 @@
package com.yunhai.bschclassmanage.model.tool;
/**
* @Author wanghu
* @Date 2025-11-10 14:47 (可以根据需要修改)
* @Description:
*/
public class PageInfo {
private int pageNum;
private int pageSize;
private int total;
private int totalPages;
private boolean hasNext;
private boolean hasPrev;
// 构造方法、getter、setter...
public PageInfo(int pageNum, int pageSize, int total, int totalPages,
boolean hasNext, boolean hasPrev) {
this.pageNum = pageNum;
this.pageSize = pageSize;
this.total = total;
this.totalPages = totalPages;
this.hasNext = hasNext;
this.hasPrev = hasPrev;
}
}
@@ -0,0 +1,36 @@
package com.yunhai.bschclassmanage.model.tool;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
/**
* 用户系统角色上下文实体
* 用于从请求头 currentrole 中解析当前操作人的身份信息
*/
@AllArgsConstructor
@NoArgsConstructor
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class UserSysRole {
/**
* 子账号/孩子ID
* 值为 0 通常代表:主账号操作 或 没有切换子账户
*/
private Integer childId;
/**
* 角色ID (例如:7 可能代表班主任、校长或普通教师等)
*/
private Integer roleId;
/**
* 学校ID (例如:3260)
* 关键字段,用于数据隔离(如日志查询只查该学校的数据)
*/
private Integer schId;
}
@@ -0,0 +1,13 @@
package com.yunhai.bschclassmanage.model.tool;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class YearTerm {
private Integer year;
private Integer term;
}
@@ -0,0 +1,19 @@
package com.yunhai.bschclassmanage.model.vo;
import lombok.Builder;
import lombok.Data;
import java.util.List;
/**
* @Author wanghu
* @Date 2026-6-10 15:09 (可以根据需要修改)
* @Description:
*/
@Data
@Builder
public class AcademicStageSchsystemVO {
private Integer academicStageId;
private String academicStageName;
private List<SchSystemVO> academicStageList;
}
@@ -0,0 +1,55 @@
package com.yunhai.bschclassmanage.model.vo;
import lombok.Builder;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
/**
* @Author wanghu
* @Date 2026-6-10 15:09 (可以根据需要修改)
* @Description:
*/
@Data
public class BaseSchClassVO {
private Integer id;
private String code;
private Integer gradeId;
private String gradeName;
private Integer groupId;
private String groupName;
private Integer classId;
@NotBlank(message = "名称不能为空")
@Size(max = 255, message = "名称长度不能超过255")
private String name;
@Size(max = 255, message = "别称长度不能超过255")
private String cname;
private Integer firstTeacherId;
private String firstTeacherName;
private Integer secondTeacherId;
private String secondTeacherName;
private Integer campusId;
private String campusName;
private Boolean graduate;
private Boolean disableDel;
private Integer enrollYear;
}
@@ -0,0 +1,63 @@
package com.yunhai.bschclassmanage.model.vo;
import com.yunhai.bschclassmanage.entity.BaseYearTerm;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Calendar;
import java.util.Date;
/**
* @Author wanghu
* @Date 2026-6-10 15:09 (可以根据需要修改)
* @Description:
*/
@Data
public class BaseYearTermVO {
private Integer id;
private Integer year;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date yearStartDate;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date yearEndDate;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date firstTermStartDate;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date firstTermEndDate;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date secondTermStartDate;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date secondTermEndDate;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date upgradeDate;
private Boolean nowYear;
// 带参构造:接收实体和当前学年ID,直接完成赋值
public static BaseYearTermVO of(BaseYearTerm entity, Integer nowId) {
if (entity == null) return null;
BaseYearTermVO vo = new BaseYearTermVO();
vo.setId(entity.getId());
vo.setYear(entity.getYear());
vo.setYearStartDate(entity.getYearStartDate());
vo.setYearEndDate(entity.getYearEndDate());
vo.setFirstTermStartDate(entity.getFirstTermStartDate());
vo.setFirstTermEndDate(entity.getFirstTermEndDate());
vo.setSecondTermStartDate(entity.getSecondTermStartDate());
vo.setSecondTermEndDate(entity.getSecondTermEndDate());
vo.setUpgradeDate(entity.getUpgradeDate());
vo.setNowYear(nowId != null && nowId.equals(entity.getId()));
return vo;
}
}
@@ -0,0 +1,20 @@
package com.yunhai.bschclassmanage.model.vo;
import lombok.Data;
/**
* @Author wanghu
* @Date 2026-6-10 15:09 (可以根据需要修改)
* @Description:
*/
@Data
public class HigherSchClassVO extends BaseSchClassVO {
private Integer divisionId;
private String divisionName;
private Integer majorsId;
private String majorsName;
}
@@ -0,0 +1,44 @@
package com.yunhai.bschclassmanage.model.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.util.Date;
/**
* @Author wanghu
* @Date 2026-6-10 15:09 (可以根据需要修改)
* @Description:
*/
@Data
public class HistorySchClassVO {
private Integer id;
private Integer gradeId;
private String gradeName;
private Integer classId;
private String name;
private String cname;
private Integer campusId;
private String campusName;
private Boolean graduate;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date CreateDate;
private Integer majorsId;
private String majorsName;
private Integer schType;
}
@@ -0,0 +1,108 @@
package com.yunhai.bschclassmanage.model.vo;
import org.springframework.data.domain.Page;
import java.util.Collections;
import java.util.List;
/**
* 统一分页响应对象
* @param <T> 数据类型
*/
public class PageVO<T> {
private int current; // 当前页码(从1开始)
private int pageSize; // 每页大小
private long total; // 总记录数
private List<T> content; // 当前页数据
// ========== 构造方法 ==========
public PageVO() {
// 默认构造,用于反序列化
}
public PageVO(int current, int pageSize, long total, List<T> content) {
this.current = current;
this.pageSize = pageSize;
this.total = total;
this.content = content != null ? content : Collections.emptyList();
}
// ========== 静态工厂方法 ==========
/**
* 从 Spring Data Page 转换
*/
public static <T> PageVO<T> from(Page<T> page) {
return new PageVO<>(page.getNumber() + 1, page.getSize(), page.getTotalElements(), page.getContent());
}
/**
* 创建空分页结果
*/
public static <T> PageVO<T> empty(int pageSize) {
return new PageVO<>(1, pageSize, 0, Collections.emptyList());
}
// ========== getter / setter ==========
public int getCurrent() {
return current;
}
public void setCurrent(int current) {
this.current = current;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public long getTotal() {
return total;
}
public void setTotal(long total) {
this.total = total;
}
public List<T> getContent() {
return content;
}
public void setContent(List<T> content) {
this.content = content;
}
// ========== 辅助计算方法 ==========
/**
* 总页数
*/
public int getTotalPages() {
if (pageSize <= 0) {
return 0;
}
return (int) Math.ceil((double) total / pageSize);
}
/**
* 是否有上一页
*/
public boolean hasPrevious() {
return current > 1;
}
/**
* 是否有下一页
*/
public boolean hasNext() {
return current < getTotalPages();
}
/**
* 分页偏移量(用于SQL查询)
*/
public int getOffset() {
return (current - 1) * pageSize;
}
}
@@ -0,0 +1,26 @@
package com.yunhai.bschclassmanage.model.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Author wanghu
* @Date 2026-6-10 15:09 (可以根据需要修改)
* @Description:
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SchCustomGroupVO {
private Integer cgId; // 组id
private String cgName; // 组名称
private List<Integer> gradeIds;
private List<String> subjectIds;
private List<SelectIntVO> cgLeader;
private List<SelectIntVO> cgMember;
}
@@ -0,0 +1,29 @@
package com.yunhai.bschclassmanage.model.vo;
import com.yunhai.bschclassmanage.entity.SchDicDivision;
import com.yunhai.bschclassmanage.entity.SchDicMajors;
import lombok.Builder;
import lombok.Data;
import java.util.List;
/**
* @Author wanghu
* @Date 2026-6-10 15:09 (可以根据需要修改)
* @Description:
*/
@Data
public class SchDicCourseVO {
private Integer id;
private String name;
private String nickname;
private String code;
private List<SchDicMajors> majorsList;
private List<SchDicDivision> divisionList;
private Integer type;
private String typeName;
}
@@ -0,0 +1,75 @@
package com.yunhai.bschclassmanage.model.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.util.Date;
/**
* @Author wanghu
* @Date 2026-6-10 15:09 (可以根据需要修改)
* @Description:
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SchStudentVO {
private Integer id;
private Integer stuId;
@NotBlank(message = "账号不能为空")
@Size(max = 255, message = "账号长度不能超过255")
private String account;
@NotBlank(message = "名称不能为空")
@Size(max = 255, message = "名称长度不能超过255")
private String name;
private Integer gender;
@Pattern(regexp = "^$|^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]$",
message = "身份证号码格式不正确(若填写必须为18位有效格式)")
private String idCard;
private Integer groupId;
private String stuClassNo;
private Integer gradeId;
private String gradeName;
private Integer classId;
private String className;
private Integer status;
private String statusName;
private Integer abnormalStatus;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date abnormalDate;
private String abnormalStatusName;
private String invitationCode;
private Integer sort;
private Integer schId;
private String schName;
}
@@ -0,0 +1,40 @@
package com.yunhai.bschclassmanage.model.vo;
import com.yunhai.bschclassmanage.enums.NodeType;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Author wanghu
* @Date 2026-6-10 15:09 (可以根据需要修改)
* @Description:
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SchSystemTreeVO {
// ========== 通用字段 ==========
private Integer id; // 当前节点主键(学制ID/年级ID/班级ID)
private String name; // 节点显示名称
private Integer sort; // 排序序号(同层级排序)
private NodeType type; // 节点类型:SCHOOL, SYSTEM, GRADE, CLASS
private List<SchSystemTreeVO> children; // 子节点列表
// ========== 层级特定 ID(可选,便于前端直接获取) ==========
private Integer schsystemId; // 所属学制ID(仅年级/班级节点有效)
private Integer gradeId; // 所属年级ID(仅班级节点有效)
private Integer classId; // 班级ID(仅班级节点有效)
// ========== 学校节点特有字段 ==========
private Integer educationType; // 教育类型(仅学校节点有效)
// ========== 年级节点特有字段 ==========
private Integer enrollYear; // 入学年份(仅年级/班级节点有效,班级可继承年级的入学年份)
private Integer graduation; // 0-未毕业,1-已毕业(仅年级节点有效)
private boolean expand=false;
}
@@ -0,0 +1,22 @@
package com.yunhai.bschclassmanage.model.vo;
import com.fasterxml.jackson.annotation.JsonView;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author wanghu
* @Date 2026-6-10 15:09 (可以根据需要修改)
* @Description:
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SchSystemVO {
private Integer id; // 学制id
private String name; // 学制名称
private Boolean checked; // 是否选中(前端勾选状态)
}
@@ -0,0 +1,27 @@
package com.yunhai.bschclassmanage.model.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Author wanghu
* @Date 2026-6-10 15:09 (可以根据需要修改)
* @Description:
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SchTeachClassMapVO {
private Integer gradeId;
private Integer classId;
private List<SchTeachMapIdVO> teachSubjectList;
}
@@ -0,0 +1,31 @@
package com.yunhai.bschclassmanage.model.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Author wanghu
* @Date 2026-6-10 15:09 (可以根据需要修改)
* @Description:
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SchTeachMapIdVO {
private Integer id;
private String subId;
private String subName;
private Integer teacherId;
private String teacherName;
}
@@ -0,0 +1,27 @@
package com.yunhai.bschclassmanage.model.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Author wanghu
* @Date 2026-6-10 15:09 (可以根据需要修改)
* @Description:
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SchTeachMapVO {
private List<SelectStrVO> subjectList;
private List<SelectGradeClassVO> classList;
private List<SchTeachClassMapVO> teachList;
}
@@ -0,0 +1,30 @@
package com.yunhai.bschclassmanage.model.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.util.Date;
import java.util.List;
/**
* @Author wanghu
* @Date 2026-6-10 15:09 (可以根据需要修改)
* @Description:
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SchTeacherTOutVO {
private Integer teaId;
private String name;
private String idCard;
private String groupNames;
private Integer schId;
private String schName;
}
@@ -0,0 +1,73 @@
package com.yunhai.bschclassmanage.model.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.util.Date;
import java.util.List;
/**
* @Author wanghu
* @Date 2026-6-10 15:09 (可以根据需要修改)
* @Description:
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SchTeacherVO {
private Integer id;
private Integer teaId;
/**
* 教师账户
*/
@Size(max = 255, message = "教师账户长度不能超过255")
private String account;
/**
* 教师姓名
*/
@Size(max = 255, message = "教师姓名长度不能超过255")
private String name;
/**
* 组id name
*/
private List<SelectIntVO> groupList;
/**
* 性别(0未知 1男 2女等,根据业务定义)
*/
private Integer gender;
@Pattern(regexp = "^$|^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]$",
message = "身份证号码格式不正确(若填写必须为18位有效格式)")
private String idCard;
/**
* 联系电话
*/
@Size(max = 255, message = "联系电话长度不能超过255")
private String tel;
/**
* 状态(0禁用 1正常)
*/
private int status;
private String statusName;
private Integer sort;
}
@@ -0,0 +1,22 @@
package com.yunhai.bschclassmanage.model.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author wanghu
* @Date 2026-6-10 15:09 (可以根据需要修改)
* @Description:
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SelectGradeClassVO {
private Integer gradeId;
private String gradeName;
private Integer classId;
private String name;
}
@@ -0,0 +1,37 @@
package com.yunhai.bschclassmanage.model.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Author wanghu
* @Date 2026-6-10 15:09 (可以根据需要修改)
* @Description:
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SelectIntVO {
private Integer id; // id
private String name; //名称
public static Map<Integer, String> toMap(List<SelectIntVO> list) {
if (list == null || list.isEmpty()) {
return java.util.Collections.emptyMap();
}
return list.stream()
.filter(vo -> vo != null && vo.getId() != null && vo.getName() != null)
.collect(Collectors.toMap(
SelectIntVO::getId,
SelectIntVO::getName,
(oldVal, newVal) -> oldVal // 如果有重复 key,保留第一个
));
}
}
@@ -0,0 +1,20 @@
package com.yunhai.bschclassmanage.model.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author wanghu
* @Date 2026-6-10 15:09 (可以根据需要修改)
* @Description:
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SelectStrVO {
private String id; // id
private String name; //名称
}
@@ -0,0 +1,15 @@
package com.yunhai.bschclassmanage.model.vo;
/**
* @Author wanghu
* @Date 2026-6-10 15:09 (可以根据需要修改)
* @Description:
*/
public interface TeacherSchVO {
Integer getTeaId();
String getTeaName();
Integer getSchId();
Integer getIdCard();
}
@@ -0,0 +1,29 @@
package com.yunhai.bschclassmanage.model.vo.oa;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Author wanghu
* @Date 2026-6-10 15:09 (可以根据需要修改)
* @Description:
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SchInfoVO {
@JsonProperty("SchSerId")
private String schSerId;
@JsonProperty("UserSchSerId")
private Integer userSchSerId;
@JsonProperty("SchName")
private String schName;
}