2026-03-10 14:30:24 +08:00

422 lines
14 KiB
XML

<?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="ModelAnswer">
<insert id="insertModelAnswer" parameterType="ModelAnswer">
INSERT INTO ModelAnswer ( examAnswerId, userId, examId, examPaperId,
origiScore, score, trueScore, created , areaId ,
machineScore , humanScore , paperFile , md5Code , content,examGuid,answerGuid ) Values (
#{examAnswerId}, #{userId}, #{examId}, #{examPaperId}, #{origiScore}, #{score},
#{trueScore},current_timestamp , #{areaId} ,
#{machineScore} , #{humanScore} , #{paperFile} , #{md5Code} , #{content} ,#{examGuid},#{answerGuid} )
</insert>
<update id="updateModelAnswer" parameterType="ModelAnswer">
UPDATE ModelAnswer
SET userId = #{userId}, examId = #{examId},
examPaperId = #{examPaperId}, origiScore = #{origiScore}, score = #{score}, trueScore = #{trueScore},
areaId = #{areaId} ,
machineScore = #{machineScore} , humanScore = #{humanScore} ,
paperFile = #{paperFile} , md5Code = #{md5Code} , content = #{content},examGuid=#{examGuid},answerGuid=#{answerGuid}
<if test="created!=null">
,created=#{created}
</if>
where examAnswerId=#{examAnswerId}
</update>
<select id="getModelAnswerByKey" parameterType="java.lang.Long" resultType="ModelAnswer">
SELECT examAnswerId, userId, examId, examPaperId,
origiScore, score, trueScore, created , areaid ,
machineScore , humanScore , paperFile , md5Code , content,examGuid,answerGuid
FROM ModelAnswer
WHERE examAnswerId=#{examAnswerId}
</select>
<select id="getSeqModelAnswer" resultType="Long" useCache="false" flushCache="true">
SELECT nextval('seq_ModelAnswerId') ;
</select>
<select id="getModelAnswer" resultType="ModelAnswer" parameterType="java.util.Map">
SELECT examAnswerId, userId, examId, examPaperId,
origiScore, score, trueScore, created , areaid ,
machineScore , humanScore , paperFile , md5Code , content,examGuid,answerGuid from modelAnswer where userid=#{userId} and examId = #{examId}
</select>
<select id="getModelAnswerCountByAnswerGuid" resultType="java.lang.Integer" parameterType="java.lang.String">
select count(examanswerid) from modelAnswer where answerGuid=#{_parameter}
</select>
<select id="getModelExamInfos" parameterType="java.util.Map" resultType="java.util.Map">
select me.batchCode "batchCode",me.title,cs.classname "className",c.classesid as classesId
from classownmodel c
inner join classes cs
on c.classesid=cs.classesid
and cs.classtype=1 and cs.status=1
<if test="roleType==100">
and cs.teacherid=#{userId}
</if>
<if test="roleType==14">
and cs.schoolId=(select schoolId from admin where adminid=#{userId})
</if>
<if test="roleType==13">
and cs.schoolId in (select valuelong from parameter where paralong=#{userId} and paratype=9)
</if>
<if test="roleType==15">
and cs.classesId in (select valuelong from parameter where paralong=#{userId} and paratype=10)
</if>
<if test="objectType==3">
and cs.schoolId in (select schoolid from school where areaId in
(select areaId from area where parentid in (select areaId from area where parentid=#{areaId} )))
</if>
<if test="objectType==2">
and cs.schoolId in (select schoolid from school where areaId in
(select areaId from area where parentid=#{areaId} ))
</if>
<if test="objectType==1">
and cs.schoolId in (select schoolid from school where areaId=#{areaId})
</if>
<if test="schoolId!=null">
and cs.schoolId=#{schoolId}
</if>
<if test="classesId!=null">
and cs.classesId=#{classesId}
</if>
inner join modelanswer e
on e.examid=c.examid
<if test="examId!=null">
and e.examId=#{examId}
</if>
inner join modelexam me on me.examid=c.examid
<if test="examId!=null">
and me.examId=#{examId}
</if>
<if test="startTime!=null">
and me.created &gt; #{startTime}
</if>
<if test="endTime!=null">
and me.created &lt; #{endTime}
</if>
inner join student st
on st.studentid=e.userid
<if test="recognizecode!=null">
and upper(st.recognizecode)=upper(#{recognizecode})
</if>
inner join teacher tr
on tr.teacherid=cs.teacherid
<if test="loginNo!=null">
and upper(tr.loginNo)=upper(#{loginNo})
</if>
<where>
<if test="key != null and key != ''">
cs.classname like CONCAT('%',#{key},'%') or me.title like CONCAT('%',#{key},'%')
</if>
</where>
group by me.batchCode ,me.title,cs.classname,c.classesid
order by me.batchCode desc
</select>
<select id="getNotJoinStudentInfos" flushCache="true" parameterType="java.util.Map" resultType="ModelAnswerDTO">
with joinstu as (select b.userId from modelexam as a inner join modelanswer as b on a.examid = b.examid where a.batchcode= #{batchCode})
select st.studentid "userId",st.truename "studentName",st.recognizeCode,cl.className,st.code ,cl.areaId,cl.schoolyear,cl.classlevel from classes as cl inner join studentownclass as stc on cl.classesid= stc.classesid and stc.status =1
inner join student as st on st.studentid = stc.studentid where cl.classesid = #{classesId} and st.studentid not in (select userId from joinstu) order by st.studentid desc;
</select>
<select id="getModelAnswersForOut" parameterType="java.util.Map" resultType="ModelAnswerDTO">
with temp as (select cs.classname,cs.classesid,cs.schoolyear,cs.teacherid ,cs.schoolid,cs.classlevel,cs.areaid from
classes cs
where cs.classtype=1 and cs.status=1
<if test="roleType==100">
and cs.teacherid=#{userId}
</if>
<if test="roleType==14">
and cs.schoolId=(select schoolId from admin where adminid=#{userId})
</if>
<if test="roleType==13">
and cs.schoolId in (select valuelong from parameter where paralong=#{userId} and paratype=9)
</if>
<if test="roleType==15">
and cs.classesId in (select valuelong from parameter where paralong=#{userId} and paratype=10)
</if>
<if test="objectType==3">
and cs.schoolId in (select schoolid from school where areaId in
(select areaId from area where parentid in (select areaId from area where parentid=#{areaId} )))
</if>
<if test="objectType==2">
and cs.schoolId in (select schoolid from school where areaId in
(select areaId from area where parentid=#{areaId} ))
</if>
<if test="objectType==1">
and cs.schoolId in (select schoolid from school where areaId=#{areaId})
</if>
<if test="schoolId!=null and schoolId != ''">
and cs.schoolId=#{schoolId}
</if>
<if test="classesId!=null and classesId != ''">
and cs.classesId=#{classesId}
</if>
)
select e.examanswerid ,e.exampaperid ,e.userid ,st.truename "studentName" ,st.recognizecode ,cs.classname ,cs.schoolyear,cs.classesid,st.code,cs.classlevel,cs.areaid,
e.score,e.origiscore ,e.trueScore ,tr.truename "teacherName" ,tr.loginNo ,sl.schoolname , er.title,e.created ,me.batchCode,me.title "modelExamTitle"
from classownmodel c
inner join modelanswer e
on e.examid=c.examid
<if test="examId!=null and examId != ''">
and e.examId=#{examId}
</if>
inner join modelexam me on me.examid=e.examid
<if test="batchCodes!=null">
and me.batchCode in
<foreach collection="batchCodes" index="index" item="item" separator="," open="(" close=")">
#{item}
</foreach>
</if>
<if test="startTime!=null">
and me.created &gt; #{startTime}
</if>
<if test="endTime!=null">
and me.created &lt; #{endTime}
</if>
inner join exampaper er
on er.exampaperid=e.exampaperid
inner join student st
on st.studentid=e.userid
<if test="recognizecode!=null and recognizecode!=''">
and upper(st.recognizecode)=upper(#{recognizecode})
</if>
inner join studentownclass as stc on st.studentid = stc.studentid
inner join temp as cs on stc.classesid=cs.classesid
inner join teacher tr
on tr.teacherid=cs.teacherid
<if test="loginNo!=null and loginNo!=''">
and upper(tr.loginNo)=upper(#{loginNo})
</if>
inner join school sl
on sl.schoolid=cs.schoolid
group by e.examanswerid ,e.exampaperid ,e.userid ,st.truename ,st.recognizecode ,cs.classname ,cs.schoolyear,cs.classesid,st.code,cs.classlevel,cs.areaid,
e.score,e.origiscore ,e.trueScore ,tr.truename ,tr.loginNo ,sl.schoolname , er.title,e.created ,me.batchCode
,me.title
order by e.score desc
</select>
<!--todo 这里增加st.code-->
<select id="getModelAnswers" resultType="java.util.Map" parameterType="java.util.Map">
select e.examanswerid "examAnswerId",e.exampaperid "examPaperId",e.userid "userId",st.truename "studentName",st.recognizecode "recognizeCode",cs.classname "className",
e.score,e.origiscore "origiScore",e.trueScore "trueScore",tr.truename "teacherName",tr.loginNo "loginNo",sl.schoolname "schoolName", er.title,e.created ,me.batchCode "batchCode"
from classownmodel c
inner join modelanswer e
on e.examid=c.examid
<!--<if test="startTime!=null">-->
<!--and e.created &gt; #{startTime}-->
<!--</if>-->
<!---->
<!--<if test="endTime!=null">-->
<!--and e.created &lt; #{endTime}-->
<!--</if>-->
<if test="examId!=null">
and e.examId=#{examId}
</if>
inner join modelexam me on me.examid=e.examid
<if test="batchCode!=null">
and me.batchCode=#{batchCode}
</if>
<if test="startTime!=null">
and me.created &gt; #{startTime}
</if>
<if test="endTime!=null">
and me.created &lt; #{endTime}
</if>
inner join exampaper er
on er.exampaperid=e.exampaperid
inner join student st
on st.studentid=e.userid
<if test="recognizecode!=null">
and upper(st.recognizecode)=upper(#{recognizecode})
</if>
inner join studentownclass as stc on st.studentid = stc.studentid
inner join classes cs
on stc.classesid=cs.classesid
and cs.classtype=1 and cs.status=1
<if test="roleType==100">
and cs.teacherid=#{userId}
</if>
<if test="roleType==14">
and cs.schoolId=(select schoolId from admin where adminid=#{userId})
</if>
<if test="roleType==13">
and cs.schoolId in (select valuelong from parameter where paralong=#{userId} and paratype=9)
</if>
<if test="roleType==15">
and cs.classesId in (select valuelong from parameter where paralong=#{userId} and paratype=10)
</if>
<if test="objectType==3">
and cs.schoolId in (select schoolid from school where areaId in
(select areaId from area where parentid in (select areaId from area where parentid=#{areaId} )))
</if>
<if test="objectType==2">
and cs.schoolId in (select schoolid from school where areaId in
(select areaId from area where parentid=#{areaId} ))
</if>
<if test="objectType==1">
and cs.schoolId in (select schoolid from school where areaId=#{areaId})
</if>
<if test="schoolId!=null">
and cs.schoolId=#{schoolId}
</if>
<if test="classesId!=null">
and cs.classesId=#{classesId}
</if>
inner join teacher tr
on tr.teacherid=cs.teacherid
<if test="loginNo!=null">
and upper(tr.loginNo)=upper(#{loginNo})
</if>
inner join school sl
on sl.schoolid=cs.schoolid
group by e.examanswerid ,e.exampaperid ,e.userid ,st.truename ,st.recognizecode ,cs.classname ,
e.score,e.origiscore ,e.trueScore ,tr.truename ,tr.loginNo,sl.schoolname , er.title,e.created ,me.batchCode
order by e.examid desc,e.created desc,e.userid desc
<if test="pageSize!=null">
limit #{pageSize}
</if>
<if test="offset!=null">
offset #{offset}
</if>
</select>
<select id="getModelAnswersCount" resultType="java.lang.Integer" parameterType="java.util.Map">
select count(distinct (e.examid,e.userid ))
from classownmodel c
inner join modelanswer e
on e.examid=c.examid
<if test="examId!=null">
and e.examId=#{examId}
</if>
inner join modelexam me on me.examid=e.examid
<if test="batchCode!=null">
and me.batchCode=#{batchCode}
</if>
<if test="startTime!=null">
and me.created &gt; #{startTime}
</if>
<if test="endTime!=null">
and me.created &lt; #{endTime}
</if>
inner join exampaper er
on er.exampaperid=e.exampaperid
inner join student st
on st.studentid=e.userid
<if test="recognizecode!=null">
and upper(st.recognizecode)=upper(#{recognizecode})
</if>
inner join studentownclass as stc on st.studentid = stc.studentid
inner join classes cs
on stc.classesid=cs.classesid
and cs.classtype=1 and cs.status=1
<if test="roleType==100">
and cs.teacherid=#{userId}
</if>
<if test="roleType==14">
and cs.schoolId=(select schoolId from admin where adminid=#{userId})
</if>
<if test="roleType==13">
and cs.schoolId in (select valuelong from parameter where paralong=#{userId} and paratype=9)
</if>
<if test="roleType==15">
and cs.classesId in (select valuelong from parameter where paralong=#{userId} and paratype=10)
</if>
<if test="objectType==3">
and cs.schoolId in (select schoolid from school where areaId in
(select areaId from area where parentid in (select areaId from area where parentid=#{areaId} )))
</if>
<if test="objectType==2">
and cs.schoolId in (select schoolid from school where areaId in
(select areaId from area where parentid=#{areaId} ))
</if>
<if test="objectType==1">
and cs.schoolId in (select schoolid from school where areaId=#{areaId})
</if>
<if test="schoolId!=null">
and cs.schoolId=#{schoolId}
</if>
<if test="classesId!=null">
and cs.classesId=#{classesId}
</if>
inner join teacher tr
on tr.teacherid=cs.teacherid
<if test="loginNo!=null">
and upper(tr.loginNo)=upper(#{loginNo})
</if>
inner join school sl
on sl.schoolid=cs.schoolid
</select>
<select id="getModelAnswersByExamId" parameterType="java.lang.Integer" resultType="ModelAnswer">
SELECT examAnswerId, userId, examId, examPaperId,
origiScore, score, trueScore, created , areaid ,
machineScore , humanScore , paperFile , md5Code , content,examGuid,answerGuid
FROM ModelAnswer
WHERE examId=#{examId}
</select>
</mapper>