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);
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);
void update (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");
try {
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());
GpTeacherDto gpTeacherDto = new GpTeacherDto();
gpTeacherDto.setMobiles(phones);
@ -207,7 +207,8 @@ public class TeacherServiceImpl implements TeacherService {
.map(GpTeacherVo::getId)
.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()
.collect(Collectors.toMap(PtTeacherInfo::getId, Function.identity()));
@ -228,12 +229,12 @@ public class TeacherServiceImpl implements TeacherService {
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<>();
for (Map.Entry<String, Object> entry : teachers.entrySet()) {
List<Map<String, Object>> mapList = (List<Map<String, Object>>) entry.getValue();
for (Map<String, Object> 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<Pair<String, String>> 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<Pair<String, String>> 转化为 List<IdCodePair>
List<IdCodePair> idAndCode = idCodePairs.stream()
@ -292,28 +293,11 @@ public class TeacherServiceImpl implements TeacherService {
private PtTeacherInfo convertToPtTeacherInfo(GpTeacherVo teacher, Map<String, Integer> 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<String, Object> map) {
private GpTeacherVo convertToGpTeacherVo(Map<String, Object> 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<Map<String, Object>> mapList = (List<Map<String, Object>>) entry.getValue();
for (Map<String, Object> 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> 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<String, Map<String, Object>> REQUEST_CACHE = CacheBuilder.newBuilder()

@ -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<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 String school;
//新增身份信息
public List<String> identity ;
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 String id ;
public String name ;
public String code ;
public String phone ;
public String email ;
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'")
List<PtTeacherInfo> findByIdCodePairs(@Param("pairs") List<IdCodePair> pairs);
@Query(value = "SELECT * FROM c WHERE c.pk = 'PtTeacher' and c.id in (@ids) ")
List<PtTeacherInfo> findAllTeacher(Collection<String> 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, 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.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<String, PtTeacherInfo> loadExistingTeachers(List<GpTeacherVo> teachersList) {
List<IdCodePair> 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<PtTeacherInfo> existingList = ptTeacherRepository.findByIdCodePairs(idAndCode);
@ -67,20 +68,14 @@ public class AsyncTeacherService {
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);
// 如果数据库无记录,直接创建新对象
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);

Loading…
Cancel
Save