教师转入

This commit is contained in:
2026-08-27 18:17:08 +08:00
parent 88cc1857c8
commit 711e3b150c
4 changed files with 26 additions and 18 deletions
@@ -3,6 +3,7 @@ package com.yunhai.bschclassmanage.service;
import com.yunhai.bschclassmanage.entity.SchStudent; import com.yunhai.bschclassmanage.entity.SchStudent;
import com.yunhai.bschclassmanage.entity.SchTeacher; import com.yunhai.bschclassmanage.entity.SchTeacher;
import com.yunhai.bschclassmanage.enums.NodeType; import com.yunhai.bschclassmanage.enums.NodeType;
import com.yunhai.bschclassmanage.enums.TransferStatus;
import com.yunhai.bschclassmanage.model.dto.SchStudentDTO; import com.yunhai.bschclassmanage.model.dto.SchStudentDTO;
import com.yunhai.bschclassmanage.model.dto.SchTeacherDTO; import com.yunhai.bschclassmanage.model.dto.SchTeacherDTO;
import com.yunhai.bschclassmanage.model.dto.SendMoveGroupUserDTO; import com.yunhai.bschclassmanage.model.dto.SendMoveGroupUserDTO;
@@ -53,7 +54,7 @@ public interface ISendUserBaseService {
List<BoaUser> batchAddTeacher(List<SchTeacherDTO> teacherList); List<BoaUser> batchAddTeacher(List<SchTeacherDTO> teacherList);
/** 学生转出:将平台用户状态置为转出(state=1) */ /** 学生转出:将平台用户状态置为转出(state=1) */
void setUserGroupState(Integer userId, Integer groupId, Integer schoolId); void setUserGroupState(Integer userId, Integer groupId, Integer schoolId, TransferStatus status);
/** 学生转入:将用户转移到目标学校/班级,返回平台用户信息 */ /** 学生转入:将用户转移到目标学校/班级,返回平台用户信息 */
BoaUser transferUserToSchool(Integer userId, Integer fromSchoolId, Integer schoolId, Integer groupId); BoaUser transferUserToSchool(Integer userId, Integer fromSchoolId, Integer schoolId, Integer groupId);
@@ -3,6 +3,7 @@ package com.yunhai.bschclassmanage.service.impl.com;
import com.yunhai.bschclassmanage.entity.SchStudent; import com.yunhai.bschclassmanage.entity.SchStudent;
import com.yunhai.bschclassmanage.entity.SchTeacher; import com.yunhai.bschclassmanage.entity.SchTeacher;
import com.yunhai.bschclassmanage.enums.NodeType; import com.yunhai.bschclassmanage.enums.NodeType;
import com.yunhai.bschclassmanage.enums.TransferStatus;
import com.yunhai.bschclassmanage.enums.UserRole; import com.yunhai.bschclassmanage.enums.UserRole;
import com.yunhai.bschclassmanage.annotation.SyncOpLog; import com.yunhai.bschclassmanage.annotation.SyncOpLog;
import com.yunhai.bschclassmanage.enums.SyncDataType; import com.yunhai.bschclassmanage.enums.SyncDataType;
@@ -337,14 +338,14 @@ public class SendUserBaseService implements ISendUserBaseService {
@SyncOpLog(SyncDataType.SEND_TRANSFER_OUT) @SyncOpLog(SyncDataType.SEND_TRANSFER_OUT)
@Override @Override
public void setUserGroupState(Integer userId,Integer groupId,Integer schoolId) public void setUserGroupState(Integer userId, Integer groupId, Integer schoolId,TransferStatus status)
{ {
//状态设置成1(转出) //状态设置成1(转出)
SysUserGroupStateRequest request = new SysUserGroupStateRequest(); SysUserGroupStateRequest request = new SysUserGroupStateRequest();
request.setUserId(userId); request.setUserId(userId);
request.setGroupId(groupId); request.setGroupId(groupId);
request.setSchoolId(schoolId); request.setSchoolId(schoolId);
request.setState(1); request.setState(status.getId());
openApiUserClient.setUserGroupState(request); openApiUserClient.setUserGroupState(request);
} }
@@ -167,7 +167,7 @@ public class SchStudentTransferService {
for (SchStudent stu:students) for (SchStudent stu:students)
{ {
sendUserBaseService.setUserGroupState(stu.getStuId(),stu.getGroupId(),stu.getSchId()); sendUserBaseService.setUserGroupState(stu.getStuId(),stu.getGroupId(),stu.getSchId(),TransferStatus.OUT);
} }
} }
@@ -206,10 +206,6 @@ public class SchStudentTransferService {
cacheKeysToDelete.add(RedisConstants.SCHOOL_CLASS_STUDENT + "_" cacheKeysToDelete.add(RedisConstants.SCHOOL_CLASS_STUDENT + "_"
+ targetSchId + "_" + targetClassId); + targetSchId + "_" + targetClassId);
// 已在目标学校且已在目标班级的学生 转入
if (student.getSchId().equals(targetSchId) && targetClassId.equals(student.getClassId())) {
sendUserBaseService.changeUserStatus(student.getStuId(),true);
}else {
// 执行批量更新(更新学校和班级,transferStatus 置为转入 0) // 执行批量更新(更新学校和班级,transferStatus 置为转入 0)
int updated = schStudentRepository.batchUpdateSchIdAndClassId( int updated = schStudentRepository.batchUpdateSchIdAndClassId(
Collections.singletonList(student.getId()), Collections.singletonList(student.getId()),
@@ -221,6 +217,11 @@ public class SchStudentTransferService {
if (updated != 1) { if (updated != 1) {
throw new DException("更新失败,可能学生已被删除或修改,请刷新后重试"); throw new DException("更新失败,可能学生已被删除或修改,请刷新后重试");
} }
// 已在目标学校且已在目标班级的学生 转入
if (student.getSchId().equals(targetSchId) && targetClassId.equals(student.getClassId())) {
sendUserBaseService.setUserGroupState(student.getStuId(),student.getClassId(),student.getSchId(),TransferStatus.IN);
}else {
// 平台同步:转入目标学校/班级(fromSchoolId 取转入前的原学校) // 平台同步:转入目标学校/班级(fromSchoolId 取转入前的原学校)
sendUserBaseService.transferUserToSchool(student.getStuId(), student.getSchId(), targetSchId, targetClassId); sendUserBaseService.transferUserToSchool(student.getStuId(), student.getSchId(), targetSchId, targetClassId);
} }
@@ -124,7 +124,7 @@ public class SchTeacherRelationService {
.findFirst() .findFirst()
.orElse(null); .orElse(null);
if (groupId != null) { if (groupId != null) {
sendUserBaseService.setUserGroupState(tea.getTeaId(), groupId, schId); sendUserBaseService.setUserGroupState(tea.getTeaId(), groupId, schId,TransferStatus.OUT);
} else { } else {
log.warn("教师 teaId={} 在当前学校无组关联,跳过平台转出同步", tea.getTeaId()); log.warn("教师 teaId={} 在当前学校无组关联,跳过平台转出同步", tea.getTeaId());
} }
@@ -168,7 +168,12 @@ public class SchTeacherRelationService {
boolean alreadyInTarget = oldRelations.stream() boolean alreadyInTarget = oldRelations.stream()
.anyMatch(r -> targetSchId.equals(r.getSchId()) && targetGroupId.equals(r.getGroupId())); .anyMatch(r -> targetSchId.equals(r.getSchId()) && targetGroupId.equals(r.getGroupId()));
if (alreadyInTarget) { if (alreadyInTarget) {
sendUserBaseService.changeUserStatus(teaId, true); schTeacherGroupRepository.batchUpdateTransferStatus(
Arrays.asList(teaId),
targetSchId,
TransferStatus.OUT.getId()
);
sendUserBaseService.setUserGroupState(teaId,targetGroupId,targetSchId,TransferStatus.IN);
}else { }else {
// 删除原学校旧关联 // 删除原学校旧关联
schTeacherGroupRepository.deleteAll(oldRelations); schTeacherGroupRepository.deleteAll(oldRelations);