You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tianze-pro/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseScheduleSe...

202 lines
7.2 KiB
Java

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.ibeetl.jlw.entity;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
import com.ibeetl.admin.core.annotation.Dict;
import com.ibeetl.admin.core.annotation.DictDeep;
import com.ibeetl.admin.core.annotation.ReadJSON;
import com.ibeetl.admin.core.entity.BaseEntity;
import com.ibeetl.admin.core.util.ValidateConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.beetl.sql.annotation.entity.AssignID;
import org.beetl.sql.annotation.entity.InsertIgnore;
import org.beetl.sql.annotation.entity.UpdateIgnore;
import org.beetl.sql.fetch.annotation.Fetch;
import org.beetl.sql.fetch.annotation.FetchSql;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static cn.hutool.core.collection.CollUtil.join;
/*
* 课程开课-排课管理-课表
* gen by Spring Boot2 Admin 2022-09-11
*/
@Fetch
@Data
@EqualsAndHashCode(callSuper=false)
public class TeacherOpenCourseScheduleSession extends BaseEntity{
//课程开课-排课位置ID
@NotNull(message = "ID不能为空", groups =ValidateConfig.UPDATE.class)
// @SeqID(name = ORACLE_CORE_SEQ_NAME)
@AssignID(value = "maskAutoID",param = "com.ibeetl.jlw.entity.TeacherOpenCourseScheduleSession")
private Long teacherOpenCourseScheduleSessionId ;
//创建时间
private Date teacherOpenCourseScheduleSessionAddTime ;
//状态1启用 2禁用
@Dict(type="global_open_status")
private Integer teacherOpenCourseScheduleSessionStatus ;
//课程开课ID
@Dict(type="teacher_open_course.teacher_open_course_title.teacher_open_course_status=1")
private Long teacherOpenCourseId ;
//教师ID
@Dict(type="teacher.teacher_name.teacher_status=1")
private Long teacherId ;
//班级ID集合
private String schoolClassIds ;
/**
* 开课星期 多个逗号隔开
* 例T1,T2,T3 代表星期一,星期二,星期三
*
* 对应 {@link TeacherOpenCourseScheduleSessionOptions.WeekDetailType} 的name
*/
private String teacherOpenCourseScheduleSessionStatusWeekDetail;
@UpdateIgnore
@InsertIgnore
private String teacherOpenCourseScheduleSessionStatusWeekDetailText;
@FetchSql("select GROUP_CONCAT(t.class_name) from school_class t where FIND_IN_SET(t.class_id, #schoolClassIds#)")
@UpdateIgnore
@InsertIgnore
private String schoolClassIdsText ;
// 开始日期
private String teacherOpenCourseScheduleSessionStartDate;
// 结束日期
private String teacherOpenCourseScheduleSessionEndDate;
/**
* 开始状态
*/
@FetchSql("select \n" +
"(case when DATE(t.now) < t.startTime then \n" +
"'READY' \n" +
"when DATE(t.now) between t.startTime and t.endTime then \n" +
"'ING' \n" +
"when DATE(t.now) > t.endTime then \n" +
"'END' \n" +
"end) as begin_status_code, \n" +
"(case when DATE(t.now) < t.startTime then \n" +
"'未开始' \n" +
"when DATE(t.now) between t.startTime and t.endTime then \n" +
"'进行中' \n" +
"when DATE(t.now) > t.endTime then \n" +
"'已结束' \n" +
"end ) as begin_status_text " +
"from (select now() as now, #teacherOpenCourseScheduleSessionStartDate# as startTime, #teacherOpenCourseScheduleSessionEndDate# as endTime) t \n" +
" ")
@UpdateIgnore
@InsertIgnore
private Map beginStatus;
// 周次
private Integer teacherOpenCourseScheduleSessionWeekNum;
// 节假日是否排课
private Boolean teacherOpenCourseScheduleSessionOpenOnHolidays;
// 开课节次和教室的组合JSON格式
// [{班级ID[节次ID]}]
@ReadJSON
private String teacherOpenCourseScheduleSessionClassList;
// 判断是否是多个教室
@UpdateIgnore
@InsertIgnore
private boolean teacherOpenCourseScheduleSessionClassIsMultiple;
//组织ID
private Long orgId ;
//用户ID
private Long userId ;
@FetchSql("select t.* from teacher_open_course_schedule_session_snap t where t.teacher_open_course_schedule_session_snap_status = 1 " +
" and t.teacher_open_course_schedule_session_id = #teacherOpenCourseScheduleSessionId# " +
"and t.teacher_open_course_schedule_session_snap_status = 1 " +
"order by t.teacher_open_course_schedule_session_day_time asc " )
@UpdateIgnore
@InsertIgnore
@DictDeep
private List<TeacherOpenCourseScheduleSessionSnap> sessionTagList;
@FetchSql("SELECT DISTINCT " +
"t.teacher_open_course_schedule_session_tag_name as session_tag_name, " +
"CONCAT( t.teacher_open_course_schedule_session_tag_start_time, '~', t.teacher_open_course_schedule_session_tag_end_time ) as session_tag_time, " +
"t.teacher_open_course_schedule_session_class_name as session_class_name " +
"FROM " +
"teacher_open_course_schedule_session_snap t where t.teacher_open_course_schedule_session_snap_status = 1 " +
" and t.teacher_open_course_schedule_session_id = #teacherOpenCourseScheduleSessionId# " +
" " )
@UpdateIgnore
@InsertIgnore
private List<Map<String, String>> sessionTags;
// 上课班级名称集合
@UpdateIgnore
@InsertIgnore
private String sessionClassListText;
public void setSessionTagList(List<TeacherOpenCourseScheduleSessionSnap> sessionTagList) {
this.sessionTagList = sessionTagList;
if (ObjectUtil.isNotEmpty(sessionTagList)) {
this.sessionClassListText = sessionTagList.stream()
.map(TeacherOpenCourseScheduleSessionSnap::getTeacherOpenCourseScheduleSessionClassName)
.distinct().collect(Collectors.joining(","));
}
}
public void setTeacherOpenCourseScheduleSessionStatusWeekDetail(String teacherOpenCourseScheduleSessionStatusWeekDetail) {
this.teacherOpenCourseScheduleSessionStatusWeekDetail = teacherOpenCourseScheduleSessionStatusWeekDetail;
if (ObjectUtil.isNotEmpty(teacherOpenCourseScheduleSessionStatusWeekDetail)) {
List<String> weekDetailList = new ArrayList<>();
for (String weekName : teacherOpenCourseScheduleSessionStatusWeekDetail.split(",")) {
TeacherOpenCourseScheduleSessionOptions.WeekDetailType value = TeacherOpenCourseScheduleSessionOptions.WeekDetailType.valueOf(weekName);
if (value != null) { weekDetailList.add(value.getWeek()); }
}
this.setTeacherOpenCourseScheduleSessionStatusWeekDetailText(join(weekDetailList, ","));
}
}
public void setTeacherOpenCourseScheduleSessionClassList(String teacherOpenCourseScheduleSessionClassList) {
this.teacherOpenCourseScheduleSessionClassList = teacherOpenCourseScheduleSessionClassList;
// 不为空且字符串是JSON数组
if(ObjectUtil.isNotEmpty(teacherOpenCourseScheduleSessionClassList) && JSONUtil.isTypeJSONArray(teacherOpenCourseScheduleSessionClassList)) {
this.setTeacherOpenCourseScheduleSessionClassIsMultiple(JSONUtil.parseArray(teacherOpenCourseScheduleSessionClassList).size() > 1);
}
}
}