update 调整身分信息存储内容

develop
hhb@hotmail.com 5 days ago
parent 6a440fe111
commit 2d68a45db6

@ -91,4 +91,10 @@ public class TeacherController {
Map<String, Object> res = teacherService.findIdentityByTmdId(teacherDto); Map<String, Object> res = teacherService.findIdentityByTmdId(teacherDto);
return R.success(res); return R.success(res);
} }
@PostMapping("delete")
@ApiOperation("删除教师信息")
public R<String> delete(@Valid @RequestBody TeacherDto teacherDto) {
teacherService.delete(teacherDto);
return R.success("删除成功");
}
} }

@ -21,4 +21,5 @@ public interface TeacherService {
Map<String,Object> getTeacherOfCapabilityAssessment(TeacherDto teacherDto, HttpServletRequest request); Map<String,Object> getTeacherOfCapabilityAssessment(TeacherDto teacherDto, HttpServletRequest request);
void update (TeacherDto teacherDto); void update (TeacherDto teacherDto);
Map<String,Object> findIdentityByTmdId(TeacherDto teacherDto); Map<String,Object> findIdentityByTmdId(TeacherDto teacherDto);
void delete(TeacherDto teacherDto);
} }

@ -157,7 +157,7 @@ public class TeacherServiceImpl implements TeacherService {
String url = env.getProperty("ies.server-url-get-teacher-all"); String url = env.getProperty("ies.server-url-get-teacher-all");
try { try {
teachers = GroupUtil.getGroupId(teacherDto,new GroupUtil(env), request,url); teachers = GroupUtil.getGroupId(teacherDto,new GroupUtil(env), request,url);
List<GpTeacherVo> teachersList = convertToGpTeacherVoList(teachers); List<GpTeacherVo> teachersList = convertToGpTeacherVoList(teachers, teacherDto.getCode());
List<String> phones = teachersList.stream().map(GpTeacherVo::getPhone).collect(Collectors.toList()); List<String> phones = teachersList.stream().map(GpTeacherVo::getPhone).collect(Collectors.toList());
GpTeacherDto gpTeacherDto = new GpTeacherDto(); GpTeacherDto gpTeacherDto = new GpTeacherDto();
gpTeacherDto.setMobiles(phones); gpTeacherDto.setMobiles(phones);
@ -207,7 +207,8 @@ public class TeacherServiceImpl implements TeacherService {
.map(GpTeacherVo::getId) .map(GpTeacherVo::getId)
.collect(Collectors.toSet()); .collect(Collectors.toSet());
List<PtTeacherInfo> ptTeacherInfos = ptTeacherRepository.findAllTeacher(teacherIds); String code = teacherDto.getCode() +"-"+ teacherDto.getTmdId();
List<PtTeacherInfo> ptTeacherInfos = ptTeacherRepository.findAllTeacher(teacherIds, code);
Map<String, PtTeacherInfo> idToPtTeacherInfo = ptTeacherInfos.stream() Map<String, PtTeacherInfo> idToPtTeacherInfo = ptTeacherInfos.stream()
.collect(Collectors.toMap(PtTeacherInfo::getId, Function.identity())); .collect(Collectors.toMap(PtTeacherInfo::getId, Function.identity()));
@ -228,12 +229,12 @@ public class TeacherServiceImpl implements TeacherService {
return teachers; return teachers;
} }
private List<GpTeacherVo> convertToGpTeacherVoList(Map<String, Object> teachers) { private List<GpTeacherVo> convertToGpTeacherVoList(Map<String, Object> teachers,String code) {
List<GpTeacherVo> teachersList = new ArrayList<>(); List<GpTeacherVo> teachersList = new ArrayList<>();
for (Map.Entry<String, Object> entry : teachers.entrySet()) { for (Map.Entry<String, Object> entry : teachers.entrySet()) {
List<Map<String, Object>> mapList = (List<Map<String, Object>>) entry.getValue(); List<Map<String, Object>> mapList = (List<Map<String, Object>>) entry.getValue();
for (Map<String, Object> map : mapList) { for (Map<String, Object> map : mapList) {
GpTeacherVo teacher = convertToGpTeacherVo(map); GpTeacherVo teacher = convertToGpTeacherVo(map,code);
teachersList.add(teacher); teachersList.add(teacher);
} }
} }
@ -272,7 +273,7 @@ public class TeacherServiceImpl implements TeacherService {
// 收集所有id和code组合 // 收集所有id和code组合
List<Pair<String, String>> idCodePairs = teachersList.stream() List<Pair<String, String>> idCodePairs = teachersList.stream()
.filter(t -> t.getId() != null) .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()); .collect(Collectors.toList());
//将List<Pair<String, String>> 转化为 List<IdCodePair> //将List<Pair<String, String>> 转化为 List<IdCodePair>
List<IdCodePair> idAndCode = idCodePairs.stream() List<IdCodePair> idAndCode = idCodePairs.stream()
@ -292,28 +293,11 @@ public class TeacherServiceImpl implements TeacherService {
private PtTeacherInfo convertToPtTeacherInfo(GpTeacherVo teacher, Map<String, Integer> versionMap) { private PtTeacherInfo convertToPtTeacherInfo(GpTeacherVo teacher, Map<String, Integer> versionMap) {
PtTeacherInfo ptTeacherInfo = new PtTeacherInfo(); PtTeacherInfo ptTeacherInfo = new PtTeacherInfo();
String code = "PtTeacher-" + teacher.getId(); String code = "PtTeacher-" + teacher.getCode();
ptTeacherInfo.setPk("PtTeacher"); ptTeacherInfo.setPk("PtTeacher");
ptTeacherInfo.setTtl(-1); ptTeacherInfo.setTtl(-1);
ptTeacherInfo.setCode(code); ptTeacherInfo.setCode(code);
ptTeacherInfo.setId(teacher.getId()); 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); Integer currentVersion = versionMap.getOrDefault(code, 0);
@ -359,10 +343,11 @@ public class TeacherServiceImpl implements TeacherService {
return practiceCount; return practiceCount;
} }
private GpTeacherVo convertToGpTeacherVo(Map<String, Object> map) { private GpTeacherVo convertToGpTeacherVo(Map<String, Object> map,String code) {
GpTeacherVo teacher = new GpTeacherVo(); GpTeacherVo teacher = new GpTeacherVo();
// 假设 GpTeacherVo 有以下属性name, age, subject // 假设 GpTeacherVo 有以下属性name, age, subject
teacher.setName((String) map.get("name")); teacher.setName((String) map.get("name"));
teacher.setCode(code);
teacher.setPhone((String) map.get("phone")); teacher.setPhone((String) map.get("phone"));
teacher.setId((String) map.get("id")); teacher.setId((String) map.get("id"));
teacher.setEmail((String) map.get("email")); teacher.setEmail((String) map.get("email"));
@ -634,7 +619,7 @@ public class TeacherServiceImpl implements TeacherService {
List<Map<String, Object>> mapList = (List<Map<String, Object>>) entry.getValue(); List<Map<String, Object>> mapList = (List<Map<String, Object>>) entry.getValue();
for (Map<String, Object> map : mapList) { for (Map<String, Object> map : mapList) {
// 将 Map 转换为 GpTeacherVo 对象 // 将 Map 转换为 GpTeacherVo 对象
GpTeacherVo teacher = convertToGpTeacherVo(map); GpTeacherVo teacher = convertToGpTeacherVo(map,teacherDto.getCode());
teachersList.add(teacher); teachersList.add(teacher);
} }
} }
@ -1442,6 +1427,19 @@ public class TeacherServiceImpl implements TeacherService {
return Collections.emptyMap(); return Collections.emptyMap();
} }
@Override
public void delete(TeacherDto teacherDto) {
try {
List<PtTeacherInfo> 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 DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// 引入缓存,需根据实际情况配置大小和过期时间 每次服务重启时 缓存会清空 // 引入缓存,需根据实际情况配置大小和过期时间 每次服务重启时 缓存会清空
private static final Cache<String, Map<String, Object>> REQUEST_CACHE = CacheBuilder.newBuilder() private static final Cache<String, Map<String, Object>> REQUEST_CACHE = CacheBuilder.newBuilder()

@ -15,34 +15,13 @@ import java.util.List;
@Data @Data
@JsonInclude(JsonInclude.Include.NON_NULL) @JsonInclude(JsonInclude.Include.NON_NULL)
public class PtTeacherInfo extends BaseItem { public class PtTeacherInfo extends BaseItem {
public String tmdId ;
public String name ;
public String pk ; public String pk ;
public Integer ttl ; public Integer ttl ;
public String phone ; public String school;
public String email ;
public String picture ;
public String iname ;
public String job ;
public List<String> subjectIds ;
public List<String> subjectNames ;
public List<String> roles;
public List<GpTeacherVo.IdNameCode> groups;
public String note ;
public String degree;
public Long practiceTime ;
public String gender ;
public List<String> grade;
public String periodId ;
//新增身份信息 //新增身份信息
public List<String> identity ; public List<String> identity ;
public Integer version; // 添加版本控制字段 public Integer version; // 添加版本控制字段
@Data
public static class IdNameCode{
public String id ;
public String name ;
public String code ;
public String picture ;
public String nickname ;
}
} }

@ -8,6 +8,7 @@ import java.util.List;
public class GpTeacherVo { public class GpTeacherVo {
public String id ; public String id ;
public String name ; public String name ;
public String code ;
public String phone ; public String phone ;
public String email ; public String email ;
public String picture ; public String picture ;

@ -16,6 +16,9 @@ public interface PtTeacherRepository extends CosmosRepository<PtTeacherInfo, Str
@Query(value = "SELECT * FROM c WHERE ARRAY_CONTAINS(@pairs, {id: c.id, code: c.code}, true) and c.pk = 'PtTeacher'") @Query(value = "SELECT * FROM c WHERE ARRAY_CONTAINS(@pairs, {id: c.id, code: c.code}, true) and c.pk = 'PtTeacher'")
List<PtTeacherInfo> findByIdCodePairs(@Param("pairs") List<IdCodePair> pairs); List<PtTeacherInfo> findByIdCodePairs(@Param("pairs") List<IdCodePair> pairs);
@Query(value = "SELECT * FROM c WHERE c.pk = 'PtTeacher' and c.id in (@ids) ") @Query(value = "SELECT * FROM c WHERE c.pk = 'PtTeacher' and c.id in (@ids) and c.code = @code")
List<PtTeacherInfo> findAllTeacher(Collection<String> ids); List<PtTeacherInfo> findAllTeacher(Collection<String> ids, String code);
@Query(value = "SELECT * FROM c WHERE c.pk = 'PtTeacher' ")
List<PtTeacherInfo> findAllTeacher();
} }

@ -4,6 +4,7 @@ import cn.teammodel.model.dto.admin.teacher.IdCodePair;
import cn.teammodel.model.entity.teacher.PtTeacherInfo; import cn.teammodel.model.entity.teacher.PtTeacherInfo;
import cn.teammodel.model.vo.admin.GpTeacherVo; import cn.teammodel.model.vo.admin.GpTeacherVo;
import cn.teammodel.repository.PtTeacherRepository; import cn.teammodel.repository.PtTeacherRepository;
import com.azure.cosmos.implementation.guava25.collect.Lists;
import com.itextpdf.text.log.Logger; import com.itextpdf.text.log.Logger;
import com.itextpdf.text.log.LoggerFactory; import com.itextpdf.text.log.LoggerFactory;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
@ -53,7 +54,7 @@ public class AsyncTeacherService {
private Map<String, PtTeacherInfo> loadExistingTeachers(List<GpTeacherVo> teachersList) { private Map<String, PtTeacherInfo> loadExistingTeachers(List<GpTeacherVo> teachersList) {
List<IdCodePair> idAndCode = teachersList.stream() List<IdCodePair> idAndCode = teachersList.stream()
.filter(t -> t.getId() != null) .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()); .collect(Collectors.toList());
List<PtTeacherInfo> existingList = ptTeacherRepository.findByIdCodePairs(idAndCode); List<PtTeacherInfo> existingList = ptTeacherRepository.findByIdCodePairs(idAndCode);
@ -67,20 +68,14 @@ public class AsyncTeacherService {
private PtTeacherInfo convertToPtTeacherInfo(GpTeacherVo teacher, Map<String, PtTeacherInfo> existingTeachers) { private PtTeacherInfo convertToPtTeacherInfo(GpTeacherVo teacher, Map<String, PtTeacherInfo> existingTeachers) {
String code = "PtTeacher-" + teacher.getId(); String code = teacher.getCode() +"-"+ teacher.getId();
PtTeacherInfo existing = existingTeachers.get(code); PtTeacherInfo existing = existingTeachers.get(code);
// 如果数据库无记录,直接创建新对象 // 如果数据库无记录,直接创建新对象
if (existing == null) { if (existing == null) {
return createNewPtTeacherInfo(teacher, code); return createNewPtTeacherInfo(teacher, code);
} }
// 检查字段是否有变化 // 检查字段是否有变化
boolean isChanged = !Objects.equals(existing.getName(), teacher.getName()) boolean isChanged = !Objects.equals(existing.getIdentity(), teacher.getIdentity());
|| !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());
// 无变化则返回null表示无需更新 // 无变化则返回null表示无需更新
if (!isChanged) { if (!isChanged) {
@ -89,13 +84,6 @@ public class AsyncTeacherService {
PtTeacherInfo updated = new PtTeacherInfo(); PtTeacherInfo updated = new PtTeacherInfo();
BeanUtils.copyProperties(existing, updated); 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())); updated.setVersion(getNextVersion(updated.getId(), updated.getCode()));
return updated; return updated;
@ -115,31 +103,12 @@ public class AsyncTeacherService {
// 固定值 // 固定值
ptTeacherInfo.setPk("PtTeacher"); ptTeacherInfo.setPk("PtTeacher");
ptTeacherInfo.setTtl(-1); ptTeacherInfo.setTtl(-1);
ptTeacherInfo.setSchool(teacher.getCode());
// 基础信息映射 // 基础信息映射
ptTeacherInfo.setId(teacher.getId()); ptTeacherInfo.setId(teacher.getId());
ptTeacherInfo.setTmdId(teacher.getId());
ptTeacherInfo.setCode(code); ptTeacherInfo.setCode(code);
ptTeacherInfo.setName(teacher.getName()); ptTeacherInfo.setIdentity(teacher.getIdentity());
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.setVersion(1); ptTeacherInfo.setVersion(1);

Loading…
Cancel
Save