Browse Source

Merge branch 'dev_v2.1.0' of http://git.qmth.com.cn/wangliang/distributed-print-service into dev_v2.1.0

xiaof 4 years ago
parent
commit
7c665755ae

+ 1 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TeachcloudCommonServiceImpl.java

@@ -392,7 +392,7 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
 
         }
         map.put("url", pathUrl);
-        if(attachment.getType().equals(".html")) {
+        if (attachment.getType().equals(".html")) {
             String htmlMd5 = (String) jsonObject.get("htmlMd5");
             map.put("md5", htmlMd5);
         } else {

+ 10 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/ReportCommonService.java

@@ -33,6 +33,16 @@ public interface ReportCommonService {
      */
     CollegeAndSchoolGradeDistributionResult findCourseDistribution(Long examId, String courseCode, Long collegeId);
 
+    /**
+     * 开课学院分数段
+     *
+     * @param examId
+     * @param courseCode
+     * @param collegeId
+     * @return
+     */
+    Object surveyTeacherDistribution(Long examId, String courseCode, Long collegeId);
+
     /**
      * 学院学科报表查询维度
      *

+ 11 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/TAExamCourseService.java

@@ -59,4 +59,15 @@ public interface TAExamCourseService extends IService<TAExamCourse> {
      * @return
      */
     CollegeAndCourseResult surveyInspectAnalyseView(Long schoolId, SemesterEnum semester, Long examId, String courseCode);
+
+    /**
+     * 开课课程考试总览图表接口
+     *
+     * @param schoolId
+     * @param semester
+     * @param examId
+     * @param courseCode
+     * @return
+     */
+    Object surveyTeacherView(Long schoolId, SemesterEnum semester, Long examId, String courseCode);
 }

+ 107 - 3
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/ReportCommonServiceImpl.java

@@ -46,9 +46,6 @@ public class ReportCommonServiceImpl implements ReportCommonService {
     @Resource
     TBCommonLevelConfigService tbCommonLevelConfigService;
 
-    @Resource
-    TBPaperStructService tbPaperStructService;
-
     @Resource
     TBAnswerService tbAnswerService;
 
@@ -209,6 +206,113 @@ public class ReportCommonServiceImpl implements ReportCommonService {
         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;
+    }
+
     /**
      * 学院学科报表查询维度
      *

+ 44 - 22
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/TAExamCourseServiceImpl.java

@@ -1,7 +1,9 @@
 package com.qmth.teachcloud.report.business.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.gson.Gson;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
@@ -13,7 +15,9 @@ import com.qmth.teachcloud.report.business.enums.PublishStatusEnum;
 import com.qmth.teachcloud.report.business.enums.SemesterEnum;
 import com.qmth.teachcloud.report.business.mapper.TAExamCourseMapper;
 import com.qmth.teachcloud.report.business.mapper.TAExamCourseRecordMapper;
-import com.qmth.teachcloud.report.business.service.*;
+import com.qmth.teachcloud.report.business.service.ReportCommonService;
+import com.qmth.teachcloud.report.business.service.TAExamCourseService;
+import com.qmth.teachcloud.report.business.service.TBPaperStructService;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 
@@ -38,33 +42,12 @@ public class TAExamCourseServiceImpl extends ServiceImpl<TAExamCourseMapper, TAE
     @Resource
     TAExamCourseRecordMapper taExamCourseRecordMapper;
 
-    @Resource
-    TBPaperService tbPaperService;
-
-    @Resource
-    TAExamCourseCollegeInspectService taExamCourseCollegeInspectService;
-
-    @Resource
-    TBDimensionService tbDimensionService;
-
-    @Resource
-    TBCommonLevelConfigService tbCommonLevelConfigService;
-
     @Resource
     TBPaperStructService tbPaperStructService;
 
-    @Resource
-    TBAnswerService tbAnswerService;
-
-    @Resource
-    TAExamCourseCollegeTeacherService taExamCourseCollegeTeacherService;
-
     @Resource
     ReportCommonService reportCommonService;
 
-    @Resource
-    TAExamCourseRecordService taExamCourseRecordService;
-
     /**
      * 开课课程考试总览列表接口
      *
@@ -170,4 +153,43 @@ public class TAExamCourseServiceImpl extends ServiceImpl<TAExamCourseMapper, TAE
         return new CollegeAndCourseResult(courseInfoResult, collegeAndSchoolGradeDistributionResult, dimensionAnalyzeResult,
                 questionInfoResult, teacherInfoListResult, questionListResult);
     }
+
+    /**
+     * 开课课程考试总览图表接口
+     *
+     * @param schoolId
+     * @param semester
+     * @param examId
+     * @param courseCode
+     * @return
+     */
+    @Override
+    public Object surveyTeacherView(Long schoolId, SemesterEnum semester, Long examId, String courseCode) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        if (Objects.isNull(sysUser)) {
+            throw ExceptionResultEnum.NOT_LOGIN.exception();
+        }
+        //取总体和应届平均分
+        QueryWrapper<TAExamCourse> taExamCourseQueryWrapper = new QueryWrapper<>();
+        if (Objects.nonNull(schoolId)) {
+            taExamCourseQueryWrapper.lambda().eq(TAExamCourse::getSchoolId, schoolId);
+        }
+        if (Objects.nonNull(examId)) {
+            taExamCourseQueryWrapper.lambda().eq(TAExamCourse::getExamId, examId);
+        }
+        if (Objects.nonNull(courseCode)) {
+            taExamCourseQueryWrapper.lambda().eq(TAExamCourse::getCourseCode, courseCode);
+        }
+        TAExamCourse taExamCourse = this.getOne(taExamCourseQueryWrapper);
+        Gson gson = new Gson();
+        TBExamCourseResult tbExamCourseResult = gson.fromJson(gson.toJson(taExamCourse), TBExamCourseResult.class);
+
+        //学院学科报表科目描述
+        Object o = reportCommonService.surveyTeacherDistribution(examId, courseCode, sysUser.getOrgId());
+        //查找试卷结构
+        List<TBPaperStructResult> questionDatasource = tbPaperStructService.findQuestionInfo(examId, courseCode);
+        //查找题目信息
+        QuestionListResult questionListResult = reportCommonService.findQuestionInfo(examId, courseCode, sysUser.getOrgId(), questionDatasource);
+        return null;
+    }
 }

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

@@ -8,7 +8,7 @@
         on tbs.course_code = bc.code
         join sys_org so on
         <choose>
-            <when test="inspect != null and inspect == false">
+            <when test="inspect != null and inspect == true">
                 so.id = tbs.inspect_college_id
             </when>
             <otherwise>

+ 14 - 3
teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/CourseController.java

@@ -27,6 +27,7 @@ public class CourseController {
 
     @Resource
     TAExamCourseService taExamCourseService;
+
     @Resource
     CourseReportService courseReportService;
 
@@ -41,14 +42,24 @@ public class CourseController {
         return ResultUtil.ok(taExamCourseService.surveyTeacherList(new Page<>(pageNumber, pageSize), SystemConstant.convertIdToLong(examId), semester, Objects.isNull(schoolId) ? (Long) ServletUtil.getRequestHeaderSchoolId() : SystemConstant.convertIdToLong(schoolId)));
     }
 
+    @ApiOperation(value = "开课课程考试总览图表接口")
+    @RequestMapping(value = "/survey_teacher/view", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "考试科目信息", response = TAExamCourseResult.class)})
+    public Result surveyTeacherView(@ApiParam(value = "考试id", required = true) @RequestParam String examId,
+                                    @ApiParam(value = "学期", required = true) @RequestParam SemesterEnum semester,
+                                    @ApiParam(value = "学校id", required = false) @RequestParam(required = false) String schoolId,
+                                    @ApiParam(value = "科目编码", required = true) @RequestParam String courseCode) {
+        return ResultUtil.ok(taExamCourseService.surveyTeacherView(SystemConstant.convertIdToLong(schoolId), semester, SystemConstant.convertIdToLong(examId), courseCode));
+    }
+
     @ApiOperation(value = "考察课程考试总览-公共课概况接口")
     @RequestMapping(value = "/survey_inspect/view", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "考试科目信息", response = TAExamCourseResult.class)})
     public Result surveyInspectView(@ApiParam(value = "考试id", required = true) @RequestParam String examId,
-                                           @ApiParam(value = "学期", required = true) @RequestParam SemesterEnum semester,
-                                           @ApiParam(value = "学校id", required = false) @RequestParam(required = false) String schoolId) {
+                                    @ApiParam(value = "学期", required = true) @RequestParam SemesterEnum semester,
+                                    @ApiParam(value = "学校id", required = false) @RequestParam(required = false) String schoolId) {
         Object obj = ServletUtil.getRequestHeaderSchoolId();
-        Long tmp =  SystemConstant.convertIdToLong(String.valueOf(obj));
+        Long tmp = SystemConstant.convertIdToLong(String.valueOf(obj));
 
         return ResultUtil.ok(courseReportService.findInfoInspectCourseExamTotal(Objects.isNull(schoolId) ? tmp : SystemConstant.convertIdToLong(schoolId), semester, SystemConstant.convertIdToLong(examId)));
     }