取消全部
This commit is contained in:
@@ -93,4 +93,8 @@ public interface SchClassRepository extends JpaRepository<SchClass, Integer>, Jp
|
|||||||
@Query("UPDATE SchClass c SET c.graduate = true, c.updateDate = :now, c.updateUserId = 0 " +
|
@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")
|
"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);
|
int batchGraduate(@Param("schId") Integer schId, @Param("maxGrade") Integer maxGrade, @Param("now") Date now);
|
||||||
|
|
||||||
|
|
||||||
|
Optional<SchClass> findByGroupId(Integer groupId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-6
@@ -24,15 +24,15 @@ public class SyncGroupController {
|
|||||||
public void AddGroup(@RequestBody String jsonString) {
|
public void AddGroup(@RequestBody String jsonString) {
|
||||||
log.info("AddGroup jsonString="+jsonString);
|
log.info("AddGroup jsonString="+jsonString);
|
||||||
//判断 2,"学校组" 4, "班级组"
|
//判断 2,"学校组" 4, "班级组"
|
||||||
SyncGroupDTO group = OtherUtil.jsonParseObject(jsonString, SyncGroupDTO.class);
|
List<SyncGroupDTO> groupList = OtherUtil.jsonParseList(jsonString, SyncGroupDTO.class);
|
||||||
syncGroupService.syncAddOrUpdate(group);
|
syncGroupService.syncAddOrUpdate(groupList);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("UpdateGroup")
|
@PostMapping("UpdateGroup")
|
||||||
public void UpdateGroup(@RequestBody String jsonString) {
|
public void UpdateGroup(@RequestBody String jsonString) {
|
||||||
log.info("UpdateGroup jsonString="+jsonString);
|
log.info("UpdateGroup jsonString="+jsonString);
|
||||||
SyncGroupDTO group = OtherUtil.jsonParseObject(jsonString, SyncGroupDTO.class);
|
List<SyncGroupDTO> groupList = OtherUtil.jsonParseList(jsonString, SyncGroupDTO.class);
|
||||||
syncGroupService.syncAddOrUpdate(group);
|
syncGroupService.syncAddOrUpdate(groupList);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("DeleteGroup")
|
@PostMapping("DeleteGroup")
|
||||||
@@ -44,8 +44,8 @@ public class SyncGroupController {
|
|||||||
@PostMapping("SyncGroup")
|
@PostMapping("SyncGroup")
|
||||||
public void SyncGroup(@RequestBody String jsonString) {
|
public void SyncGroup(@RequestBody String jsonString) {
|
||||||
log.info("SyncGroup jsonString="+jsonString);
|
log.info("SyncGroup jsonString="+jsonString);
|
||||||
SyncGroupDTO group = OtherUtil.jsonParseObject(jsonString, SyncGroupDTO.class);
|
List<SyncGroupDTO> groupList= OtherUtil.jsonParseList(jsonString, SyncGroupDTO.class);
|
||||||
syncGroupService.syncAddOrUpdate(group);
|
syncGroupService.syncAddOrUpdate(groupList);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -23,14 +23,14 @@ public class SyncUserController {
|
|||||||
public void AddUser(@RequestBody String jsonString) {
|
public void AddUser(@RequestBody String jsonString) {
|
||||||
log.info("AddUser jsonString="+jsonString);
|
log.info("AddUser jsonString="+jsonString);
|
||||||
List<SyncUserDTO> userlist = OtherUtil.jsonParseList(jsonString, SyncUserDTO.class);
|
List<SyncUserDTO> userlist = OtherUtil.jsonParseList(jsonString, SyncUserDTO.class);
|
||||||
syncUserService.syncAddOrUpdate(userlist);
|
syncUserService.syncAddOrUpdate(userlist,false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("UpdateUser")
|
@PostMapping("UpdateUser")
|
||||||
public void UpdateUser(@RequestBody String jsonString) {
|
public void UpdateUser(@RequestBody String jsonString) {
|
||||||
log.info("UpdateUser jsonString="+jsonString);
|
log.info("UpdateUser jsonString="+jsonString);
|
||||||
List<SyncUserDTO> userList = OtherUtil.jsonParseList(jsonString, SyncUserDTO.class);
|
List<SyncUserDTO> userList = OtherUtil.jsonParseList(jsonString, SyncUserDTO.class);
|
||||||
syncUserService.syncAddOrUpdate(userList);
|
syncUserService.syncAddOrUpdate(userList,false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("DeleteUser")
|
@PostMapping("DeleteUser")
|
||||||
@@ -44,6 +44,6 @@ public class SyncUserController {
|
|||||||
public void SyncUser(@RequestBody String jsonString) {
|
public void SyncUser(@RequestBody String jsonString) {
|
||||||
log.info("SyncUser jsonString="+jsonString);
|
log.info("SyncUser jsonString="+jsonString);
|
||||||
List<SyncUserDTO> userList = OtherUtil.jsonParseList(jsonString, SyncUserDTO.class);
|
List<SyncUserDTO> userList = OtherUtil.jsonParseList(jsonString, SyncUserDTO.class);
|
||||||
syncUserService.syncAddOrUpdate(userList);
|
syncUserService.syncAddOrUpdate(userList,true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import lombok.Data;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
//[{"id":22,"name":"同步","code":null,"type":7,"pid":4,"no":6,"children":null}]
|
||||||
@Data
|
@Data
|
||||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||||
public class SyncGroupDTO {
|
public class SyncGroupDTO {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import java.util.List;
|
|||||||
@Service
|
@Service
|
||||||
public interface ISyncGroupService {
|
public interface ISyncGroupService {
|
||||||
|
|
||||||
void syncAddOrUpdate(SyncGroupDTO group);
|
void syncAddOrUpdate(List<SyncGroupDTO> group);
|
||||||
void addOrUpdateSchool(SyncGroupDTO group);
|
void addOrUpdateSchool(List<SyncGroupDTO> group);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package com.yunhai.bschclassmanage.service;
|
||||||
|
|
||||||
|
import com.yunhai.bschclassmanage.model.tool.DeleteUser;
|
||||||
|
import com.yunhai.bschclassmanage.model.tool.SyncUserDTO;
|
||||||
|
import com.yunhai.platform.utils.model.BoaGroup;
|
||||||
|
import com.yunhai.platform.utils.model.BoaUser;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public interface ISyncUserBaseService {
|
||||||
|
|
||||||
|
// BoaGroup addGroup();
|
||||||
|
//
|
||||||
|
// void deleteGroup(List<Integer> ids);
|
||||||
|
//
|
||||||
|
// BoaUser addUser(BoaUser user);
|
||||||
|
//
|
||||||
|
// void updateUser(BoaUser user);
|
||||||
|
//
|
||||||
|
// List<BoaUser> addUserList(List<BoaUser> user);
|
||||||
|
//
|
||||||
|
// void updateUserList(List<BoaUser> user);
|
||||||
|
//
|
||||||
|
// void deleteUserList(List<Integer> ids);
|
||||||
|
}
|
||||||
@@ -9,7 +9,7 @@ import java.util.List;
|
|||||||
@Service
|
@Service
|
||||||
public interface ISyncUserService {
|
public interface ISyncUserService {
|
||||||
|
|
||||||
void syncAddOrUpdate(List<SyncUserDTO> userList);
|
void syncAddOrUpdate(List<SyncUserDTO> userList,boolean isAll);
|
||||||
|
|
||||||
void deleteUser(List<DeleteUser> deleteUserList);
|
void deleteUser(List<DeleteUser> deleteUserList);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -245,13 +245,8 @@ public class SchBinSchsystemService implements ISchBinSchsystemService {
|
|||||||
BoaGroup teaGroup= CreateGroup(NodeType.TEACHER.getId(),"教师组",schId,1);
|
BoaGroup teaGroup= CreateGroup(NodeType.TEACHER.getId(),"教师组",schId,1);
|
||||||
BoaGroup stuGroup= CreateGroup(NodeType.STUDENT.getId(),"学生组",schId,2);
|
BoaGroup stuGroup= CreateGroup(NodeType.STUDENT.getId(),"学生组",schId,2);
|
||||||
|
|
||||||
{
|
//创建校长室
|
||||||
Integer scort=1;
|
CreateGroup(NodeType.NORMAL.getId(),"校长室", teaGroup.getId(),1);
|
||||||
List<String> deptNameSet = Arrays.asList("校长室","办公室","行政","信息");
|
|
||||||
for (String name : deptNameSet) {
|
|
||||||
CreateGroup(NodeType.NORMAL.getId(), name, teaGroup.getId(),scort);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//获取学制
|
//获取学制
|
||||||
List<SchBinSchsystem> schsystemBinList=getSchBinSchsystemList(schId);
|
List<SchBinSchsystem> schsystemBinList=getSchBinSchsystemList(schId);
|
||||||
|
|||||||
+2
@@ -86,6 +86,8 @@ public class SchClassQueryService {
|
|||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public List<SchClass> getSchAllClassCacheFilter(Integer schId, List<Integer> gradeIds, Integer classId) {
|
public List<SchClass> getSchAllClassCacheFilter(Integer schId, List<Integer> gradeIds, Integer classId) {
|
||||||
List<SchClass> list = getSchAllClassCacheList(schId);
|
List<SchClass> list = getSchAllClassCacheList(schId);
|
||||||
if (schId != null && schId > 0)
|
if (schId != null && schId > 0)
|
||||||
|
|||||||
@@ -1,19 +1,21 @@
|
|||||||
package com.yunhai.bschclassmanage.service.impl.sync;
|
package com.yunhai.bschclassmanage.service.impl.sync;
|
||||||
|
|
||||||
|
import com.yunhai.bschclassmanage.Repository.SchClassRepository;
|
||||||
import com.yunhai.bschclassmanage.Repository.SchInfoRepository;
|
import com.yunhai.bschclassmanage.Repository.SchInfoRepository;
|
||||||
|
import com.yunhai.bschclassmanage.entity.SchClass;
|
||||||
import com.yunhai.bschclassmanage.entity.SchInfo;
|
import com.yunhai.bschclassmanage.entity.SchInfo;
|
||||||
import com.yunhai.bschclassmanage.enums.NodeType;
|
import com.yunhai.bschclassmanage.enums.NodeType;
|
||||||
import com.yunhai.bschclassmanage.model.tool.BaseGroup;
|
import com.yunhai.bschclassmanage.model.tool.BaseGroup;
|
||||||
import com.yunhai.bschclassmanage.model.tool.SyncGroupDTO;
|
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 com.yunhai.bschclassmanage.service.ISyncGroupService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.List;
|
import javax.xml.crypto.Data;
|
||||||
import java.util.Objects;
|
import java.util.*;
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class SyncGroupService implements ISyncGroupService {
|
public class SyncGroupService implements ISyncGroupService {
|
||||||
@@ -21,27 +23,31 @@ public class SyncGroupService implements ISyncGroupService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private SchInfoRepository schInfoRepository;
|
private SchInfoRepository schInfoRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ISchClassService schClassService;
|
||||||
|
|
||||||
public void syncAddOrUpdate(SyncGroupDTO group) {
|
@Autowired
|
||||||
|
private SchClassRepository schClassRepository;
|
||||||
|
|
||||||
//学校组-年级组-班级组
|
@Autowired
|
||||||
if(Objects.equals(group.getType(),NodeType.SCHOOL.getId())){
|
private IBaseSchsystemGradeService baseSchsystemGradeService;
|
||||||
addOrUpdateSchool(group);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(Objects.equals(group.getType(),NodeType.CLASS.getId())){
|
|
||||||
|
|
||||||
{
|
public void syncAddOrUpdate(List<SyncGroupDTO> groupList) {
|
||||||
//添加班级组 需要 年级组id
|
addOrUpdateSchool(groupList);
|
||||||
//判断是否绑定了学制
|
}
|
||||||
//判断年级组是哪个学制的 年级组名称(2026) 学制下的 年级id(grade_id)
|
|
||||||
|
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());
|
Optional<SchInfo> schOpt=schInfoRepository.findBySchId(group.getId());
|
||||||
if(schOpt.isPresent()){
|
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
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void syncAddOrUpdate(List<SyncUserDTO> userList) {
|
public void syncAddOrUpdate(List<SyncUserDTO> userList,boolean isAll) {
|
||||||
if (userList == null || userList.isEmpty()) return;
|
if (userList == null || userList.isEmpty()) return;
|
||||||
|
|
||||||
// 按角色分组(每个用户只遍历一次 roleList)
|
// 按角色分组(每个用户只遍历一次 roleList)
|
||||||
@@ -69,10 +69,10 @@ public class SyncUserService implements ISyncUserService {
|
|||||||
Date now = new Date();
|
Date now = new Date();
|
||||||
|
|
||||||
if (!syncStudentList.isEmpty()) {
|
if (!syncStudentList.isEmpty()) {
|
||||||
syncStudents(syncStudentList, now);
|
syncStudents(syncStudentList, now,isAll);
|
||||||
}
|
}
|
||||||
if (!syncTeacherList.isEmpty()) {
|
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());
|
List<Integer> stuIds = studentUsers.stream().map(SyncUserDTO::getId).distinct().collect(Collectors.toList());
|
||||||
|
|
||||||
// 已有学生记录 (stuId, groupId) -> SchStudent
|
// 已有学生记录 (stuId, groupId) -> SchStudent
|
||||||
@@ -205,14 +205,18 @@ public class SyncUserService implements ISyncUserService {
|
|||||||
schStudentRepository.saveAll(saveList);
|
schStudentRepository.saveAll(saveList);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 清理用户中心不存在的学生(与教师相同逻辑:标记转出,可逆向恢复)
|
if(isAll)
|
||||||
Set<Integer> schIds = classKeys.keySet();
|
{
|
||||||
setTransferStudent(schIds, classKeys, incomingStudentKeys);
|
// 清理用户中心不存在的学生(与教师相同逻辑:标记转出,可逆向恢复)
|
||||||
|
Set<Integer> schIds = classKeys.keySet();
|
||||||
|
setTransferStudent(schIds, classKeys, incomingStudentKeys);
|
||||||
|
|
||||||
// 同步后使受影响班级的学生缓存失效,避免读到旧数据
|
// 同步后使受影响班级的学生缓存失效,避免读到旧数据
|
||||||
if (!classKeys.isEmpty()) {
|
if (!classKeys.isEmpty()) {
|
||||||
classKeys.forEach((schId, classIds) -> schStudentCacheService.clearClassStudentCaches(schId, classIds));
|
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());
|
List<Integer> teaIds = teacherUsers.stream().map(SyncUserDTO::getId).distinct().collect(Collectors.toList());
|
||||||
|
|
||||||
@@ -337,17 +341,20 @@ public class SyncUserService implements ISyncUserService {
|
|||||||
schTeacherGroupRepository.saveAll(saveGroupList);
|
schTeacherGroupRepository.saveAll(saveGroupList);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 清理用户中心不存在的教师:
|
if(isAll){
|
||||||
// 学校已存在、但用户中心(teacherUsers)已不存在的教师,需从活跃名单中清理。
|
// 清理用户中心不存在的教师:
|
||||||
// 对本次同步涉及的每所学校,将「当前为转入状态、但不在本次下发分组列表」的教师分组标记为转出(OUT)。
|
// 学校已存在、但用户中心(teacherUsers)已不存在的教师,需从活跃名单中清理。
|
||||||
// 这样既把已从用户中心移除/调离的教师清理出活跃名单,又保留转出记录、可随下次同步逆向恢复(重新 IN)。
|
// 对本次同步涉及的每所学校,将「当前为转入状态、但不在本次下发分组列表」的教师分组标记为转出(OUT)。
|
||||||
// 仅针对本次同步覆盖的学校,避免误删未参与本批次的其他学校教师。
|
// 这样既把已从用户中心移除/调离的教师清理出活跃名单,又保留转出记录、可随下次同步逆向恢复(重新 IN)。
|
||||||
setTransferTeacher(schIds,incomingGroupKeys);
|
// 仅针对本次同步覆盖的学校,避免误删未参与本批次的其他学校教师。
|
||||||
|
setTransferTeacher(schIds,incomingGroupKeys);
|
||||||
|
|
||||||
// 同步后使受影响学校的教师缓存失效
|
// 同步后使受影响学校的教师缓存失效
|
||||||
if (!schIds.isEmpty()) {
|
if (!schIds.isEmpty()) {
|
||||||
schTeacherCacheService.clearTeacherCaches(schIds);
|
schTeacherCacheService.clearTeacherCaches(schIds);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setTransferTeacher( Set<Integer> schIds,Set<String> incomingGroupKeys)
|
private void setTransferTeacher( Set<Integer> schIds,Set<String> incomingGroupKeys)
|
||||||
|
|||||||
Reference in New Issue
Block a user