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:
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user