etms/WEB-INF/mapping/et_exam_usertest.map.xml

287 lines
14 KiB
XML
Raw Normal View History

<?xml version="1.0" encoding="utf-8"?>
<dynamic-sql>
<sql id="getExamTestList"><![CDATA[
select et_exam_usertest.id,
et_exam_exampaper_and_editexampaper.name,et_exam_exampaper_and_editexampaper.description,et_exam_exampaper_and_editexampaper.sc,
et_exam_editexampaper.id ques_id,et_exam_editexampaper.edit_id,et_exam_editexampaper.num,et_exam_editexampaper.subject,et_exam_editexampaper.type,et_exam_editexampaper.type_num,et_exam_editexampaper.ismust,et_exam_editexampaper.score,et_exam_editexampaper.optionA,et_exam_editexampaper.optionB,et_exam_editexampaper.optionC,et_exam_editexampaper.optionD,et_exam_editexampaper.optionE,et_exam_editexampaper.optionF,et_exam_editexampaper.isParagraph,et_exam_editexampaper.answer,
et_exam_usertest.user_answer
from
(et_exam_exampaper_and_editexampaper inner join et_exam_editexampaper
on et_exam_exampaper_and_editexampaper.id = et_exam_editexampaper.edit_id)
left outer join et_exam_usertest
on et_exam_editexampaper.id = et_exam_usertest.question_id
where <@p>edit_id</@p>
]]></sql>
<sql id="getExamResultList"><![CDATA[
select id,user,department,name,total_score,user_time,mark_teacher from
(
select user_id as id,user,department,name,round(sum(user_score),2) as total_score,user_time,mark_teacher
from
et_exam_usertest
where <@p>exam_id</@p>
<@p p=" and (name like ? ">name</@p>
<@p p=" or department like ? ">department</@p>
<@p p=" or user like ? )">user</@p>
group by user_id
) examresult
]]></sql>
<sql id="getExamResultList之前的写法在此备份"><![CDATA[
select et_exam_usertest.user_id as id,et_exam_usertest.user,et_exam_exampaper_and_editexampaper.name,sum(et_exam_usertest.user_score) as total_score,et_exam_usertest.user_time,et_exam_usertest.mark_teacher
from
(et_exam_exampaper_and_editexampaper inner join et_exam_editexampaper
on et_exam_exampaper_and_editexampaper.id = et_exam_editexampaper.edit_id)
left outer join et_exam_usertest
on et_exam_editexampaper.id = et_exam_usertest.question_id
where <@p>edit_id</@p>
<@p p=" and et_exam_exampaper_and_editexampaper.name like ? ">name</@p>
<@p p=" or user like ? ">user</@p>
group by user_id
]]></sql>
<sql id="getExamComboxList"><![CDATA[
select id,name from et_exam_exampaper_and_editexampaper where 1=1
<@p p=" AND name like ? ">name</@p>
<@p p=" and %s">pg</@p>
<@p p=" and %s">card</@p>
<@p p=" and %s">createdepartment</@p>
order by convert(name using gbk)
]]></sql>
<sql id="getExamMarkList"><![CDATA[
select et_exam_usertest.id,
et_exam_exampaper_and_editexampaper.name,et_exam_exampaper_and_editexampaper.description,et_exam_exampaper_and_editexampaper.sc,et_exam_exampaper_and_editexampaper.state,
et_exam_editexampaper.id ques_id,et_exam_editexampaper.edit_id,et_exam_editexampaper.num,et_exam_editexampaper.subject,et_exam_editexampaper.type,et_exam_editexampaper.type_num,et_exam_editexampaper.ismust,et_exam_editexampaper.score,et_exam_editexampaper.optionA,et_exam_editexampaper.optionB,et_exam_editexampaper.optionC,et_exam_editexampaper.optionD,et_exam_editexampaper.optionE,et_exam_editexampaper.optionF,et_exam_editexampaper.isParagraph,et_exam_editexampaper.answer,
et_exam_usertest.user_answer,et_exam_usertest.user_score
from
(et_exam_exampaper_and_editexampaper inner join et_exam_editexampaper
on et_exam_exampaper_and_editexampaper.id = et_exam_editexampaper.edit_id)
left outer join et_exam_usertest
on et_exam_editexampaper.id = et_exam_usertest.question_id
where 1=1
<@p p=" and %s">edit_id</@p>
<@p p=" and %s">user_id</@p>
order by et_exam_editexampaper.num asc
]]></sql>
<sql id="getExamScoreList"><![CDATA[
select name,exam_id,user,user_id,user_time,round(sum(user_score),2) as total_score
from et_exam_usertest where <@p>user_id</@p>
<@p p=" and name like ? ">name</@p>
group by exam_id
]]></sql>
<sql id="getIsNotSubmitList"><![CDATA[
select * from et_exam_usertest where
<@p>user_id</@p>
<@p p=" and %s">exam_id</@p>
]]></sql>
<sql id="truncateExamDetail备份"><![CDATA[
truncate et_exam_detail
]]></sql>
<sql id="getPersonDetail备份"><![CDATA[
insert into et_exam_detail
select md5(uuid()) as id,usertest.name,limitation.exam_id,limitation.user,limitation.user_id
,(select if((SELECT EXISTS(select * from et_exam_usertest where
usertest.user_id = limitation.user_id and <@p>exam_id</@p>)) = 1,"已答","未答")) as userstate
from et_exam_limitation as limitation
left join et_exam_usertest as usertest
on limitation.exam_id = usertest.exam_id
where <@p p=" limitation.exam_id = ?">exam_id</@p>
group by limitation.user_id
]]></sql>
<sql id="getClassDetail备份"><![CDATA[
insert into et_exam_detail
select md5(uuid()) as id,usertest.name,class.exam_id,class.class_person as user,class.class_person_id as user_id
,(select if((SELECT EXISTS(select * from et_exam_usertest where
usertest.user_id = class.class_person_id and <@p>exam_id</@p>)) = 1,"已答","未答")) as userstate
from et_exam_limitation_class as class
left join et_exam_usertest as usertest
on class.exam_id = usertest.exam_id
where <@p p=" class.exam_id = ?">exam_id</@p>
group by class.class_person_id
]]></sql>
<sql id="getCourseDetail备份"><![CDATA[
insert into et_exam_detail
select md5(uuid()) as id,usertest.name,course.exam_id,course.course_person as user,course.course_person_id as user_id
,(select if((SELECT EXISTS(select * from et_exam_usertest where
usertest.user_id = course.course_person_id and <@p>exam_id</@p>)) = 1,"已答","未答")) as userstate
from et_exam_limitation_course as course
left join et_exam_usertest as usertest
on course.exam_id = usertest.exam_id
where <@p p=" course.exam_id = ?">exam_id</@p>
group by course.course_person_id
]]></sql>
<sql id="getDetail"><![CDATA[
select * from et_exam_detail where <@p>exam_id</@p>
]]></sql>
<sql id="getInstitutionDetail"><![CDATA[
select md5(uuid()) as id,b.username as user,b.usercode as user_id,b.orgname as department,'未答' as userstate,'0' as user_score
from et_train_baseuser b
where b.usercode not in (select user_id from et_exam_usertest where <@p>exam_id</@p> group by user_id)
union all
select md5(uuid()) as id,user,user_id,department,'已答' as userstate,round(sum(user_score),2) user_score
from et_exam_usertest
where <@p>exam_id</@p>
group by user_id
]]></sql>
<sql id="getInstitutionDetail 第二种写法 最慢"><![CDATA[
select md5(uuid()) as id,baseuser.exam_id,baseuser.username as user,baseuser.usercode as user_id
,(select if((SELECT EXISTS(select * from et_exam_usertest where
user_id = baseuser.usercode and <@p>exam_id</@p>)) = 1,"已答","未答")) as userstate
from (select e.id as exam_id,b.username,b.usercode from et_exam_exampaper_and_editexampaper e,et_train_baseuser b
where <@p p=" e.id = ? ">exam_id</@p>) as baseuser
left join et_exam_usertest as usertest
on baseuser.exam_id = usertest.exam_id
where <@p p=" baseuser.exam_id = ? ">exam_id</@p>
group by baseuser.usercode
]]></sql>
<sql id="getDepartmentDetail"><![CDATA[
select md5(uuid()) as id,b.username as user,b.usercode as user_id,b.orgname as department,'未答' as userstate,'0' as user_score
from et_train_baseuser b
where b.usercode not in (select user_id from et_exam_usertest where <@p>exam_id</@p> group by user_id)
and <@p p="orgcode in (%s)" f="?">user_id</@p>
union all
select md5(uuid()) as id,user,user_id,department,'已答' as userstate,round(sum(user_score),2) user_score
from et_exam_usertest
where <@p>exam_id</@p>
group by user_id
]]></sql>
<sql id="getDepartmentDetail 第二种写法 最慢"><![CDATA[
select md5(uuid()) as id,baseuser.exam_id,baseuser.username as user,baseuser.usercode as user_id
,(select if((SELECT EXISTS(select * from et_exam_usertest where
user_id = baseuser.usercode and <@p>exam_id</@p>)) = 1,"已答","未答")) as userstate
from (select l.exam_id,b.username,b.usercode from et_exam_limitation l,et_train_baseuser b
where <@p p=" l.exam_id = ? ">exam_id</@p>
and b.orgcode = any (select user_id from et_exam_limitation
where <@p>exam_id</@p>) group by b.usercode) as baseuser
left join et_exam_usertest as usertest
on baseuser.exam_id = usertest.exam_id
where <@p p=" baseuser.exam_id = ? ">exam_id</@p>
group by baseuser.usercode
]]></sql>
<sql id="getPersonDetail"><![CDATA[
select md5(uuid()) as id,l.user,l.user_id,b.orgname as department,'未答' as userstate,'0' as user_score
from et_exam_limitation l
inner join et_train_baseuser b
on l.user_id = b.usercode
where l.user_id not in (select user_id from et_exam_usertest where <@p>exam_id</@p> group by user_id)
and <@p p=" l.exam_id = ? ">exam_id</@p>
group by user_id
union all
select md5(uuid()) as id,user,user_id,department,'已答' as userstate,round(sum(user_score),2) user_score
from et_exam_usertest
where <@p>exam_id</@p>
group by user_id
]]></sql>
<sql id="getPersonDetail第二种写法"><![CDATA[
select md5(uuid()) as id,u.name,l.exam_id,l.user,l.user_id,'未答' as userstate
from et_exam_limitation l
left join (select exam_id,name,user,user_id from et_exam_usertest where exam_id = 'fb5f39fb8a694c30b941bc91c46d8036' group by user_id) u
on l.exam_id = u.exam_id
where (select count(1) as num from (select exam_id,name,user,user_id from et_exam_usertest where exam_id = 'fb5f39fb8a694c30b941bc91c46d8036' group by user_id) u
where u.exam_id = l.exam_id and u.user_id = l.user_id ) = 0
and l.exam_id = 'fb5f39fb8a694c30b941bc91c46d8036' group by user_id
union all
select md5(uuid()) as id,name,exam_id,user,user_id,'已答' as userstate
from et_exam_usertest
where exam_id = 'fb5f39fb8a694c30b941bc91c46d8036'
group by user_id
]]></sql>
<sql id="getPersonDetail第三种写法 最慢"><![CDATA[
select md5(uuid()) as id,usertest.name,limitation.exam_id,limitation.user,limitation.user_id
,(select if((SELECT EXISTS(select * from et_exam_usertest where
usertest.user_id = limitation.user_id and <@p>exam_id</@p>)) = 1,"已答","未答")) as userstate
from et_exam_limitation as limitation
left join et_exam_usertest as usertest
on limitation.exam_id = usertest.exam_id
where <@p p=" limitation.exam_id = ?">exam_id</@p>
group by limitation.user_id
]]></sql>
<sql id="getClassDetail"><![CDATA[
select md5(uuid()) as id,class.class_person as user,class.class_person_id as user_id,b.orgname as department,'未答' as userstate,'0' as user_score
from et_exam_limitation_class as class
inner join et_train_baseuser b
on class.class_person_id = b.usercode
where class.class_person_id not in (select user_id from et_exam_usertest where <@p>exam_id</@p> group by user_id)
and <@p p=" class.exam_id = ?">exam_id</@p>
group by class.class_person_id
union all
select md5(uuid()) as id,user,user_id,department,'已答' as userstate,round(sum(user_score),2) user_score
from et_exam_usertest
where <@p>exam_id</@p>
group by user_id
]]></sql>
<sql id="getClassDetail 第二种写法 最慢"><![CDATA[
select md5(uuid()) as id,usertest.name,class.exam_id,class.class_person as user,class.class_person_id as user_id
,(select if((SELECT EXISTS(select * from et_exam_usertest where
usertest.user_id = class.class_person_id and <@p>exam_id</@p>)) = 1,"已答","未答")) as userstate
from et_exam_limitation_class as class
left join et_exam_usertest as usertest
on class.exam_id = usertest.exam_id
where <@p p=" class.exam_id = ?">exam_id</@p>
group by class.class_person_id
]]></sql>
<sql id="getCourseDetail"><![CDATA[
select md5(uuid()) as id,course.course_person as user,course.course_person_id as user_id,b.orgname as department,'未答' as userstate,'0' as user_score
from et_exam_limitation_course as course
inner join et_train_baseuser b
on course.course_person_id = b.usercode
where course.course_person_id not in (select user_id from et_exam_usertest where <@p>exam_id</@p> group by user_id)
and <@p p=" course.exam_id = ?">exam_id</@p>
group by course.course_person_id
union all
select md5(uuid()) as id,user,user_id,department,'已答' as userstate,round(sum(user_score),2) user_score
from et_exam_usertest
where <@p>exam_id</@p>
group by user_id
]]></sql>
<sql id="getCourseDetail 第二种写法 最慢"><![CDATA[
select md5(uuid()) as id,usertest.name,course.exam_id,course.course_person as user,course.course_person_id as user_id
,(select if((SELECT EXISTS(select * from et_exam_usertest where
usertest.user_id = course.course_person_id and <@p>exam_id</@p>)) = 1,"已答","未答")) as userstate
from et_exam_limitation_course as course
left join et_exam_usertest as usertest
on course.exam_id = usertest.exam_id
where <@p p=" course.exam_id = ?">exam_id</@p>
group by course.course_person_id
]]></sql>
<sql id="updateAnswer"><![CDATA[
update et_exam_usertest u,et_exam_editexampaper e
set u.answer = e.answer
where u.question_id = e.id
and <@p>exam_id</@p>
]]></sql>
<sql id="updateUserScore"><![CDATA[
update et_exam_usertest
set user_score = (
case
when user_answer = answer
then score
else '0'
end
),
mark_teacher = '系统自判'
where <@p>exam_id</@p>
and (type = '单选题' or type = '多选题' or type = '判断题')
and (mark_teacher = '' or mark_teacher is NULL)
]]></sql></dynamic-sql>