This commit is contained in:
2026-08-14 12:19:17 +08:00
parent 7a549c87c6
commit ce0812211c
20 changed files with 260 additions and 279 deletions
@@ -2,7 +2,7 @@ package com.yunhai.bschclassmanage.Repository;
import com.yunhai.bschclassmanage.entity.SchClass;
import com.yunhai.bschclassmanage.entity.SchClassHistory;
import io.lettuce.core.dynamic.annotation.Param;
import org.springframework.data.repository.query.Param;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
@@ -1,14 +1,16 @@
package com.yunhai.bschclassmanage.Repository;
import com.yunhai.bschclassmanage.entity.SchClass;
import io.lettuce.core.dynamic.annotation.Param;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.Date;
import java.util.List;
import java.util.Optional;
@@ -66,4 +68,29 @@ public interface SchClassRepository extends JpaRepository<SchClass, Integer>, Jp
*/
@Query("SELECT MIN(c.enrollYear) FROM SchClass c WHERE c.schId = :schId AND c.gradeId IN :gradeIds")
Integer findMinEnrollYear(@Param("schId") Integer schId, @Param("gradeIds") List<Integer> gradeIds);
/**
* 学年升级:指定学校下、给定年级(非最高年级)的未毕业班级整体升一级
* 使用 grade_id = grade_id + 1 的 SET 语义,单次语句原子完成,避免逐班加载与保存
* @param schId 学校ID(安全过滤)
* @param gradeIds 需要升级的年级ID列表(非最高年级)
* @param now 修改时间
* @return 实际受影响行数
*/
@Modifying(clearAutomatically = true)
@Query("UPDATE SchClass c SET c.gradeId = c.gradeId + 1, c.updateDate = :now, c.updateUserId = 0 " +
"WHERE c.schId = :schId AND c.gradeId IN :gradeIds AND c.graduate = false")
int batchUpgradeGrade(@Param("schId") Integer schId, @Param("gradeIds") List<Integer> gradeIds, @Param("now") Date now);
/**
* 学年升级:指定学校下、最高年级的未毕业班级标记为毕业
* @param schId 学校ID(安全过滤)
* @param maxGrade 最高年级ID
* @param now 修改时间
* @return 实际受影响行数
*/
@Modifying(clearAutomatically = true)
@Query("UPDATE SchClass c SET c.graduate = true, c.updateDate = :now, c.updateUserId = 0 " +
"WHERE c.schId = :schId AND c.gradeId = :maxGrade AND c.graduate = false")
int batchGraduate(@Param("schId") Integer schId, @Param("maxGrade") Integer maxGrade, @Param("now") Date now);
}
@@ -2,7 +2,7 @@ package com.yunhai.bschclassmanage.Repository;
import com.yunhai.bschclassmanage.entity.SchDicCampus;
import com.yunhai.bschclassmanage.entity.SchDicCourse;
import io.lettuce.core.dynamic.annotation.Param;
import org.springframework.data.repository.query.Param;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
@@ -1,7 +1,7 @@
package com.yunhai.bschclassmanage.Repository;
import com.yunhai.bschclassmanage.entity.SchDicMajors;
import io.lettuce.core.dynamic.annotation.Param;
import org.springframework.data.repository.query.Param;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
@@ -1,7 +1,7 @@
package com.yunhai.bschclassmanage.Repository;
import com.yunhai.bschclassmanage.entity.SchStudent;
import io.lettuce.core.dynamic.annotation.Param;
import org.springframework.data.repository.query.Param;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
@@ -6,7 +6,7 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.List;
import io.lettuce.core.dynamic.annotation.Param;
import org.springframework.data.repository.query.Param;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
@@ -2,7 +2,7 @@ package com.yunhai.bschclassmanage.Repository;
import com.yunhai.bschclassmanage.entity.SchTeacher;
import com.yunhai.bschclassmanage.model.vo.TeacherSchVO;
import io.lettuce.core.dynamic.annotation.Param;
import org.springframework.data.repository.query.Param;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;