CourseScheduleController.java 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476
  1. package com.ym.mec.web.controller;
  2. import com.ym.mec.auth.api.client.SysUserFeignService;
  3. import com.ym.mec.auth.api.entity.SysUser;
  4. import com.ym.mec.biz.dal.dao.ClassGroupDao;
  5. import com.ym.mec.biz.dal.dao.ClassGroupTeacherMapperDao;
  6. import com.ym.mec.biz.dal.dao.EmployeeDao;
  7. import com.ym.mec.biz.dal.dao.VipGroupDao;
  8. import com.ym.mec.biz.dal.dto.*;
  9. import com.ym.mec.biz.dal.entity.*;
  10. import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
  11. import com.ym.mec.biz.dal.enums.*;
  12. import com.ym.mec.biz.dal.page.EndCourseScheduleQueryInfo;
  13. import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
  14. import com.ym.mec.biz.dal.page.VipGroupQueryInfo;
  15. import com.ym.mec.biz.service.CourseScheduleComplaintsService;
  16. import com.ym.mec.biz.service.CourseScheduleService;
  17. import com.ym.mec.biz.service.MusicGroupService;
  18. import com.ym.mec.biz.service.StudentAttendanceService;
  19. import com.ym.mec.common.controller.BaseController;
  20. import com.ym.mec.common.entity.HttpResponseResult;
  21. import com.ym.mec.common.exception.BizException;
  22. import io.swagger.annotations.Api;
  23. import io.swagger.annotations.ApiOperation;
  24. import io.swagger.annotations.ApiParam;
  25. import org.apache.commons.lang3.ArrayUtils;
  26. import org.springframework.beans.factory.annotation.Autowired;
  27. import org.springframework.http.MediaType;
  28. import org.springframework.security.access.prepost.PreAuthorize;
  29. import org.springframework.transaction.annotation.Transactional;
  30. import org.springframework.ui.ModelMap;
  31. import org.springframework.util.CollectionUtils;
  32. import org.springframework.util.StringUtils;
  33. import org.springframework.web.bind.annotation.*;
  34. import java.math.BigDecimal;
  35. import java.util.*;
  36. import java.util.stream.Collectors;
  37. /**
  38. * @Author Joburgess
  39. * @Date 2019/9/10
  40. */
  41. @RequestMapping("courseSchedule")
  42. @Api(tags = "课程计划服务")
  43. @RestController
  44. public class CourseScheduleController extends BaseController {
  45. @Autowired
  46. private CourseScheduleService courseScheduleService;
  47. @Autowired
  48. private StudentAttendanceService studentAttendanceService;
  49. @Autowired
  50. private ClassGroupTeacherMapperDao classGroupTeacherMapperDao;
  51. @Autowired
  52. private CourseScheduleComplaintsService courseScheduleComplaintsService;
  53. @Autowired
  54. private SysUserFeignService sysUserFeignService;
  55. @Autowired
  56. private MusicGroupService musicGroupService;
  57. @Autowired
  58. private ClassGroupDao classGroupDao;
  59. @Autowired
  60. private EmployeeDao employeeDao;
  61. @Autowired
  62. private VipGroupDao vipGroupDao;
  63. @ApiOperation(value = "课表详情")
  64. @GetMapping("/query")
  65. @PreAuthorize("@pcs.hasPermissions('courseSchedule/query')")
  66. public Object query(Long courseScheduleId){
  67. return succeed(courseScheduleService.queryById(courseScheduleId));
  68. }
  69. @ApiOperation(value = "终极课表获取")
  70. @GetMapping("/superFindCourseSchedules")
  71. @PreAuthorize("@pcs.hasPermissions('courseSchedule/superFindCourseSchedules')")
  72. public Object superFindCourseSchedules(EndCourseScheduleQueryInfo queryInfo){
  73. SysUser sysUser = sysUserFeignService.queryUserInfo();
  74. if (sysUser == null) {
  75. return failed("用户信息获取失败");
  76. }
  77. Employee employee = employeeDao.get(sysUser.getId());
  78. if (org.apache.commons.lang3.StringUtils.isEmpty(queryInfo.getOrganIdList())) {
  79. queryInfo.setOrganIdList(employee.getOrganIdList());
  80. }else if(org.apache.commons.lang3.StringUtils.isEmpty(employee.getOrganIdList())){
  81. return failed("用户所在分部异常");
  82. }else {
  83. List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
  84. if(!list.containsAll(Arrays.asList(queryInfo.getOrganIdList().split(",")))){
  85. return failed("非法请求");
  86. }
  87. }
  88. return succeed(courseScheduleService.endFindCourseSchedules(queryInfo));
  89. }
  90. @ApiOperation(value = "排课")
  91. @PostMapping("/batchAddCourseSchedule")
  92. @PreAuthorize("@pcs.hasPermissions('courseSchedule/batchAddCourseSchedule')")
  93. public Object batchAddCourseSchedule(@RequestBody CreateCourseScheduleDto createCourseScheduleDto){
  94. if(true){
  95. return failed("暂不支持此操作");
  96. }
  97. if(Objects.isNull(createCourseScheduleDto.getMusicGroupID())){
  98. throw new BizException("请指定乐团");
  99. }
  100. MusicGroup musicGroup = musicGroupService.get(createCourseScheduleDto.getMusicGroupID());
  101. if(musicGroup == null){
  102. return failed("乐团信息不存在");
  103. }
  104. List<ClassGroupTeacherMapper> byMusicGroup = classGroupTeacherMapperDao.findByMusicGroup(createCourseScheduleDto.getMusicGroupID());
  105. Map<Integer, List<ClassGroupTeacherMapper>> teacherByClassGroup = byMusicGroup.stream().collect(Collectors.groupingBy(ClassGroupTeacherMapper::getClassGroupId));
  106. createCourseScheduleDto.getCourseSchedules().forEach(courseSchedule -> {
  107. List<ClassGroupTeacherMapper> classGroupTeacherMappers = teacherByClassGroup.get(courseSchedule.getClassGroupId());
  108. if(CollectionUtils.isEmpty(classGroupTeacherMappers)){
  109. throw new BizException("乐团老师设置有误");
  110. }
  111. if(Objects.isNull(courseSchedule.getTeachMode())){
  112. courseSchedule.setTeachMode(TeachModeEnum.OFFLINE);
  113. }
  114. Integer schoolId = courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE) ? null : musicGroup.getSchoolId();
  115. courseSchedule.setTeacherId(classGroupTeacherMappers.get(0).getUserId());
  116. courseSchedule.setActualTeacherId(classGroupTeacherMappers.get(0).getUserId());
  117. courseSchedule.setSchoolId(schoolId);
  118. courseSchedule.setMusicGroupId(musicGroup.getId());
  119. courseSchedule.setGroupType(GroupType.MUSIC);
  120. courseSchedule.setStatus(CourseStatusEnum.NOT_START);
  121. courseSchedule.setOrganId(musicGroup.getOrganId());
  122. });
  123. courseScheduleService.createCourseSchedules(createCourseScheduleDto);
  124. return succeed();
  125. }
  126. @ApiOperation(value = "批量更新排课")
  127. @PostMapping("/batchUpdateCourseSchedule/{musicGroupID}")
  128. @PreAuthorize("@pcs.hasPermissions('courseSchedule/batchUpdateCourseSchedule')")
  129. public Object batchUpdateCourseSchedule(@RequestBody List<CourseSchedule> courseSchedules,
  130. @ApiParam(value = "乐团编号", required = true) @PathVariable("musicGroupID") String musicGroupID){
  131. courseScheduleService.batchUpdateCourseSchedule(courseSchedules,musicGroupID);
  132. return succeed();
  133. }
  134. @ApiOperation(value = "批量删除课程")
  135. @PostMapping(value = "/batchDelete")
  136. @PreAuthorize("@pcs.hasPermissions('courseSchedule/batchDelete')")
  137. public Object bathDelete(String courseScheduleIds){
  138. if(StringUtils.isEmpty(courseScheduleIds)){
  139. throw new BizException("请指定课程编号");
  140. }
  141. long[] ints = Arrays.asList(courseScheduleIds.split(",")).stream().mapToLong(Long::parseLong).toArray();
  142. Long[] longs = ArrayUtils.toObject(ints);
  143. courseScheduleService.batchDeleteCourseSchedules(Arrays.asList(longs));
  144. return succeed();
  145. }
  146. @ApiOperation(value = "获取vip课程计划")
  147. @PostMapping(value = "/findVipGroupCourseSchedules")
  148. @PreAuthorize("@pcs.hasPermissions('courseSchedule/findVipGroupCourseSchedules')")
  149. public Object findVipGroupCourseSchedules(VipGroupQueryInfo queryInfo){
  150. return succeed(courseScheduleService.findVipGroupCourseSchedules(queryInfo));
  151. }
  152. @ApiOperation(value = "根据月份获取乐团在该月有课的日期")
  153. @GetMapping("/getCourseScheduleDateByMonth")
  154. @PreAuthorize("@pcs.hasPermissions('courseSchedule/getCourseScheduleDateByMonth')")
  155. public Object getCourseScheduleDateByMonth(@ApiParam(value = "乐团编号", required = true) @RequestParam Long musicGroupID,
  156. @ApiParam(value = "月份", required = true) @RequestParam Date month) {
  157. return succeed(courseScheduleService.getCourseScheduleDateByMonth(musicGroupID,month));
  158. }
  159. @ApiOperation(value = "根据课程ID查询正在或即将开始的课程")
  160. @GetMapping("/getCurrentCourseDetail/{courseID}")
  161. @PreAuthorize("@pcs.hasPermissions('courseSchedule/getCurrentCourseDetail')")
  162. public Object getCurrentCourseDetail(@ApiParam(value = "课程ID", required = true) @PathVariable("courseID") Long courseID){
  163. return succeed(courseScheduleService.getCurrentCourseDetail(courseID));
  164. }
  165. @ApiOperation(value = "根据班级ID获取当前课程的学生")
  166. @GetMapping("/getCurrentCourseStudents")
  167. @PreAuthorize("@pcs.hasPermissions('courseSchedule/getCurrentCourseStudents')")
  168. public Object getCurrentCourseStudents(@RequestBody StudentAttendanceQueryInfo queryInfo){
  169. return succeed(studentAttendanceService.getCurrentCourseStudents(queryInfo));
  170. }
  171. @ApiOperation(value = "课时调整")
  172. @PreAuthorize("@pcs.hasPermissions('courseSchedule/classStartDateAdjust','system')")
  173. @PostMapping(value = "/classStartDateAdjust",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
  174. public HttpResponseResult classStartDateAdjust(CourseSchedule courseSchedule, Boolean allowZeroSalary){
  175. if(Objects.isNull(allowZeroSalary)){
  176. allowZeroSalary = false;
  177. }
  178. CourseSchedule oldCourseSchedule = courseScheduleService.get(courseSchedule.getId());
  179. if(Objects.isNull(oldCourseSchedule)){
  180. return failed("未找到指定课程");
  181. }
  182. if(Objects.nonNull(oldCourseSchedule.getNewCourseId())&&!oldCourseSchedule.getNewCourseId().equals(oldCourseSchedule.getId())){
  183. return failed("被合并课程禁止调整");
  184. }
  185. if(GroupType.VIP.equals(oldCourseSchedule.getGroupType())){
  186. VipGroup vipGroup = vipGroupDao.findByCourseSchedule(courseSchedule.getId());
  187. if(Objects.nonNull(vipGroup)
  188. &&!VipGroupStatusEnum.PROGRESS.equals(vipGroup.getStatus())
  189. &&!VipGroupStatusEnum.FINISHED.equals(vipGroup.getStatus())){
  190. throw new BizException("非进行中课程组不允许进行此操作");
  191. }
  192. }
  193. if(Objects.isNull(courseSchedule.getClassGroupId())){
  194. courseSchedule.setClassGroupId(oldCourseSchedule.getClassGroupId());
  195. }
  196. List<CourseSchedule> courseSchedules=new ArrayList<>();
  197. courseSchedules.add(courseSchedule);
  198. return courseScheduleService.courseAdjust(courseSchedules, allowZeroSalary);
  199. }
  200. @ApiOperation(value = "课程合并")
  201. @PreAuthorize("@pcs.hasPermissions('courseSchedule/courseMerge','system')")
  202. @PostMapping(value = "/courseMerge",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
  203. public HttpResponseResult courseMerge(CourseMergeDto courseMergeInfo){
  204. SysUser sysUser = sysUserFeignService.queryUserInfo();
  205. if (sysUser == null) {
  206. return failed("用户信息获取失败");
  207. }
  208. courseMergeInfo.setOperatorId(sysUser.getId());
  209. return courseScheduleService.courseMerge(courseMergeInfo);
  210. }
  211. @ApiOperation(value = "合并课程还原")
  212. @PreAuthorize("@pcs.hasPermissions('courseSchedule/mergeCourseSplit','system')")
  213. @PostMapping(value = "/mergeCourseSplit",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
  214. public HttpResponseResult mergeCourseSplit(Long mainCourseId){
  215. SysUser sysUser = sysUserFeignService.queryUserInfo();
  216. if (sysUser == null) {
  217. return failed("用户信息获取失败");
  218. }
  219. courseScheduleService.mergeCourseSplit(mainCourseId, sysUser.getId());
  220. return succeed();
  221. }
  222. @ApiOperation(value = "根据班级列表调整课程")
  223. @PreAuthorize("@pcs.hasPermissions('courseSchedule/classGroupTeacherAdjust','system')")
  224. @PostMapping(value = "/classGroupTeacherAdjust")
  225. public HttpResponseResult classGroupTeacherAdjust(String classGroupIds,Integer teacherId,Integer targetTeacherId, Boolean allowZeroSalary){
  226. if(Objects.isNull(allowZeroSalary)){
  227. allowZeroSalary = false;
  228. }
  229. return courseScheduleService.classGroupTeacherAdjust(classGroupIds,teacherId,targetTeacherId, allowZeroSalary);
  230. }
  231. @ApiOperation(value = "课时调整-批量")
  232. @PreAuthorize("@pcs.hasPermissions('courseSchedule/batchClassStartDateAdjust')")
  233. @PostMapping(value = "/batchClassStartDateAdjust")
  234. public HttpResponseResult batchClassStartDateAdjust(@RequestBody List<CourseSchedule> courseSchedules){
  235. return courseScheduleService.courseAdjust(courseSchedules, true);
  236. }
  237. @ApiOperation(value = "课时交换")
  238. @PreAuthorize("@pcs.hasPermissions('courseSchedule/courseSwap')")
  239. @GetMapping(value = "/courseSwap",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
  240. public Object courseSwap(Long courseScheduleId1,Long courseScheduleId2){
  241. if(Objects.isNull(courseScheduleId1)||Objects.isNull(courseScheduleId2)){
  242. return failed("请指定课程");
  243. }
  244. courseScheduleService.courseSwap(courseScheduleId1,courseScheduleId2);
  245. return succeed();
  246. }
  247. @ApiOperation(value = "课程投诉审核")
  248. @PostMapping(value = "/courseScheduleCommplaintAudit")
  249. @PreAuthorize("@pcs.hasPermissions('courseSchedule/courseScheduleCommplaintAudit')")
  250. public Object courseScheduleCommplaintAudit(Long id, Double teacherLiabilityRatio, Double studentLiabilityRatio, AuditStatusEnum status) {
  251. courseScheduleService.courseScheduleCommplaintAudit(id, teacherLiabilityRatio, studentLiabilityRatio, status);
  252. return succeed();
  253. }
  254. @ApiOperation(value = "检测乐团下所有的班级是否都已排课")
  255. @PostMapping(value = "/checkMusicGroupClassCourse")
  256. @PreAuthorize("@pcs.hasPermissions('courseSchedule/checkMusicGroupClassCourse')")
  257. public Object checkMusicGroupClassCourse(String musicGroupId){
  258. courseScheduleService.checkMusicGroupClassCourse(musicGroupId);
  259. return succeed();
  260. }
  261. @ApiOperation(value = "课酬调整")
  262. @PostMapping("/updateTeacherCoursesSalary")
  263. @PreAuthorize("@pcs.hasPermissions('courseSchedule/updateTeacherCoursesSalary')")
  264. public Object updateTeacherCoursesSalary(Long courseScheduleId, Integer teacherId, BigDecimal salary, BigDecimal subsidy, String scope) {
  265. return succeed(musicGroupService.updateTeacherCoursesSalary(courseScheduleId, teacherId, salary, subsidy, scope));
  266. }
  267. @ApiOperation(value = "删除乐团下所有未上的课时")
  268. @GetMapping("/batchDeleteMusicGroupNotStartCourse")
  269. @PreAuthorize("@pcs.hasPermissions('courseSchedule/batchDeleteMusicGroupNotStartCourse')")
  270. public Object batchDeleteMusicGroupNotStartCourse(String musicGroupId){
  271. courseScheduleService.batchDeleteMusicGroup(musicGroupId,GroupType.MUSIC);
  272. return succeed();
  273. }
  274. @ApiOperation(value = "乐团详情--课酬调整--课程教师列表")
  275. @GetMapping("/queryTeacherSalary")
  276. @PreAuthorize("@pcs.hasPermissions('courseSchedule/queryTeacherSalary')")
  277. public Object queryTeacherSalary(Long courseScheduleId,Integer teacherId) {
  278. return succeed(musicGroupService.queryTeacherSalary(courseScheduleId,teacherId));
  279. }
  280. @ApiOperation(value = "根据班级获取课程计划")
  281. @GetMapping("/findCourseScheduleByClassGroup")
  282. @PreAuthorize("@pcs.hasPermissions('courseSchedule/findCourseScheduleByClassGroup')")
  283. public Object findCourseScheduleByClassGroup(Integer classGroupId){
  284. return succeed(courseScheduleService.findCourseScheduleByClassGroup(classGroupId));
  285. }
  286. @ApiOperation(value = "查询课程投诉详情")
  287. @GetMapping("/queryCourseScheduleComplaintsDetail")
  288. @PreAuthorize("@pcs.hasPermissions('courseSchedule/queryCourseScheduleComplaintsDetail')")
  289. public Object queryCourseScheduleComplaintsDetail(Long courseScheduleComplaintsId){
  290. CourseScheduleComplaints complaints = courseScheduleComplaintsService.get(courseScheduleComplaintsId);
  291. if(complaints == null){
  292. return failed("参数输入不正确");
  293. }
  294. SysUser user = sysUserFeignService.queryUserById(complaints.getUserId());
  295. complaints.getUser().setUsername(user.getUsername());
  296. CourseSchedule courseSchedule = courseScheduleService.get(complaints.getCourseScheduleId());
  297. SysUser teacher = sysUserFeignService.queryUserById(courseSchedule.getActualTeacherId());
  298. courseSchedule.getTeacher().setUsername(teacher.getUsername());
  299. ModelMap model = new ModelMap();
  300. model.put("complaints", complaints);
  301. model.put("courseSchedule", courseSchedule);
  302. return succeed(model);
  303. }
  304. @ApiOperation(value = "vip课批量调整(网管课)")
  305. @PostMapping("/vipCourseAdjust")
  306. @PreAuthorize("@pcs.hasPermissions('courseSchedule/vipCourseAdjust')")
  307. public Object vipCourseAdjust(@RequestBody VipGroupCourseAdjustInfoDto vipGroupCourseAdjustInfo){
  308. courseScheduleService.vipCourseAdjust(vipGroupCourseAdjustInfo);
  309. return succeed();
  310. }
  311. @ApiOperation(value = "课程批量调整")
  312. @PostMapping("/batchUpdateCourseSchedule")
  313. @PreAuthorize("@pcs.hasPermissions('courseSchedule/batchUpdateCourseSchedule')")
  314. public Object batchUpdateCourseSchedule(@RequestBody BatchInsertCoursesDto batchInsertCoursesDto){
  315. courseScheduleService.batchUpdateCourseSchedule(batchInsertCoursesDto);
  316. return succeed();
  317. }
  318. @ApiOperation(value = "vip课批量新增")
  319. @PostMapping("/batchAppendVipGroupCourses")
  320. @PreAuthorize("@pcs.hasPermissions('courseSchedule/batchAppendVipGroupCourses')")
  321. public Object batchAppendVipGroupCourses(@RequestBody VipGroupCourseAdjustInfoDto vipGroupCourseAdjustInfo){
  322. courseScheduleService.batchAppendVipGroupCourses(vipGroupCourseAdjustInfo);
  323. return succeed();
  324. }
  325. @ApiOperation(value = "批量新增")
  326. @PostMapping("/batchAddCourses")
  327. @PreAuthorize("@pcs.hasPermissions('courseSchedule/batchAddCourses')")
  328. public Object batchAddCourses(@RequestBody BatchInsertCoursesDto batchInsertCoursesDto){
  329. if(batchInsertCoursesDto.getClassGroupId() == null){
  330. if (batchInsertCoursesDto.getType() != CourseScheduleType.VIP && batchInsertCoursesDto.getType() != CourseScheduleType.PRACTICE) {
  331. return failed("请指定班级");
  332. }
  333. List<ClassGroup> classGroupList = classGroupDao.findClassGroupByMusicGroupIdAndType(batchInsertCoursesDto.getMusicGroupId(), ClassGroupTypeEnum.valueOf(batchInsertCoursesDto.getType().getCode()));
  334. if(classGroupList == null || classGroupList.size() == 0){
  335. return failed("没有查询到班级信息");
  336. }
  337. batchInsertCoursesDto.setClassGroupId(classGroupList.get(0).getId());
  338. }
  339. courseScheduleService.batchAddCourseSchedule(batchInsertCoursesDto.getClassGroupId(), batchInsertCoursesDto.getCoursesTimes(),
  340. batchInsertCoursesDto.getStartDate(), null,null, batchInsertCoursesDto.getTeachingArrangementList(), batchInsertCoursesDto.getTeachMode(),
  341. batchInsertCoursesDto.getType(), batchInsertCoursesDto.getSchoolId(), batchInsertCoursesDto.getIsJumpHoliday());
  342. return succeed();
  343. }
  344. @ApiOperation(value = "课程调整-批量")
  345. @PostMapping("/batchCourseAdjust")
  346. @PreAuthorize("@pcs.hasPermissions('courseSchedule/batchCourseAdjust')")
  347. public Object batchCourseAdjust(@RequestBody BatchCourseAdjustDto batchCourseAdjustInfo){
  348. SysUser sysUser = sysUserFeignService.queryUserInfo();
  349. if (sysUser == null) {
  350. return failed("用户信息获取失败");
  351. }
  352. batchCourseAdjustInfo.setOperatorId(sysUser.getId());
  353. return courseScheduleService.batchCourseAdjust(batchCourseAdjustInfo);
  354. }
  355. @ApiOperation(value = "课程顺延")
  356. @PostMapping("/coursePostpone")
  357. @PreAuthorize("@pcs.hasPermissions('courseSchedule/coursePostpone')")
  358. public Object coursePostpone(CoursePostponeDto coursePostPoneInfo){
  359. courseScheduleService.coursePostpone(coursePostPoneInfo);
  360. return succeed();
  361. }
  362. @ApiOperation(value = "陪练课调整")
  363. @PostMapping("/practiceCourseAdjust")
  364. @PreAuthorize("@pcs.hasPermissions('courseSchedule/practiceCourseAdjust')")
  365. public Object practiceCourseAdjust(CourseSchedule courseSchedule){
  366. courseScheduleService.practiceCourseAdjust(courseSchedule);
  367. return succeed();
  368. }
  369. @ApiOperation(value = "陪练课老师调整")
  370. @PostMapping("/practiceCourseTeacherAdjust")
  371. @PreAuthorize("@pcs.hasPermissions('courseSchedule/practiceCourseTeacherAdjust')")
  372. public Object practiceCourseTeacherAdjust(Long courseScheduleId,Integer teacherId){
  373. courseScheduleService.practiceCourseTeacherAdjust(courseScheduleId,teacherId);
  374. return succeed();
  375. }
  376. @ApiOperation(value = "陪练课课程组老师调整")
  377. @PostMapping("/practiceGroupTeacherAdjust")
  378. @PreAuthorize("@pcs.hasPermissions('courseSchedule/practiceGroupTeacherAdjust')")
  379. public Object practiceGroupTeacherAdjust(String practiceGroupId, Integer teacherId, Integer subjectId, Integer educationalTeacherId){
  380. courseScheduleService.practiceGroupTeacherAdjust(practiceGroupId,teacherId,subjectId, educationalTeacherId);
  381. return succeed();
  382. }
  383. @ApiOperation(value = "陪练课课程组老师批量调整")
  384. @PostMapping("/batchPracticeGroupTeacherAdjust")
  385. @PreAuthorize("@pcs.hasPermissions('courseSchedule/batchPracticeGroupTeacherAdjust')")
  386. @Transactional(rollbackFor = Exception.class)
  387. public Object batchPracticeGroupTeacherAdjust(String practiceGroupId, Integer teacherId, Integer subjectId, Integer educationalTeacherId,Integer oldTeacherId){
  388. courseScheduleService.batchPracticeGroupTeacherAdjust(practiceGroupId,teacherId,subjectId,educationalTeacherId,oldTeacherId);
  389. return succeed();
  390. }
  391. @ApiOperation(value = "陪练课课程组有效期调整")
  392. @PostMapping("/updateCoursesExpireDate")
  393. @PreAuthorize("@pcs.hasPermissions('courseSchedule/updateCoursesExpireDate')")
  394. public Object updateCoursesExpireDate(String practiceGroupId, Date coursesStartDate,Date coursesExpireDate){
  395. courseScheduleService.updatePracticeGroupInDate(practiceGroupId, coursesStartDate,coursesExpireDate, false);
  396. return succeed();
  397. }
  398. @ApiOperation(value = "陪练课课程组有效期调整-仅进行中可调整")
  399. @PostMapping("/updateCoursesExpireDateOnlyNormal")
  400. @PreAuthorize("@pcs.hasPermissions('courseSchedule/updateCoursesExpireDateOnlyNormal')")
  401. public Object updateCoursesExpireDateOnlyNormal(String practiceGroupId, Date coursesStartDate,Date coursesExpireDate){
  402. courseScheduleService.updatePracticeGroupInDate(practiceGroupId, coursesStartDate,coursesExpireDate, true);
  403. return succeed();
  404. }
  405. @ApiOperation(value = "清空老师和学生考勤记录")
  406. @PostMapping("/cleanAttendance")
  407. @PreAuthorize("@pcs.hasPermissions('courseSchedule/cleanAttendance')")
  408. public Object cleanAttendance(String courseScheduleIds){
  409. courseScheduleService.cleanAttendance(courseScheduleIds);
  410. return succeed();
  411. }
  412. @ApiOperation(value = "获取课程调整时间轴")
  413. @PostMapping("/queryCourseAdjustDetail")
  414. @PreAuthorize("@pcs.hasPermissions('courseSchedule/queryCourseAdjustDetail')")
  415. public Object queryCourseAdjustDetail(Long courseScheduleId){
  416. return succeed(courseScheduleService.queryCourseAdjustDetail(courseScheduleId));
  417. }
  418. @ApiOperation(value = "冲突课程查找")
  419. @GetMapping("/courseRepeatCheck")
  420. public HttpResponseResult courseRepeatCheck(){
  421. courseScheduleService.courseRepeatCheck();
  422. return succeed();
  423. }
  424. }