From 6a440fe1117743726274c0903187b81c1507dccb Mon Sep 17 00:00:00 2001 From: "hhb@hotmail.com" Date: Wed, 7 May 2025 16:34:06 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E5=90=8C=E6=AD=A5=E8=BA=AB=E5=88=86?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/TeacherServiceImpl.java | 23 +++++++++++++++++-- .../teammodel/model/vo/admin/GpTeacherVo.java | 1 + .../repository/PtTeacherRepository.java | 3 +++ .../teammodel/test/AsyncTeacherService.java | 3 ++- 4 files changed, 27 insertions(+), 3 deletions(-) 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 9d023a3..8b50617 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 @@ -197,10 +197,29 @@ public class TeacherServiceImpl implements TeacherService { teachers.put("gender", genderCount); teachers.put("degree", degreeCount); - teachers.put("info", teachersList); - teachers.remove("teachers"); List copyList = new ArrayList<>(teachersList); + // 同步保存,确保数据持久化 asyncTeacherService.asyncSavePtTeacherInfos(Collections.unmodifiableList(copyList)); + //asyncTeacherService.syncSavePtTeacherInfos(teachersList); // 假设改为同步方法 + + // 优化查询与匹配 + Set teacherIds = teachersList.stream() + .map(GpTeacherVo::getId) + .collect(Collectors.toSet()); + + List ptTeacherInfos = ptTeacherRepository.findAllTeacher(teacherIds); + Map idToPtTeacherInfo = ptTeacherInfos.stream() + .collect(Collectors.toMap(PtTeacherInfo::getId, Function.identity())); + + teachersList.forEach(teacher -> { + PtTeacherInfo info = idToPtTeacherInfo.get(teacher.getId()); + if (info != null) { + teacher.setIdentity(info.getIdentity()); + } + }); + teachers.put("info", teachersList); + teachers.remove("teachers"); + }catch (Exception e) { throw new ServiceException(ErrorCode.SYSTEM_ERROR.getCode(), "数据转换错误"); 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 83674a7..6be4910 100644 --- a/src/main/java/cn/teammodel/model/vo/admin/GpTeacherVo.java +++ b/src/main/java/cn/teammodel/model/vo/admin/GpTeacherVo.java @@ -23,6 +23,7 @@ public class GpTeacherVo { public String gender ; public List grade; public String periodId ; + public List identity; public Integer version = 1; @Data public static class IdNameCode{ diff --git a/src/main/java/cn/teammodel/repository/PtTeacherRepository.java b/src/main/java/cn/teammodel/repository/PtTeacherRepository.java index e499f4c..a4bc150 100644 --- a/src/main/java/cn/teammodel/repository/PtTeacherRepository.java +++ b/src/main/java/cn/teammodel/repository/PtTeacherRepository.java @@ -7,6 +7,7 @@ import com.azure.spring.data.cosmos.repository.Query; import io.lettuce.core.dynamic.annotation.Param; import org.springframework.stereotype.Repository; +import java.util.Collection; import java.util.List; @Repository @@ -15,4 +16,6 @@ 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); } diff --git a/src/main/java/cn/teammodel/test/AsyncTeacherService.java b/src/main/java/cn/teammodel/test/AsyncTeacherService.java index 15cb778..48a3451 100644 --- a/src/main/java/cn/teammodel/test/AsyncTeacherService.java +++ b/src/main/java/cn/teammodel/test/AsyncTeacherService.java @@ -12,6 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.Collections; import java.util.List; @@ -29,7 +30,7 @@ public class AsyncTeacherService { @Autowired private PtTeacherRepository ptTeacherRepository; - @Async + @Transactional(rollbackFor = Exception.class) public void asyncSavePtTeacherInfos(List teachersList) { try { Map existingTeachers = loadExistingTeachers(teachersList);