ClassGraduateTask.java 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package com.xjrsoft.module.job;
  2. import cn.dev33.satoken.stp.StpUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.xjrsoft.common.enums.DeleteMark;
  5. import com.xjrsoft.common.enums.EnabledMark;
  6. import com.xjrsoft.module.base.entity.BaseClass;
  7. import com.xjrsoft.module.base.entity.BaseClassTeacherChange;
  8. import com.xjrsoft.module.base.entity.BaseGrade;
  9. import com.xjrsoft.module.base.service.IBaseClassService;
  10. import com.xjrsoft.module.base.service.IBaseClassTeacherChangeService;
  11. import com.xjrsoft.module.base.service.IBaseGradeService;
  12. import lombok.extern.slf4j.Slf4j;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.scheduling.annotation.Scheduled;
  15. import org.springframework.stereotype.Component;
  16. import java.time.LocalDateTime;
  17. import java.util.ArrayList;
  18. import java.util.List;
  19. import java.util.stream.Collectors;
  20. /**
  21. * 自动别业班级
  22. * @author dzx
  23. * @date 2025/1/14
  24. */
  25. @Component
  26. @Slf4j
  27. public class ClassGraduateTask {
  28. @Autowired
  29. private IBaseClassService classService;
  30. @Autowired
  31. private IBaseGradeService gradeService;
  32. @Autowired
  33. private IBaseClassTeacherChangeService classTeacherChangeService;
  34. @Scheduled(cron = "0 */15 23 30 6 ?")
  35. public void execute() {
  36. doExecute();
  37. }
  38. /**
  39. * 根据年级自动毕业班级和学生
  40. */
  41. public void doExecute() {
  42. LocalDateTime now = LocalDateTime.now();
  43. List<BaseGrade> gradeList = gradeService.list(
  44. new QueryWrapper<BaseGrade>().lambda()
  45. .eq(BaseGrade::getDeleteMark, DeleteMark.NODELETE.getCode())
  46. .eq(BaseGrade::getStatus, 1)
  47. .last("limit 4")
  48. );
  49. List<Long> gradeIds = gradeList.stream().map(BaseGrade::getId).collect(Collectors.toList());
  50. List<BaseClass> classList = classService.list(
  51. new QueryWrapper<BaseClass>().lambda()
  52. .eq(BaseClass::getDeleteMark, DeleteMark.NODELETE.getCode())
  53. .eq(BaseClass::getIsGraduate, 1)
  54. .notIn(!gradeIds.isEmpty(), BaseClass::getGradeId, gradeIds)
  55. );
  56. //毕业后,记录班主任异动记录
  57. List<BaseClassTeacherChange> classTeacherChangeList = new ArrayList<>();
  58. for (BaseClass baseClass : classList) {
  59. classTeacherChangeList.add(
  60. new BaseClassTeacherChange(){{
  61. setClassId(baseClass.getId());
  62. setBeforeTeacherId(baseClass.getTeacherId());
  63. setCreateDate(LocalDateTime.now());
  64. setCreateUserId(StpUtil.getLoginIdAsLong());
  65. setDeleteMark(DeleteMark.NODELETE.getCode());
  66. setEnabledMark(EnabledMark.ENABLED.getCode());
  67. }}
  68. );
  69. }
  70. if(!classTeacherChangeList.isEmpty()){
  71. classTeacherChangeService.saveBatch(classTeacherChangeList);
  72. }
  73. }
  74. }