package com.xjrsoft.module.job; import cn.dev33.satoken.stp.StpUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.xjrsoft.common.enums.DeleteMark; import com.xjrsoft.common.enums.EnabledMark; import com.xjrsoft.module.base.entity.BaseClass; import com.xjrsoft.module.base.entity.BaseClassTeacherChange; import com.xjrsoft.module.base.entity.BaseGrade; import com.xjrsoft.module.base.service.IBaseClassService; import com.xjrsoft.module.base.service.IBaseClassTeacherChangeService; import com.xjrsoft.module.base.service.IBaseGradeService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * 自动别业班级 * @author dzx * @date 2025/1/14 */ @Component @Slf4j public class ClassGraduateTask { @Autowired private IBaseClassService classService; @Autowired private IBaseGradeService gradeService; @Autowired private IBaseClassTeacherChangeService classTeacherChangeService; @Scheduled(cron = "0 */15 23 30 6 ?") public void execute() { doExecute(); } /** * 根据年级自动毕业班级和学生 */ public void doExecute() { LocalDateTime now = LocalDateTime.now(); List gradeList = gradeService.list( new QueryWrapper().lambda() .eq(BaseGrade::getDeleteMark, DeleteMark.NODELETE.getCode()) .eq(BaseGrade::getStatus, 1) .last("limit 4") ); List gradeIds = gradeList.stream().map(BaseGrade::getId).collect(Collectors.toList()); List classList = classService.list( new QueryWrapper().lambda() .eq(BaseClass::getDeleteMark, DeleteMark.NODELETE.getCode()) .eq(BaseClass::getIsGraduate, 1) .notIn(!gradeIds.isEmpty(), BaseClass::getGradeId, gradeIds) ); //毕业后,记录班主任异动记录 List classTeacherChangeList = new ArrayList<>(); for (BaseClass baseClass : classList) { classTeacherChangeList.add( new BaseClassTeacherChange(){{ setClassId(baseClass.getId()); setBeforeTeacherId(baseClass.getTeacherId()); setCreateDate(LocalDateTime.now()); setCreateUserId(StpUtil.getLoginIdAsLong()); setDeleteMark(DeleteMark.NODELETE.getCode()); setEnabledMark(EnabledMark.ENABLED.getCode()); }} ); } if(!classTeacherChangeList.isEmpty()){ classTeacherChangeService.saveBatch(classTeacherChangeList); } } }