diff --git a/src/main/java/cn/teammodel/controller/admin/controller/TeacherController.java b/src/main/java/cn/teammodel/controller/admin/controller/TeacherController.java index a7b82f7..830f551 100644 --- a/src/main/java/cn/teammodel/controller/admin/controller/TeacherController.java +++ b/src/main/java/cn/teammodel/controller/admin/controller/TeacherController.java @@ -4,8 +4,10 @@ import cn.teammodel.common.R; import cn.teammodel.controller.admin.service.TeacherService; import cn.teammodel.model.dto.admin.teacher.CoreUser; import cn.teammodel.model.dto.admin.teacher.GpTeacherDto; +import cn.teammodel.model.dto.admin.teacher.GpTeacherRequest; import cn.teammodel.model.dto.admin.teacher.TeacherDto; import cn.teammodel.model.entity.school.Teacher; +import cn.teammodel.model.entity.teacher.PtTeacherInfo; import cn.teammodel.model.vo.admin.GpTeacherVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -115,8 +117,8 @@ public class TeacherController { } @PostMapping("saveOrUpdate") @ApiOperation("保存或更新教师信息") - public R saveOrUpdate(@Valid @RequestBody List gpTeacherDtos, HttpServletRequest request) { - teacherService.saveOrUpdate(gpTeacherDtos,request); - return R.success("保存成功"); + public R> saveOrUpdate(@Valid @RequestBody GpTeacherRequest gpTeacherDtos, HttpServletRequest request) { + List res = teacherService.saveOrUpdate(gpTeacherDtos,request); + return R.success(res); } } diff --git a/src/main/java/cn/teammodel/controller/admin/service/TeacherService.java b/src/main/java/cn/teammodel/controller/admin/service/TeacherService.java index 90bdab9..9bf28d7 100644 --- a/src/main/java/cn/teammodel/controller/admin/service/TeacherService.java +++ b/src/main/java/cn/teammodel/controller/admin/service/TeacherService.java @@ -2,6 +2,7 @@ package cn.teammodel.controller.admin.service; import cn.teammodel.model.dto.admin.teacher.CoreUser; import cn.teammodel.model.dto.admin.teacher.GpTeacherDto; +import cn.teammodel.model.dto.admin.teacher.GpTeacherRequest; import cn.teammodel.model.dto.admin.teacher.TeacherDto; import cn.teammodel.model.entity.school.Teacher; import cn.teammodel.model.entity.teacher.PtTeacherInfo; @@ -27,5 +28,5 @@ public interface TeacherService { void delete(TeacherDto teacherDto); List batchImportPtTeachers(List gpTeachers, HttpServletRequest request); List> findTeachers(CoreUser dto, HttpServletRequest request); - void saveOrUpdate(List gpTeachers, HttpServletRequest request); + List saveOrUpdate(GpTeacherRequest gpTeacherRequest, HttpServletRequest request); } diff --git a/src/main/java/cn/teammodel/controller/admin/service/impl/TeacherServiceImpl.java b/src/main/java/cn/teammodel/controller/admin/service/impl/TeacherServiceImpl.java index 11cef41..328f1ad 100644 --- a/src/main/java/cn/teammodel/controller/admin/service/impl/TeacherServiceImpl.java +++ b/src/main/java/cn/teammodel/controller/admin/service/impl/TeacherServiceImpl.java @@ -4,10 +4,7 @@ import cn.teammodel.common.ErrorCode; import cn.teammodel.common.PK; import cn.teammodel.config.exception.ServiceException; import cn.teammodel.controller.admin.service.TeacherService; -import cn.teammodel.model.dto.admin.teacher.CoreUser; -import cn.teammodel.model.dto.admin.teacher.GpTeacherDto; -import cn.teammodel.model.dto.admin.teacher.IdCodePair; -import cn.teammodel.model.dto.admin.teacher.TeacherDto; +import cn.teammodel.model.dto.admin.teacher.*; import cn.teammodel.model.entity.User; import cn.teammodel.model.entity.common.GroupList; import cn.teammodel.model.entity.school.*; @@ -1661,15 +1658,17 @@ public class TeacherServiceImpl implements TeacherService { } @Override - public void saveOrUpdate(List gpTeachers, HttpServletRequest request) { + public List saveOrUpdate(GpTeacherRequest gpTeachers, HttpServletRequest request) { + List missingTeachers = new ArrayList<>(); try { // 获取当前登录用户信息 User loginUser = SecurityUtil.getLoginUser(); String operator = loginUser != null ? loginUser.getName() : "system"; + String schoolCode = SecurityUtil.getLoginUser().getSchoolId(); - List> idCodePairs = gpTeachers.stream() + List> idCodePairs = gpTeachers.getGpTeacherDtos().stream() .filter(t -> t.getId() != null) .map(t -> Pair.of(t.getId(), "PtTeacher-" + schoolCode)) .collect(Collectors.toList()); @@ -1683,20 +1682,22 @@ public class TeacherServiceImpl implements TeacherService { // 根据传入的gpTeachers对象数据批量保存或更新PtTeacherInfo对象 List ptTeacherInfos = new ArrayList<>(); - for (GpTeacherVo teacher : gpTeachers) { + //List missingTeachers = new ArrayList<>(); + for (GpTeacherVo teacher : gpTeachers.getGpTeacherDtos()) { String businessCode = "PtTeacher-" + schoolCode; PtTeacherInfo ptTeacherInfo = codeToTeacherMap.get(teacher.getId()); if (ptTeacherInfo != null) { + if (gpTeachers.getOpt().equalsIgnoreCase("save")) { + missingTeachers.add(ptTeacherInfo); + continue; + } // 更新现有记录:保留ID,更新其他字段 ptTeacherInfo.setName(teacher.getName()); - ptTeacherInfo.setPhone(teacher.getPhone()); - ptTeacherInfo.setEmail(teacher.getEmail()); ptTeacherInfo.setPicture(teacher.getPicture()); - ptTeacherInfo.setJob(teacher.getJob()); ptTeacherInfo.setSubjectIds(teacher.getSubjectIds()); - ptTeacherInfo.setRoles(teacher.getRoles()); + ptTeacherInfo.setSubjectNames(teacher.getSubjectNames()); ptTeacherInfo.setDegree(teacher.getDegree()); ptTeacherInfo.setGender(teacher.getGender()); ptTeacherInfo.setGrade(teacher.getGrade()); @@ -1705,7 +1706,7 @@ public class TeacherServiceImpl implements TeacherService { ptTeacherInfo.setTeachingAge(teacher.getTeachingAge()); ptTeacherInfo.setStatus(teacher.getStatus()); ptTeacherInfo.setJoinTime(teacher.getJoinTime()); - ptTeacherInfo.setSchool(teacher.getCode()); + ptTeacherInfo.setSchool(schoolCode); ptTeacherInfo.setVersion(ptTeacherInfo.getVersion() + 1); // 版本号递增 } else { // 新增记录:生成新ID @@ -1729,6 +1730,7 @@ public class TeacherServiceImpl implements TeacherService { ptTeacherInfo.setTeachingAge(teacher.getTeachingAge()); ptTeacherInfo.setStatus(teacher.getStatus()); ptTeacherInfo.setJoinTime(teacher.getJoinTime()); + ptTeacherInfo.setSchool(schoolCode); ptTeacherInfo.setState(1); ptTeacherInfo.setIdentity(Collections.singletonList("teacher")); ptTeacherInfo.setVersion(1); @@ -1740,12 +1742,13 @@ public class TeacherServiceImpl implements TeacherService { logger.info("用户[{}]即将{}教师数据(添加:{}条,更新:{}条)", operator, existingList.isEmpty() ? "新增" : "更新", - gpTeachers.size() - existingList.size(), + gpTeachers.getGpTeacherDtos().size() - existingList.size(), existingList.size()); ptTeacherRepository.saveAll(ptTeacherInfos); }catch (Exception e) { throw new ServiceException(ErrorCode.PARAMS_ERROR.getCode(), "保存数据异常"); } + return missingTeachers; } // 手机号正则表达式(中国大陆) diff --git a/src/main/java/cn/teammodel/model/dto/admin/teacher/GpTeacherRequest.java b/src/main/java/cn/teammodel/model/dto/admin/teacher/GpTeacherRequest.java new file mode 100644 index 0000000..c953b28 --- /dev/null +++ b/src/main/java/cn/teammodel/model/dto/admin/teacher/GpTeacherRequest.java @@ -0,0 +1,12 @@ +package cn.teammodel.model.dto.admin.teacher; + +import cn.teammodel.model.vo.admin.GpTeacherVo; +import lombok.Data; + +import java.util.List; + +@Data +public class GpTeacherRequest { + private List gpTeacherDtos; + private String opt; +}