
org.openurp.edu.base.model.Student.scala Maven / Gradle / Ivy
/*
* OpenURP, Agile University Resource Planning Solution.
*
* Copyright © 2014, The OpenURP Software.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful.
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
package org.openurp.edu.base.model
import java.time.LocalDate
import org.beangle.commons.collection.Collections
import org.beangle.data.model.pojo.{DateRange, Remark, TemporalOn, Updated}
import org.beangle.data.model.{Component, LongId}
import org.openurp.base.model.{Campus, Department, Person, User}
import org.openurp.code.edu.model.{EducationLevel, StudentStatus, StudyType}
import org.openurp.edu.base.code.model.{StdLabel, StdLabelType, StdType}
import org.openurp.edu.base.{EduLevelBased, StdEnrollment}
/**
* 学籍信息实现
*/
class Student extends LongId with EduLevelBased with Updated with Remark with DateRange {
/** 基本信息 */
var person: Option[Person] = None
/** 用户信息 */
var user: User = _
/** 学生类别 所在项目内的学生类别 */
var stdType: StdType = _
/** 学籍状态 */
var state: Option[StudentState] = None
/** 状态 */
var states = Collections.newBuffer[StudentState]
/** 学生分类标签 */
var labels = Collections.newMap[StdLabelType, StdLabel]
/**
* 入学日期
* 入学日期+最长学习年限=学籍截止日期
* 该日期也是学籍状态开始的日期(student.state.beginOn),但不得早于学籍有效的开始日期(student.beginOn)
*/
var studyOn: LocalDate = _
/**
* 预计毕业日期
* 入学日期+学习年限=预计毕业日期
* 该日期是学籍状态的最后截止日期,但预计毕业日期不得晚于学籍截止日期
*/
var graduateOn: LocalDate = _
/** 学习年限(允许0.5年出现) */
var duration: Float = _
/** 是否有学籍 */
var registed: Boolean = _
/** 学习形式 全日制/业余/函授 */
var studyType: StudyType = _
/** 导师 */
var tutor: Option[Teacher] = None
}
/**
* 学籍状态日志
*/
class StudentState extends LongId with StdEnrollment with TemporalOn with Remark {
/** 学生 */
var std: Student = _
/** 年级 */
var grade: String = _
/** 管理院系 */
var department: Department = _
/** 专业 */
var major: Major = _
/** 专业方向 */
var direction: Option[Direction] = None
/** 行政班级 */
var squad: Option[Squad] = None
/** 是否在校 */
var inschool: Boolean = _
/** 学籍状态 */
var status: StudentStatus = _
/** 校区 */
var campus: Campus = _
}
/**
* 学生范围
*/
class StudentScope extends Component {
/** 年级 */
var grades: String = _
/** 项目 */
var project: Project = _
/** 培养层次集合 */
var levels: collection.mutable.Set[EducationLevel] = _
/** 学生类别集合 */
var stdTypes: collection.mutable.Set[StdType] = _
/** 部门集合 */
var departments: collection.mutable.Set[Department] = _
/** 专业集合 */
var majors: collection.mutable.Set[Major] = _
/** 专业方向集合 */
var directions: collection.mutable.Set[Direction] = _
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy