排课
2023-11-20 15:25:09 0 举报
AI智能生成
新版排课
作者其他创作
大纲/内容
涉及逻辑
评课
评课任务需要添加待评课的课程,来源是课表元素class_schedule_item内的数据
授课统计
独立的功能,和课表暂无关系
多视角课表
调课
班次
创建班次时会对应创建一条ClassSchedule的记录<br>
课表导入
合班
排课
发布
发布当前版本号的课表
取消发布
版本号加一
更新发布
发布当前版本号的课表
暂存
redis中redis:schedule:tmp中暂存未发布过的课表元素
排课页面课表展示<br>
取消发布状态
取消发布操作会使主版本号加一所以当前班次课表是<br>排课页面课表展示是查询class_schedule_item上个版本的课表<br>加上class_schedule_undo_log表中当前版本未发布的课表元素<br>加上redis中redis:schedule:tmp中暂存的数据
此状态所做的课表修改会记录在class_schedule_undo_log表中
此状态下的更新发布会生成调课记录,<br>class_schedule_exchange_log<br>
未发布过状态
排课页面课表展示是<br>class_schedule_undo_log表中的排课操作记录
删除按钮有的时候不管用,点击删除迅速刷新页面后删除的元素仍然存在
发布状态
排课页面课表展示是<br>查询class_schedule_item当前发布版本的课表<br>加上redis中redis:schedule:tmp中暂存的数据
发布状态所做的课表修改只保存在前端内存里,一刷新页面就没有了<br>只有点击暂存才会保存在redis:schedule:tmp中<br>
发布状态的更新发布也会生成调课记录,<br>class_schedule_exchange_log<br>
删除,只有点击暂存再点击更新发布才能生效,<br>直接点击更新发布无法生效<br>
涉及表
class_info<br>班次信息<br>课程开始时间和结束时间
getStudyStartTime
getStudyEndTime
class_schedule<br>课表信息
version
版本
status<br>
状态:-1 取消发布 0 未发布 1 已发布
class_id
class_schedule_item<br>课表所包含的元素
class_schedule_undo_log<br>当前版本未发布的课表元素<br>
class_schedule_exchange_log<br>调课,每次课表更新发布时会生成调课记录
redis:schedule:tmp中存储的只是发布状态下点击暂存按钮的课表<br>
想法
排课其实就是共享资源的分配,以班次为视角,课程、上课地点及上课时间是共享资源;老师视角,班次和上课地点及上课时间是共享资源
课程计划,需要和排课进行区分<br>课程计划不包含课程的具体上课日期及时间,只是计划中包含该课程<br>并明确该课程需要的节数、是否连堂等。<br>目的是将班次和课程及该课程的教师绑定在一起
班次课程计划<br>课程名称、任课老师、节数,禁排位置
教师课程计划<br>课程名称、授课班次,节数
排课的时候,先排课,然后选当前课程的上课场地,检测场地是否可选
课程库配置该课程同时间段最大可安排数,这是因为有场地或者教学设施的限制,一般学科不做限制。<br>
冲突判定方法
去除无关条件,查找是否有其他记录<br>比如:班次调课,去除班级条件,查询指定日期时间老师是否有课,如果有课则无法再安排课<br>课程调教室,去除课程条件,查询指定日期某教室是否有课,如果有则无法调该时间的教室
多种排课视角
班次、教师、场地,进行排课。三者虽自成体系,但实际是合为一体。调整课程简单易用
调课
需要明确排课就是排课,调课就是调课;排课所影响的课程变化不应记为调课记录<br>调课,一种方法:先调课,看老师是否有空;在判断地点是否存在冲突,如果有冲突就重新选择上课地点<br>另一种方法:直接显示同时满足老师与上课地点的调课位置。
自动排课
先排限制条件多的,比如要求教室必须有影音录像设备的,又或者是某某领导的授课
小表驱动大表
降高维为低维
课程库可配置教学场地要求偏向,是否必须要有影音设备等;这样自动排课的时候可以有偏向
基础要素<br>哪个班次什么时间在什么位置,由哪位老师上课,上的是什么课<br>
班次<br>
可通过预分配课程的方式将班次和课程及该课程的教师绑定在一起<br>
上课时间
场地
教师及所授课程
任教老师、课程、班次、日期时间唯一确定一条排课记录<br>
目前的功能
类型课程占比
左侧展示课程列表,按照类型分组<br>课程类型/教学形式<br>专题授课、案例教学、专题讲座等等等等
课程只可拖拽到当前班次的开课时间段
日历表
日历时间段和开课时间段
课程导入
发布课表
通知:小程序、短信等
存在的问题
1、排课时,由于课程太多了,而且课程检索只有课程名字关键字检索一种形式,找课非常麻烦
2、课表展示中的课程名字展示的不全。可以减小字号来展示完整
3、班次培训时间无明确展示<br>
4、课表暂存
5、排课的改动所涉及的调课记录不好用<br>
6、排课导入,如果所排的课不在师资库或课程库怎么办<br>
排课查询
1、查询班次信息<br>classScheduleGateway.getByClassId(qry.getClassId())<br>表class_schedule<br>
SELECT id,class_id,class_name,version,org_id,org_code,org_name,status,del,creater,modify_time,create_time,modifier FROM class_schedule WHERE del=false AND (class_id = 1722858607073157122)<br>
2、又查一次班次信息<br>classScheduleGateway.getByClassId(classId())<br>表class_schedule
3、查询class_info获取班次培训起止日期<br>classInfoGateway.getClassById(classId)<br>表class_info
SELECT id,name,org_id,org_name,type,year,main_term,main_type,main_attachment,main_day,master_year,study_start_time,study_end_time,study_method,student_count,report_count,study_hour,classroom_id,classroom_name,enter_type,plan,enter_start_time,enter_end_time,dept_id,dept_name,enter_place,enter_contact_person,enter_contact,remark,status,del,create_time,creater,modify_time,modifier,org_code,course_release_status,course_release_time,text_manager_name,text_attendant_name,temp_hand_book,is_on_file FROM class_info WHERE id=1722858607073157122 AND del=false<br>
4、查询排课日志,就是哪个日期有什么课<br>classScheduleUndoLogGateway.list<br>表class_schedule_undo_log<br>
SELECT id,class_id,schedule_id,version,version_sn,day,time_segment,time_segment_sn,action,data,del,creater,create_time,modifier,modify_time FROM class_schedule_undo_log WHERE (schedule_id = 1722858607110905858 AND version = 1 AND day >= '2023-11-11' AND day < '2023-12-31') ORDER BY id ASC
子主题<br>
新版排课
基础信息维护
课表结构<br>针对每个班次可维护该班次的课表结构<br>
是否有晨读晚自习
一周上几天课<br>
各午别上课下课时间段
课程库
包含授课教师
场地库
师资库
教学计划
班次教学计划<br>为本班次添加本次培训时间段内需进行的课程<br>
课程
课程库内绑定授课老师的课程记录
课程授课场地
每个课程都需要指明所需要的场地<br>是本班教室还是指明其他教室
课程节数
指明需要安排几节目标课程
课程禁排要求
哪个时间段是不能排我这一堂课的
教师教学计划
教师视角的教学计划
合堂
针对课程创建合堂记录<br>只能对教学计划都包含目标课程<br>并且培训周期有重合的班次进行合堂操作
有合堂需求的课程可以维护本次合堂要教授的班次。<br>
排课
班次排课视角
展示该班次教学计划内所有的课程
合堂课程排课
根据该班次的教学计划,及合堂记录查出合堂课程,并标明该课程是合堂课程。<br>排的时候,只要有排过合堂课表的同堂班次,那么其他同堂的班次的相同课表位置也为该合堂课程。
教师排课视角
调课
调课就是调课,是已排课程的调整<br>排课是未排课程的安排<br>调课只存在于已排课程有调课需求了才会产生调课记录。
先要调成功(这个过程会检验原课程原位置与目标课程及目标位置的冲突检验)<br>然后生成调课记录(可生成通知信息)<br>再应用调课记录,对课表进行调整
同班调课
不同班调课<br>不同班只能是教学计划中同时包含要调课的课程的班次<br>如果教学计划不包含,请按照排课处理
冲突校验
课表导入
自动排课
痛点
逻辑复杂,涉及课程库、师资库、教学统计、课程评价,调课记录
前端不太好展现,不易用,而且不是很美观<br>
冲突逻辑校验<br>
每个校区距离较远,不能一天来回跑,同一个老师来回跑不现实
多班排课怎么排
不同的党校排课模板不同
适当位置增加检索功能
0 条评论
下一页