|
|
@ -40,6 +40,8 @@ import org.springframework.cache.annotation.Cacheable;
|
|
|
|
import org.springframework.core.env.Environment;
|
|
|
|
import org.springframework.core.env.Environment;
|
|
|
|
import org.springframework.data.domain.Slice;
|
|
|
|
import org.springframework.data.domain.Slice;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import javax.annotation.PostConstruct;
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
import java.time.*;
|
|
|
|
import java.time.*;
|
|
|
@ -86,10 +88,16 @@ public class TeacherServiceImpl implements TeacherService {
|
|
|
|
private static final Logger logger = LoggerFactory.getLogger(TeacherServiceImpl.class);
|
|
|
|
private static final Logger logger = LoggerFactory.getLogger(TeacherServiceImpl.class);
|
|
|
|
|
|
|
|
|
|
|
|
// 引入缓存,需根据实际情况配置大小和过期时间 每次服务重启时 缓存会清空
|
|
|
|
// 引入缓存,需根据实际情况配置大小和过期时间 每次服务重启时 缓存会清空
|
|
|
|
public static final Cache<String, PtTeacherInfo> PT_TEACHER_CACHE = CacheBuilder.newBuilder()
|
|
|
|
// 初始化Guava Cache
|
|
|
|
.maximumSize(500)
|
|
|
|
private Cache<String, Map<String, Object>> teacherCache;
|
|
|
|
.expireAfterWrite(8, TimeUnit.HOURS)
|
|
|
|
|
|
|
|
.build();
|
|
|
|
@PostConstruct
|
|
|
|
|
|
|
|
public void init() {
|
|
|
|
|
|
|
|
teacherCache = CacheBuilder.newBuilder()
|
|
|
|
|
|
|
|
.expireAfterWrite(1, TimeUnit.HOURS) // 缓存1小时
|
|
|
|
|
|
|
|
.maximumSize(1000) // 最大缓存数量
|
|
|
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Cacheable(value = "schoolGroupCache", key = "#code")
|
|
|
|
@Cacheable(value = "schoolGroupCache", key = "#code")
|
|
|
|
public List<GroupList> getCachedGroupLists(String code) {
|
|
|
|
public List<GroupList> getCachedGroupLists(String code) {
|
|
|
@ -160,12 +168,25 @@ public class TeacherServiceImpl implements TeacherService {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public Map<String, Object> getTeacherDetail(TeacherDto teacherDto, HttpServletRequest request) {
|
|
|
|
public Map<String, Object> getTeacherDetail(TeacherDto teacherDto, HttpServletRequest request) {
|
|
|
|
|
|
|
|
|
|
|
|
Map<String, Object> teachers;
|
|
|
|
Map<String, Object> teachers = new HashMap<>();
|
|
|
|
//获取全学校教师名单详情
|
|
|
|
Map<String, Object> teacherInfos;
|
|
|
|
String url = env.getProperty("ies.server-url-get-teacher-all");
|
|
|
|
String cacheKey = "teacher_data_" + teacherDto.getCode(); // 基于学校代码的缓存键
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
teachers = GroupUtil.getGroupId(teacherDto,new GroupUtil(env), request,url);
|
|
|
|
try {
|
|
|
|
List<GpTeacherVo> teachersList = convertToGpTeacherVoList(teachers, teacherDto.getCode());
|
|
|
|
// 尝试从缓存获取数据,若不存在则加载
|
|
|
|
|
|
|
|
teacherInfos = teacherCache.get(cacheKey, () -> {
|
|
|
|
|
|
|
|
String url = env.getProperty("ies.server-url-get-teacher-all");
|
|
|
|
|
|
|
|
return GroupUtil.getGroupId(teacherDto, new GroupUtil(env), request, url);
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
} catch (ExecutionException e) {
|
|
|
|
|
|
|
|
Throwable cause = e.getCause();
|
|
|
|
|
|
|
|
if (cause instanceof ServiceException) {
|
|
|
|
|
|
|
|
throw (ServiceException) cause;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
throw new ServiceException(ErrorCode.SYSTEM_ERROR.getCode(), "获取教师数据失败");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
List<GpTeacherVo> teachersList = convertToGpTeacherVoList(teacherInfos, 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);
|
|
|
@ -216,8 +237,8 @@ public class TeacherServiceImpl implements TeacherService {
|
|
|
|
.map(GpTeacherVo::getId)
|
|
|
|
.map(GpTeacherVo::getId)
|
|
|
|
.collect(Collectors.toSet());
|
|
|
|
.collect(Collectors.toSet());
|
|
|
|
|
|
|
|
|
|
|
|
//String code = String.format(PK.PTTEACHER, teacherDto.getCode());
|
|
|
|
String code = String.format(PK.PTTEACHER, teacherDto.getCode());
|
|
|
|
List<PtTeacherInfo> ptTeacherInfos = ptTeacherRepository.findAllTeacher(teacherIds, teacherDto.getCode());
|
|
|
|
List<PtTeacherInfo> ptTeacherInfos = ptTeacherRepository.findAllTeacher(teacherIds, teacherDto.getCode(),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,7 +249,6 @@ public class TeacherServiceImpl implements TeacherService {
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// });
|
|
|
|
// });
|
|
|
|
teachers.put("info", ptTeacherInfos);
|
|
|
|
teachers.put("info", ptTeacherInfos);
|
|
|
|
teachers.remove("teachers");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}catch (Exception e) {
|
|
|
|
}catch (Exception e) {
|
|
|
@ -251,7 +271,7 @@ public class TeacherServiceImpl implements TeacherService {
|
|
|
|
return teachersList;
|
|
|
|
return teachersList;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private List<GpTeacher> convertToGpTeacherList(Map<String, Object> tBase) {
|
|
|
|
/*private List<GpTeacher> convertToGpTeacherList(Map<String, Object> tBase) {
|
|
|
|
List<GpTeacher> gpTeachers = new ArrayList<>();
|
|
|
|
List<GpTeacher> gpTeachers = new ArrayList<>();
|
|
|
|
for (Map.Entry<String, Object> entry : tBase.entrySet()) {
|
|
|
|
for (Map.Entry<String, Object> entry : tBase.entrySet()) {
|
|
|
|
if (entry.getKey().equals("teachers")) {
|
|
|
|
if (entry.getKey().equals("teachers")) {
|
|
|
@ -263,10 +283,10 @@ public class TeacherServiceImpl implements TeacherService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return gpTeachers;
|
|
|
|
return gpTeachers;
|
|
|
|
}
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void savePtTeacherInfosBatch(List<GpTeacherVo> teachersList) {
|
|
|
|
/*private void savePtTeacherInfosBatch(List<GpTeacherVo> teachersList) {
|
|
|
|
// 预加载版本号
|
|
|
|
// 预加载版本号
|
|
|
|
Map<String, Integer> versionMap = loadExistingVersions(teachersList);
|
|
|
|
Map<String, Integer> versionMap = loadExistingVersions(teachersList);
|
|
|
|
|
|
|
|
|
|
|
@ -277,9 +297,9 @@ public class TeacherServiceImpl implements TeacherService {
|
|
|
|
|
|
|
|
|
|
|
|
ptTeacherRepository.saveAll(ptTeacherInfos);
|
|
|
|
ptTeacherRepository.saveAll(ptTeacherInfos);
|
|
|
|
ptTeacherInfos.forEach(pt -> PT_TEACHER_CACHE.put(pt.getCode(), pt));
|
|
|
|
ptTeacherInfos.forEach(pt -> PT_TEACHER_CACHE.put(pt.getCode(), pt));
|
|
|
|
}
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
|
|
private Map<String, Integer> loadExistingVersions(List<GpTeacherVo> teachersList) {
|
|
|
|
/*private Map<String, Integer> loadExistingVersions(List<GpTeacherVo> teachersList) {
|
|
|
|
// 收集所有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)
|
|
|
@ -298,10 +318,10 @@ public class TeacherServiceImpl implements TeacherService {
|
|
|
|
PtTeacherInfo::getCode,
|
|
|
|
PtTeacherInfo::getCode,
|
|
|
|
PtTeacherInfo::getVersion
|
|
|
|
PtTeacherInfo::getVersion
|
|
|
|
));
|
|
|
|
));
|
|
|
|
}
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.getCode();
|
|
|
|
String code = "PtTeacher-" + teacher.getCode();
|
|
|
|
ptTeacherInfo.setPk("PtTeacher");
|
|
|
|
ptTeacherInfo.setPk("PtTeacher");
|
|
|
@ -325,9 +345,9 @@ public class TeacherServiceImpl implements TeacherService {
|
|
|
|
ptTeacherInfo.setVersion(getNextVersion(ptTeacherInfo.getId(), ptTeacherInfo.getCode()));
|
|
|
|
ptTeacherInfo.setVersion(getNextVersion(ptTeacherInfo.getId(), ptTeacherInfo.getCode()));
|
|
|
|
|
|
|
|
|
|
|
|
return ptTeacherInfo;
|
|
|
|
return ptTeacherInfo;
|
|
|
|
}
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
|
|
private Integer getNextVersion(String id,String code) {
|
|
|
|
/* private Integer getNextVersion(String id,String code) {
|
|
|
|
PtTeacherInfo existingPtTeacherInfo = ptTeacherRepository.findByIdAndCode(id,code);
|
|
|
|
PtTeacherInfo existingPtTeacherInfo = ptTeacherRepository.findByIdAndCode(id,code);
|
|
|
|
if (existingPtTeacherInfo != null) {
|
|
|
|
if (existingPtTeacherInfo != null) {
|
|
|
|
return existingPtTeacherInfo.getVersion() + 1;
|
|
|
|
return existingPtTeacherInfo.getVersion() + 1;
|
|
|
@ -351,7 +371,7 @@ public class TeacherServiceImpl implements TeacherService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return practiceCount;
|
|
|
|
return practiceCount;
|
|
|
|
}
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
|
|
private GpTeacherVo convertToGpTeacherVo(Map<String, Object> map,String code) {
|
|
|
|
private GpTeacherVo convertToGpTeacherVo(Map<String, Object> map,String code) {
|
|
|
|
GpTeacherVo teacher = new GpTeacherVo();
|
|
|
|
GpTeacherVo teacher = new GpTeacherVo();
|
|
|
@ -366,7 +386,7 @@ public class TeacherServiceImpl implements TeacherService {
|
|
|
|
teacher.setJob((String) map.get("job"));
|
|
|
|
teacher.setJob((String) map.get("job"));
|
|
|
|
teacher.setStatus((String) map.get("status"));
|
|
|
|
teacher.setStatus((String) map.get("status"));
|
|
|
|
teacher.setRoles((List<String>) map.get("roles"));
|
|
|
|
teacher.setRoles((List<String>) map.get("roles"));
|
|
|
|
List<Map<String, Object>> groupList = (List<Map<String, Object>>) map.get("groups");
|
|
|
|
/*List<Map<String, Object>> groupList = (List<Map<String, Object>>) map.get("groups");
|
|
|
|
if (groupList != null) {
|
|
|
|
if (groupList != null) {
|
|
|
|
|
|
|
|
|
|
|
|
List<GpTeacherVo.IdNameCode> groups = new ArrayList<>();
|
|
|
|
List<GpTeacherVo.IdNameCode> groups = new ArrayList<>();
|
|
|
@ -380,7 +400,7 @@ public class TeacherServiceImpl implements TeacherService {
|
|
|
|
groups.add(group);
|
|
|
|
groups.add(group);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
teacher.setGroups(groups);
|
|
|
|
teacher.setGroups(groups);
|
|
|
|
}
|
|
|
|
}*/
|
|
|
|
teacher.setNote((String) map.get("note"));
|
|
|
|
teacher.setNote((String) map.get("note"));
|
|
|
|
teacher.setSubjectIds((List<String>) map.get("subjectIds"));
|
|
|
|
teacher.setSubjectIds((List<String>) map.get("subjectIds"));
|
|
|
|
teacher.setSubjectNames((List<String>) map.get("subjectNames"));
|
|
|
|
teacher.setSubjectNames((List<String>) map.get("subjectNames"));
|
|
|
@ -723,12 +743,12 @@ public class TeacherServiceImpl implements TeacherService {
|
|
|
|
Long count = subjectCount.getOrDefault(name, 0L);
|
|
|
|
Long count = subjectCount.getOrDefault(name, 0L);
|
|
|
|
subjectCount.put(name, count + 1);
|
|
|
|
subjectCount.put(name, count + 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(teacher.getGroups() != null) {
|
|
|
|
/*if(teacher.getGroups() != null) {
|
|
|
|
for (GpTeacherVo.IdNameCode group : teacher.getGroups()) {
|
|
|
|
for (GpTeacherVo.IdNameCode group : teacher.getGroups()) {
|
|
|
|
Long count = GroupCount.getOrDefault(group.getName(), 0L);
|
|
|
|
Long count = GroupCount.getOrDefault(group.getName(), 0L);
|
|
|
|
GroupCount.put(group.getName(), count + 1);
|
|
|
|
GroupCount.put(group.getName(), count + 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}*/
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}else if(StringUtils.isEmpty(teacherDto.getGrade()) && StringUtils.isNotEmpty(teacherDto.getSubjectId())) {
|
|
|
|
}else if(StringUtils.isEmpty(teacherDto.getGrade()) && StringUtils.isNotEmpty(teacherDto.getSubjectId())) {
|
|
|
@ -755,12 +775,12 @@ public class TeacherServiceImpl implements TeacherService {
|
|
|
|
Long count = subjectCount.getOrDefault(name, 0L);
|
|
|
|
Long count = subjectCount.getOrDefault(name, 0L);
|
|
|
|
subjectCount.put(name, count + 1);
|
|
|
|
subjectCount.put(name, count + 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(teacher.getGroups() != null) {
|
|
|
|
/*if(teacher.getGroups() != null) {
|
|
|
|
for (GpTeacherVo.IdNameCode group : teacher.getGroups()) {
|
|
|
|
for (GpTeacherVo.IdNameCode group : teacher.getGroups()) {
|
|
|
|
Long count = GroupCount.getOrDefault(group.getName(), 0L);
|
|
|
|
Long count = GroupCount.getOrDefault(group.getName(), 0L);
|
|
|
|
GroupCount.put(group.getName(), count + 1);
|
|
|
|
GroupCount.put(group.getName(), count + 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}*/
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}else if(StringUtils.isNotEmpty(teacherDto.getGrade()) && StringUtils.isEmpty(teacherDto.getSubjectId())) {
|
|
|
|
}else if(StringUtils.isNotEmpty(teacherDto.getGrade()) && StringUtils.isEmpty(teacherDto.getSubjectId())) {
|
|
|
@ -788,12 +808,12 @@ public class TeacherServiceImpl implements TeacherService {
|
|
|
|
subjectCount.put(name, count + 1);
|
|
|
|
subjectCount.put(name, count + 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(teacher.getGroups() != null) {
|
|
|
|
/* if(teacher.getGroups() != null) {
|
|
|
|
for (GpTeacherVo.IdNameCode group : teacher.getGroups()) {
|
|
|
|
for (GpTeacherVo.IdNameCode group : teacher.getGroups()) {
|
|
|
|
Long count = GroupCount.getOrDefault(group.getName(), 0L);
|
|
|
|
Long count = GroupCount.getOrDefault(group.getName(), 0L);
|
|
|
|
GroupCount.put(group.getName(), count + 1);
|
|
|
|
GroupCount.put(group.getName(), count + 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}*/
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -822,12 +842,12 @@ public class TeacherServiceImpl implements TeacherService {
|
|
|
|
subjectCount.put(name, count + 1);
|
|
|
|
subjectCount.put(name, count + 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(teacher.getGroups() != null) {
|
|
|
|
/* if(teacher.getGroups() != null) {
|
|
|
|
for (GpTeacherVo.IdNameCode group : teacher.getGroups()) {
|
|
|
|
for (GpTeacherVo.IdNameCode group : teacher.getGroups()) {
|
|
|
|
Long count = GroupCount.getOrDefault(group.getName(), 0L);
|
|
|
|
Long count = GroupCount.getOrDefault(group.getName(), 0L);
|
|
|
|
GroupCount.put(group.getName(), count + 1);
|
|
|
|
GroupCount.put(group.getName(), count + 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1432,7 +1452,8 @@ public class TeacherServiceImpl implements TeacherService {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void delete(TeacherDto teacherDto) {
|
|
|
|
public void delete(TeacherDto teacherDto) {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
List<PtTeacherInfo> ptTeacherInfo = ptTeacherRepository.findAllTeacher();
|
|
|
|
String code = String.format(PK.PTTEACHER, teacherDto.getCode());
|
|
|
|
|
|
|
|
List<PtTeacherInfo> ptTeacherInfo = ptTeacherRepository.findByCode(code);
|
|
|
|
//删除查询出来的所有数据
|
|
|
|
//删除查询出来的所有数据
|
|
|
|
for (PtTeacherInfo ptTeacherInfo1 : ptTeacherInfo){
|
|
|
|
for (PtTeacherInfo ptTeacherInfo1 : ptTeacherInfo){
|
|
|
|
ptTeacherRepository.delete(ptTeacherInfo1);
|
|
|
|
ptTeacherRepository.delete(ptTeacherInfo1);
|
|
|
|