1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="com.qmth.teachcloud.mark.mapper.MarkStudentMapper">
- <!-- 通用查询映射结果 -->
- <resultMap id="BaseResultMap" type="com.qmth.teachcloud.mark.entity.MarkStudent">
- <id column="id" property="id"/>
- <result column="exam_id" property="examId"/>
- <result column="paper_number" property="paperNumber"/>
- <result column="course_paper_id" property="coursePaperId"/>
- <result column="secret_number" property="secretNumber"/>
- <result column="student_code" property="studentCode"/>
- <result column="package_code" property="packageCode"/>
- <result column="exam_place" property="examPlace"/>
- <result column="exam_room" property="examRoom"/>
- <result column="remark" property="remark"/>
- <result column="batch_code" property="batchCode"/>
- <result column="sheet_count" property="sheetCount"/>
- <result column="answers" property="answers"/>
- <result column="is_upload" property="upload"/>
- <result column="is_absent" property="absent"/>
- <result column="is_manual_absent" property="manualAbsent"/>
- <result column="is_breach" property="breach"/>
- <result column="upload_time" property="uploadTime"/>
- <result column="check_time" property="checkTime"/>
- <result column="check_user_id" property="checkUserId"/>
- <result column="objective_score" property="objectiveScore"/>
- <result column="objective_score_list" property="objectiveScoreList"/>
- <result column="subjective_status" property="subjectiveStatus"/>
- <result column="subjective_score" property="subjectiveScore"/>
- <result column="subjective_score_list" property="subjectiveScoreList"/>
- <result column="scan_status" property="scanStatus"/>
- <result column="omr_absent_checked" property="omrAbsentChecked"/>
- <result column="question_filled" property="questionFilled"/>
- <result column="assigned" property="assigned"/>
- <result column="absent_suspect" property="absentSuspect"/>
- <result column="incomplete" property="incomplete"/>
- <result column="breach_code" property="breachCode"/>
- <result column="card_number" property="cardNumber"/>
- </resultMap>
- <sql id="pageStudentScoreCommon">
- SELECT
- ms.id studentId,
- ms.exam_id examId,
- bc.code courseCode,
- bc.name courseName,
- ms.paper_number paperNumber,
- ms.paper_type paperType,
- bes.student_name studentName,
- bes.student_code studentCode,
- bes.college_name collegeName,
- ms.secret_number secretNumber,
- bes.college_name college,
- bes.major_name majorName,
- bes.teach_class_name teachClassName,
- bes.class_name className,
- su1.real_name teacherName,
- ms.objective_score objectiveScore,
- ms.subjective_score subjectiveScore,
- ifnull(ms.objective_score, 0) + ifnull(ms.subjective_score, 0) totalScore,
- ms.objective_score_list objectiveScoreList,
- ms.subjective_score_list subjectiveScoreList,
- ms.check_user_id checkUserId,
- su.login_name checkUserLoginName,
- su.real_name checkUserName,
- ms.check_time checkTime,
- ms.sheet_path sheetPath,
- ms.exam_start_time examStartTime,
- ms.exam_end_time examEndTime,
- ms.scan_status scanStatus,
- ms.subjective_status subjectiveStatus,
- ms.is_absent absent,
- ms.omr_absent omrAbsent,
- ms.is_manual_absent manualAbsent,
- ms.is_upload upload,
- bes.status studentStatus,
- ms.is_breach breach,
- ms.omr_breach omrBreach,
- ifnull(ms.is_manual_breach,0) manualBreach
- FROM
- (select * from mark_student where exam_id = #{examId} and paper_number = #{paperNumber}) ms
- LEFT JOIN
- (select * from basic_exam_student where exam_id = #{examId}) bes ON ms.basic_student_id = bes.id
- LEFT JOIN
- basic_course bc ON ms.course_id = bc.id
- LEFT JOIN
- sys_user su ON ms.check_user_id = su.id
- LEFT JOIN
- sys_user su1 ON bes.teacher_id = su1.id
- <where>
- <if test="college != null and college != ''">
- AND bes.college_name LIKE CONCAT('%', #{college}, '%')
- </if>
- <if test="majorName != null and majorName != ''">
- AND bes.major_name LIKE CONCAT('%', #{majorName}, '%')
- </if>
- <if test="teachClassName != null and teachClassName != ''">
- AND bes.teach_class_name LIKE CONCAT('%', #{teachClassName}, '%')
- </if>
- <if test="className != null and className != ''">
- AND bes.class_name LIKE CONCAT('%', #{className}, '%')
- </if>
- <if test="teacher != null and teacher != ''">
- AND su1.real_name LIKE CONCAT('%', #{teacher},'%')
- </if>
- <if test="filter != null">
- <choose>
- <when test="filter == 1">
- AND ms.objective_score = 0
- </when>
- <when test="filter == 2">
- AND ms.objective_score = 0 AND ms.subjective_score > 0
- </when>
- <when test="filter == 3">
- AND ms.objective_score > 0 AND ms.subjective_score = 0
- </when>
- </choose>
- </if>
- <if test="status != null">
- <choose>
- <when test="status == 'ABSENT'">
- AND (ms.is_absent = 1 OR ms.omr_absent = 1 OR ms.is_manual_absent = 1 OR bes.status = 'M')
- </when>
- <when test="status == 'NORMAL'">
- AND (ms.is_absent = 0 and ms.omr_absent = 0 and ms.is_manual_absent = 0 and bes.status != 'M' and ms.scan_status = 'SCANNED' AND ms.is_upload = 1)
- </when>
- <otherwise>
- AND (ms.scan_status = 'UNEXIST' and ms.is_absent = 0 and ms.omr_absent = 0 and ms.is_manual_absent = 0 and bes.status != 'M')
- </otherwise>
- </choose>
- </if>
- <if test="breach != null">
- <choose>
- <when test="breach == true">
- AND (ms.is_breach = 1 OR ms.omr_breach = 1 OR ms.is_manual_breach = 1 OR bes.status = 'B')
- </when>
- <otherwise>
- AND (ms.is_breach = 0 AND ms.omr_breach = 0 AND ms.is_manual_breach = 0 OR bes.status != 'B')
- </otherwise>
- </choose>
- </if>
- <if test="startScore != null">
- <choose>
- <when test="startScore == 0">
- AND (ms.is_absent = 1 OR ms.is_breach = 1 OR ((ifnull(ms.subjective_score, 0) +
- ifnull(ms.objective_score, 0)) >= #{startScore} AND (ifnull(ms.subjective_score,0) +
- ifnull(ms.objective_score,0)) <= #{endScore}))
- </when>
- <otherwise>
- AND (ms.is_absent = 0 AND ms.is_breach = 0 AND ((ifnull(ms.subjective_score,0) +
- ifnull(ms.objective_score,0)) >= #{startScore} AND (ifnull(ms.subjective_score,0) +
- ifnull(ms.objective_score,0)) <= #{endScore}))
- </otherwise>
- </choose>
- </if>
- <if test="subjectiveStartScore != null">
- <choose>
- <when test="subjectiveStartScore == 0">
- AND (ms.is_absent = 1 OR ms.is_breach = 1
- OR ((ifnull(ms.subjective_score, 0) >= #{subjectiveStartScore}
- AND ifnull(ms.subjective_score, 0) <= #{subjectiveEndScore})))
- </when>
- <otherwise>
- AND (ms.is_absent = 0 AND ms.is_breach = 0
- AND ((ifnull(ms.subjective_score, 0) >= #{subjectiveStartScore}
- AND ifnull(ms.subjective_score, 0) <= #{subjectiveEndScore})))
- </otherwise>
- </choose>
- </if>
- <if test="objectiveStartScore != null">
- <choose>
- <when test="objectiveStartScore == 0">
- AND (ms.is_absent = 1 OR ms.is_breach = 1
- OR ((ifnull(ms.objective_score, 0) >= #{objectiveStartScore}
- AND ifnull(ms.objective_score, 0) <= #{objectiveEndScore})))
- </when>
- <otherwise>
- AND (ms.is_absent = 0 AND ms.is_breach = 0
- AND ((ifnull(ms.objective_score, 0) >= #{objectiveStartScore}
- AND ifnull(ms.objective_score, 0) <= #{objectiveEndScore})))
- </otherwise>
- </choose>
- </if>
- <if test="subScore != null">
- AND exists (SELECT 1 FROM mark_subjective_score mss WHERE ms.id = mss.student_id AND mss.score =
- #{subScore})
- </if>
- <if test="objectiveScoreLt != null">
- AND ms.objective_score < #{objectiveScoreLt}
- </if>
- <if test="studentName != null and studentName != ''">
- AND bes.student_name like concat('%',#{studentName}, '%')
- </if>
- <if test="studentCode != null and studentCode != ''">
- AND bes.student_code = #{studentCode}
- </if>
- <if test="secretNumber != null and secretNumber != ''">
- AND ms.secret_number = #{secretNumber}
- </if>
- <if test="dpr != null">
- <if test="dpr.requestUserId != null">
- AND bes.teacher_id = #{dpr.requestUserId}
- </if>
- <if test="dpr.courseUserId != null">
- AND EXISTS( SELECT 1 FROM (select course_id from teach_course where exam_id = #{examId} and user_id = #{dpr.courseUserId}) tc WHERE tc.course_id = ms.course_id)
- </if>
- <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
- AND bc.teaching_room_id IN
- <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
- #{item}
- </foreach>
- </if>
- </if>
- </where>
- <if test="orderType != null and orderType != '' and orderField != null and orderField != ''">
- <choose>
- <when test="orderField == 'totalScore'">
- <if test="orderType == 'ASC'">
- order by (ifnull(ms.objective_score, 0) + ifnull(ms.subjective_score, 0)) ASC
- </if>
- <if test="orderType == 'DESC'">
- order by (ifnull(ms.objective_score, 0) + ifnull(ms.subjective_score, 0)) DESC
- </if>
- </when>
- <otherwise>
- order by #{orderField} #{orderType}
- </otherwise>
- </choose>
- </if>
- <if test="orderType == null or orderType == '' or orderField == null or orderField == ''">
- order by ms.is_absent, bes.status desc, bes.student_code
- </if>
- </sql>
- <update id="updateBasicExamStudentPaperType">
- update basic_exam_student set paper_type = #{paperType} where id = #{basicStudentId}
- </update>
- <select id="pageStudentScore" resultType="com.qmth.teachcloud.mark.dto.mark.score.StudentScoreDetailDto">
- <include refid="pageStudentScoreCommon" />
- </select>
- <select id="pageStudentScoreExport" resultType="com.qmth.teachcloud.mark.dto.mark.score.StudentScoreDetailDto">
- <include refid="pageStudentScoreCommon" />
- </select>
- <select id="listAbsentOrBreachMarkTaskStudent" resultMap="BaseResultMap">
- SELECT *
- FROM mark_student ms
- WHERE ms.exam_id = #{examId}
- AND ms.paper_number = #{paperNumber}
- AND ms.is_upload = TRUE
- AND (is_absent = TRUE OR is_manual_absent = TRUE OR omr_absent = TRUE)
- AND EXISTS(SELECT 1
- FROM mark_task mt
- WHERE ms.id = mt.student_id)
- </select>
- <select id="listUnMarkTaskStudent" resultMap="BaseResultMap">
- SELECT ms.*
- FROM mark_student ms
- WHERE ms.exam_id = #{examId}
- AND ms.paper_number = #{paperNumber}
- AND ms.is_upload = TRUE
- AND is_absent = FALSE
- AND is_manual_absent = FALSE
- AND omr_absent = FALSE
- AND NOT EXISTS(SELECT 1
- FROM mark_task mt
- WHERE ms.id = mt.student_id
- AND mt.question_id = #{questionId})
- </select>
- <sql id="queryWhereAndOrder">
- where t.exam_id=#{query.examId}
- <if test="query.studentId != null and query.studentId !=''">
- and t.id=#{query.studentId}
- </if>
- <if test="query.status != null and query.status.size>0">
- AND t.scan_status in
- <foreach collection="query.status" index="index" item="st"
- open="(" separator="," close=")">
- #{st}
- </foreach>
- </if>
- <if test="query.studentCode != null and query.studentCode !=''">
- and t.student_code=#{query.studentCode}
- </if>
- <if test="query.studentName != null and query.studentName !=''">
- and bes.student_name=#{query.studentName}
- </if>
- <if test="query.packageCode != null and query.packageCode !=''">
- and t.package_code=#{query.packageCode}
- </if>
- <if test="query.courseId != null">
- and t.course_id=#{query.courseId}
- </if>
- <if test="query.coursePaperId != null and query.coursePaperId !=''">
- and t.course_paper_id=#{query.coursePaperId}
- </if>
- <if test="query.coursePaperNumber != null and query.coursePaperNumber !=''">
- and t.paper_number=#{query.coursePaperNumber}
- </if>
- <if test="query.examPlace != null and query.examPlace !=''">
- and bes.exam_place=#{query.examPlace}
- </if>
- <if test="query.examRoom != null and query.examRoom !=''">
- and bes.exam_room=#{query.examRoom}
- </if>
- <if test="query.absentSuspect != null">
- and t.absent_suspect=#{query.absentSuspect}
- </if>
- <if test="query.omrAbsent != null">
- and t.omr_absent=#{query.omrAbsent}
- </if>
- <if test="query.omrAbsentChecked != null">
- and t.omr_absent_checked=#{query.omrAbsentChecked}
- </if>
- <if test="query.manualAbsent != null">
- and t.is_manual_absent=#{query.manualAbsent}
- </if>
- <if test="query.assigned != null">
- and t.assigned=#{query.assigned}
- </if>
- <if test="query.assignConfirmed != null">
- and t.assign_confirmed=#{query.assignConfirmed}
- </if>
- <if test="query.invalid != null">
- and t.invalid=#{query.invalid}
- </if>
- <if test="query.incomplete != null">
- and t.incomplete=#{query.incomplete}
- </if>
- <if test="query.questionFilled != null">
- and t.question_filled=#{query.questionFilled}
- </if>
- <if test="query.missScan != null">
- and t.miss_scan=#{query.missScan}
- </if>
- <if test="query.studentCodeOrName != null and query.studentCodeOrName !=''">
- and (t.student_code=#{query.studentCodeOrName} or bes.student_name=#{query.studentCodeOrName})
- </if>
- <if test="query.paperType != null and query.paperType != ''">
- and ifnull(t.paper_type, '#') = #{query.paperType}
- </if>
- <if test="query.paperTypeCheckStatus != null">
- and t.paper_type_check_status=#{query.paperTypeCheckStatus}
- </if>
- <if test="query.omrBreach != null">
- and t.omr_breach = #{query.omrBreach}
- </if>
- <if test="query.manualBreach != null">
- and t.is_manual_breach = #{query.manualBreach}
- </if>
- <if test="dpr != null and dpr.requestUserId != null">
- AND t.create_id = #{dpr.requestUserId}
- </if>
- </sql>
- <select id="queryPage"
- resultType="com.qmth.teachcloud.mark.bean.scananswer.AnswerQueryVo">
- select t.id,
- bes.student_code,
- bes.site_number,
- bes.student_name,
- bc.code courseCode,
- bc.name courseName,
- t.course_paper_id,
- bes.exam_place,
- bes.exam_room,
- t.package_code,
- t.absent_suspect,
- t.omr_absent,
- t.omr_absent_checked,
- t.is_manual_absent manualAbsent,
- t.assigned,
- t.invalid,
- t.incomplete,
- t.card_number,
- t.is_absent,
- t.scan_status status,
- t.paper_number coursePaperNumber,
- c.paper_count cardPaperCount,
- t.paper_type paperType,
- t.paper_type_check_status paperTypeCheckStatus,
- t.miss_scan missScan,
- t.omr_breach omrBreach,
- t.is_manual_breach manualBreach
- from mark_student t
- inner join basic_exam_student bes on t.basic_student_id = bes.id
- left join scan_answer_card c on t.exam_id=c.exam_id and t.card_number=c.number
- inner join mark_paper s on s.course_paper_id=t.course_paper_id and s.exam_id=t.exam_id
- <if test="query.markPaperStatus != null">
- and s.status = #{query.markPaperStatus}
- </if>
- left join sys_user su on t.create_id = su.id
- inner join basic_course bc on t.course_id = bc.id
- <if test="dpr != null and dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
- AND bc.teaching_room_id IN
- <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
- #{item}
- </foreach>
- </if>
- <include refid="queryWhereAndOrder"/>
- order by t.id
- </select>
- <select id="querySummary" resultType="java.lang.String">
- select
- t.id
- from mark_student t
- inner join basic_exam_student bes on t.basic_student_id = bes.id
- inner join mark_paper s on s.course_paper_id=t.course_paper_id and s.exam_id=t.exam_id
- <if test="query.markPaperStatus != null">
- and s.status = #{query.markPaperStatus}
- </if>
- left join sys_user su on t.create_id = su.id
- inner join basic_course bc on t.course_id = bc.id
- <if test="dpr != null and dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
- AND bc.teaching_room_id IN
- <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
- #{item}
- </foreach>
- </if>
- <include refid="queryWhereAndOrder"/>
- order by t.id
- </select>
- <select id="findIdByExamIdAndPaperNumber" resultType="java.lang.Long">
- select id
- from mark_student
- where exam_id = #{examId}
- and paper_number = #{paperNumber}
- </select>
- <select id="studentList"
- resultType="com.qmth.teachcloud.mark.bean.archivescore.ArchiveStudentVo">
- select s.id studentId,
- s.paper_type paperType,
- s.objective_score objectiveScore,
- s.subjective_score subjectiveScore,
- ifnull(s.objective_score, 0) + ifnull(s.subjective_score, 0) totalScore,
- s.objective_score_list objectiveScoreList,
- s.subjective_score_list subjectiveScoreList,
- s.check_user_id checkUserId,
- s.check_time checkTime,
- s.sheet_path sheetPath,
- s.scan_status scanStatus,
- s.subjective_status subjectiveStatus,
- s.is_absent absent,
- s.omr_absent omrAbsent,
- ifnull(s.is_manual_absent,0) manualAbsent,
- s.is_upload upload,
- bes.status studentStatus,
- s.is_breach breach,
- s.omr_breach omrBreach,
- ifnull(s.is_manual_breach,0) manualBreach,
- bes.student_code studentCode,
- bes.student_name studentName,
- bes.college_name collegeName,
- bes.major_name majorName,
- bes.class_name className,
- bes.teach_class_name teachClassName,
- bc.code courseCode,
- bc.name courseName,
- su.real_name teacherName,
- bes.exam_start_time examStartTime,
- bes.exam_end_time examEndTime
- from mark_student s
- left join basic_exam_student bes on s.basic_student_id = bes.id
- left join sys_user su on bes.teacher_id = su.id
- left join (select * from basic_course where school_id = #{schoolId}) bc on s.course_id = bc.id
- <include refid="archiveQuery"/>
- <if test="dpr != null">
- <if test="dpr.requestUserId != null">
- AND bes.teacher_id = #{dpr.requestUserId}
- </if>
- <if test="dpr.courseUserId != null">
- AND EXISTS( SELECT 1 FROM (select course_id from teach_course where exam_id = #{req.examId} and user_id = #{dpr.courseUserId}) tc WHERE tc.course_id = s.course_id)
- </if>
- <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
- AND bc.teaching_room_id IN
- <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
- #{item}
- </foreach>
- </if>
- </if>
- <if test="req.orderType != null and req.orderType != '' and req.orderField != null and req.orderField != ''">
- <choose>
- <when test="req.orderField == 'totalScore'">
- <if test="req.orderType == 'ASC'">
- order by (ifnull(s.objective_score, 0) + ifnull(s.subjective_score, 0)) ASC
- </if>
- <if test="req.orderType == 'DESC'">
- order by (ifnull(s.objective_score, 0) + ifnull(s.subjective_score, 0)) DESC
- </if>
- </when>
- <otherwise>
- order by #{req.orderField} #{req.orderType}
- </otherwise>
- </choose>
- </if>
- <if test="req.orderType == null or req.orderType == '' or req.orderField == null or req.orderField == ''">
- order by s.is_absent, bes.status desc, bes.student_code
- </if>
- </select>
- <sql id="archiveQuery">
- where s.exam_id=#{req.examId} and s.paper_number=#{req.paperNumber}
- <if test="req.studentCode != null and req.studentCode !=''">
- and bes.student_code=#{req.studentCode}
- </if>
- <if test="req.startStudentCode != null and req.startStudentCode !=''">
- and bes.student_code >= #{req.startStudentCode}
- </if>
- <if test="req.endStudentCode != null and req.endStudentCode !=''">
- and bes.student_code <= #{req.endStudentCode}
- </if>
- <if test="req.studentName != null and req.studentName !=''">
- and bes.student_name=#{req.studentName}
- </if>
- <if test="req.college != null and req.college !=''">
- and bes.college_name like concat(#{req.college}, '%')
- </if>
- <if test="req.majorName != null and req.majorName !=''">
- and bes.major_name like concat(#{req.majorName}, '%')
- </if>
- <if test="req.teachClassName != null and req.teachClassName !=''">
- and bes.teach_class_name like concat(#{req.teachClassName}, '%')
- </if>
- <if test="req.className != null and req.className !=''">
- and bes.class_name like concat(#{req.className}, '%')
- </if>
- <if test="req.startScore != null and req.startScore !=''">
- and (ifnull(s.objective_score,0)+ifnull(s.subjective_score,0)) >= #{req.startScore}
- </if>
- <if test="req.endScore != null and req.endScore !=''">
- and (ifnull(s.objective_score,0)+ifnull(s.subjective_score,0)) <= #{req.endScore}
- </if>
- <if test="req.objectiveStartScore != null and req.objectiveStartScore !=''">
- and ifnull(s.objective_score,0) >= #{req.objectiveStartScore}
- </if>
- <if test="req.objectiveEndScore != null and req.objectiveEndScore !=''">
- and ifnull(s.objective_score,0) <= #{req.objectiveEndScore}
- </if>
- <if test="req.subjectiveStartScore != null and req.subjectiveStartScore !=''">
- and ifnull(s.subjective_score,0) >= #{req.subjectiveStartScore}
- </if>
- <if test="req.subjectiveEndScore != null and req.subjectiveEndScore !=''">
- and ifnull(s.subjective_score,0) <= #{req.subjectiveEndScore}
- </if>
- <if test="dpr != null">
- <if test="dpr.requestUserId != null">
- AND bes.teacher_id = #{dpr.requestUserId}
- </if>
- <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
- AND bc.teaching_room_id IN
- <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
- #{item}
- </foreach>
- </if>
- </if>
- </sql>
- <select id="overview" resultType="com.qmth.teachcloud.mark.bean.archivescore.OverViewVo">
- SELECT count(*) studentCount,
- sum(case
- when s.is_absent = 0 and s.omr_absent = 0 and s.is_breach = 0 and s.is_upload = 1 then 1
- else 0 end) actualCount,
- sum(case when s.is_absent = 1 or s.omr_absent = 1 then 1 else 0 end) absentCount,
- sum(case when s.is_breach = 1 then 1 else 0 end) breachCount,
- avg(case when s.is_absent !=1 then ifnull(s.objective_score,0) + ifnull(s.subjective_score,0) else null end) avgScore,
- max(case when s.is_absent !=1 then ifnull(s.objective_score,0) + ifnull(s.subjective_score,0) else null end) maxScore,
- min(case when s.is_absent !=1 then ifnull(s.objective_score,0) + ifnull(s.subjective_score,0) else null end) minScore,
- sum(case
- when ifnull(s.objective_score,0) + ifnull(s.subjective_score,0) >= t.total_score * t.pass_score / 100 then 1
- else 0 end) passCount,
- sum(case
- when ifnull(s.objective_score,0) + ifnull(s.subjective_score,0) >= t.total_score * t.excellent_score / 100 then 1
- else 0 end) excellentCount
- FROM mark_student s
- left join (select * from basic_exam_student where exam_id=#{req.examId}) bes on s.basic_student_id = bes.id
- left join mark_paper t on s.exam_id = t.exam_id
- and s.paper_number = t.paper_number
- left join sys_user su on bes.teacher_id = su.id
- left join (select * from basic_course where school_id = #{schoolId}) bc on s.course_id = bc.id
- <include refid="archiveQuery"/>
- </select>
- <select id="getCountByScoreRange" resultType="int">
- SELECT count(*)
- FROM mark_student s
- WHERE s.exam_id = #{examId}
- and s.paper_number = #{paperNumber}
- and s.is_absent !=1 and s.objective_score+s.subjective_score>=#{start}
- and s.objective_score+s.subjective_score<=#{end}
- </select>
- <select id="college" resultType="com.qmth.teachcloud.mark.bean.archivescore.CollegeVo">
- SELECT bes.college_name college,
- count(*) studentCount,
- sum(case when s.is_absent = 1 then 1 else 0 end) absentCount,
- avg(case when s.is_absent !=1 then ifnull(s.objective_score,0) + ifnull(s.subjective_score,0) else null end) avgScore,
- max(case when s.is_absent !=1 then ifnull(s.objective_score,0) + ifnull(s.subjective_score,0) else null end) maxScore,
- min(case when s.is_absent !=1 then ifnull(s.objective_score,0) + ifnull(s.subjective_score,0) else null end) minScore,
- sum(case
- when ifnull(s.objective_score,0) + ifnull(s.subjective_score,0) >= t.total_score * t.pass_score / 100 then 1
- else 0 end) passCount,
- sum(case
- when ifnull(s.objective_score,0) + ifnull(s.subjective_score,0) >= t.total_score * t.excellent_score / 100 then 1
- else 0 end) excellentCount
- FROM mark_student s
- left join mark_paper t on s.exam_id = t.exam_id
- and s.paper_number = t.paper_number
- left join (select * from basic_exam_student where exam_id=#{req.examId}) bes on s.basic_student_id = bes.id
- left join sys_user su on bes.teacher_id = su.id
- left join (select * from basic_course where school_id = #{schoolId}) bc on s.course_id = bc.id
- <include refid="archiveQuery"/>
- and bes.college_name is not null
- group by bes.college_name
- </select>
- <select id="classData" resultType="com.qmth.teachcloud.mark.bean.archivescore.ClassVo">
- SELECT bes.teach_class_name className,
- count(*) studentCount,
- sum(case when s.is_absent = 1 then 1 else 0 end) absentCount,
- avg(case when s.is_absent !=1 then ifnull(s.objective_score,0) + ifnull(s.subjective_score,0) else null end) avgScore,
- max(case when s.is_absent !=1 then ifnull(s.objective_score,0) + ifnull(s.subjective_score,0) else null end) maxScore,
- min(case when s.is_absent !=1 then ifnull(s.objective_score,0) + ifnull(s.subjective_score,0) else null end) minScore,
- sum(case
- when ifnull(s.objective_score,0) + ifnull(s.subjective_score,0) >= t.total_score * t.pass_score / 100 then 1
- else 0 end) passCount,
- sum(case
- when ifnull(s.objective_score,0) + ifnull(s.subjective_score,0) >= t.total_score * t.excellent_score / 100 then 1
- else 0 end) excellentCount
- FROM mark_student s
- left join mark_paper t on s.exam_id = t.exam_id
- and s.paper_number = t.paper_number
- left join (select * from basic_exam_student where exam_id=#{req.examId}) bes on s.basic_student_id = bes.id
- left join sys_user su on bes.teacher_id = su.id
- left join (select * from basic_course where school_id = #{schoolId}) bc on s.course_id = bc.id
- <include refid="archiveQuery"/>
- and bes.teach_class_name is not null
- group by bes.teach_class_name
- </select>
- <select id="teacher" resultType="com.qmth.teachcloud.mark.bean.archivescore.TeacherVo">
- SELECT su.real_name teacher,
- bes.teacher_id,
- count(*) studentCount,
- sum(case when s.is_absent = 1 then 1 else 0 end) absentCount,
- avg(case when s.is_absent !=1 then ifnull(s.objective_score,0) + ifnull(s.subjective_score,0) else null end) avgScore,
- max(case when s.is_absent !=1 then ifnull(s.objective_score,0) + ifnull(s.subjective_score,0) else null end) maxScore,
- min(case when s.is_absent !=1 then ifnull(s.objective_score,0) + ifnull(s.subjective_score,0) else null end) minScore,
- sum(case
- when ifnull(s.objective_score,0) + ifnull(s.subjective_score,0) >= t.total_score * t.pass_score / 100 then 1
- else 0 end) passCount,
- sum(case
- when ifnull(s.objective_score,0) + ifnull(s.subjective_score,0) >= t.total_score * t.excellent_score / 100 then 1
- else 0 end) excellentCount
- FROM mark_student s
- left join mark_paper t on s.exam_id = t.exam_id
- and s.paper_number = t.paper_number
- left join (select * from basic_exam_student where exam_id=#{req.examId}) bes on s.basic_student_id = bes.id
- left join sys_user su on bes.teacher_id = su.id
- left join (select * from basic_course where school_id = #{schoolId}) bc on s.course_id = bc.id
- <include refid="archiveQuery"/>
- and su.real_name is not null
- group by bes.teacher_id, su.real_name
- </select>
- <select id="findOne" resultType="com.qmth.teachcloud.mark.bean.student.StudentVo"
- parameterType="com.qmth.teachcloud.mark.bean.student.StudentQuery">
- select ms.id,
- bes.student_code studentCode,
- bes.student_name studentName,
- bc.code courseCode,
- bc.name courseName,
- ms.course_paper_id coursePaperId,
- ms.paper_number coursePaperNumber,
- ms.package_code packageCode,
- bes.site_number siteNumber,
- ms.exam_room examRoom,
- ms.scan_status status
- from mark_student ms join basic_exam_student bes on ms.basic_student_id = bes.id
- left join basic_course bc on ms.course_id = bc.id
- where ms.exam_id = #{query.examId}
- and ms.course_paper_id = #{query.coursePaperId}
- and bes.student_code = #{query.studentCode}
- </select>
- <select id="listUnexistStudentByExamIdAndCoursePaperId"
- resultType="com.qmth.teachcloud.mark.dto.UnexistStudentDto">
- SELECT
- bc.code courseCode,
- bc.name courseName,
- so.name teachingRoomName,
- t.paper_number paperNumber,
- t.student_code studentCode,
- bes.student_name studentName
- FROM
- (select * from mark_student where exam_id = #{examId}) t
- left join (select * from basic_exam_student where exam_id = #{examId}) bes on t.basic_student_id = bes.id
- left join sys_user su on t.create_id = su.id
- left join basic_course bc on t.course_id = bc.id
- left join sys_org so on bc.teaching_room_id = so.id
- WHERE
- t.scan_status = 'UNEXIST'
- <if test="courseId != null">
- and t.course_id = #{courseId}
- </if>
- <if test="coursePaperId != null and coursePaperId != ''">
- and t.course_paper_id = #{coursePaperId}
- </if>
- <if test="status != null and status != ''">
- and exists(select 1 from mark_paper mp where t.exam_id = mp.exam_id and t.course_paper_id =
- mp.course_paper_id and mp.status = #{status})
- </if>
- <if test="dpr != null">
- <if test="dpr.requestUserId != null">
- AND t.create_id = #{dpr.requestUserId}
- </if>
- <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
- AND bc.teaching_room_id IN
- <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
- #{item}
- </foreach>
- </if>
- </if>
- order by t.student_code
- </select>
- <select id="teacherClass" resultType="com.qmth.teachcloud.mark.bean.archivescore.TeacherClassVo">
- SELECT bes.teacher_id,
- su.real_name teacher,
- bes.teach_class_name className,
- count(*) studentCount,
- sum(case when s.is_absent = 1 then 1 else 0 end) absentCount,
- avg(case when s.is_absent !=1 then ifnull(s.objective_score,0) + ifnull(s.subjective_score,0) else null end) avgScore,
- max(case when s.is_absent !=1 then ifnull(s.objective_score,0) + ifnull(s.subjective_score,0) else null end) maxScore,
- min(case when s.is_absent !=1 then ifnull(s.objective_score,0) + ifnull(s.subjective_score,0) else null end) minScore,
- sum(case
- when ifnull(s.objective_score,0) + ifnull(s.subjective_score,0) >= t.total_score * t.pass_score / 100 then 1
- else 0 end) passCount,
- sum(case
- when ifnull(s.objective_score,0) + ifnull(s.subjective_score,0) >= t.total_score * t.excellent_score / 100 then 1
- else 0 end) excellentCount
- FROM mark_student s
- left join mark_paper t on s.exam_id = t.exam_id
- and s.paper_number = t.paper_number
- left join (select * from basic_exam_student where exam_id=#{req.examId}) bes on s.basic_student_id = bes.id
- left join sys_user su on bes.teacher_id = su.id
- left join (select * from basic_course where school_id = #{schoolId}) bc on s.course_id = bc.id
- <include refid="archiveQuery"/>
- and bes.teach_class_name is not null
- group by bes.teacher_id, su.real_name, bes.teach_class_name
- </select>
- <select id="selectCountByQuery" resultType="java.lang.Integer">
- select count(1) from mark_student ms INNER join basic_course bc on ms.course_id = bc.id
- <if test="dpr != null and dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
- AND bc.teaching_room_id IN
- <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
- #{item}
- </foreach>
- </if>
- <if test="markStudent.markPaperStatus != null">
- INNER JOIN mark_paper mp ON ms.exam_id = mp.exam_id
- and ms.paper_number = mp.paper_number
- and mp.status = #{markStudent.markPaperStatus}
- </if>
- <where>
- and ms.exam_id = #{markStudent.examId}
- <if test="markStudent.courseId != null">
- and ms.course_id = #{markStudent.courseId}
- </if>
- <if test="markStudent.paperNumber != null and markStudent.paperNumber != ''">
- and ms.paper_number = #{markStudent.paperNumber}
- </if>
- <if test="markStudent.paperType != null and markStudent.paperType != ''">
- and ms.paper_type = #{markStudent.paperType}
- </if>
- <if test="markStudent.coursePaperId != null and markStudent.coursePaperId != ''">
- and ms.course_paper_id = #{markStudent.coursePaperId}
- </if>
- <if test="markStudent.scanStatus != null">
- and ms.scan_status = #{markStudent.scanStatus}
- </if>
- <if test="markStudent.manualAbsent != null">
- and ms.is_manual_absent = #{markStudent.manualAbsent}
- </if>
- <if test="markStudent.omrAbsent != null">
- and ms.omr_absent = #{markStudent.omrAbsent}
- </if>
- <if test="markStudent.omrAbsentChecked != null">
- and ms.omr_absent_checked = #{markStudent.omrAbsentChecked}
- </if>
- <if test="markStudent.incomplete != null">
- and ms.incomplete = #{markStudent.incomplete}
- </if>
- <if test="markStudent.missScan != null">
- and ms.miss_scan = #{markStudent.missScan}
- </if>
- <if test="markStudent.paperTypeCheckStatus != null">
- and ms.paper_type_check_status = #{markStudent.paperTypeCheckStatus}
- </if>
- <if test="dpr != null and dpr.requestUserId != null">
- AND ms.create_id = #{dpr.requestUserId}
- </if>
- </where>
- </select>
- <select id="countAssigned" resultType="java.lang.Integer">
- SELECT
- count(1)
- FROM
- mark_student ms
- LEFT JOIN basic_course bc ON ms.course_id = bc.id
- <if test="dpr != null and dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
- AND bc.teaching_room_id IN
- <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
- #{item}
- </foreach>
- </if>
- <if test="markStudent.markPaperStatus != null">
- INNER JOIN mark_paper mp ON ms.exam_id = mp.exam_id
- and ms.paper_number = mp.paper_number
- and mp.status = #{markStudent.markPaperStatus}
- </if>
- <where>
- ms.exam_id = #{markStudent.examId}
- <if test="markStudent.courseId != null">
- AND ms.course_id = #{markStudent.courseId}
- </if>
- <if test="markStudent.coursePaperId != null">
- AND ms.course_paper_id = #{markStudent.coursePaperId}
- </if>
- <if test="markStudent.assigned != null">
- AND ms.assigned = #{markStudent.assigned}
- </if>
- <if test="markStudent.assignConfirmed != null">
- AND ms.assign_confirmed = #{markStudent.assignConfirmed}
- </if>
- <if test="dpr != null and dpr.requestUserId != null">
- AND ms.create_id = #{dpr.requestUserId}
- </if>
- </where>
- </select>
- <select id="listScanCollegeByExamIdAndCourseCodeAndCoursePaperId"
- resultType="com.qmth.teachcloud.mark.entity.MarkStudent">
- SELECT
- distinct ms.exam_place, ms.exam_room
- FROM
- mark_student ms
- LEFT JOIN basic_course bc ON ms.course_id = bc.id
- <where>
- ms.exam_id = #{examId}
- <if test="courseId != null">
- AND ms.course_id = #{courseId}
- </if>
- <if test="coursePaperId != null and coursePaperId != ''">
- AND ms.course_paper_id = #{coursePaperId}
- </if>
- <if test="dpr != null">
- <if test="dpr.requestUserId != null">
- AND ms.create_id = #{dpr.requestUserId}
- </if>
- <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
- AND bc.teaching_room_id IN
- <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
- #{item}
- </foreach>
- </if>
- </if>
- <if test="status != null">
- AND exists(select 1 from mark_paper mp where ms.exam_id = mp.exam_id and ms.paper_number =
- mp.paper_number and mp.status = #{status})
- </if>
- </where>
- </select>
- <select id="getBasicTeachClazzById" resultType="com.qmth.teachcloud.common.entity.BasicTeachClazz"
- parameterType="java.lang.Long">
- select * from basic_teach_clazz where id = #{clazzId}
- </select>
- <select id="maxCardNumber" resultType="java.lang.Integer">
- select max(card_number) from mark_student where exam_id = #{examId} and paper_number = #{paperNumber} and card_number is not null
- </select>
- <select id="selectByExamIdAndCoursePaperIdAndStudentCode"
- resultType="com.qmth.teachcloud.mark.entity.MarkStudent">
- select ms.id,
- bes.student_code,
- bes.student_name,
- bc.code courseCode,
- bc.name courseName,
- ms.paper_number,
- ms.course_paper_id,
- ms.exam_id,
- ms.exam_place,
- ms.exam_room,
- ms.scan_status,
- ms.is_absent absent,
- ms.is_upload upload,
- ms.is_manual_absent manualAbsent,
- ms.omr_absent,
- ms.omr_absent_checked
- from mark_student ms
- LEFT JOIN
- basic_exam_student bes on ms.basic_student_id = bes.id
- left join
- basic_course bc on bc.id = bes.course_id
- where ms.exam_id = #{examId} and ms.course_paper_id = #{coursePaperId} and bes.student_code = #{studentCode}
- </select>
- <select id="listMarkStudentVo" resultType="com.qmth.teachcloud.mark.dto.mark.MarkStudentVo">
- SELECT
- ms.*,
- ms.is_upload upload,
- ms.is_absent absent,
- ms.is_breach breach,
- ms.is_manual_absent manualAbsent,
- bes.student_name,
- bc.code courseCode,
- bc.name courseName,
- bes.college_name,
- bes.major_name,
- bes.teach_class_name AS teachClassName,
- bes.class_name,
- su.real_name teacher,
- bes.teacher_id
- FROM
- mark_student ms
- LEFT JOIN
- basic_exam_student bes ON ms.basic_student_id = bes.id
- LEFT JOIN
- basic_course bc ON ms.course_id = bc.id
- LEFT JOIN
- sys_user su ON bes.teacher_id = su.id
- <where>
- <if test="markStudentQuery.id != null">
- and ms.id = #{markStudentQuery.id}
- </if>
- <if test="markStudentQuery.examId != null">
- and ms.exam_id = #{markStudentQuery.examId}
- </if>
- <if test="markStudentQuery.paperNumber != null">
- and ms.paper_number = #{markStudentQuery.paperNumber}
- </if>
- <if test="markStudentQuery.upload != null">
- and ms.is_upload = #{markStudentQuery.upload}
- </if>
- <if test="markStudentQuery.absent != null">
- and ms.is_absent = #{markStudentQuery.absent}
- </if>
- <if test="markStudentQuery.breach != null">
- and ms.is_breach = #{markStudentQuery.breach}
- </if>
- <if test="markStudentQuery.omrAbsent != null">
- and ms.omr_absent = #{markStudentQuery.omrAbsent}
- </if>
- </where>
- </select>
- <select id="countOmrAbsentStudent" resultType="java.lang.Integer">
- select count(1) from mark_student ms
- left join basic_exam_student bes on bes.id = ms.basic_student_id
- <where> 1 = 1
- <if test="examId != null and examId != ''">
- and ms.exam_id = #{examId}
- </if>
- <if test="paperNumber != null and paperNumber != ''">
- and ms.paper_number = #{paperNumber}
- </if>
- and ms.omr_absent = true
- <if test="isOmrAbsentConfirm != null and isOmrAbsentConfirm != '' or isOmrAbsentConfirm == 0">
- and ms.omr_absent_checked = #{isOmrAbsentConfirm}
- </if>
- <if test="teachClassName != null and teachClassName != ''">
- and bes.teach_class_name = #{teachClassName}
- </if>
- </where>
- </select>
- <select id="countAssignedNew" resultType="java.lang.Integer">
- SELECT
- count(1)
- FROM
- mark_student ms
- LEFT JOIN basic_course bc ON ms.course_id = bc.id
- left join basic_exam_student bes on bes.id = ms.basic_student_id
- <where>
- ms.exam_id = #{markStudent.examId}
- <if test="markStudent.courseId != null">
- AND ms.course_id = #{markStudent.courseId}
- </if>
- <if test="markStudent.coursePaperId != null">
- AND ms.course_paper_id = #{markStudent.coursePaperId}
- </if>
- <if test="markStudent.assigned != null">
- AND ms.assigned = #{markStudent.assigned}
- </if>
- <if test="markStudent.assignConfirmed != null">
- AND ms.assign_confirmed = #{markStudent.assignConfirmed}
- </if>
- <if test="dpr != null">
- <if test="dpr.requestUserId != null">
- AND ms.create_id = #{dpr.requestUserId}
- </if>
- <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
- AND bc.teaching_room_id IN
- <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
- #{item}
- </foreach>
- </if>
- </if>
- <if test="markStudent.markPaperStatus != null">
- AND exists(select 1 from mark_paper mp where ms.exam_id = mp.exam_id and ms.paper_number =
- mp.paper_number and mp.status = #{markStudent.markPaperStatus})
- </if>
- <if test="teachClassName != null and teachClassName != ''">
- and bes.teach_class_name = #{teachClassName}
- </if>
- </where>
- </select>
- <select id="getDetailById" resultType="com.qmth.teachcloud.mark.dto.mark.MarkStudentVo">
- SELECT
- bes.student_code,
- bes.student_name,
- bc.code courseCode,
- bc.name courseName,
- ms.paper_number,
- bes.college_name,
- bes.major_name,
- bes.teach_class_name,
- bes.class_name
- FROM
- mark_student ms
- LEFT JOIN
- basic_exam_student bes ON ms.basic_student_id = bes.id
- LEFT JOIN
- basic_course bc ON ms.course_id = bc.id
- where
- ms.id = #{studentId}
- </select>
- <select id="findExamTaskPaperTypeOpenStatus" resultType="com.qmth.teachcloud.mark.dto.mark.AbInfoVo">
- SELECT
- et.open_ab openAb,
- bcr.paper_type paperTypeStyle
- FROM
- exam_task et
- LEFT JOIN
- basic_card_rule bcr ON et.card_rule_id = bcr.id
- <where>
- <if test="examId != null">
- AND exam_id = #{examId}
- </if>
- <if test="paperNumber != null and paperNumber != ''">
- AND paper_number = #{paperNumber}
- </if>
- </where>
- </select>
- <select id="findUnMarked" resultType="java.lang.Long">
- SELECT m.id
- FROM mark_student m
- <where>
- m.exam_id = #{examId}
- AND m.paper_number = #{paperNumber}
- AND m.subjective_status = 'UNMARK'
- AND EXISTS(SELECT 1
- FROM mark_task mt
- WHERE m.id = mt.student_id)
- <if test="classMark == true">
- AND EXISTS (
- SELECT 1
- FROM
- (select * from mark_user_class where exam_id = #{examId} and paper_number = #{paperNumber} and user_id = #{userId}) mc
- join
- (select ms.id, bes.teach_class_name from (select * from mark_student where exam_id = #{examId} and paper_number = #{paperNumber}) ms join (select id,teach_class_name from basic_exam_student where exam_id = #{examId}) bes on ms.basic_student_id = bes.id) s on mc.class_name = s.teach_class_name
- WHERE m.id = s.id
- )
- </if>
- </where>
- </select>
- <update id="updateSubjectiveScoreByVersion">
- update mark_student t set t.subjective_status = #{status},t.subjective_score = #{score},t.subjective_score_list = #{scoreList},t.version = t.version + 1
- <where>
- <if test="studentId != null and studentId != ''">
- AND t.id = #{studentId}
- </if>
- <if test="version != null and version != ''">
- AND t.version = #{version}
- </if>
- </where>
- </update>
- <select id="findNeedScoreCalculateStudent" resultType="com.qmth.teachcloud.mark.entity.MarkStudent">
- select ms.* from mark_student ms
- <where>
- exists(select 1 from mark_paper mp
- where mp.status = 'FORMAL' and mp.upload_count > 0 and exists(select 1 from basic_exam be
- where exists(select 1 from basic_school bs where bs.enable = true and bs.id = be.school_id)
- and be.enable = true and be.id = mp.exam_id) and ms.exam_id = mp.exam_id and ms.paper_number = mp.paper_number)
- and (ms.subjective_status = 'UNMARK' or ms.subjective_score = 0 or ms.subjective_score is null)
- and ms.is_upload = true and (ms.is_absent = false and ms.is_manual_absent = false and omr_absent = false)
- <!--and exists(select 1 from mark_task mt where ms.id = mt.student_id)*-->
- <if test="limit != null and limit != ''">
- ${limit}
- </if>
- </where>
- </select>
- </mapper>
|