From 00377bf32b5c26aa3f20e855308d11afcd68ca5a Mon Sep 17 00:00:00 2001 From: "hhb@hotmail.com" Date: Tue, 31 Dec 2024 11:43:58 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E5=AF=B9=E6=8E=A5=E8=8B=8F=E6=A0=BC?= =?UTF-8?q?=E6=8B=89=E5=BA=95=E7=9B=B8=E5=85=B3=E6=95=B0=E6=8D=AE=E5=86=85?= =?UTF-8?q?=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/TeacherServiceImpl.java | 240 ++++++++++++++++-- .../model/dto/admin/teacher/TeacherDto.java | 6 + .../cn/teammodel/model/vo/admin/SugVo.java | 21 ++ src/main/resources/application.yml | 3 +- 4 files changed, 252 insertions(+), 18 deletions(-) create mode 100644 src/main/java/cn/teammodel/model/vo/admin/SugVo.java 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 e69b4c8..99e8f89 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 @@ -12,6 +12,7 @@ import cn.teammodel.model.entity.school.LessonRecord; import cn.teammodel.model.entity.school.School; import cn.teammodel.model.entity.school.SchoolTeacher; import cn.teammodel.model.vo.admin.GpTeacherVo; +import cn.teammodel.model.vo.admin.SugVo; import cn.teammodel.model.vo.admin.TeacherGradeVo; import cn.teammodel.repository.LessonRecordRepository; import cn.teammodel.repository.SchoolGroupListRepository; @@ -32,6 +33,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.time.*; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -730,8 +732,104 @@ public class TeacherServiceImpl implements TeacherService { @Override public Map getTeachingAndResearch(TeacherDto teacherDto, HttpServletRequest request) { - Map map = new HashMap<>(); - //录课数 + + List sugVoList = getSugVos(teacherDto, request); + //获取教师年级分配情况 + Map Map = getTeacherGradeCount(teacherDto, request); + List gradeList = new ArrayList<>(); + for (Map.Entry entry : Map.entrySet()) { + if(entry.getKey().equals("teacher")) { + List> teacherList = (List>) entry.getValue(); + for (Map statisticsMap : teacherList) { + TeacherGradeVo teacherGradeVo = convertToTeacherGradeVo(statisticsMap); + gradeList.add(teacherGradeVo); + } + } + } + if(teacherDto.getTmdId() != null) { + List sugVos = sugVoList.stream().filter(sugVo -> sugVo.getHabook().equals(teacherDto.getTmdId())).collect(Collectors.toList()); + LinkedHashMap mapTeach = new LinkedHashMap<>(); + int[] scores = new int[5]; + for (SugVo sugVo : sugVos) { + scores[0] += sugVo.getT_data(); + scores[1] += sugVo.getT_green(); + scores[2] += sugVo.getT_duration(); + scores[3] += sugVo.getT_attendance(); + scores[4] += sugVo.getT_interaction(); + } + //T(数据) + mapTeach.put("TData",scores[0]); + //T(绿灯) + mapTeach.put("TGreen",scores[1]); + //总时长 + mapTeach.put("TDuration",scores[2]); + //T(数据)学生人次 + mapTeach.put("TAttendance",scores[3]); + //T(数据)互动次数 + mapTeach.put("TInteraction",scores[4]); + return mapTeach; + + }else if(teacherDto.getGradeName() != null) { + + List teachers = new ArrayList<>(); + for (TeacherGradeVo gradeVo : gradeList) { + for(TeacherGradeVo.IdAndName gradeId : gradeVo.getGrade()) { + if (gradeId.getGradeName().equals(teacherDto.getGradeName() )) { + teachers.add(gradeVo.getId()); + } + } + } + List filteredSugVoList = sugVoList.stream() + .filter(sugVo -> teachers.contains(sugVo.getHabook())) + .collect(Collectors.toList()); + LinkedHashMap mapTeach = new LinkedHashMap<>(); + int[] scores = new int[5]; + for (SugVo sugVo : filteredSugVoList) { + scores[0] += sugVo.getT_data(); + scores[1] += sugVo.getT_green(); + scores[2] += sugVo.getT_duration(); + scores[3] += sugVo.getT_attendance(); + scores[4] += sugVo.getT_interaction(); + } + //T(数据) + mapTeach.put("TData",scores[0]); + //T(绿灯) + mapTeach.put("TGreen",scores[1]); + //总时长 + mapTeach.put("TDuration",scores[2]); + //T(数据)学生人次 + mapTeach.put("TAttendance",scores[3]); + //T(数据)互动次数 + mapTeach.put("TInteraction",scores[4]); + + return mapTeach; + }else { + LinkedHashMap mapTeach = new LinkedHashMap<>(); + int[] scores = new int[5]; + for (SugVo sugVo : sugVoList) { + scores[0] += sugVo.getT_data(); + scores[1] += sugVo.getT_green(); + scores[2] += sugVo.getT_duration(); + scores[3] += sugVo.getT_attendance(); + scores[4] += sugVo.getT_interaction(); + } + //T(数据) + mapTeach.put("TData", scores[0]); + //T(绿灯) + mapTeach.put("TGreen", scores[1]); + //总时长 + mapTeach.put("TDuration", scores[2]); + //T(数据)学生人次 + mapTeach.put("TAttendance", scores[3]); + //T(数据)互动次数 + mapTeach.put("TInteraction", scores[4]); + + return mapTeach; + + } + + //Map map = new HashMap<>(); + /*//录课数 map.put("Lessons",new Random().nextInt(100) + 1); //T(数据) map.put("TData",new Random().nextInt(100) + 1); @@ -758,23 +856,49 @@ public class TeacherServiceImpl implements TeacherService { //被标记数 map.put("TMarkers",new Random().nextInt(30) + 1); //被点阅数 - map.put("ClickAndRead",new Random().nextInt(100) + 1); - return map; + map.put("ClickAndRead",new Random().nextInt(100) + 1);*/ + //return map; } @Override public List>> getTeachingOfTeacher(TeacherDto teacherDto, HttpServletRequest request) { List>> list = new ArrayList<>(); - if(teacherDto.getGrade() != null) { - LinkedHashMap> map = new LinkedHashMap<>(); + List sugVoList = getSugVos(teacherDto, request); + //获取教师年级分配情况 + Map Map = getTeacherGradeCount(teacherDto, request); + List gradeList = new ArrayList<>(); + for (Map.Entry entry : Map.entrySet()) { + if(entry.getKey().equals("teacher")) { + List> teacherList = (List>) entry.getValue(); + for (Map statisticsMap : teacherList) { + TeacherGradeVo teacherGradeVo = convertToTeacherGradeVo(statisticsMap); + gradeList.add(teacherGradeVo); + } + } + } + if(teacherDto.getTmdId() != null) { + List sugVos = sugVoList.stream().filter(sugVo -> sugVo.getHabook().equals(teacherDto.getTmdId())).collect(Collectors.toList()); LinkedHashMap mapTeach = new LinkedHashMap<>(); - mapTeach.put("interaction", new Random().nextInt(50) + 1); - mapTeach.put("cooperation", new Random().nextInt(50) + 1); - mapTeach.put("test", new Random().nextInt(50) + 1); - mapTeach.put("quest", new Random().nextInt(50) + 1); - mapTeach.put("differentiation", new Random().nextInt(50) + 1); + LinkedHashMap> map = new LinkedHashMap<>(); + int[] scores = new int[7]; + for (SugVo sugVo : sugVos) { + scores[0] += sugVo.getCooperation(); + scores[1] += sugVo.getInteraction(); + scores[2] += sugVo.getTask(); + scores[3] += sugVo.getExam(); + scores[4] += sugVo.getDiffential(); + scores[5] += sugVo.getSmartRating(); + scores[6] += sugVo.getCowork(); + } - map.put(teacherDto.getGrade(), mapTeach); + mapTeach.put("cooperation", scores[0]); + mapTeach.put("interaction", scores[1]); + mapTeach.put("task", scores[2]); + mapTeach.put("exam", scores[3]); + mapTeach.put("differential", scores[4]); + mapTeach.put("smartRating", scores[5]); + mapTeach.put("cowork", scores[6]); + map.put(teacherDto.getTmdId(), mapTeach); list.add(map); }else { @@ -782,12 +906,37 @@ public class TeacherServiceImpl implements TeacherService { List grades = getGrades(teacherDto, school); LinkedHashMap> map = new LinkedHashMap<>(); for (String grade : grades) { + List teachers = new ArrayList<>(); + for (TeacherGradeVo gradeVo : gradeList) { + for(TeacherGradeVo.IdAndName gradeId : gradeVo.getGrade()) { + if (gradeId.getGradeName().equals(grade)) { + teachers.add(gradeVo.getId()); + } + } + } + List filteredSugVoList = sugVoList.stream() + .filter(sugVo -> teachers.contains(sugVo.getHabook())) + .collect(Collectors.toList()); LinkedHashMap mapTeach = new LinkedHashMap<>(); - mapTeach.put("interaction", new Random().nextInt(50) + 1); - mapTeach.put("cooperation", new Random().nextInt(50) + 1); - mapTeach.put("test", new Random().nextInt(50) + 1); - mapTeach.put("quest", new Random().nextInt(50) + 1); - mapTeach.put("differentiation", new Random().nextInt(50) + 1); + int[] scores = new int[7]; // 索引 0: cooperation, 1: interaction, 2: task, 3: exam, 4: diffential, 5: smartRating, 6: cowork + for (SugVo sugVo : filteredSugVoList) { + scores[0] += sugVo.getCooperation(); + scores[1] += sugVo.getInteraction(); + scores[2] += sugVo.getTask(); + scores[3] += sugVo.getExam(); + scores[4] += sugVo.getDiffential(); + scores[5] += sugVo.getSmartRating(); + scores[6] += sugVo.getCowork(); + } + + mapTeach.put("cooperation", scores[0]); + mapTeach.put("interaction", scores[1]); + mapTeach.put("task", scores[2]); + mapTeach.put("exam", scores[3]); + mapTeach.put("differential", scores[4]); + mapTeach.put("smartRating", scores[5]); + mapTeach.put("cowork", scores[6]); + map.put(grade, mapTeach); } list.add(map); @@ -796,6 +945,63 @@ public class TeacherServiceImpl implements TeacherService { return list; } + private @NotNull List getSugVos(TeacherDto teacherDto, HttpServletRequest request) { + String url = env.getProperty("ies.server-url-get-channel-data"); + Map overView; + List sugVoList = new ArrayList(); + try { + Instant instantSTime = Instant.ofEpochMilli(teacherDto.getStartTime()); + Instant instantETime = Instant.ofEpochMilli(teacherDto.getEndTime()); + LocalDate localDateSTime = instantSTime.atZone(ZoneId.systemDefault()).toLocalDate(); + LocalDate localDateETime = instantETime.atZone(ZoneId.systemDefault()).toLocalDate(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + String sTime = localDateSTime.format(formatter); + String eTime = localDateETime.format(formatter); + teacherDto.duration.add(sTime); + teacherDto.duration.add(eTime); + teacherDto.school_shortcode.add(teacherDto.getCode()); + overView = GroupUtil.getGroupId(teacherDto,new GroupUtil(env), request,url); + for(Map.Entry entry : overView.entrySet()) { + if (entry.getKey().equals("data")) { + List> dataList = (List>) entry.getValue(); + for (Map dataMap : dataList) { + if(dataMap.containsKey("statistics")) { + List> statisticsList = (List>) dataMap.get("statistics"); + for (Map statisticsMap : statisticsList) { + SugVo sugVo = convertToSugVo(statisticsMap); + sugVoList.add(sugVo); + } + } + + } + } + } + }catch (Exception e) { + throw new ServiceException(ErrorCode.SYSTEM_ERROR.getCode(), "数据转换错误"); + + } + return sugVoList; + } + + private SugVo convertToSugVo(Map dataMap) { + SugVo sugVo = new SugVo(); + sugVo.setDate(dataMap.get("date").toString()); + sugVo.setHabook(dataMap.get("habook").toString()); + sugVo.setT_data(Integer.parseInt(dataMap.get("t_data").toString())); + sugVo.setT_green(Integer.parseInt(dataMap.get("t_green").toString())); + sugVo.setT_duration(Integer.parseInt(dataMap.get("t_duration").toString())); + sugVo.setT_attendance(Integer.parseInt(dataMap.get("t_attendance").toString())); + sugVo.setT_interaction(Integer.parseInt(dataMap.get("t_interaction").toString())); + sugVo.setCooperation(Integer.parseInt(dataMap.get("cooperation").toString())); + sugVo.setInteraction(Integer.parseInt(dataMap.get("interaction").toString())); + sugVo.setTask(Integer.parseInt(dataMap.get("task").toString())); + sugVo.setExam(Integer.parseInt(dataMap.get("exam").toString())); + sugVo.setDiffential(Integer.parseInt(dataMap.get("diffential").toString())); + sugVo.setSmartRating(Integer.parseInt(dataMap.get("smartRating").toString())); + sugVo.setCowork(Integer.parseInt(dataMap.get("cowork").toString())); + return sugVo; + } + private static @NotNull List getGrades(TeacherDto teacherDto, List school) { List grades = new ArrayList<>(); if(school != null && !school.isEmpty()) { diff --git a/src/main/java/cn/teammodel/model/dto/admin/teacher/TeacherDto.java b/src/main/java/cn/teammodel/model/dto/admin/teacher/TeacherDto.java index 211e1ad..88cf4dc 100644 --- a/src/main/java/cn/teammodel/model/dto/admin/teacher/TeacherDto.java +++ b/src/main/java/cn/teammodel/model/dto/admin/teacher/TeacherDto.java @@ -3,6 +3,9 @@ package cn.teammodel.model.dto.admin.teacher; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.ArrayList; +import java.util.List; + @Data public class TeacherDto { @ApiModelProperty("学校编码") @@ -18,7 +21,10 @@ public class TeacherDto { public Integer year; @ApiModelProperty("年级") public String grade; + public String gradeName; @ApiModelProperty("科目信息") public String subjectId; public String semesterId; + public List duration = new ArrayList<>(); + public List school_shortcode = new ArrayList<>(); } diff --git a/src/main/java/cn/teammodel/model/vo/admin/SugVo.java b/src/main/java/cn/teammodel/model/vo/admin/SugVo.java new file mode 100644 index 0000000..fcbad77 --- /dev/null +++ b/src/main/java/cn/teammodel/model/vo/admin/SugVo.java @@ -0,0 +1,21 @@ +package cn.teammodel.model.vo.admin; + +import lombok.Data; + +@Data +public class SugVo { + private String habook; + private String date; + private Integer t_data; + private Integer t_green; + private Integer t_duration; + private Integer t_attendance; + private Integer t_interaction; + private Integer cooperation; + private Integer interaction; + private Integer task; + private Integer exam; + private Integer diffential; + private Integer smartRating; + private Integer cowork; +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 9e2a346..72da9b3 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -83,4 +83,5 @@ ies: server-url-analysis-simple: /analysis/simple server-url-find-simple-by-student: /common/exam/find-simple-by-student server-url-get-teacher-all: /school/teacher/get-teacher-all - server-url-get-teacher-grade-count: /school/teacher/get-teacher-grade \ No newline at end of file + server-url-get-teacher-grade-count: /school/teacher/get-teacher-grade + server-url-get-channel-data: /sokrate/get-channel-data \ No newline at end of file