浏览代码

我的课堂考试分析-试题难度得分情况分析接口新增

caozixuan 3 年之前
父节点
当前提交
51375cec89

+ 14 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

@@ -247,7 +247,21 @@ public class SystemConstant {
         }
     }
 
+    /**
+     * String 类型的参数不为空
+     * @param str 参数
+     * @return true :不为空、false :为空
+     */
     public static boolean strNotNull(String str){
         return str != null && str.length() > 0 && !str.equals("null");
     }
+
+    /**
+     * Long 类型的参数不为空
+     * @param x 参数
+     * @return true:不为空、false:为空
+     */
+    public static boolean longNotNull(Long x){
+        return x != null && x > 0;
+    }
 }

+ 11 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/mapper/TBDimensionMapper.java

@@ -36,4 +36,15 @@ public interface TBDimensionMapper extends BaseMapper<TBDimension> {
      * @return
      */
     List<CourseDimensionResult> findDimensionByTeacherInfo(@Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("teacherId") Long teacherId);
+
+    /**
+     * 查找某任课教师在某学院下所有考生在考察点得分情况统计
+     *
+     * @param examId           考试id
+     * @param courseCode       课程编号
+     * @param teacherId        教师id
+     * @param inspectCollegeId 考察学院id
+     * @return 考察点统计信息
+     */
+    List<CourseDimensionResult> findDimensionByTeacherCollegeInfo(@Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("teacherId") Long teacherId, @Param("inspectCollegeId") Long inspectCollegeId);
 }

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

@@ -57,9 +57,10 @@ public interface TAExamCourseCollegeTeacherService extends IService<TAExamCourse
      * @param examId
      * @param courseCode
      * @param collegeId
+     * @param teacherId
      * @return
      */
-    DimensionAnalyzeResult teacherQuestionView(Long schoolId, SemesterEnum semester, Long examId, String courseCode, Long collegeId);
+    DimensionAnalyzeResult teacherQuestionView(Long schoolId, SemesterEnum semester, Long examId, String courseCode, Long collegeId,Long teacherId);
 
     /**
      * 我的课堂考试分析-各难度水平题目上的作答分析接口

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

@@ -35,4 +35,14 @@ public interface TBDimensionService extends IService<TBDimension> {
      * @return
      */
     List<CourseDimensionResult> findDimensionByTeacherInfo(Long examId, String courseCode, Long teacherId);
+
+    /**
+     * 查找某任课教师在某学院下所有考生在考察点得分情况统计
+     * @param examId 考试id
+     * @param courseCode 课程编号
+     * @param teacherId 教师id
+     * @param inspectCollegeId 考察学院id
+     * @return 考察点统计信息
+     */
+    List<CourseDimensionResult> findDimensionByTeacherCollegeInfo(Long examId,String courseCode,Long teacherId,Long inspectCollegeId);
 }

+ 7 - 2
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/ReportCommonServiceImpl.java

@@ -334,10 +334,15 @@ public class ReportCommonServiceImpl implements ReportCommonService {
     public DimensionAnalyzeResult findDimensionInfo(Long examId, String courseCode, Long collegeId, Long teacherId) {
         //查找维度
         List<CourseDimensionResult> dimensionInfoDatasource = null;
-        if (Objects.isNull(teacherId) || Objects.equals(teacherId, "")) {
+        if (SystemConstant.longNotNull(collegeId) && !SystemConstant.longNotNull(teacherId)) {
+            // 有学院id无教师id -> 开课院长看各考察学院数据
             dimensionInfoDatasource = tbDimensionService.findDimensionInfo(examId, courseCode, collegeId);
-        } else {
+        } else if (SystemConstant.longNotNull(teacherId) && !SystemConstant.longNotNull(collegeId)){
+            // 有教师id无学院id -> 开课院长看各授课教师数据
             dimensionInfoDatasource = tbDimensionService.findDimensionByTeacherInfo(examId, courseCode, teacherId);
+        } else if (SystemConstant.longNotNull(teacherId) && SystemConstant.longNotNull(collegeId)){
+            // 既有教师id又有学院id -> 任课教师看某个学院下自己的数据
+            dimensionInfoDatasource = tbDimensionService.findDimensionByTeacherCollegeInfo(examId,courseCode,teacherId,collegeId);
         }
 //        if (dimensionInfoDatasource.size() < 1) {
 //            throw ExceptionResultEnum.DATA_ERROR.exception();

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

@@ -141,8 +141,8 @@ public class TAExamCourseCollegeTeacherServiceImpl extends ServiceImpl<TAExamCou
      * @return
      */
     @Override
-    public DimensionAnalyzeResult teacherQuestionView(Long schoolId, SemesterEnum semester, Long examId, String courseCode, Long collegeId) {
-        return reportCommonService.findDimensionInfo(examId, courseCode, collegeId, null);
+    public DimensionAnalyzeResult teacherQuestionView(Long schoolId, SemesterEnum semester, Long examId, String courseCode, Long collegeId,Long teacherId) {
+        return reportCommonService.findDimensionInfo(examId, courseCode, collegeId, teacherId);
     }
 
     /**

+ 5 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/TBDimensionServiceImpl.java

@@ -49,4 +49,9 @@ public class TBDimensionServiceImpl extends ServiceImpl<TBDimensionMapper, TBDim
     public List<CourseDimensionResult> findDimensionByTeacherInfo(Long examId, String courseCode, Long teacherId) {
         return tbDimensionMapper.findDimensionByTeacherInfo(examId, courseCode, teacherId);
     }
+
+    @Override
+    public List<CourseDimensionResult> findDimensionByTeacherCollegeInfo(Long examId, String courseCode, Long teacherId, Long inspectCollegeId) {
+        return tbDimensionMapper.findDimensionByTeacherCollegeInfo(examId, courseCode, teacherId, inspectCollegeId);
+    }
 }

+ 68 - 0
teachcloud-report-business/src/main/resources/mapper/TBDimensionMapper.xml

@@ -115,4 +115,72 @@
             </if>
         </where>
     </select>
+
+    <select id="findDimensionByTeacherCollegeInfo"
+            resultType="com.qmth.teachcloud.report.business.bean.result.CourseDimensionResult">
+        SELECT
+            tmp.exam_id AS examId,
+            (SELECT
+                 tbe.exam_code
+             FROM
+                 t_b_exam tbe
+             WHERE
+                 tbe.id = tmp.exam_id) AS examCode,
+            tmp.course_code AS courseCode,
+            tmp.dimension_type AS module,
+            code_primary AS dimensionCode,
+            name_primary AS dimensionName,
+            interpretation,
+            total_count AS totalCount,
+            ROUND(CONVERT( papDio.score_rate * 100 , DECIMAL (10 , 4 )),
+                  2) AS schScoreRate,
+            ROUND(CONVERT( myDio.score_rate * 100 , DECIMAL (10 , 4 )),
+                  2) AS colScoreRate,
+            myDio.teacher_name AS teacherName,
+            ROUND(myDio.score_rate, 1) AS degree
+        FROM
+            (SELECT
+                 exam_id,
+                 course_code,
+                 dimension_type,
+                 code_primary,
+                 name_primary,
+                 interpretation
+             FROM
+                 t_b_dimension
+             GROUP BY exam_id , course_code , dimension_type , code_primary , name_primary , interpretation) tmp
+                INNER JOIN
+            (SELECT
+                 exam_id,
+                 course_code,
+                 dimension_type,
+                 dimension_code,
+                 AVG(score_rate) AS score_rate,
+                 AVG(total_count) AS total_count
+             FROM
+                 t_a_exam_course_dio
+             GROUP BY exam_id , course_code , dimension_type , dimension_code) papDio ON tmp.code_primary = papDio.dimension_code
+                AND tmp.dimension_type = papDio.dimension_type
+                AND tmp.exam_id = papDio.exam_id
+                AND tmp.course_code = papDio.course_code
+                INNER JOIN
+            t_a_exam_course_teacher_college_dio myDio ON tmp.code_primary = myDio.dimension_code
+                AND tmp.dimension_type = myDio.dimension_type
+                AND papDio.exam_id = myDio.exam_id
+                AND papDio.course_code = myDio.course_code
+        <where>
+            <if test="examId != null and examId != ''">
+                and papDio.exam_id = #{examId}
+            </if>
+            <if test="courseCode != null and courseCode != ''">
+                and papDio.course_code = #{courseCode}
+            </if>
+            <if test="teacherId != null and teacherId > 0">
+                and myDio.teacher_id = #{teacherId}
+            </if>
+            <if test="inspectCollegeId != null and inspectCollegeId > 0">
+                and myDio.inspect_college_id = #{inspectCollegeId}
+            </if>
+        </where>
+    </select>
 </mapper>

+ 2 - 1
teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/TAExamCourseCollegeTeacherController.java

@@ -89,11 +89,12 @@ public class TAExamCourseCollegeTeacherController {
                                       @ApiParam(value = "学校id", required = false) @RequestParam(required = false) String schoolId,
                                       @ApiParam(value = "科目编码", required = true) @RequestParam String courseCode,
                                       @ApiParam(value = "学院id", required = false) @RequestParam(required = false) String collegeId) {
+        // 道理上讲必须传学院id 但如果老师想看自己的整体情况,不传学院id得到的就是整体情况
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         if (Objects.isNull(sysUser)) {
             throw ExceptionResultEnum.NOT_LOGIN.exception();
         }
-        return ResultUtil.ok(taExamCourseCollegeTeacherService.teacherQuestionView(Objects.isNull(schoolId) ? SystemConstant.convertIdToLong(String.valueOf(ServletUtil.getRequestHeaderSchoolId())) : SystemConstant.convertIdToLong(schoolId), semester, SystemConstant.convertIdToLong(examId), courseCode, Objects.nonNull(collegeId) ? SystemConstant.convertIdToLong(collegeId) : sysUser.getOrgId()));
+        return ResultUtil.ok(taExamCourseCollegeTeacherService.teacherQuestionView(Objects.isNull(schoolId) ? SystemConstant.convertIdToLong(String.valueOf(ServletUtil.getRequestHeaderSchoolId())) : SystemConstant.convertIdToLong(schoolId), semester, SystemConstant.convertIdToLong(examId), courseCode, SystemConstant.convertIdToLong(collegeId),sysUser.getId()));
     }
 
     @ApiOperation(value = "我的课堂考试分析-各难度水平题目上的作答分析接口")

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

@@ -149,14 +149,14 @@ public class AnalyzeForStudentServiceTest {
 
     @Test
     public void buildAnalyzeTeacherPaperStruct(){
-        Long examId = 1L;
+        Long examId = 2L;
         String courseCode = null;
         System.out.println(analyzeForReportService.buildAnalyzeTeacherPaperStruct(examId,courseCode));
     }
 
     @Test
     public void buildAnalyzeTeacherCollegePaperStruct(){
-        Long examId = 1L;
+        Long examId = 2L;
         String courseCode = null;
         System.out.println(analyzeForReportService.buildAnalyzeTeacherCollegePaperStruct(examId,courseCode));
     }