|
|
@@ -36,6 +36,7 @@ import com.ruoyi.common.enums.BusinessType;
|
|
|
import com.ruoyi.dz.service.IDzTeacherService;
|
|
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
|
|
import com.ruoyi.common.core.page.TableDataInfo;
|
|
|
+import javax.validation.ValidationException;
|
|
|
|
|
|
/**
|
|
|
* 老师Controller
|
|
|
@@ -131,7 +132,7 @@ public class DzTeacherController extends BaseController
|
|
|
{
|
|
|
Long teacherId = dzTeacherService.insertDzTeacher(dzTeacher);
|
|
|
|
|
|
- processTeacherClass(dzTeacher);
|
|
|
+ processTeacherClass2(dzTeacher);
|
|
|
|
|
|
return AjaxResult.success(teacherId);
|
|
|
}
|
|
|
@@ -167,7 +168,59 @@ public class DzTeacherController extends BaseController
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 处理教师班级关系(先删除所有,再重新插入)
|
|
|
+ * 删除该老师下面所有的班级后,重新插入页面上填写的内容
|
|
|
+ */
|
|
|
+ private void processTeacherClass2(DzTeacher dzTeacher) {
|
|
|
+ // 1. 验证:学校班级和校区班级不能同时有值
|
|
|
+ boolean hasSchoolClasses = dzTeacher.getSchoolId()!=null || (dzTeacher.getSchoolClassIds() != null && dzTeacher.getSchoolClassIds().length > 0);
|
|
|
+ boolean hasCampusClasses = dzTeacher.getCampusClass()!=null || (dzTeacher.getCampusClassIds() != null && dzTeacher.getCampusClassIds().length > 0);
|
|
|
+ if (hasSchoolClasses && hasCampusClasses) {
|
|
|
+ throw new ValidationException("学校和培训校区只能二选一,不能同时选择学校班级和校区班级");
|
|
|
+ }
|
|
|
|
|
|
+ Long teacherId = dzTeacher.getTeacherId();
|
|
|
+ if (teacherId != null) {
|
|
|
+ // 2. 查询该老师的所有班级关系
|
|
|
+ DzTeacherClass queryCondition = new DzTeacherClass();
|
|
|
+ queryCondition.setTeacherId(teacherId);
|
|
|
+ List<DzTeacherClass> existingList = dzTeacherClassService.selectDzTeacherClassList(queryCondition);
|
|
|
+
|
|
|
+ // 3. 删除该老师的所有班级关系
|
|
|
+ if (CollectionUtils.isNotEmpty(existingList)) {
|
|
|
+ String[] ids = existingList.stream()
|
|
|
+ .map(DzTeacherClass::getId)
|
|
|
+ .filter(id -> id != null)
|
|
|
+ .map(String::valueOf)
|
|
|
+ .toArray(String[]::new);
|
|
|
+ if (ids.length > 0) {
|
|
|
+ dzTeacherClassService.deleteDzTeacherClassByIds(ids);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 4. 合并学校班级和校区班级ID(只能有一个有值)
|
|
|
+ List<Long> allClassIds = new java.util.ArrayList<>();
|
|
|
+ Long schoolId = null;
|
|
|
+ if (dzTeacher.getSchoolClassIds()!=null&&dzTeacher.getSchoolClassIds().length > 0) {
|
|
|
+ schoolId = dzTeacher.getSchoolId();
|
|
|
+ allClassIds.addAll(Arrays.asList(dzTeacher.getSchoolClassIds()));
|
|
|
+ } else if (dzTeacher.getCampusClassIds()!=null && dzTeacher.getCampusClassIds().length > 0) {
|
|
|
+ schoolId = dzTeacher.getCampusId();
|
|
|
+ allClassIds.addAll(Arrays.asList(dzTeacher.getCampusClassIds()));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 5. 重新插入页面上填写的内容
|
|
|
+ if (!allClassIds.isEmpty()) {
|
|
|
+ DzTeacherClass dzTeacherClass = new DzTeacherClass();
|
|
|
+ dzTeacherClass.setTeacherId(teacherId);
|
|
|
+ dzTeacherClass.setClassIds(allClassIds.toArray(new Long[0]));
|
|
|
+ // 如果选择的是校区班级,使用campusId作为schoolId;否则使用schoolId
|
|
|
+ dzTeacherClass.setSchoolId(schoolId);
|
|
|
+ dzTeacherClassService.batchBindTeacherClass(dzTeacherClass);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 修改老师
|
|
|
@@ -179,7 +232,7 @@ public class DzTeacherController extends BaseController
|
|
|
{
|
|
|
dzTeacherService.updateDzTeacher(dzTeacher);
|
|
|
//处理班级关联
|
|
|
- processTeacherClass(dzTeacher);
|
|
|
+ processTeacherClass2(dzTeacher);
|
|
|
//同时修改sys_user表的nickName
|
|
|
SysUser user = userService.selectUserByUserName(String.valueOf(dzTeacher.getTeacherId()));
|
|
|
if (null != user) {
|