浏览代码

日常更新

wangliang 4 年之前
父节点
当前提交
ddb0149517
共有 13 个文件被更改,包括 566 次插入27 次删除
  1. 2 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/ExceptionResultEnum.java
  2. 47 0
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/result/CollegeAndSchoolGradeDistributionResult.java
  3. 6 6
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/result/CourseDimensionResult.java
  4. 89 0
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/result/DimensionInfoResult.java
  5. 20 6
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/result/ExamRecordResult.java
  6. 58 0
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/result/GradeDistributionResult.java
  7. 94 0
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/result/PiecewiseDistributionResult.java
  8. 33 0
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/enums/GradeScopeEnum.java
  9. 38 0
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/enums/PiecewiseScopeEnum.java
  10. 12 1
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/ReportCommonService.java
  11. 160 12
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/ReportCommonServiceImpl.java
  12. 6 2
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/TAExamCourseServiceImpl.java
  13. 1 0
      teachcloud-report-business/src/main/resources/mapper/TAExamCourseRecordMapper.xml

+ 2 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/ExceptionResultEnum.java

@@ -81,6 +81,8 @@ public enum ExceptionResultEnum {
 
     DATA_COUNT_EXCEPTION(HttpStatus.INTERNAL_SERVER_ERROR, 5000031, "得到的数据条数异常,应该有且仅有一条数据"),
 
+    DATA_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, 5000032, "数据异常"),
+
     /**
      * 401
      */

+ 47 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/result/CollegeAndSchoolGradeDistributionResult.java

@@ -0,0 +1,47 @@
+package com.qmth.teachcloud.report.business.bean.result;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Description: 学院和学校百分比
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/6/10
+ */
+public class CollegeAndSchoolGradeDistributionResult implements Serializable {
+
+    @ApiModelProperty(value = "分数段等级list")
+    private List<GradeDistributionResult> gradeDistributionList;
+
+    @ApiModelProperty(value = "分数段等级list")
+    private List<PiecewiseDistributionResult> piecewiseDistributionList;
+
+    public CollegeAndSchoolGradeDistributionResult() {
+
+    }
+
+    public CollegeAndSchoolGradeDistributionResult(List<GradeDistributionResult> gradeDistributionList, List<PiecewiseDistributionResult> piecewiseDistributionList) {
+        this.gradeDistributionList = gradeDistributionList;
+        this.piecewiseDistributionList = piecewiseDistributionList;
+    }
+
+    public List<GradeDistributionResult> getGradeDistributionList() {
+        return gradeDistributionList;
+    }
+
+    public void setGradeDistributionList(List<GradeDistributionResult> gradeDistributionList) {
+        this.gradeDistributionList = gradeDistributionList;
+    }
+
+    public List<PiecewiseDistributionResult> getPiecewiseDistributionList() {
+        return piecewiseDistributionList;
+    }
+
+    public void setPiecewiseDistributionList(List<PiecewiseDistributionResult> piecewiseDistributionList) {
+        this.piecewiseDistributionList = piecewiseDistributionList;
+    }
+}

+ 6 - 6
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/result/CourseDimensionResult.java

@@ -44,10 +44,10 @@ public class CourseDimensionResult implements Serializable {
     private Integer totalCount;
 
     @ApiModelProperty(value = "学校比率")
-    private BigDecimal schScoreRate;
+    private Double schScoreRate;
 
     @ApiModelProperty(value = "学院比率")
-    private BigDecimal colScoreRate;
+    private Double colScoreRate;
 
     @ApiModelProperty(value = "学院名称")
     private String collegeName;
@@ -116,19 +116,19 @@ public class CourseDimensionResult implements Serializable {
         this.totalCount = totalCount;
     }
 
-    public BigDecimal getSchScoreRate() {
+    public Double getSchScoreRate() {
         return schScoreRate;
     }
 
-    public void setSchScoreRate(BigDecimal schScoreRate) {
+    public void setSchScoreRate(Double schScoreRate) {
         this.schScoreRate = schScoreRate;
     }
 
-    public BigDecimal getColScoreRate() {
+    public Double getColScoreRate() {
         return colScoreRate;
     }
 
-    public void setColScoreRate(BigDecimal colScoreRate) {
+    public void setColScoreRate(Double colScoreRate) {
         this.colScoreRate = colScoreRate;
     }
 

+ 89 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/result/DimensionInfoResult.java

@@ -0,0 +1,89 @@
+package com.qmth.teachcloud.report.business.bean.result;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 维度info result
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/6/10
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class DimensionInfoResult implements Serializable {
+
+    @ApiModelProperty(value = "维度编码")
+    private String dimensionCode;
+
+    @ApiModelProperty(value = "维度名称")
+    private String dimensionName;
+
+    @ApiModelProperty(value = "统计")
+    private String totalCount;
+
+    @ApiModelProperty(value = "学校得分率")
+    private String schScoreRate;
+
+    @ApiModelProperty(value = "学院得分率")
+    private String colScoreRate;
+
+    public DimensionInfoResult() {
+
+    }
+
+    public DimensionInfoResult(String dimensionCode, String dimensionName, String totalCount, String schScoreRate, String colScoreRate) {
+        this.dimensionCode = dimensionCode;
+        this.dimensionName = dimensionName;
+        this.totalCount = totalCount;
+        this.schScoreRate = schScoreRate;
+        this.colScoreRate = colScoreRate;
+    }
+
+    public DimensionInfoResult(String dimensionCode, String dimensionName) {
+        this.dimensionCode = dimensionCode;
+        this.dimensionName = dimensionName;
+    }
+
+    public String getDimensionCode() {
+        return dimensionCode;
+    }
+
+    public void setDimensionCode(String dimensionCode) {
+        this.dimensionCode = dimensionCode;
+    }
+
+    public String getDimensionName() {
+        return dimensionName;
+    }
+
+    public void setDimensionName(String dimensionName) {
+        this.dimensionName = dimensionName;
+    }
+
+    public String getTotalCount() {
+        return totalCount;
+    }
+
+    public void setTotalCount(String totalCount) {
+        this.totalCount = totalCount;
+    }
+
+    public String getSchScoreRate() {
+        return schScoreRate;
+    }
+
+    public void setSchScoreRate(String schScoreRate) {
+        this.schScoreRate = schScoreRate;
+    }
+
+    public String getColScoreRate() {
+        return colScoreRate;
+    }
+
+    public void setColScoreRate(String colScoreRate) {
+        this.colScoreRate = colScoreRate;
+    }
+}

+ 20 - 6
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/result/ExamRecordResult.java

@@ -1,5 +1,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;
 
 import java.io.Serializable;
@@ -20,11 +22,23 @@ public class ExamRecordResult implements Serializable {
     @ApiModelProperty(value = "学院名称")
     private String collegeName;
 
+    @ApiModelProperty(value = "学院id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long collegeId;
+
     @ApiModelProperty(value = "赋分分数")
-    private BigDecimal assignedScore;
+    private Double assignedScore;
 
     @ApiModelProperty(value = "百分位等级")
-    private BigDecimal percentGrade;
+    private Double percentGrade;
+
+    public Long getCollegeId() {
+        return collegeId;
+    }
+
+    public void setCollegeId(Long collegeId) {
+        this.collegeId = collegeId;
+    }
 
     public String getTicketNumber() {
         return ticketNumber;
@@ -42,19 +56,19 @@ public class ExamRecordResult implements Serializable {
         this.collegeName = collegeName;
     }
 
-    public BigDecimal getAssignedScore() {
+    public Double getAssignedScore() {
         return assignedScore;
     }
 
-    public void setAssignedScore(BigDecimal assignedScore) {
+    public void setAssignedScore(Double assignedScore) {
         this.assignedScore = assignedScore;
     }
 
-    public BigDecimal getPercentGrade() {
+    public Double getPercentGrade() {
         return percentGrade;
     }
 
-    public void setPercentGrade(BigDecimal percentGrade) {
+    public void setPercentGrade(Double percentGrade) {
         this.percentGrade = percentGrade;
     }
 }

+ 58 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/result/GradeDistributionResult.java

@@ -0,0 +1,58 @@
+package com.qmth.teachcloud.report.business.bean.result;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 百分位result
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/6/10
+ */
+public class GradeDistributionResult implements Serializable {
+
+    @ApiModelProperty(value = "学院人数")
+    private Double colCount;
+
+    @ApiModelProperty(value = "学校人数")
+    private Double schCount;
+
+    @ApiModelProperty(value = "描述")
+    private String describe;
+
+    public GradeDistributionResult() {
+
+    }
+
+    public GradeDistributionResult(Double colCount, Double schCount, String describe) {
+        this.colCount = colCount;
+        this.schCount = schCount;
+        this.describe = describe;
+    }
+
+    public Double getColCount() {
+        return colCount;
+    }
+
+    public void setColCount(Double colCount) {
+        this.colCount = colCount;
+    }
+
+    public Double getSchCount() {
+        return schCount;
+    }
+
+    public void setSchCount(Double schCount) {
+        this.schCount = schCount;
+    }
+
+    public String getDescribe() {
+        return describe;
+    }
+
+    public void setDescribe(String describe) {
+        this.describe = describe;
+    }
+}

+ 94 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/result/PiecewiseDistributionResult.java

@@ -0,0 +1,94 @@
+package com.qmth.teachcloud.report.business.bean.result;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 分数段result
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/6/10
+ */
+public class PiecewiseDistributionResult implements Serializable {
+
+    @ApiModelProperty(value = "名称")
+    private String name;
+
+    @ApiModelProperty(value = "学院人数")
+    private Double colCount;
+
+    @ApiModelProperty(value = "学院人数比率")
+    private Double colCountRate;
+
+    @ApiModelProperty(value = "学校人数")
+    private Double schCount;
+
+    @ApiModelProperty(value = "学校人数比率")
+    private Double schCountRate;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    public PiecewiseDistributionResult() {
+
+    }
+
+    public PiecewiseDistributionResult(String name, Double colCount, Double colCountRate, Double schCount, Double schCountRate, String remark) {
+        this.name = name;
+        this.colCount = colCount;
+        this.colCountRate = colCountRate;
+        this.schCount = schCount;
+        this.schCountRate = schCountRate;
+        this.remark = remark;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Double getColCount() {
+        return colCount;
+    }
+
+    public void setColCount(Double colCount) {
+        this.colCount = colCount;
+    }
+
+    public Double getColCountRate() {
+        return colCountRate;
+    }
+
+    public void setColCountRate(Double colCountRate) {
+        this.colCountRate = colCountRate;
+    }
+
+    public Double getSchCount() {
+        return schCount;
+    }
+
+    public void setSchCount(Double schCount) {
+        this.schCount = schCount;
+    }
+
+    public Double getSchCountRate() {
+        return schCountRate;
+    }
+
+    public void setSchCountRate(Double schCountRate) {
+        this.schCountRate = schCountRate;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+}

+ 33 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/enums/GradeScopeEnum.java

@@ -0,0 +1,33 @@
+package com.qmth.teachcloud.report.business.enums;
+
+/**
+ * @Description: 百分位登记enum
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/6/10
+ */
+public enum GradeScopeEnum {
+    LOW_THAN_SIXTY("[0,60)", "60以下"),
+    SIXTY_TO_SEVENTY("[60,70)", "60-70"),
+    SEVENTY_TO_EIGHTY("[70,80)", "70-80"),
+    EIGHTY_TO_NINETY("[80,90)", "80-90"),
+    NINETY_TO_NINETY_FIVE("[90,95)", "90-95"),
+    NINETY_FIVE_TO_ONE_HUNDRED("[95,100)", "95-100");
+
+    GradeScopeEnum(String scope, String describe) {
+        this.scope = scope;
+        this.describe = describe;
+    }
+
+    private final String scope;
+    private final String describe;
+
+    public String getScope() {
+        return scope;
+    }
+
+    public String getDescribe() {
+        return describe;
+    }
+}

+ 38 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/enums/PiecewiseScopeEnum.java

@@ -0,0 +1,38 @@
+package com.qmth.teachcloud.report.business.enums;
+
+/**
+ * @Description: 分数段登记
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/6/10
+ */
+public enum PiecewiseScopeEnum {
+    TOP_10("[90,100)", "TOP10", "全体百分等级大于等于10的人数比例"),
+    HIGH_SUB_LEVEL("[75,100)", "高分段", "全体百分等级大于等于75的人数比例,包含TOP10;"),
+    Good("[50,75)", "良好", "百分等级小于75,大于等于50的人数比例;"),
+    MEDIUM("[25,50)", "中等", "全体百分等级小于50,大于等于25的人数比例;"),
+    LOW_SUB_LEVEL("[0,25)", "低分段", "全体百分等级低于25的人数比例;");
+
+    PiecewiseScopeEnum(String scope, String name, String remark) {
+        this.scope = scope;
+        this.name = name;
+        this.remark = remark;
+    }
+
+    private final String scope;
+    private final String name;
+    private final String remark;
+
+    public String getScope() {
+        return scope;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+}

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

@@ -1,5 +1,6 @@
 package com.qmth.teachcloud.report.business.service;
 
+import com.qmth.teachcloud.report.business.bean.result.CollegeAndSchoolGradeDistributionResult;
 import com.qmth.teachcloud.report.business.bean.result.CourseInfoResult;
 
 /**
@@ -29,5 +30,15 @@ public interface ReportCommonService {
      * @param collegeId
      * @return
      */
-    Object findCourseDistribution(Long examId, String courseCode, Long collegeId);
+    CollegeAndSchoolGradeDistributionResult findCourseDistribution(Long examId, String courseCode, Long collegeId);
+
+    /**
+     * 学院学科报表查询维度
+     *
+     * @param examId
+     * @param courseCode
+     * @param collegeId
+     * @return
+     */
+    Object findDimensionInfo(Long examId, String courseCode, Long collegeId);
 }

+ 160 - 12
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/ReportCommonServiceImpl.java

@@ -3,21 +3,19 @@ package com.qmth.teachcloud.report.business.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.google.gson.Gson;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
-import com.qmth.teachcloud.report.business.bean.result.CourseInfoResult;
-import com.qmth.teachcloud.report.business.bean.result.DescriptiveStatisticsResult;
-import com.qmth.teachcloud.report.business.bean.result.TAExamCourseCollegeInspectResult;
-import com.qmth.teachcloud.report.business.bean.result.TBPaperInfoResult;
+import com.qmth.teachcloud.report.business.bean.result.*;
 import com.qmth.teachcloud.report.business.entity.TBPaper;
-import com.qmth.teachcloud.report.business.service.ReportCommonService;
-import com.qmth.teachcloud.report.business.service.TAExamCourseCollegeInspectService;
-import com.qmth.teachcloud.report.business.service.TBPaperService;
+import com.qmth.teachcloud.report.business.enums.GradeScopeEnum;
+import com.qmth.teachcloud.report.business.enums.PiecewiseScopeEnum;
+import com.qmth.teachcloud.report.business.service.*;
+import com.qmth.teachcloud.report.business.utils.AnalyzeScopeUtil;
+import com.qmth.teachcloud.report.business.utils.MathUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -37,6 +35,12 @@ public class ReportCommonServiceImpl implements ReportCommonService {
     @Resource
     TAExamCourseCollegeInspectService taExamCourseCollegeInspectService;
 
+    @Resource
+    TAExamCourseRecordService taExamCourseRecordService;
+
+    @Resource
+    TBDimensionService tbDimensionService;
+
     /**
      * 学院学科报表查询科目信息
      *
@@ -71,7 +75,7 @@ public class ReportCommonServiceImpl implements ReportCommonService {
 
         // 学院该科目的描述统计
         List<TAExamCourseCollegeInspectResult> collegeDescriptiveStatisticsList = taExamCourseCollegeInspectResultList
-                .stream().filter(e -> collegeId.intValue() == e.getCollegeId().intValue()).collect(Collectors.toList());
+                .stream().filter(e -> collegeId.longValue() == e.getCollegeId().longValue()).collect(Collectors.toList());
         if (collegeDescriptiveStatisticsList.size() != 1) {
             throw ExceptionResultEnum.DATA_COUNT_EXCEPTION.exception();
         }
@@ -95,7 +99,151 @@ public class ReportCommonServiceImpl implements ReportCommonService {
      * @return
      */
     @Override
-    public Object findCourseDistribution(Long examId, String courseCode, Long collegeId) {
-        return null;
+    public CollegeAndSchoolGradeDistributionResult findCourseDistribution(Long examId, String courseCode, Long collegeId) {
+        List<ExamRecordResult> examPaperTikForSchool = taExamCourseRecordService.findExamRecordByExamIdAndCourseCode(examId, courseCode);
+        List<ExamRecordResult> examPaperTikForCollege = examPaperTikForSchool
+                .stream().filter(e -> collegeId.longValue() == e.getCollegeId().longValue()).collect(Collectors.toList());
+
+        double colTotalCount = examPaperTikForCollege.size(); // 学院总参考人数
+        double schTotalCount = examPaperTikForSchool.size(); // 全校总参考人数
+        if (schTotalCount < 1 || colTotalCount < 1) {
+            throw ExceptionResultEnum.DATA_ERROR.exception();
+        }
+
+        // 计算成绩分布图
+        List<GradeDistributionResult> gradeDistributionList = new ArrayList<>();
+        for (GradeScopeEnum value : GradeScopeEnum.values()) {
+            String describe = value.getDescribe();
+            double colCount = 0;
+            double schCount = 0;
+
+            Map<String, Object> scopeMap = AnalyzeScopeUtil.analyzeScope(value.getScope());
+            String minSign = String.valueOf(scopeMap.get("minSign"));
+            String maxSign = String.valueOf(scopeMap.get("maxSign"));
+            double minValue = Double.parseDouble(String.valueOf(scopeMap.get("minValue")));
+            double maxValue = Double.parseDouble(String.valueOf(scopeMap.get("maxValue")));
+            if ("(".equals(minSign) && ")".equals(maxSign)) {
+                colCount = (int) examPaperTikForCollege.stream()
+                        .filter(e -> minValue < e.getAssignedScore().doubleValue() && maxValue > e.getAssignedScore().doubleValue()).count();
+                schCount = (int) examPaperTikForSchool.stream()
+                        .filter(e -> minValue < e.getAssignedScore().doubleValue() && maxValue > e.getAssignedScore().doubleValue()).count();
+
+            } else if ("(".equals(minSign) && "]".equals(maxSign)) {
+                colCount = (int) examPaperTikForCollege.stream()
+                        .filter(e -> minValue < e.getAssignedScore().doubleValue() && maxValue >= e.getAssignedScore().doubleValue()).count();
+                schCount = (int) examPaperTikForSchool.stream()
+                        .filter(e -> minValue < e.getAssignedScore().doubleValue() && maxValue >= e.getAssignedScore().doubleValue()).count();
+
+            } else if ("[".equals(minSign) && ")".equals(maxSign)) {
+                colCount = (int) examPaperTikForCollege.stream()
+                        .filter(e -> minValue <= e.getAssignedScore().doubleValue() && maxValue > e.getAssignedScore().doubleValue()).count();
+                schCount = (int) examPaperTikForSchool.stream()
+                        .filter(e -> minValue <= e.getAssignedScore().doubleValue() && maxValue > e.getAssignedScore().doubleValue()).count();
+
+            } else if ("[".equals(minSign) && "]".equals(maxSign)) {
+                colCount = (int) examPaperTikForCollege.stream()
+                        .filter(e -> minValue <= e.getAssignedScore().doubleValue() && maxValue >= e.getAssignedScore().doubleValue()).count();
+                schCount = (int) examPaperTikForSchool.stream()
+                        .filter(e -> minValue <= e.getAssignedScore().doubleValue() && maxValue >= e.getAssignedScore().doubleValue()).count();
+            }
+
+            gradeDistributionList.add(new GradeDistributionResult(colCount, schCount, describe));
+        }
+
+        // 计算分数段分布
+        List<PiecewiseDistributionResult> piecewiseDistributionList = new ArrayList<>();
+        for (PiecewiseScopeEnum value : PiecewiseScopeEnum.values()) {
+            String remark = value.getRemark();
+            String name = value.getName();
+            double colCount = 0;
+            double schCount = 0;
+
+            Map<String, Object> scopeMap = AnalyzeScopeUtil.analyzeScope(value.getScope());
+            String minSign = String.valueOf(scopeMap.get("minSign"));
+            String maxSign = String.valueOf(scopeMap.get("maxSign"));
+            double minValue = Double.parseDouble(String.valueOf(scopeMap.get("minValue")));
+            double maxValue = Double.parseDouble(String.valueOf(scopeMap.get("maxValue")));
+            if ("(".equals(minSign) && ")".equals(maxSign)) {
+                colCount = (int) examPaperTikForCollege.stream()
+                        .filter(e -> minValue < e.getPercentGrade().doubleValue() && maxValue > e.getPercentGrade().doubleValue()).count();
+                schCount = (int) examPaperTikForSchool.stream()
+                        .filter(e -> minValue < e.getPercentGrade().doubleValue() && maxValue > e.getPercentGrade().doubleValue()).count();
+
+            } else if ("(".equals(minSign) && "]".equals(maxSign)) {
+                colCount = (int) examPaperTikForCollege.stream()
+                        .filter(e -> minValue < e.getPercentGrade().doubleValue() && maxValue >= e.getPercentGrade().doubleValue()).count();
+                schCount = (int) examPaperTikForSchool.stream()
+                        .filter(e -> minValue < e.getPercentGrade().doubleValue() && maxValue >= e.getPercentGrade().doubleValue()).count();
+
+            } else if ("[".equals(minSign) && ")".equals(maxSign)) {
+                colCount = (int) examPaperTikForCollege.stream()
+                        .filter(e -> minValue <= e.getPercentGrade().doubleValue() && maxValue > e.getPercentGrade().doubleValue()).count();
+                schCount = (int) examPaperTikForSchool.stream()
+                        .filter(e -> minValue <= e.getPercentGrade().doubleValue() && maxValue > e.getPercentGrade().doubleValue()).count();
+
+            } else if ("[".equals(minSign) && "]".equals(maxSign)) {
+                colCount = (int) examPaperTikForCollege.stream()
+                        .filter(e -> minValue <= e.getPercentGrade().doubleValue() && maxValue >= e.getPercentGrade().doubleValue()).count();
+                schCount = (int) examPaperTikForSchool.stream()
+                        .filter(e -> minValue <= e.getPercentGrade().doubleValue() && maxValue >= e.getPercentGrade().doubleValue()).count();
+            }
+            double colCountRate = MathUtil.formatDouble2(colCount / colTotalCount * 100); //本院比率 保留2位小数
+            double schCountRate = MathUtil.formatDouble2(schCount / schTotalCount * 100); //全校比率 保留2位小数
+
+            piecewiseDistributionList.add(new PiecewiseDistributionResult(name, colCount, colCountRate, schCount, schCountRate, remark));
+        }
+        return new CollegeAndSchoolGradeDistributionResult(gradeDistributionList, piecewiseDistributionList);
+    }
+
+    /**
+     * 学院学科报表查询维度
+     *
+     * @param examId
+     * @param courseCode
+     * @param collegeId
+     * @return
+     */
+    @Override
+    public Object findDimensionInfo(Long examId, String courseCode, Long collegeId) {
+        List<Map<String, Object>> dimensionAnalyzeList = new ArrayList<>();
+        //查找维度
+        List<CourseDimensionResult> dimensionInfoDatasource = tbDimensionService.findDimensionInfo(examId, courseCode, collegeId);
+        if (dimensionInfoDatasource.size() < 1) {
+            throw ExceptionResultEnum.DATA_ERROR.exception();
+        }
+        Set<String> moduleSet = dimensionInfoDatasource.stream().map(e -> e.getModule()).collect(Collectors.toSet()); // 考察模块集合
+        for (String module : moduleSet) {
+            List<CourseDimensionResult> dimensionInfoList = dimensionInfoDatasource
+                    .stream().filter(e -> module.equals(e.getModule())).collect(Collectors.toList());
+
+
+            List<DimensionInfoResult> dioList = new ArrayList<>();
+            List<DimensionInfoResult> batterThanAll = new ArrayList<>(); // 掌握较好
+            List<DimensionInfoResult> worseThanAll = new ArrayList<>(); // 掌握较差
+            for (CourseDimensionResult courseDimensionResult : dimensionInfoList) {
+                String dimensionCode = String.valueOf(courseDimensionResult.getDimensionCode());
+                String dimensionName = String.valueOf(courseDimensionResult.getDimensionName());
+
+                double schScoreRate = courseDimensionResult.getSchScoreRate();
+                double colScoreRate = courseDimensionResult.getColScoreRate();
+
+                if (colScoreRate >= schScoreRate) {
+                    batterThanAll.add(new DimensionInfoResult(dimensionCode, dimensionName));
+                } else {
+                    worseThanAll.add(new DimensionInfoResult(dimensionCode, dimensionName));
+                }
+                dioList.add(new DimensionInfoResult(dimensionCode, dimensionName, String.valueOf(courseDimensionResult.getTotalCount()), String.valueOf(schScoreRate), String.valueOf(colScoreRate)));
+            }
+            Map<String, Object> moduleMap = new HashMap<>();
+            moduleMap.put("moduleName", module);
+            moduleMap.put("dioList", dioList);
+            moduleMap.put("batterThanAll", batterThanAll);
+            moduleMap.put("worseThanAll", worseThanAll);
+            dimensionAnalyzeList.add(moduleMap);
+        }
+
+        Map<String, Object> dimensionAnalyzeMap = new HashMap<>();
+        dimensionAnalyzeMap.put("dimensionAnalyzeList", dimensionAnalyzeList);
+        return dimensionAnalyzeMap;
     }
 }

+ 6 - 2
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/TAExamCourseServiceImpl.java

@@ -163,9 +163,13 @@ public class TAExamCourseServiceImpl extends ServiceImpl<TAExamCourseMapper, TAE
 //        //查找学校科目维度
 //        List<TAExamCourseCollegeInspectResult> taExamCourseSchoolInspectResultList = taExamCourseCollegeInspectService.findCourseDescriptiveStatisticsForSchool(examId, courseCode);
 
+        //学院学科报表查询科目信息
         CourseInfoResult courseInfoResult = reportCommonService.findCourseInfo(examId, courseCode, sysUser.getOrgId());
-        //查找维度
-        List<CourseDimensionResult> courseDimensionResultList = tbDimensionService.findDimensionInfo(examId, courseCode, sysUser.getOrgId());
+        //学院学科报表科目描述
+        CollegeAndSchoolGradeDistributionResult collegeAndSchoolGradeDistributionResult = reportCommonService.findCourseDistribution(examId, courseCode, sysUser.getOrgId());
+
+//        //查找维度
+//        List<CourseDimensionResult> courseDimensionResultList = tbDimensionService.findDimensionInfo(examId, courseCode, sysUser.getOrgId());
 
         //查找难易度
         QueryWrapper<TBCommonLevelConfig> tbCommonLevelConfigQueryWrapper = new QueryWrapper<>();

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

@@ -101,6 +101,7 @@
         SELECT
             tbes.ticket_number AS ticketNumber,
             (select so.name from sys_org so where so.id = taecr.inspect_college_id) AS collegeName,
+            taecr.inspect_college_id AS collegeId,
             assigned_score AS assignedScore,
             percent_grade AS percentGrade
         FROM