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 a88bb7f..9ac243c 100644 --- a/src/main/java/cn/teammodel/controller/admin/controller/TeacherController.java +++ b/src/main/java/cn/teammodel/controller/admin/controller/TeacherController.java @@ -91,4 +91,10 @@ public class TeacherController { Map res = teacherService.findIdentityByTmdId(teacherDto); return R.success(res); } + @PostMapping("delete") + @ApiOperation("删除教师信息") + public R delete(@Valid @RequestBody TeacherDto teacherDto) { + teacherService.delete(teacherDto); + return R.success("删除成功"); + } } 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 808db13..341f2a2 100644 --- a/src/main/java/cn/teammodel/controller/admin/service/TeacherService.java +++ b/src/main/java/cn/teammodel/controller/admin/service/TeacherService.java @@ -21,4 +21,5 @@ public interface TeacherService { Map getTeacherOfCapabilityAssessment(TeacherDto teacherDto, HttpServletRequest request); void update (TeacherDto teacherDto); Map findIdentityByTmdId(TeacherDto teacherDto); + void delete(TeacherDto teacherDto); } 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 8b50617..8ac8bf7 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 @@ -157,7 +157,7 @@ public class TeacherServiceImpl implements TeacherService { String url = env.getProperty("ies.server-url-get-teacher-all"); try { teachers = GroupUtil.getGroupId(teacherDto,new GroupUtil(env), request,url); - List teachersList = convertToGpTeacherVoList(teachers); + List teachersList = convertToGpTeacherVoList(teachers, teacherDto.getCode()); List phones = teachersList.stream().map(GpTeacherVo::getPhone).collect(Collectors.toList()); GpTeacherDto gpTeacherDto = new GpTeacherDto(); gpTeacherDto.setMobiles(phones); @@ -207,7 +207,8 @@ public class TeacherServiceImpl implements TeacherService { .map(GpTeacherVo::getId) .collect(Collectors.toSet()); - List ptTeacherInfos = ptTeacherRepository.findAllTeacher(teacherIds); + String code = teacherDto.getCode() +"-"+ teacherDto.getTmdId(); + List ptTeacherInfos = ptTeacherRepository.findAllTeacher(teacherIds, code); Map idToPtTeacherInfo = ptTeacherInfos.stream() .collect(Collectors.toMap(PtTeacherInfo::getId, Function.identity())); @@ -228,12 +229,12 @@ public class TeacherServiceImpl implements TeacherService { return teachers; } - private List convertToGpTeacherVoList(Map teachers) { + private List convertToGpTeacherVoList(Map teachers,String code) { List teachersList = new ArrayList<>(); for (Map.Entry entry : teachers.entrySet()) { List> mapList = (List>) entry.getValue(); for (Map map : mapList) { - GpTeacherVo teacher = convertToGpTeacherVo(map); + GpTeacherVo teacher = convertToGpTeacherVo(map,code); teachersList.add(teacher); } } @@ -272,7 +273,7 @@ public class TeacherServiceImpl implements TeacherService { // 收集所有id和code组合 List> idCodePairs = teachersList.stream() .filter(t -> t.getId() != null) - .map(t -> Pair.of(t.getId(), "PtTeacher-" + t.getId())) + .map(t -> Pair.of(t.getId(), "PtTeacher-" + t.getCode())) .collect(Collectors.toList()); //将List> 转化为 List List idAndCode = idCodePairs.stream() @@ -292,28 +293,11 @@ public class TeacherServiceImpl implements TeacherService { private PtTeacherInfo convertToPtTeacherInfo(GpTeacherVo teacher, Map versionMap) { PtTeacherInfo ptTeacherInfo = new PtTeacherInfo(); - String code = "PtTeacher-" + teacher.getId(); + String code = "PtTeacher-" + teacher.getCode(); ptTeacherInfo.setPk("PtTeacher"); ptTeacherInfo.setTtl(-1); ptTeacherInfo.setCode(code); ptTeacherInfo.setId(teacher.getId()); - ptTeacherInfo.setTmdId(teacher.getId()); - ptTeacherInfo.setName(teacher.getName()); - ptTeacherInfo.setPhone(teacher.getPhone()); - ptTeacherInfo.setEmail(teacher.getEmail()); - ptTeacherInfo.setPicture(teacher.getPicture()); - ptTeacherInfo.setIname(teacher.getIname()); - ptTeacherInfo.setJob(teacher.getJob()); - ptTeacherInfo.setSubjectIds(teacher.getSubjectIds()); - ptTeacherInfo.setSubjectNames(teacher.getSubjectNames()); - ptTeacherInfo.setRoles(teacher.getRoles()); - ptTeacherInfo.setGroups(teacher.getGroups()); - ptTeacherInfo.setNote(teacher.getNote()); - ptTeacherInfo.setDegree(teacher.getDegree()); - ptTeacherInfo.setPracticeTime(teacher.getPracticeTime()); - ptTeacherInfo.setGender(teacher.getGender()); - ptTeacherInfo.setGrade(teacher.getGrade()); - ptTeacherInfo.setPeriodId(teacher.getPeriodId()); Integer currentVersion = versionMap.getOrDefault(code, 0); @@ -359,10 +343,11 @@ public class TeacherServiceImpl implements TeacherService { return practiceCount; } - private GpTeacherVo convertToGpTeacherVo(Map map) { + private GpTeacherVo convertToGpTeacherVo(Map map,String code) { GpTeacherVo teacher = new GpTeacherVo(); // 假设 GpTeacherVo 有以下属性:name, age, subject teacher.setName((String) map.get("name")); + teacher.setCode(code); teacher.setPhone((String) map.get("phone")); teacher.setId((String) map.get("id")); teacher.setEmail((String) map.get("email")); @@ -634,7 +619,7 @@ public class TeacherServiceImpl implements TeacherService { List> mapList = (List>) entry.getValue(); for (Map map : mapList) { // 将 Map 转换为 GpTeacherVo 对象 - GpTeacherVo teacher = convertToGpTeacherVo(map); + GpTeacherVo teacher = convertToGpTeacherVo(map,teacherDto.getCode()); teachersList.add(teacher); } } @@ -1442,6 +1427,19 @@ public class TeacherServiceImpl implements TeacherService { return Collections.emptyMap(); } + @Override + public void delete(TeacherDto teacherDto) { + try { + List ptTeacherInfo = ptTeacherRepository.findAllTeacher(); + //删除查询出来的所有数据 + for (PtTeacherInfo ptTeacherInfo1 : ptTeacherInfo){ + ptTeacherRepository.delete(ptTeacherInfo1); + } + }catch (Exception ex) { + throw new ServiceException(ErrorCode.SYSTEM_ERROR.getCode(), "数据删除失败: " + ex.getMessage()); + } + } + private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // 引入缓存,需根据实际情况配置大小和过期时间 每次服务重启时 缓存会清空 private static final Cache> REQUEST_CACHE = CacheBuilder.newBuilder() diff --git a/src/main/java/cn/teammodel/model/entity/teacher/PtTeacherInfo.java b/src/main/java/cn/teammodel/model/entity/teacher/PtTeacherInfo.java index 705805f..ac686fb 100644 --- a/src/main/java/cn/teammodel/model/entity/teacher/PtTeacherInfo.java +++ b/src/main/java/cn/teammodel/model/entity/teacher/PtTeacherInfo.java @@ -15,34 +15,13 @@ import java.util.List; @Data @JsonInclude(JsonInclude.Include.NON_NULL) public class PtTeacherInfo extends BaseItem { - public String tmdId ; - public String name ; + public String pk ; public Integer ttl ; - public String phone ; - public String email ; - public String picture ; - public String iname ; - public String job ; - public List subjectIds ; - public List subjectNames ; - public List roles; - public List groups; - public String note ; - public String degree; - public Long practiceTime ; - public String gender ; - public List grade; - public String periodId ; + public String school; + //新增身份信息 public List identity ; public Integer version; // 添加版本控制字段 - @Data - public static class IdNameCode{ - public String id ; - public String name ; - public String code ; - public String picture ; - public String nickname ; - } + } diff --git a/src/main/java/cn/teammodel/model/vo/admin/GpTeacherVo.java b/src/main/java/cn/teammodel/model/vo/admin/GpTeacherVo.java index 6be4910..d77d37f 100644 --- a/src/main/java/cn/teammodel/model/vo/admin/GpTeacherVo.java +++ b/src/main/java/cn/teammodel/model/vo/admin/GpTeacherVo.java @@ -8,6 +8,7 @@ import java.util.List; public class GpTeacherVo { public String id ; public String name ; + public String code ; public String phone ; public String email ; public String picture ; diff --git a/src/main/java/cn/teammodel/repository/PtTeacherRepository.java b/src/main/java/cn/teammodel/repository/PtTeacherRepository.java index a4bc150..f33bba6 100644 --- a/src/main/java/cn/teammodel/repository/PtTeacherRepository.java +++ b/src/main/java/cn/teammodel/repository/PtTeacherRepository.java @@ -16,6 +16,9 @@ public interface PtTeacherRepository extends CosmosRepository findByIdCodePairs(@Param("pairs") List pairs); - @Query(value = "SELECT * FROM c WHERE c.pk = 'PtTeacher' and c.id in (@ids) ") - List findAllTeacher(Collection ids); + @Query(value = "SELECT * FROM c WHERE c.pk = 'PtTeacher' and c.id in (@ids) and c.code = @code") + List findAllTeacher(Collection ids, String code); + @Query(value = "SELECT * FROM c WHERE c.pk = 'PtTeacher' ") + List findAllTeacher(); + } diff --git a/src/main/java/cn/teammodel/test/AsyncTeacherService.java b/src/main/java/cn/teammodel/test/AsyncTeacherService.java index 48a3451..5ff127d 100644 --- a/src/main/java/cn/teammodel/test/AsyncTeacherService.java +++ b/src/main/java/cn/teammodel/test/AsyncTeacherService.java @@ -4,6 +4,7 @@ import cn.teammodel.model.dto.admin.teacher.IdCodePair; import cn.teammodel.model.entity.teacher.PtTeacherInfo; import cn.teammodel.model.vo.admin.GpTeacherVo; import cn.teammodel.repository.PtTeacherRepository; +import com.azure.cosmos.implementation.guava25.collect.Lists; import com.itextpdf.text.log.Logger; import com.itextpdf.text.log.LoggerFactory; import org.apache.commons.lang3.tuple.Pair; @@ -53,7 +54,7 @@ public class AsyncTeacherService { private Map loadExistingTeachers(List teachersList) { List idAndCode = teachersList.stream() .filter(t -> t.getId() != null) - .map(t -> new IdCodePair(t.getId(), "PtTeacher-" + t.getId())) + .map(t -> new IdCodePair(t.getId(), t.getCode() + t.getId())) .collect(Collectors.toList()); List existingList = ptTeacherRepository.findByIdCodePairs(idAndCode); @@ -67,20 +68,14 @@ public class AsyncTeacherService { private PtTeacherInfo convertToPtTeacherInfo(GpTeacherVo teacher, Map existingTeachers) { - String code = "PtTeacher-" + teacher.getId(); + String code = teacher.getCode() +"-"+ teacher.getId(); PtTeacherInfo existing = existingTeachers.get(code); // 如果数据库无记录,直接创建新对象 if (existing == null) { return createNewPtTeacherInfo(teacher, code); } // 检查字段是否有变化 - boolean isChanged = !Objects.equals(existing.getName(), teacher.getName()) - || !Objects.equals(existing.getPhone(), teacher.getPhone()) - || !Objects.equals(existing.getDegree(), teacher.getDegree()) || - !Objects.equals(existing.getPracticeTime(), teacher.getPracticeTime()) || - !Objects.equals(existing.getGender(), teacher.getGender()) || - !Objects.equals(existing.getGrade(), teacher.getGrade()) || - !Objects.equals(existing.getPeriodId(), teacher.getPeriodId()); + boolean isChanged = !Objects.equals(existing.getIdentity(), teacher.getIdentity()); // 无变化则返回null,表示无需更新 if (!isChanged) { @@ -89,13 +84,6 @@ public class AsyncTeacherService { PtTeacherInfo updated = new PtTeacherInfo(); BeanUtils.copyProperties(existing, updated); - updated.setName(teacher.getName()); - updated.setPhone(teacher.getPhone()); - updated.setDegree(teacher.getDegree()); - updated.setPracticeTime(teacher.getPracticeTime()); - updated.setGender(teacher.getGender()); - updated.setGrade(teacher.getGrade()); - updated.setPeriodId(teacher.getPeriodId()); updated.setVersion(getNextVersion(updated.getId(), updated.getCode())); return updated; @@ -115,31 +103,12 @@ public class AsyncTeacherService { // 固定值 ptTeacherInfo.setPk("PtTeacher"); ptTeacherInfo.setTtl(-1); + ptTeacherInfo.setSchool(teacher.getCode()); // 基础信息映射 ptTeacherInfo.setId(teacher.getId()); - ptTeacherInfo.setTmdId(teacher.getId()); ptTeacherInfo.setCode(code); - ptTeacherInfo.setName(teacher.getName()); - ptTeacherInfo.setPhone(teacher.getPhone() != null ? teacher.getPhone() : ""); // 空值处理 - ptTeacherInfo.setEmail(teacher.getEmail() != null ? teacher.getEmail() : ""); - ptTeacherInfo.setPicture(teacher.getPicture()); - ptTeacherInfo.setIname(teacher.getIname()); - ptTeacherInfo.setJob(teacher.getJob()); - - // 学科与角色信息 - ptTeacherInfo.setSubjectIds(teacher.getSubjectIds() != null ? teacher.getSubjectIds() : Collections.emptyList()); - ptTeacherInfo.setSubjectNames(teacher.getSubjectNames() != null ? teacher.getSubjectNames() : Collections.emptyList()); - ptTeacherInfo.setRoles(teacher.getRoles() != null ? teacher.getRoles() : Collections.emptyList()); - ptTeacherInfo.setGroups(teacher.getGroups() != null ? teacher.getGroups() : Collections.emptyList()); - - // 其他业务字段 - ptTeacherInfo.setNote(teacher.getNote()); - ptTeacherInfo.setDegree(teacher.getDegree() != null ? teacher.getDegree() : ""); - ptTeacherInfo.setPracticeTime(teacher.getPracticeTime() != null ? teacher.getPracticeTime() : 0L); // 默认0 - ptTeacherInfo.setGender(teacher.getGender() != null ? teacher.getGender() : "U"); // 未知性别默认值 - ptTeacherInfo.setGrade(teacher.getGrade()); - ptTeacherInfo.setPeriodId(teacher.getPeriodId()); + ptTeacherInfo.setIdentity(teacher.getIdentity()); // 版本号初始化 ptTeacherInfo.setVersion(1);