Ver código fonte

阅卷待办接口优化

wangliang 2 anos atrás
pai
commit
e41f3c0414

+ 18 - 1
distributed-print-business/src/main/resources/db/log/3.2.5-脚本-wangl.sql

@@ -28,4 +28,21 @@ INSERT INTO `sys_role_privilege` VALUES (529, 10, 853, 1);
 INSERT INTO `sys_role_privilege` VALUES (530, 10, 866, 1);
 INSERT INTO `sys_role_privilege` VALUES (531, 10, 830, 1);
 INSERT INTO `sys_role_privilege` VALUES (532, 10, 831, 1);
-INSERT INTO `sys_role_privilege` VALUES (533, 10, 575, 1);
+INSERT INTO `sys_role_privilege` VALUES (533, 10, 575, 1);
+
+DROP TABLE IF EXISTS `basic_teach_course`;
+CREATE TABLE `basic_teach_course` (
+                                      `id` bigint NOT NULL COMMENT '主键',
+                                      `school_id` bigint DEFAULT NULL COMMENT '学校id',
+                                      `org_id` bigint DEFAULT NULL COMMENT '机构id',
+                                      `user_id` bigint DEFAULT NULL COMMENT '用户ID',
+                                      `course_id` bigint DEFAULT NULL COMMENT '课程ID',
+                                      `enable` tinyint DEFAULT '1' COMMENT '是否启用?1-是 ;0-否',
+                                      `create_id` bigint DEFAULT NULL COMMENT '创建人',
+                                      `create_time` bigint DEFAULT NULL COMMENT '创建时间',
+                                      `update_id` bigint DEFAULT NULL COMMENT '更新人',
+                                      `update_time` bigint DEFAULT NULL COMMENT '更新时间',
+                                      PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='老师和课程关联表';
+
+CREATE INDEX exam_detail_school_id_IDX USING BTREE ON exam_detail (school_id);

+ 103 - 83
distributed-print-business/src/main/resources/mapper/ExamPaperStructureMapper.xml

@@ -3,95 +3,112 @@
 <mapper namespace="com.qmth.distributed.print.business.mapper.ExamPaperStructureMapper">
     <select id="listByPropositionTeacherId"
             resultType="com.qmth.distributed.print.business.bean.dto.ExamPaperStructurePageDto">
-        SELECT
-            distinct eps.id,
-            ep.school_id schoolId,
-            ep.exam_id examId,
-            ep.third_relate_id thirdRelateId,
-            ep.third_relate_name thirdRelateName,
-            eps.objective_structure objectiveStructure,
-            eps.subjective_structure subjectiveStructure,
-            et.id examTaskId,
-            ep.paper_number paperNumber,
-            ep.course_code courseCode,
-            ep.course_name courseName,
-            et.sequence,
-            eps.paper_info_json paperInfoJson,
-            es.paper_type paperType,
-            IFNULL(eps.status, 'INIT') status,
-            eps.paper_answer paperAnswer,
-            et.user_id propositionTeacherId,
-            eps.mark_leader markLeader,
-            et.transfer_id transferId
+        select
+        temp.*,
+        eps.objective_structure objectiveStructure,
+        eps.subjective_structure subjectiveStructure,
+        eps.paper_info_json paperInfoJson,
+        eps.paper_answer paperAnswer,
+        eps.mark_leader markLeader
+        from
+        (SELECT
+        ep.id,
+        ep.school_id schoolId,
+        ep.exam_id examId,
+        ep.third_relate_id thirdRelateId,
+        ep.third_relate_name thirdRelateName,
+        ep.examTaskId,
+        ep.paper_number paperNumber,
+        ep.course_code courseCode,
+        ep.course_name courseName,
+        ep.sequence,
+        es.paper_type paperType,
+        ep.status,
+        ep.propositionTeacherId,
+        ep.transferId
         FROM
-            (SELECT
-                 ed.school_id,
-                 ed.exam_id,
-                 edc.paper_number,
-                 edc.course_code,
-                 edc.course_name,
-                 ets.third_relate_id,
-                 tsse.exam_name third_relate_name
-             FROM
-                 exam_detail ed
-                     LEFT JOIN exam_detail_course edc ON ed.id = edc.exam_detail_id
-                     LEFT JOIN exam_task_sync ets ON edc.school_id = ets.school_id
-                     AND ed.exam_id = ets.exam_id
-                     AND edc.paper_number = ets.paper_number
-                     LEFT JOIN t_sync_stmms_exam tsse ON edc.school_id = tsse.school_id
-                     AND ets.third_relate_id = tsse.exam_id
-                     LEFT JOIN basic_exam be ON ed.exam_id = be.id
-                <where>
-                    AND ets.sync_status = #{syncStatus}
-                    AND be.enable = TRUE
-                    <if test="semesterId != null">
-                        and be.semester_id = #{semesterId}
-                    </if>
-                    <if test="examId != null">
-                        and be.id = #{examId}
-                    </if>
-                </where>
-               ) ep
-                LEFT JOIN
-            (SELECT DISTINCT
-                 es.school_id, es.exam_id, es.paper_number, es.paper_type
-             FROM
-                 exam_student es
-                     JOIN basic_exam be ON es.exam_id = be.id
-             <where>
-                <if test="semesterId != null">
-                    and be.semester_id = #{semesterId}
-                </if>
-                <if test="examId != null">
-                    and be.id = #{examId}
-                </if>
-             </where>
-             ) es ON es.school_id = ep.school_id
-                AND es.exam_id = ep.exam_id
-                AND es.paper_number = ep.paper_number
-                LEFT JOIN
-            exam_task et ON ep.school_id = et.school_id
-                AND et.exam_id = ep.exam_id
-                AND ep.paper_number = et.paper_number
-                LEFT JOIN
-            exam_paper_structure eps ON ep.school_id = eps.school_id
-                AND et.exam_id = eps.exam_id
-                AND ep.paper_number = eps.paper_number
-                AND es.paper_type = eps.paper_type
-        WHERE
-            ep.school_id = #{schoolId}
-          AND IFNULL(et.transfer_id, et.user_id) = #{propositionTeacherId}
+        (SELECT
+        distinct eps.id,
+        et.id as examTaskId,
+        et.sequence,
+        et.org_id orgId,
+        et.user_id propositionTeacherId,
+        et.transfer_id transferId,
+        ed.school_id,
+        ed.exam_id,
+        edc.paper_number,
+        edc.course_code,
+        edc.course_name,
+        ets.third_relate_id,
+        tsse.exam_name third_relate_name,
+        IFNULL(eps.status, 'INIT') status
+        FROM
+        exam_detail ed
+        left join exam_detail_course edc on
+        ed.id = edc.exam_detail_id
+        left join exam_task_sync ets on
+        edc.school_id = ets.school_id
+        and ed.exam_id = ets.exam_id
+        and edc.paper_number = ets.paper_number
+        left join t_sync_stmms_exam tsse on
+        edc.school_id = tsse.school_id
+        and ets.third_relate_id = tsse.exam_id
+        left join basic_exam be on
+        ed.exam_id = be.id
+        left join exam_task et on
+        et.school_id = ed.school_id
+        and et.paper_number = edc.paper_number
+        and et.exam_id = ed.exam_id
+        left join exam_paper_structure eps on
+        eps.school_id = ed.school_id
+        and eps.exam_id = et.exam_id
+        and eps.paper_number = edc.paper_number
+        and eps.paper_type = edc.paper_type
+        <where>1 = 1
+            and ed.school_id = #{schoolId}
+            AND ets.sync_status = #{syncStatus}
+            AND be.enable = TRUE
+            <if test="semesterId != null">
+                and be.semester_id = #{semesterId}
+            </if>
+            <if test="examId != null">
+                and be.id = #{examId}
+            </if>
+        </where>
+        ) ep
+        LEFT JOIN
+        (SELECT DISTINCT
+        es.school_id, es.exam_id, es.paper_number, es.paper_type
+        FROM
+        exam_student es
+        JOIN basic_exam be ON es.exam_id = be.id
+        <where>1 = 1
+            and es.school_id = #{schoolId}
+            <if test="semesterId != null">
+                and be.semester_id = #{semesterId}
+            </if>
+            <if test="examId != null">
+                and be.id = #{examId}
+            </if>
+        </where>
+        ) es ON es.exam_id = ep.exam_id
+        and es.paper_number = ep.paper_number
+        WHERE 1 = 1
+        and (ep.transferId = #{propositionTeacherId}
+        or ep.propositionTeacherId = #{propositionTeacherId})
         <if test="structureStatusEnums != null and structureStatusEnums != ''">
             <choose>
                 <when test="ready != null and ready != '' and ready == true">
-                    AND eps.status IN
-                    <foreach collection="structureStatusEnums" item="item" index="index" open="(" separator="," close=")">
+                    AND ep.status IN
+                    <foreach collection="structureStatusEnums" item="item" index="index" open="(" separator=
+                            "," close=")">
                         #{item}
                     </foreach>
                 </when>
                 <otherwise>
-                    AND ifnull(eps.status, 'INIT') NOT IN
-                    <foreach collection="structureStatusEnums" item="item" index="index" open="(" separator="," close=")">
+                    AND ifnull(ep.status, 'INIT') NOT IN
+                    <foreach collection="structureStatusEnums" item="item" index="index" open="(" separator
+                            ="," close=")">
                         #{item}
                     </foreach>
                 </otherwise>
@@ -99,14 +116,17 @@
         </if>
         <if test="dpr != null">
             <if test="dpr.requestUserId != null">
-                AND et.user_id = #{dpr.requestUserId}
+                AND ep.propositionTeacherId = #{dpr.requestUserId}
             </if>
             <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
-                AND et.org_id IN
+                AND ep.orgId IN
                 <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
                     #{item}
                 </foreach>
             </if>
         </if>
+        ) temp
+        left join exam_paper_structure eps on
+        eps.id = temp.id
     </select>
 </mapper>