取消全部

This commit is contained in:
2026-08-18 17:57:00 +08:00
parent d9aa173b3d
commit c71c334a84
12 changed files with 122 additions and 55 deletions
@@ -245,13 +245,8 @@ public class SchBinSchsystemService implements ISchBinSchsystemService {
BoaGroup teaGroup= CreateGroup(NodeType.TEACHER.getId(),"教师组",schId,1);
BoaGroup stuGroup= CreateGroup(NodeType.STUDENT.getId(),"学生组",schId,2);
{
Integer scort=1;
List<String> deptNameSet = Arrays.asList("校长室","办公室","行政","信息");
for (String name : deptNameSet) {
CreateGroup(NodeType.NORMAL.getId(), name, teaGroup.getId(),scort);
}
}
//创建校长室
CreateGroup(NodeType.NORMAL.getId(),"校长室", teaGroup.getId(),1);
//获取学制
List<SchBinSchsystem> schsystemBinList=getSchBinSchsystemList(schId);
@@ -86,6 +86,8 @@ public class SchClassQueryService {
return list;
}
public List<SchClass> getSchAllClassCacheFilter(Integer schId, List<Integer> gradeIds, Integer classId) {
List<SchClass> list = getSchAllClassCacheList(schId);
if (schId != null && schId > 0)
@@ -1,19 +1,21 @@
package com.yunhai.bschclassmanage.service.impl.sync;
import com.yunhai.bschclassmanage.Repository.SchClassRepository;
import com.yunhai.bschclassmanage.Repository.SchInfoRepository;
import com.yunhai.bschclassmanage.entity.SchClass;
import com.yunhai.bschclassmanage.entity.SchInfo;
import com.yunhai.bschclassmanage.enums.NodeType;
import com.yunhai.bschclassmanage.model.tool.BaseGroup;
import com.yunhai.bschclassmanage.model.tool.SyncGroupDTO;
import com.yunhai.bschclassmanage.service.IBaseSchsystemGradeService;
import com.yunhai.bschclassmanage.service.ISchClassService;
import com.yunhai.bschclassmanage.service.ISyncGroupService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
import javax.xml.crypto.Data;
import java.util.*;
@Service
public class SyncGroupService implements ISyncGroupService {
@@ -21,27 +23,31 @@ public class SyncGroupService implements ISyncGroupService {
@Autowired
private SchInfoRepository schInfoRepository;
@Autowired
private ISchClassService schClassService;
public void syncAddOrUpdate(SyncGroupDTO group) {
@Autowired
private SchClassRepository schClassRepository;
//学校组-年级组-班级组
if(Objects.equals(group.getType(),NodeType.SCHOOL.getId())){
addOrUpdateSchool(group);
}
@Autowired
private IBaseSchsystemGradeService baseSchsystemGradeService;
if(Objects.equals(group.getType(),NodeType.CLASS.getId())){
{
//添加班级组 需要 年级组id
//判断是否绑定了学制
//判断年级组是哪个学制的 年级组名称(2026) 学制下的 年级id(grade_id)
public void syncAddOrUpdate(List<SyncGroupDTO> groupList) {
addOrUpdateSchool(groupList);
}
public void addOrUpdateSchool(List<SyncGroupDTO> groupList)
{
for (SyncGroupDTO group: groupList) {
if(Objects.equals(group.getType(),NodeType.SCHOOL.getId())){
addOrUpdateSchool(group);
}
}
}
public void addOrUpdateSchool(SyncGroupDTO group)
private void addOrUpdateSchool(SyncGroupDTO group)
{
Optional<SchInfo> schOpt=schInfoRepository.findBySchId(group.getId());
if(schOpt.isPresent()){
@@ -0,0 +1,25 @@
package com.yunhai.bschclassmanage.service.impl.sync;
import com.yunhai.bschclassmanage.service.ISyncUserBaseService;
import com.yunhai.platform.utils.model.BoaGroup;
import com.yunhai.platform.utils.model.BoaUser;
public class SyncUserBaseService implements ISyncUserBaseService {
public BoaGroup addGroup(){
return new BoaGroup();
}
public void deleteGroup(){
}
public BoaUser addUserList(){
return new BoaUser();
}
public void deleteUserList(){
}
}
@@ -48,7 +48,7 @@ public class SyncUserService implements ISyncUserService {
@Override
@Transactional(rollbackFor = Exception.class)
public void syncAddOrUpdate(List<SyncUserDTO> userList) {
public void syncAddOrUpdate(List<SyncUserDTO> userList,boolean isAll) {
if (userList == null || userList.isEmpty()) return;
// 按角色分组(每个用户只遍历一次 roleList)
@@ -69,10 +69,10 @@ public class SyncUserService implements ISyncUserService {
Date now = new Date();
if (!syncStudentList.isEmpty()) {
syncStudents(syncStudentList, now);
syncStudents(syncStudentList, now,isAll);
}
if (!syncTeacherList.isEmpty()) {
syncTeachers(syncTeacherList, now);
syncTeachers(syncTeacherList, now,isAll);
}
}
@@ -164,7 +164,7 @@ public class SyncUserService implements ISyncUserService {
// ==================== 学生同步 ====================
private void syncStudents(List<SyncUserDTO> studentUsers, Date now) {
private void syncStudents(List<SyncUserDTO> studentUsers, Date now,boolean isAll) {
List<Integer> stuIds = studentUsers.stream().map(SyncUserDTO::getId).distinct().collect(Collectors.toList());
// 已有学生记录 (stuId, groupId) -> SchStudent
@@ -205,14 +205,18 @@ public class SyncUserService implements ISyncUserService {
schStudentRepository.saveAll(saveList);
}
// 清理用户中心不存在的学生(与教师相同逻辑:标记转出,可逆向恢复)
Set<Integer> schIds = classKeys.keySet();
setTransferStudent(schIds, classKeys, incomingStudentKeys);
if(isAll)
{
// 清理用户中心不存在的学生(与教师相同逻辑:标记转出,可逆向恢复)
Set<Integer> schIds = classKeys.keySet();
setTransferStudent(schIds, classKeys, incomingStudentKeys);
// 同步后使受影响班级的学生缓存失效,避免读到旧数据
if (!classKeys.isEmpty()) {
classKeys.forEach((schId, classIds) -> schStudentCacheService.clearClassStudentCaches(schId, classIds));
// 同步后使受影响班级的学生缓存失效,避免读到旧数据
if (!classKeys.isEmpty()) {
classKeys.forEach((schId, classIds) -> schStudentCacheService.clearClassStudentCaches(schId, classIds));
}
}
}
/**
@@ -277,7 +281,7 @@ public class SyncUserService implements ISyncUserService {
// ==================== 教师同步 ====================
private void syncTeachers(List<SyncUserDTO> teacherUsers, Date now) {
private void syncTeachers(List<SyncUserDTO> teacherUsers, Date now,boolean isAll) {
List<Integer> teaIds = teacherUsers.stream().map(SyncUserDTO::getId).distinct().collect(Collectors.toList());
@@ -337,17 +341,20 @@ public class SyncUserService implements ISyncUserService {
schTeacherGroupRepository.saveAll(saveGroupList);
}
// 清理用户中心不存在的教师:
// 学校已存在、但用户中心(teacherUsers)已不存在的教师,需从活跃名单中清理。
// 对本次同步涉及的每所学校,将「当前为转入状态、但不在本次下发分组列表」的教师分组标记为转出(OUT)。
// 这样既把已从用户中心移除/调离的教师清理出活跃名单,又保留转出记录、可随下次同步逆向恢复(重新 IN)。
// 仅针对本次同步覆盖的学校,避免误删未参与本批次的其他学校教师。
setTransferTeacher(schIds,incomingGroupKeys);
if(isAll){
// 清理用户中心不存在的教师:
// 学校已存在、但用户中心(teacherUsers)已不存在的教师,需从活跃名单中清理。
// 对本次同步涉及的每所学校,将「当前为转入状态、但不在本次下发分组列表」的教师分组标记为转出(OUT)。
// 这样既把已从用户中心移除/调离的教师清理出活跃名单,又保留转出记录、可随下次同步逆向恢复(重新 IN)。
// 仅针对本次同步覆盖的学校,避免误删未参与本批次的其他学校教师。
setTransferTeacher(schIds,incomingGroupKeys);
// 同步后使受影响学校的教师缓存失效
if (!schIds.isEmpty()) {
schTeacherCacheService.clearTeacherCaches(schIds);
// 同步后使受影响学校的教师缓存失效
if (!schIds.isEmpty()) {
schTeacherCacheService.clearTeacherCaches(schIds);
}
}
}
private void setTransferTeacher( Set<Integer> schIds,Set<String> incomingGroupKeys)