|
@@ -46,9 +46,6 @@ public class ReportCommonServiceImpl implements ReportCommonService {
|
|
@Resource
|
|
@Resource
|
|
TBCommonLevelConfigService tbCommonLevelConfigService;
|
|
TBCommonLevelConfigService tbCommonLevelConfigService;
|
|
|
|
|
|
- @Resource
|
|
|
|
- TBPaperStructService tbPaperStructService;
|
|
|
|
-
|
|
|
|
@Resource
|
|
@Resource
|
|
TBAnswerService tbAnswerService;
|
|
TBAnswerService tbAnswerService;
|
|
|
|
|
|
@@ -209,6 +206,113 @@ public class ReportCommonServiceImpl implements ReportCommonService {
|
|
return new CollegeAndSchoolGradeDistributionResult(gradeDistributionList, piecewiseDistributionList);
|
|
return new CollegeAndSchoolGradeDistributionResult(gradeDistributionList, piecewiseDistributionList);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 开课学院分数段
|
|
|
|
+ *
|
|
|
|
+ * @param examId
|
|
|
|
+ * @param courseCode
|
|
|
|
+ * @param collegeId
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public Object surveyTeacherDistribution(Long examId, String courseCode, Long collegeId) {
|
|
|
|
+ //TODO 待添加
|
|
|
|
+ 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 null;
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 学院学科报表查询维度
|
|
* 学院学科报表查询维度
|
|
*
|
|
*
|