Forráskód Böngészése

add:教师排名相关更改

caozixuan 3 éve
szülő
commit
29d96f36b2

+ 46 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/result/TeacherMyClassRankResult.java

@@ -2,6 +2,7 @@ package com.qmth.teachcloud.report.business.bean.result;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
 
 /**
  * @Date: 2021/6/8.
@@ -17,6 +18,19 @@ public class TeacherMyClassRankResult {
     private Integer teacherCount;
     private Integer rank;
 
+    @ApiModelProperty(value = "教学班编号")
+    private String teachClazzCodes;
+
+    @ApiModelProperty(value = "客观题平均分")
+    private Double objAvgScore;
+
+    @ApiModelProperty(value = "主观题平均分")
+    private Double subAvgScore;
+
+    @ApiModelProperty(value = "赋分后平均分")
+    private Double avgScoreAssign;
+
+
     @JsonSerialize(using = ToStringSerializer.class)
     private Long inspectCollegeId;
 
@@ -91,4 +105,36 @@ public class TeacherMyClassRankResult {
     public void setRank(Integer rank) {
         this.rank = rank;
     }
+
+    public String getTeachClazzCodes() {
+        return teachClazzCodes;
+    }
+
+    public void setTeachClazzCodes(String teachClazzCodes) {
+        this.teachClazzCodes = teachClazzCodes;
+    }
+
+    public Double getObjAvgScore() {
+        return objAvgScore;
+    }
+
+    public void setObjAvgScore(Double objAvgScore) {
+        this.objAvgScore = objAvgScore;
+    }
+
+    public Double getSubAvgScore() {
+        return subAvgScore;
+    }
+
+    public void setSubAvgScore(Double subAvgScore) {
+        this.subAvgScore = subAvgScore;
+    }
+
+    public Double getAvgScoreAssign() {
+        return avgScoreAssign;
+    }
+
+    public void setAvgScoreAssign(Double avgScoreAssign) {
+        this.avgScoreAssign = avgScoreAssign;
+    }
 }

+ 49 - 4
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/entity/TAExamCourseCollegeTeacher.java

@@ -10,6 +10,7 @@ import io.swagger.annotations.ApiModelProperty;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.Objects;
 
 /**
@@ -57,6 +58,22 @@ public class TAExamCourseCollegeTeacher implements Serializable {
     @TableField(value = "teacher_name")
     private String teacherName;
 
+    @ApiModelProperty(value = "教学班级编号(','隔开)")
+    @TableField(value = "teach_clazz_codes")
+    private String teachClazzCodes;
+
+    @ApiModelProperty(value = "客观题均分")
+    @TableField(value = "obj_avg_score")
+    private BigDecimal objAvgScore;
+
+    @ApiModelProperty(value = "主观题均分")
+    @TableField(value = "sub_avg_score")
+    private BigDecimal subAvgScore;
+
+    @ApiModelProperty(value = "授课学生平均分")
+    @TableField(value = "avg_score")
+    private BigDecimal avgScore;
+
     @ApiModelProperty(value = "授课学生最低分(赋分)")
     @TableField(value = "min_score_assign")
     private BigDecimal minScoreAssign;
@@ -69,10 +86,6 @@ public class TAExamCourseCollegeTeacher implements Serializable {
     @TableField(value = "avg_score_assign")
     private BigDecimal avgScoreAssign;
 
-    @ApiModelProperty(value = "授课学生平均分")
-    @TableField(value = "avg_score")
-    private BigDecimal avgScore;
-
     @ApiModelProperty(value = "授课学生分数上四分位数")
     @TableField(value = "upper_quartile")
     private BigDecimal upperQuartile;
@@ -526,4 +539,36 @@ public class TAExamCourseCollegeTeacher implements Serializable {
     public void setOtherCollegeTotalCount(Integer otherCollegeTotalCount) {
         this.otherCollegeTotalCount = otherCollegeTotalCount;
     }
+
+    public String getTeachClazzCodes() {
+        return teachClazzCodes;
+    }
+
+    public void setTeachClazzCodes(String teachClazzCodes) {
+        this.teachClazzCodes = teachClazzCodes;
+    }
+
+    public BigDecimal getObjAvgScore() {
+        if (Objects.nonNull(objAvgScore)) {
+            return objAvgScore.setScale(SystemConstant.CALCULATE_SCALE, RoundingMode.HALF_UP);
+        } else {
+            return null;
+        }
+    }
+
+    public void setObjAvgScore(BigDecimal objAvgScore) {
+        this.objAvgScore = objAvgScore;
+    }
+
+    public BigDecimal getSubAvgScore() {
+        if (Objects.nonNull(subAvgScore)) {
+            return subAvgScore.setScale(SystemConstant.CALCULATE_SCALE, RoundingMode.HALF_UP);
+        } else {
+            return null;
+        }
+    }
+
+    public void setSubAvgScore(BigDecimal subAvgScore) {
+        this.subAvgScore = subAvgScore;
+    }
 }

+ 0 - 1
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/mapper/TAExamCourseCollegeTeacherMapper.java

@@ -8,7 +8,6 @@ import com.qmth.teachcloud.report.business.bean.result.TAExamCourseTeacherResult
 import com.qmth.teachcloud.report.business.bean.result.TeacherClassRankResult;
 import com.qmth.teachcloud.report.business.bean.result.TeacherMyClassRankResult;
 import com.qmth.teachcloud.report.business.entity.TAExamCourseCollegeTeacher;
-import com.qmth.teachcloud.report.business.enums.OrderEnum;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;

+ 1 - 1
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/AnalyzeForReportService.java

@@ -168,7 +168,7 @@ public interface AnalyzeForReportService {
      * @param examId     考试id
      * @param courseCode 课程编号
      */
-    @Async("analyzeThreadPool")
+//    @Async("analyzeThreadPool")
     void buildAnalyzeExamCourseCollegeTeacher(Long examId, String courseCode);
 
     /**

+ 22 - 2
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/AnalyzeForReportServiceImpl.java

@@ -1719,8 +1719,22 @@ public class AnalyzeForReportServiceImpl implements AnalyzeForReportService {
                     double minScoreAssign = describeStatistic.getMin();
                     double maxScoreAssign = describeStatistic.getMax();
                     double avgScoreAssign = describeStatistic.getAverage();
+                    // 卷面均分
                     double avgScore = teacherEffectiveList.stream()
                             .collect(Collectors.summarizingDouble(e -> e.getTotalScore().doubleValue())).getAverage();
+                    double objAvgScore = teacherEffectiveList.stream()
+                            .collect(Collectors.summarizingDouble(e -> e.getObjectiveScore().doubleValue())).getAverage();
+                    double subAvgScore = teacherEffectiveList.stream()
+                            .collect(Collectors.summarizingDouble(e -> e.getSubjectiveScore().doubleValue())).getAverage();
+                    
+                    // 教学班
+                    List<Long> clazzIdList = teacherEffectiveList.stream().map(TAExamCourseRecord::getClazzId).distinct().collect(Collectors.toList());
+                    List<String> clazzCodeList = clazzIdList.stream().flatMap(e -> {
+                        TBSchoolClazz tbSchoolClazz = tbSchoolClazzService.getById(e);
+                        return Stream.of(tbSchoolClazz.getClazzCode());
+                    }).sorted().collect(Collectors.toList());
+                    String teachClazzCodes = String.join(",", clazzCodeList);
+
                     List<Double> assignedScore = teacherEffectiveList.stream().map(e -> e.getAssignedScore().doubleValue()).collect(Collectors.toList());
                     // 计算上四分位数
                     double upperQuartile = MathUtil.calculateQuantile(assignedScore, QuantileEnum.UPPER_QUARTILE.getValue());
@@ -1807,12 +1821,18 @@ public class AnalyzeForReportServiceImpl implements AnalyzeForReportService {
                     taExamCourseCollegeTeacher.setSchoolId(tbExamService.getById(examId).getSchoolId());
                     taExamCourseCollegeTeacher.setCourseCode(effectiveCourseCode);
                     taExamCourseCollegeTeacher.setCourseName(basicCourseService.findByCourseCode(effectiveCourseCode, schoolId).getName());
+                    SysUser teacher = sysUserService.getById(teacherId);
                     taExamCourseCollegeTeacher.setTeacherId(teacherId);
-                    taExamCourseCollegeTeacher.setTeacherName(sysUserService.getById(teacherId).getRealName());
+                    if (Objects.nonNull(teacher)){
+                        taExamCourseCollegeTeacher.setTeacherName(teacher.getRealName());
+                    }
+                    taExamCourseCollegeTeacher.setTeachClazzCodes(teachClazzCodes);
+                    taExamCourseCollegeTeacher.setObjAvgScore(BigDecimal.valueOf(objAvgScore));
+                    taExamCourseCollegeTeacher.setSubAvgScore(BigDecimal.valueOf(subAvgScore));
+                    taExamCourseCollegeTeacher.setAvgScore(BigDecimal.valueOf(avgScore));
                     taExamCourseCollegeTeacher.setMinScoreAssign(BigDecimal.valueOf(minScoreAssign));
                     taExamCourseCollegeTeacher.setMaxScoreAssign(BigDecimal.valueOf(maxScoreAssign));
                     taExamCourseCollegeTeacher.setAvgScoreAssign(BigDecimal.valueOf(avgScoreAssign));
-                    taExamCourseCollegeTeacher.setAvgScore(BigDecimal.valueOf(avgScore));
                     taExamCourseCollegeTeacher.setUpperQuartile(BigDecimal.valueOf(upperQuartile));
                     taExamCourseCollegeTeacher.setMedian(BigDecimal.valueOf(median));
                     taExamCourseCollegeTeacher.setLowerQuartile(BigDecimal.valueOf(lowerQuartile));

+ 5 - 1
teachcloud-report-business/src/main/resources/mapper/TAExamCourseCollegeTeacherMapper.xml

@@ -58,7 +58,11 @@
             a.course_code courseCode,
             a.course_name courseName,
             a.teach_college_name teachCollegeName,
-            round(a.avg_score_assign, 1) avgScore,
+            a.teach_clazz_codes teachClazzCodes,
+            round(a.obj_avg_score, 1) objAvgScore,
+            round(a.sub_avg_score, 1) subAvgScore,
+            round(a.avg_score, 1) avgScore,
+            round(a.avg_score_assign, 1) avgScoreAssign,
             a.teacher_count teacherCount,
             a.teacher_rank `rank`,
             a.inspect_college_id as inspectCollegeId

+ 1 - 0
teachcloud-report-business/src/main/resources/mapper/TBExamCourseMapper.xml

@@ -49,6 +49,7 @@
                 and tbec.publish_status = 'PUBLISH'
             </if>
         </where>
+        ORDER BY tbs.course_code
     </select>
 
     <select id="findCourseListByTeacherId" resultType="com.qmth.teachcloud.report.business.bean.result.TBExamCourseResult">

+ 1 - 1
teachcloud-report/src/test/java/com/qmth/teachcloud/report/AnalyzeForStudentServiceTest.java

@@ -106,7 +106,7 @@ public class AnalyzeForStudentServiceTest {
 
     @Test
     public void buildAnalyzeExamCourseCollegeTeacher() {
-        Long examId = 2L;
+        Long examId = 3L;
         String courseCode = null;
         analyzeForReportService.buildAnalyzeExamCourseCollegeTeacher(examId,courseCode);
     }