教师转入

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