CourseScheduleService.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480
  1. package com.ym.mec.biz.service;
  2. import com.ym.mec.biz.dal.dto.*;
  3. import com.ym.mec.biz.dal.entity.CourseGenerateDto;
  4. import com.ym.mec.biz.dal.entity.CourseSchedule;
  5. import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
  6. import com.ym.mec.biz.dal.entity.CourseScheduleComplaints;
  7. import com.ym.mec.biz.dal.enums.AuditStatusEnum;
  8. import com.ym.mec.biz.dal.enums.GroupType;
  9. import com.ym.mec.biz.dal.enums.TeachModeEnum;
  10. import com.ym.mec.biz.dal.enums.YesOrNoEnum;
  11. import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
  12. import com.ym.mec.biz.dal.page.EndCourseScheduleQueryInfo;
  13. import com.ym.mec.biz.dal.page.StudentCourseScheduleRecordQueryInfo;
  14. import com.ym.mec.biz.dal.page.VipGroupQueryInfo;
  15. import com.ym.mec.common.page.PageInfo;
  16. import com.ym.mec.common.service.BaseService;
  17. import java.util.Date;
  18. import java.util.List;
  19. import java.util.Map;
  20. public interface CourseScheduleService extends BaseService<Long, CourseSchedule> {
  21. /**
  22. * @Author: Joburgess
  23. * @Date: 2019/9/10
  24. * 根据课程ID获取当前课程的信息
  25. */
  26. TeacherAttendanceDto getCurrentCourseDetail(Long courseID);
  27. /**
  28. * @describe 根据课程编号删除课程计划及对应的学生缴费、教师课酬记录、教师签到记录
  29. * @author Joburgess
  30. * @date 2019/10/31
  31. * @param courseScheduleIds: 课程计划编号列表
  32. * @return int
  33. */
  34. void batchDeleteCourseSchedules(List<Long> courseScheduleIds);
  35. /**
  36. * @describe 删除乐团下所有未上的课时
  37. * @author Joburgess
  38. * @date 2019/11/16
  39. * @param musicGroupId:
  40. * @return void
  41. */
  42. void batchDeleteMusicGroupNotStartCourse(String musicGroupId,GroupType groupType);
  43. /**
  44. * @describe 删除指定乐团下指定状态的课程
  45. * @author Joburgess
  46. * @date 2019/11/26
  47. * @param musicGroupId: 乐团编号
  48. * @param userId: 用户编号
  49. * @param groupType: 乐团类型
  50. * @return void
  51. */
  52. void batchDeleteMusicGroupCourseWithStudent(String musicGroupId, Integer userId, GroupType groupType);
  53. /**
  54. * @describe 判断该课程是否只能进行正常签到
  55. * @author Joburgess
  56. * @date 2019/11/5
  57. * @param startClassTime: 课程开始时间
  58. * @param userId: 教师编号
  59. * @param checkSchool: 是否判断教学点
  60. * @param schoolId: 学校编号
  61. * @return com.ym.mec.biz.dal.enums.YesOrNoEnum
  62. */
  63. YesOrNoEnum enableOnlyNormalAttendance(Date startClassTime,Long userId,boolean checkSchool,Integer schoolId);
  64. /**
  65. * 给班级加课
  66. * @param classGroupId 班级编号
  67. * @param coursesTimes 增加的课次
  68. * @param startDate 排课开始时间
  69. * @param startDate 排课结束时间
  70. * @param teachingArrangementList 教学安排(周几,几点-几点)
  71. * @param teachMode 教学模式
  72. * @param type 课程类型
  73. * @param schoolId 教学点
  74. * @param isJumpHoliday 是否跳过节假日
  75. * @return
  76. */
  77. boolean batchAddCourseSchedule(Integer classGroupId, int coursesTimes, Date startDate, Date groupEndDate, Date groupStartDate, List<CourseTimeDto> teachingArrangementList,
  78. TeachModeEnum teachMode, CourseScheduleType type, Integer schoolId, boolean isJumpHoliday);
  79. /**
  80. * 批量调整
  81. * @param batchInsertCoursesDto
  82. * @return
  83. */
  84. boolean batchUpdateCourseSchedule(BatchInsertCoursesDto batchInsertCoursesDto);
  85. /**
  86. * @Author: Joburgess
  87. * @Date: 2019/9/17
  88. * 批量插入课程计划
  89. */
  90. void batchAddCourseSchedule(List<CourseSchedule> courseSchedules);
  91. /**
  92. * @describe 创建乐团课课程计划
  93. * @author Joburgess
  94. * @date 2019/10/24
  95. * @param courseSchedules: 课程计划列表
  96. * @return void
  97. */
  98. void createCourseSchedules(CreateCourseScheduleDto createCourseScheduleDto);
  99. /**
  100. * @Author: Joburgess
  101. * @Date: 2019/9/17
  102. * 批量更新课程计划
  103. */
  104. void batchUpdateCourseSchedule(List<CourseSchedule> courseSchedules, String musicGroupID);
  105. /**
  106. * @Author: Joburgess
  107. * @Date: 2019/9/17
  108. * 根据日期获取当日排课信息
  109. */
  110. Map getStudentCourseSchedulesWithDate(Date classDate);
  111. /**
  112. * @Author: Joburgess
  113. * @Date: 2019/9/17
  114. * 根据日期获取当日排课信息
  115. */
  116. List<CourseScheduleDto> getTeacherCourseSchedulesWithDate(Integer userId, Date classDate, String type);
  117. /**
  118. * @describe 根据日期获取
  119. * @author Joburgess
  120. * @date 2019/12/26
  121. * @param userId:
  122. * @param classDate:
  123. * @return java.util.List<com.ym.mec.biz.dal.dto.CourseScheduleDto>
  124. */
  125. List<CourseScheduleDto> getTeacherHistoryCourseSchedulesWithDate(Integer userId, Date classDate);
  126. /**
  127. * @Author: Joburgess
  128. * @Date: 2019/9/17
  129. * 根据日期获取当日排课信息
  130. */
  131. PageInfo getCourseSchedulesWithDateByEdu(CourseScheduleQueryInfo queryInfo);
  132. /**
  133. * @Author: Joburgess
  134. * @Date: 2019/9/17
  135. * 根据月份获取乐团在该月有课的日期
  136. */
  137. List<Date> getCourseScheduleDateByMonth(Long musicGroupID, Date month);
  138. /**
  139. * @Author: Joburgess
  140. * @Date: 2019/9/17
  141. * 根据学生获取乐团在该月有课的日期
  142. */
  143. List<Date> getCourseScheduleDateByStudent(Date month, Integer isAttend);
  144. /**
  145. * @Author: Joburgess
  146. * @Date: 2019/9/17
  147. * 获取教师在该月有课的日期
  148. */
  149. List<Date> getCourseScheduleDateByTeacher(Date month, String type);
  150. /**
  151. * @describe
  152. * @author Joburgess
  153. * @date 2019/12/26
  154. * @param month:
  155. * @return java.util.List<java.util.Date>
  156. */
  157. List<Date> getHistoryCourseScheduleDateByTeacher(Integer userId,Date month);
  158. /**
  159. * @Author: Joburgess
  160. * @Date: 2019/10/11
  161. * @params [month]
  162. * @return java.util.List<java.util.Date>
  163. * @describe 获取
  164. */
  165. List<Date> getCourseScheduleDates(Date month, String organIdList, String type);
  166. /**
  167. * @describe 课程调整
  168. * @author Joburgess
  169. * @date 2019/11/7
  170. * @param newCourseSchedules: 课程计划列表
  171. * @return void
  172. */
  173. void courseAdjust(List<CourseSchedule> newCourseSchedules);
  174. /**
  175. * @Author: Joburgess
  176. * @Date: 2019/9/23
  177. * 课时调整
  178. */
  179. void classStartDateAdjust(List<CourseSchedule> newCourseSchedules);
  180. /**
  181. * @describe 小课课程批量调整
  182. * @author Joburgess
  183. * @date 2019/12/11
  184. * @param vipGroupCourseAdjustInfo: 调整信息
  185. * @return void
  186. */
  187. void vipCourseAdjust(VipGroupCourseAdjustInfoDto vipGroupCourseAdjustInfo);
  188. /**
  189. * @describe 课程顺延
  190. * @author Joburgess
  191. * @date 2020/1/2
  192. * @param coursePostPoneInfo:
  193. * @return void
  194. */
  195. void coursePostpone(CoursePostponeDto coursePostPoneInfo);
  196. /**
  197. * @describe vip课批量新增-后端处理
  198. * @author Joburgess
  199. * @date 2019/12/12
  200. * @param vipGroupCourseAdjustInfoDto: 加课信息
  201. * @return void
  202. */
  203. void batchAppendVipGroupCourses(VipGroupCourseAdjustInfoDto vipGroupCourseAdjustInfoDto);
  204. /**
  205. * @Author: Joburgess
  206. * @Date: 2019/9/24
  207. * 课程交换
  208. */
  209. void courseSwap(Long courseScheduleId1, Long courseScheduleId2);
  210. /**
  211. * @Author: Joburgess
  212. * @Date: 2019/10/14
  213. * @params [day1, day2]
  214. * @return void
  215. * @describe 对调两天的课程
  216. */
  217. void courseSwapWithDay(Date day1, Date day2);
  218. /**
  219. * @describe 检测数据库不存在的课程是否存在错误
  220. * @author Joburgess
  221. * @date 2019/10/31
  222. * @param courseSchedules: 课程列表
  223. * @return void
  224. */
  225. void checkNewCourseSchedules(List<CourseSchedule> courseSchedules,boolean checkExistCourseSchedule);
  226. void checkNewCourseSchedulesWithoutMusicGroup(List<CourseSchedule> courseSchedules,boolean checkExistCourseSchedule);
  227. /**
  228. * @describe 临时课检测
  229. * @author Joburgess
  230. * @date 2019/12/6
  231. * @param courseSchedules: 课程计划列表
  232. * @return void
  233. */
  234. List<Long> checkSnapCourseShchedules(List<CourseSchedule> courseSchedules);
  235. /**
  236. * @describe
  237. * @author Joburgess
  238. * @date 2019/12/23
  239. * @param courseSchedules: 生成课程名称
  240. * @return void
  241. */
  242. void createCourseScheduleName(List<CourseSchedule> courseSchedules);
  243. /**
  244. * 获取乐团班级未开始的课程
  245. *
  246. * @param classGroupIds
  247. * @param groupType
  248. * @return
  249. */
  250. List<CourseSchedule> findClassGroupNoStartCourseSchedules(List<Integer> classGroupIds, GroupType groupType);
  251. /**
  252. * @Author: Joburgess
  253. * @Date: 2019/9/30
  254. * 获取学生上课记录
  255. */
  256. Object findStudentCourseScheduleRecords(StudentCourseScheduleRecordQueryInfo queryInfo);
  257. /**
  258. * @Author: Joburgess
  259. * @Date: 2019/10/3
  260. * @params [courseScheduleComplaints]
  261. * @return void
  262. * @describe 课程投诉
  263. */
  264. void courseScheduleCommplaint(CourseScheduleComplaints courseScheduleComplaints);
  265. /**
  266. * @Author: Joburgess
  267. * @Date: 2019/10/3
  268. * @params [id] 申诉编号
  269. * @params [teacherLiabilityRatio] 老师责任比
  270. * @params [studentLiabilityRatio] 学生责任比
  271. * @params [status] 审批状态
  272. * @return void
  273. * @describe 课程投诉审核
  274. */
  275. void courseScheduleCommplaintAudit(Long id, Double teacherLiabilityRatio, Double studentLiabilityRatio, AuditStatusEnum status);
  276. /**
  277. * 更新课程至结束状态
  278. * @return
  279. */
  280. boolean updateCourseScheduleToOverStatus();
  281. /**
  282. * @describe 获取老师指定班级的排课
  283. * @author Joburgess
  284. * @date 2019/10/18
  285. * @param queryInfo: 参数
  286. * @return com.ym.mec.common.page.PageInfo
  287. */
  288. PageInfo queryTeacherClassCourseSchedule(CourseScheduleQueryInfo queryInfo);
  289. /**
  290. * @describe 获取点名详情界面头部信息
  291. * @author Joburgess
  292. * @date 2019/10/24
  293. * @param courseScheduleId: 课程编号
  294. * @return com.ym.mec.biz.dal.dto.CourseAttendanceDetailHeadInfoDto
  295. */
  296. CourseAttendanceDetailHeadInfoDto findCourseAttendanceDetailHeadInfo(Long courseScheduleId);
  297. /**
  298. * @describe 检测指定乐团下所有班级是否已排课
  299. * @author Joburgess
  300. * @date 2019/10/18
  301. * @param musicGroupId: 乐团编号
  302. * @return void
  303. */
  304. void checkMusicGroupClassCourse(String musicGroupId);
  305. /**
  306. * @describe 根据课程计划编号获取当前课次
  307. * @author Joburgess
  308. * @date 2019/10/20
  309. * @param courseSchedules:
  310. * @return java.util.Map<java.lang.Integer,java.lang.Integer>
  311. */
  312. Map<Integer, Integer> findCourseScheduleCurrentTimes(List<Integer> courseSchedules);
  313. /**
  314. * 查询班级未开始的课程
  315. *
  316. * @param classGroupId
  317. * @return
  318. */
  319. List<CourseSchedule> findNoStartCoursesByClassGroupId(Integer classGroupId);
  320. /**
  321. * 学生有课提醒
  322. * @return
  323. */
  324. void studentCoursesScheduleRemind();
  325. /**
  326. * 学生上课提醒
  327. */
  328. void studentSignInRemind();
  329. /**
  330. * 老师课程提醒
  331. */
  332. void teacherCoursesScheduleRemind();
  333. /**
  334. * 老师上课提醒
  335. */
  336. void teacherSignInRemind();
  337. /**
  338. * @describe 获取班级的课程计划
  339. * @author Joburgess
  340. * @date 2019/11/5
  341. * @param classGroupId: 班级编号
  342. * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
  343. */
  344. List<CourseSchedule> findCourseScheduleByClassGroup(Integer classGroupId);
  345. /**
  346. * @describe
  347. * @author Joburgess
  348. * @date 2019/11/14
  349. * @param queryInfo:
  350. * @return com.ym.mec.common.page.PageInfo
  351. */
  352. Object findVipGroupCourseSchedules(VipGroupQueryInfo queryInfo);
  353. /**
  354. * @describe 根据参数生成课程计划日期
  355. * @author Joburgess
  356. * @date 2019/12/23
  357. * @param courseGenerateDto: 排课信息
  358. * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
  359. */
  360. List<CourseSchedule> createCourses(CourseGenerateDto courseGenerateDto);
  361. /**
  362. * @describe 终极课表获取接口
  363. * @author Joburgess
  364. * @date 2019/12/27
  365. * @param queryInfo: 查询条件
  366. * @return java.util.List<com.ym.mec.biz.dal.dto.CourseScheduleEndDto>
  367. */
  368. PageInfo<CourseScheduleEndDto> endFindCourseSchedules(EndCourseScheduleQueryInfo queryInfo);
  369. /**
  370. * @describe 陪练课程调整
  371. * @author Joburgess
  372. * @date 2020/2/9
  373. * @param courseSchedule:
  374. * @return void
  375. */
  376. void practiceCourseAdjust(CourseSchedule courseSchedule);
  377. /**
  378. * 陪练课老师调整
  379. * @param courseScheduleId
  380. * @param teacherId
  381. */
  382. void practiceCourseTeacherAdjust(Long courseScheduleId,Integer teacherId);
  383. /**
  384. * 陪练课课程组老师调整
  385. * @param practiceGroupId
  386. * @param teacherId
  387. */
  388. void practiceGroupTeacherAdjust(String practiceGroupId, Integer teacherId, Integer subjectId);
  389. /**
  390. * 清空老师和学生考勤
  391. * @param courseScheduleIds
  392. */
  393. void cleanAttendance(String courseScheduleIds);
  394. /**
  395. * 教师端中间页课程评价数据获取
  396. * @param courseScheduleId
  397. * @return
  398. */
  399. Object teacherCourseRemarkInfo(Long courseScheduleId);
  400. /**
  401. * 教师端中间页课程评价数据提交
  402. * @param teacherRemarkCommitDto
  403. * @return
  404. */
  405. void teacherCourseRemarkCommit(TeacherRemarkCommitDto teacherRemarkCommitDto);
  406. /**
  407. * 教师端中间页网络教室头部详情
  408. * @param courseScheduleId
  409. * @return
  410. */
  411. Object teacherCourseHeadInfo(Long courseScheduleId);
  412. /**
  413. * 教师端中间页网络教室课程进度列表
  414. * @param courseScheduleId
  415. * @return
  416. */
  417. Object teacherCourseRates(Long courseScheduleId);
  418. }