284 lines
12 KiB
XML
284 lines
12 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="UnivAssignDetail">
|
|
|
|
<insert id="insertUnivAssignDetail" parameterType="UnivAssignDetail">
|
|
INSERT INTO UnivAssignDetail ( assignDetailId, assignmentId, assignType,
|
|
unitId, lessonId, title , areaid )
|
|
Values ( #{assignDetailId}, #{assignmentId}, #{assignType},
|
|
#{unitId}, #{lessonId}, #{title} , #{areaid} )
|
|
</insert>
|
|
|
|
<update id="updateUnivAssignDetail" parameterType="UnivAssignDetail">
|
|
UPDATE UnivAssignDetail
|
|
SET assignDetailId = #{assignDetailId}, assignmentId = #{assignmentId},
|
|
assignType = #{assignType}, unitId = #{unitId},
|
|
lessonId = #{lessonId}, title = #{title} , areaid = #{areaid}
|
|
WHERE assignDetailId = #{assignDetailId}
|
|
</update>
|
|
|
|
<select id="getUnivAssignDetailByKey" parameterType="java.util.Map" resultType="UnivAssignDetail">
|
|
SELECT assignDetailId , assignmentId , assignType , unitId , lessonId ,
|
|
title , areaid
|
|
FROM UnivAssignDetail
|
|
WHERE assignDetailId = #{assignDetailId}
|
|
</select>
|
|
|
|
<select id="getSeqUnivAssignDetail" resultType="Integer" useCache="false" flushCache="true">
|
|
SELECT nextval('seq_UnivassignDetailId') ;
|
|
</select>
|
|
|
|
<insert id="insertUnivAssignDetailBatch" parameterType="java.util.List">
|
|
INSERT INTO UnivAssignDetail ( assignDetailId, assignmentId, assignType,
|
|
unitId, lessonId, title , areaid )
|
|
Values
|
|
<foreach collection="list" index="index" item="item" separator=",">
|
|
( #{item.assignDetailId}, #{item.assignmentId},
|
|
#{item.assignType}, #{item.unitId},
|
|
#{item.lessonId}, #{item.title} ,
|
|
#{item.areaid} )
|
|
</foreach>
|
|
</insert>
|
|
|
|
<select id="getUnivAssignDetailsByAssignmentId" parameterType="java.lang.Integer" resultType="UnivAssignDetail">
|
|
SELECT assignDetailId , assignmentId , assignType , unitId , lessonId ,
|
|
title , areaid
|
|
FROM UnivAssignDetail
|
|
WHERE assignmentId=#{assignmentId}
|
|
</select>
|
|
|
|
<select id="getUnivAssignLessonIdsByAssignmentId" parameterType="java.lang.Integer" resultType="java.lang.Integer">
|
|
SELECT lessonId
|
|
FROM UnivAssignDetail
|
|
WHERE assignmentId=#{assignmentId}
|
|
</select>
|
|
|
|
<select id="getUnivAssignDetailsByStudentId" parameterType="java.util.Map" resultType="java.util.HashMap">
|
|
SELECT a.assignDetailId , a.assignmentId , a.assignType , a.unitId ,
|
|
a.lessonId , a.title , a.areaid , count(ac.objectId) as finishCount
|
|
FROM UnivAssignDetail a
|
|
inner join UnivAssignment s
|
|
on a.assignmentId = s.assignmentId and s.endTime > now() and s.startTime< now()
|
|
and s.status= 1 and s.assignType='L'
|
|
inner join UnivAssignToClass t
|
|
on t.assignmentid = s.assignmentid
|
|
inner join UnivClasses c
|
|
on c.classesid = t.classesid and c.status = 1
|
|
inner join UnivStudentOwnClass so
|
|
on so.classesid = c.classesid and so.status = 1
|
|
and so.studentid = #{studentId}
|
|
inner join Lesson l
|
|
on ((l.lessonid = a.unitid) or (l.lessonId = a.lessonId))
|
|
and l.parentid = #{lessonId}
|
|
left join UnivAchivement ac
|
|
on ac.uid = so.studentId and ac.objectid = a.lessonId
|
|
|
|
and ac.created <= s.endTime and ac.created > s.startTime
|
|
|
|
group by a.assignDetailId , a.assignmentId , a.assignType ,
|
|
a.unitId , a.lessonId , a.title , a.areaid
|
|
</select>
|
|
|
|
<select id="getUnivAssignDetailsByTeacherId" parameterType="java.util.Map" resultType="java.util.HashMap">
|
|
SELECT a.assignDetailId , a.assignmentId , a.assignType , a.unitId ,
|
|
a.lessonId , a.title , a.areaid , count(ac.objectId) as finishCount
|
|
FROM UnivAssignDetail a
|
|
inner join UnivAssignment s
|
|
on a.assignmentId = s.assignmentId and s.endTime > now() and s.startTime< now() and s.assignType='L'
|
|
and s.teacherId =#{teacherId} and s.status= 1
|
|
inner join Lesson l
|
|
on ((l.lessonid = a.unitid) or (l.lessonId = a.lessonId))
|
|
and l.parentid = #{lessonId}
|
|
left join UnivAchivement ac
|
|
on ac.uid = s.teacherId and ac.objectid = a.lessonId
|
|
|
|
and ac.created <= s.endTime and ac.created > s.startTime
|
|
|
|
group by a.assignDetailId , a.assignmentId , a.assignType ,
|
|
a.unitId , a.lessonId , a.title , a.areaid
|
|
</select>
|
|
|
|
|
|
<select id="getUnivAssignDetailsOfBookByAssignmentId" parameterType="java.lang.Integer" resultType="java.util.HashMap">
|
|
<!--select assigndetailid "assigndetailId", l.lessonname "unitName",l.lessonid "unitId",
|
|
a.title "lessonName",a.lessonid "lessonId",l2.lessonname "bookName",l2.lessonid "bookId"
|
|
from Univassigndetail a
|
|
inner join
|
|
lesson l on a.unitid = l.lessonid and assignmentid=#{assigndetailid}
|
|
inner join
|
|
lesson l2 on l2.lessonid = l.parentid
|
|
order by assigndetailid -->
|
|
with temp as (select assigndetailid,unitid,lessonid ,title from Univassigndetail where assignmentid = #{assigndetailid})
|
|
select assigndetailid "assigndetailId", l.lessonname "unitName",l.lessonid "unitId",a.title "lessonName",a.lessonid "lessonId",l2.lessonname "bookName",l2.lessonid "bookId" from temp as a inner join lesson l on a.unitid = l.lessonid inner join lesson l2 on l2.lessonid = l.parentid order by assigndetailid
|
|
|
|
</select>
|
|
|
|
|
|
|
|
<select id="getUnivFinishAssignStat" parameterType="java.util.Map" resultType="java.util.HashMap">
|
|
SELECT a.assignmentId ,count(DISTINCT a.lessonId) as "lessonCount",max(ac.score) "maxScore",
|
|
avg(ac.score) "avgScore",max(ac.created) created,
|
|
count(ac.objectId) as howmuch,count( distinct ac.objectId) as "completecount"
|
|
FROM UnivAssignDetail a
|
|
inner join UnivAssignment s
|
|
on a.assignmentId = s.assignmentId
|
|
and s.status= 1 and a.assignmentId = #{assignmentId}
|
|
|
|
|
|
left join UnivAchivement ac
|
|
on ac.uid = #{userId} and ac.objectid = a.lessonId
|
|
|
|
and ac.created <= s.endTime and ac.created > s.startTime
|
|
|
|
group by a.assignmentId
|
|
</select>
|
|
|
|
|
|
<select id="getUnivFinishAssignStatWord" parameterType="java.util.Map" resultType="java.util.HashMap">
|
|
|
|
with temp as(select a.assignmentId,count(distinct(w.wordsId )) lessonCount
|
|
from words w inner join univassigndetail a on a.unitid=w.lessonid and assignmentid=#{assignmentId}
|
|
group by a.assignmentId )
|
|
SELECT a.assignmentId ,count(distinct(w.wordsId )) as "lessonCount",max(ac.score) "maxScore",
|
|
avg(ac.score) "avgScore",max(ac.created) created,
|
|
count(ac.wordsid) as howmuch,count( distinct ac.wordsid) as "completecount"
|
|
FROM UnivAssignDetail a
|
|
inner join UnivAssignment s
|
|
on a.assignmentId = s.assignmentId
|
|
and s.status= 1 and a.assignmentId = #{assignmentId}
|
|
inner join words w
|
|
on a.unitid=w.lessonid
|
|
|
|
left join univwordachive ac
|
|
on ac.uid = #{userId} and ac.wordsid = w.wordsid
|
|
|
|
and ac.created <= s.endTime and ac.created > s.startTime
|
|
|
|
group by a.assignmentId
|
|
</select>
|
|
|
|
|
|
<select id="getUnivAssignDetailsByStudentIdOfWord" parameterType="java.util.Map" resultType="java.util.HashMap">
|
|
|
|
with base as (
|
|
select w.lessonid,w.wordsid
|
|
from lesson l
|
|
inner join words w
|
|
on l.parentid=#{lessonId} and w.lessonid=l.lessonid ),
|
|
temp as (
|
|
select b.lessonid ,a.wordsid ,created
|
|
from base b
|
|
left join univwordachive a
|
|
on uid=#{studentId} and b.wordsid=a.wordsid ) ,
|
|
temp2 as (
|
|
select s.assignmentId , s.startTime , s.endtime
|
|
from univStudentOwnClass so
|
|
inner join univClasses c
|
|
on so.studentid =#{studentId} and so.classesid = c.classesid
|
|
and so.status = 1 and c.status = 1
|
|
inner join univAssignToClass t
|
|
on c.classesid = t.classesid
|
|
inner join univAssignment s
|
|
on t.assignmentid = s.assignmentid
|
|
|
|
and s.startTime < now() and s.endTime > now()
|
|
|
|
and s.status= 1 and s.assignType='W' )
|
|
|
|
SELECT a.assignDetailId , a.assignmentId , a.assignType , a.unitId ,
|
|
a.lessonId , a.title , a.areaid ,
|
|
case when count(distinct b.wordsid )=count(distinct ac.wordsid ) then 1
|
|
else 0 end as finishCount,
|
|
count(distinct ac.wordsid )||'/'||count(distinct b.wordsid ) as finishWords
|
|
FROM temp2 t
|
|
inner join univAssignDetail a on t.assignmentId = a.assignmentId
|
|
inner join base b
|
|
on a.unitid = b.lessonid
|
|
left join temp ac
|
|
|
|
on ac.created <= t.endTime and ac.created > t.startTime and a.unitid=ac.lessonid
|
|
|
|
group by a.assignDetailId , a.assignmentId , a.assignType , a.unitId , a.lessonId , a.title , a.areaid
|
|
order by a.assignmentId,a.assignDetailId
|
|
|
|
</select>
|
|
|
|
<select id="getUnivAssignDetailsByTeacherIdOfWord" parameterType="java.util.Map" resultType="java.util.HashMap">
|
|
with base as(
|
|
select w.lessonid,wordsid from words w inner join lesson l on l.parentid=#{lessonId} and w.lessonid=l.lessonid
|
|
group by w.lessonid,wordsid ),
|
|
temp as(
|
|
select b.lessonid ,a.wordsid ,created from base b
|
|
left join univwordachive a
|
|
on b.wordsid=a.wordsid and uid=#{teacherId})
|
|
|
|
SELECT a.assignDetailId , a.assignmentId , a.assignType , a.unitId ,
|
|
a.lessonId , a.title , a.areaid ,case when count(distinct(b.wordsid))=count(distinct(ac.wordsid)) then 1 else 0 end as finishCount,
|
|
count(distinct(ac.wordsid))||'/'||count(distinct(b.wordsid)) as finishWords
|
|
FROM univAssignDetail a
|
|
inner join univAssignment s
|
|
on a.assignmentId = s.assignmentId and s.startTime < now() and s.endTime > now() and s.status= 1 and s.assignType='W'
|
|
and s.teacherId=#{teacherId}
|
|
inner join base b
|
|
on b.lessonid=a.unitid
|
|
left join temp ac
|
|
on ac.created <= s.endTime and ac.created > s.startTime and a.unitid=ac.lessonid
|
|
group by a.assignDetailId , a.assignmentId , a.assignType , a.unitId , a.lessonId , a.title , a.areaid
|
|
order by a.assignmentId,a.assignDetailId
|
|
|
|
</select>
|
|
|
|
<select id="getUnivFinishWordsByStudentId" parameterType="java.util.Map" resultType="java.util.HashMap">
|
|
with base as (
|
|
select w.lessonid,w.wordsid
|
|
from lesson l
|
|
inner join words w
|
|
on l.parentid=#{lessonId} and w.lessonid=l.lessonid ),
|
|
temp as (
|
|
select b.lessonid ,a.wordsid ,created
|
|
from base b
|
|
left join univwordachive a
|
|
on uid=#{studentId} and b.wordsid=a.wordsid ) ,
|
|
temp2 as (
|
|
select assignmentId , startTime , endtime
|
|
from univAssignment
|
|
where assignmentid = #{assignmentId}
|
|
and status= 1 and assignType='W' )
|
|
SELECT b.wordsid
|
|
FROM temp2 t
|
|
inner join univAssignDetail a on t.assignmentId = a.assignmentId
|
|
inner join base b
|
|
on a.unitid = b.lessonid
|
|
left join temp ac
|
|
|
|
on ac.created <= t.endTime and ac.created > t.startTime and ac.wordsId=b.wordsid
|
|
|
|
group by b.wordsid having count(ac.wordsid)=0
|
|
order by b.wordsid
|
|
</select>
|
|
|
|
<select id="getUnivFinishWordsByTeacherId" parameterType="java.util.Map" resultType="java.util.HashMap">
|
|
with base as(
|
|
select w.lessonid,wordsid from words w inner join lesson l on l.parentid=#{lessonId} and w.lessonid=l.lessonid
|
|
group by w.lessonid,wordsid ),
|
|
|
|
temp as( select b.lessonid ,a.wordsid ,created from base b
|
|
inner join univwordachive a
|
|
on b.wordsid=a.wordsid and uid=#{teacherId}),
|
|
|
|
temp2 as(select assignmentId,startTime,endTime from assignment where assignmentId=#{assignmentId}
|
|
and status= 1 and assignType='W')
|
|
SELECT b.wordsId
|
|
FROM univAssignDetail a
|
|
inner join temp2 s
|
|
on a.assignmentId = s.assignmentId
|
|
inner join base b
|
|
on b.lessonid=a.unitid
|
|
left join temp ac
|
|
on ac.created <= s.endTime and ac.created > s.startTime and ac.wordsid=b.wordsid
|
|
group by b.wordsid having count(ac.wordsid)=0
|
|
order by b.wordsid
|
|
|
|
</select>
|
|
</mapper> |