364 lines
15 KiB
XML
364 lines
15 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="AssignDetail">
|
|
|
|
<resultMap id="BaseResultMap" type="java.util.Map">
|
|
<result column="assignDetailId" property="assigndetailid"/>
|
|
<result column="assignmentId" property="assignmentid"/>
|
|
<result column="assignType" property="assigntype"/>
|
|
<result column="unitId" property="unitid"/>
|
|
<result column="lessonId" property="lessonid"/>
|
|
<result column="title" property="title"/>
|
|
<result column="areaid" property="areaid"/>
|
|
<result column="teacherId" property="teacherid"/>
|
|
<result column="endTime" property="endtime"/>
|
|
<result column="startTime" property="starttime"/>
|
|
<result property="pointcasetypes" column="pointcasetypes" jdbcType="ARRAY"
|
|
typeHandler="com.spoken.api.handlers.ArrayTypeHandlerPg"/>
|
|
</resultMap>
|
|
|
|
|
|
<resultMap id="BaseResultMapstudent" type="java.util.Map">
|
|
<result column="assignDetailId" property="assigndetailid"/>
|
|
<result column="assignmentId" property="assignmentid"/>
|
|
<result column="assignType" property="assigntype"/>
|
|
<result column="unitId" property="unitid"/>
|
|
<result column="lessonId" property="lessonid"/>
|
|
<result column="title" property="title"/>
|
|
<result column="areaId" property="areaid"/>
|
|
<result column="number" property="number"/>
|
|
|
|
<result column="endTime" property="endtime"/>
|
|
<result column="startTime" property="starttime"/>
|
|
<result property="pointcasetypes" column="pointcasetypes" jdbcType="ARRAY"
|
|
typeHandler="com.spoken.api.handlers.ArrayTypeHandlerPg"/>
|
|
</resultMap>
|
|
|
|
|
|
|
|
<resultMap id="AssignDetailBookMap" type="BookDTO">
|
|
<id column="bookId" property="bookId"/>
|
|
<result column="bookName" property="bookName"/>
|
|
<collection property="units" ofType="UnitDTO" resultMap="AssignDetailUnitMap"/>
|
|
</resultMap>
|
|
|
|
<resultMap id="AssignDetailUnitMap" type="UnitDTO">
|
|
<id column="unitId" property="unitId"/>
|
|
<result column="unitName" property="unitName"/>
|
|
<result column="unitOrderId" property="unitOrderId"/>
|
|
<collection property="lessons" ofType="WechatLessonDTO" resultMap="AssignDetailLessonMap"/>
|
|
</resultMap>
|
|
|
|
<resultMap id="AssignDetailLessonMap" type="WechatLessonDTO">
|
|
<id column="assignDetailId" property="assignDetailId"/>
|
|
<result column="assignmentId" property="assignmentId"/>
|
|
<result column="assignType" property="assignType"/>
|
|
<result column="areaId" property="areaId"/>
|
|
<result column="lessonId" property="lessonId"/>
|
|
<result column="lessonName" property="lessonName"/>
|
|
<result column="lessonOrderId" property="lessonOrderId"/>
|
|
<result column="number" property="number"/>
|
|
</resultMap>
|
|
|
|
|
|
|
|
<insert id="insertAssignDetail" parameterType="AssignDetail">
|
|
INSERT INTO AssignDetail ( assignDetailId, assignmentId, assignType, unitId, lessonId, title , areaid ) Values
|
|
( #{assignDetailId}, #{assignmentId}, #{assignType}, #{unitId}, #{lessonId}, #{title} , #{areaid} )
|
|
</insert>
|
|
|
|
<update id="updateAssignDetail" parameterType="AssignDetail">
|
|
|
|
UPDATE AssignDetail SET
|
|
assignDetailId = #{assignDetailId}, assignmentId = #{assignmentId}, assignType = #{assignType}, unitId = #{unitId}, lessonId = #{lessonId}, title = #{title} , areaid = #{areaid}
|
|
where assignDetailId = #{assignDetailId}
|
|
|
|
</update>
|
|
|
|
<select id="getAssignDetailByKey" parameterType="java.util.Map" resultType="AssignDetail">
|
|
|
|
SELECT assignDetailId , assignmentId , assignType , unitId , lessonId , title , areaid
|
|
FROM AssignDetail WHERE assignDetailId = #{assignDetailId}
|
|
|
|
</select>
|
|
|
|
<select id="getSeqAssignDetail" resultType="Integer" useCache="false" flushCache="true">
|
|
|
|
SELECT nextval('seq_assignDetailId') ;
|
|
|
|
</select>
|
|
|
|
<insert id="insertAssignDetailBatch" parameterType="java.util.List">
|
|
|
|
INSERT INTO AssignDetail ( 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="getAssignDetailsByAssignmentId" parameterType="java.lang.Integer" resultType="AssignDetail">
|
|
|
|
SELECT assignDetailId , assignmentId , assignType , unitId , lessonId , title , areaid
|
|
FROM AssignDetail
|
|
WHERE assignmentId=#{assignmentId} order by unitId ,lessonId
|
|
|
|
</select>
|
|
|
|
<select id="getAssignLessonIdsByAssignmentId" parameterType="java.lang.Integer" resultType="java.lang.Integer">
|
|
|
|
SELECT a.lessonId
|
|
FROM AssignDetail as a inner join lesson ls on a.lessonid = ls.lessonid and ls.status = 1
|
|
WHERE assignmentId=#{assignmentId}
|
|
|
|
</select>
|
|
|
|
<select id="getAssignLessonIdsAndNumberByAssignmentId" parameterType="java.lang.Integer" resultType="java.util.Map">
|
|
|
|
SELECT a.lessonId,a.number
|
|
FROM AssignDetail as a inner join lesson ls on a.lessonid = ls.lessonid and ls.status = 1
|
|
WHERE assignmentId=#{assignmentId}
|
|
|
|
</select>
|
|
|
|
<select id="getAllBookUnitlessonByAssignmentId" parameterType="java.lang.Integer" resultMap="AssignDetailBookMap">
|
|
SELECT ad.assignDetailId,ad.assignmentId,ad.assignType,ad.areaId,ad.number,
|
|
b.lessonid bookId,b.lessonName bookName,
|
|
u.lessonid unitId,u.lessonName unitName,u.orderId unitOrderId,
|
|
l.lessonid lessonId,l.lessonName lessonName,l.orderId lessonOrderId
|
|
FROM assigndetail ad inner join lesson l on ad.lessonid = l.lessonid and l.status=1
|
|
inner join lesson u on ad.unitid = u.lessonid
|
|
inner join lesson b on u.parentid = b.lessonid
|
|
WHERE assignmentid = #{assignmentId} and assigntype='L'
|
|
|
|
ORDER BY u.orderid ASC,l.orderid ASC
|
|
|
|
</select>
|
|
|
|
<select id="getAssignUnitIdsByAssignmentId" parameterType="java.lang.Integer" resultType="java.lang.Integer">
|
|
|
|
SELECT unitId
|
|
FROM AssignDetail
|
|
WHERE assignmentId=#{assignmentId}
|
|
|
|
</select>
|
|
|
|
|
|
<select id="getAssignDetailsByStudentId" parameterType="java.util.Map" resultMap="BaseResultMapstudent">
|
|
<!-- with temp as ( select objectId , created
|
|
from Achivement
|
|
where uid = #{studentId} and areaId=#{areaId}
|
|
|
|
and score > 30
|
|
|
|
and pointcasetype in ( 4,3 , 5 , 6 , 7,8) )-->
|
|
|
|
SELECT a.assignDetailId , a.assignmentId , a.assignType , a.unitId ,
|
|
a.lessonId , a.title , a.areaId , s.endTime,s.startTime,s.pointcasetypes,a.number
|
|
FROM AssignDetail a
|
|
inner join Assignment s
|
|
on a.assignmentId = s.assignmentId and s.startTime < now() and s.assignType='L'
|
|
and s.endTime > now() and s.status= 1
|
|
inner join AssignToClass t
|
|
on t.assignmentid = s.assignmentid
|
|
inner join Classes c
|
|
on c.classesid = t.classesid and c.status = 1 and c.areaId=#{areaId}
|
|
inner join StudentOwnClass so
|
|
on so.classesid = c.classesid and so.status = 1 and so.areaId=#{areaId}
|
|
and so.studentid = #{studentId}
|
|
inner join Lesson l
|
|
on ((l.lessonid = a.unitid) or (l.lessonId = a.lessonId))
|
|
and l.parentid = #{lessonId}
|
|
<!-- left join temp ac
|
|
on 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, s.endTime,s.startTime,s.pointcasetypes
|
|
|
|
</select>
|
|
|
|
<select id="getCountAssignDetailsForAchivementToStudent" parameterType="java.util.Map" resultType="java.lang.Integer">
|
|
|
|
SELECT count(ac.achivementid)
|
|
FROM Achivement ac
|
|
<!-- where ac.uid = #{studentId} and ac.objectid = #{lessonid} and ac.created <= #{endtime} and ac.score > 30-->
|
|
where ac.uid = #{studentId} and ac.objectid = #{lessonid} and ac.created <= #{endtime}
|
|
and ac.created > #{starttime} and ac.areaId=#{areaid} and pointcasetype in
|
|
<foreach collection="pointcasetypes" item="item" open="(" close=")" separator=",">
|
|
#{item}
|
|
</foreach>
|
|
|
|
</select>
|
|
|
|
|
|
|
|
<select id="getAssignDetailsByTeacherId" parameterType="java.util.Map" resultMap="BaseResultMap">
|
|
|
|
SELECT a.assignDetailId , a.assignmentId , a.assignType , a.unitId , a.lessonId , a.title , a.areaid ,s.teacherId,s.endTime,s.startTime,
|
|
s.pointcasetypes
|
|
FROM AssignDetail a
|
|
inner join Assignment 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 Achivement ac
|
|
on ac.uid = s.teacherId and ac.objectid = a.lessonId and ac.created <= s.endTime
|
|
and ac.created > s.startTime and ac.areaId=#{areaId}-->
|
|
group by a.assignDetailId , a.assignmentId , a.assignType , a.unitId , a.lessonId , a.title , a.areaid,s.teacherId,s.endTime,s.startTime,s.pointcasetypes
|
|
|
|
</select>
|
|
|
|
|
|
<select id="getCountAssignDetailsForAchivement" parameterType="java.util.Map" resultType="java.lang.Integer">
|
|
|
|
SELECT count(ac.achivementid)
|
|
FROM Achivement ac
|
|
where ac.uid = #{teacherId} and ac.objectid = #{lessonId} and ac.created <= #{endTime}
|
|
and ac.created > #{startTime} and ac.areaId=#{areaId} and pointcasetype in
|
|
<foreach collection="pointcasetypes" item="item" open="(" close=")" separator=",">
|
|
#{item}
|
|
</foreach>
|
|
|
|
</select>
|
|
|
|
|
|
|
|
<select id="getAssignDetailsByStudentIdOfWord" 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 and w.status =1 and l.status =1 ),
|
|
temp as (
|
|
select b.lessonid ,a.wordsid ,created
|
|
from base b
|
|
left join wordachive a
|
|
on uid=#{studentId} and a.areaId=#{areaId} and b.wordsid=a.wordsid ) ,
|
|
temp2 as (
|
|
select s.assignmentId , s.startTime , s.endtime
|
|
from StudentOwnClass so
|
|
inner join Classes c
|
|
on so.studentid =#{studentId} and so.classesid = c.classesid and so.areaId=#{areaId}
|
|
and so.status = 1 and c.status = 1
|
|
inner join AssignToClass t
|
|
on c.classesid = t.classesid
|
|
inner join Assignment 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 AssignDetail 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="getAssignDetailsByTeacherIdOfWord" 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 wordachive a
|
|
on b.wordsid=a.wordsid and uid=#{teacherId} and a.areaId=#{areaId})
|
|
|
|
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 AssignDetail a
|
|
inner join Assignment 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="getFinishWordsByStudentId" 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 wordachive a
|
|
on uid=#{studentId} and a.areaId=#{areaId} and b.wordsid=a.wordsid ) ,
|
|
temp2 as (
|
|
select assignmentId , startTime , endtime
|
|
from Assignment
|
|
where assignmentid = #{assignmentId}
|
|
and status= 1 and assignType='W' )
|
|
SELECT b.wordsid
|
|
FROM temp2 t
|
|
inner join AssignDetail 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="getFinishWordsByTeacherId" 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 wordachive a
|
|
on b.wordsid=a.wordsid and uid=#{teacherId} and a.areaId=#{areaId}) ,
|
|
|
|
temp2 as(select assignmentId,startTime,endTime from assignment where assignmentId=#{assignmentId}
|
|
and status= 1 and assignType='W')
|
|
SELECT b.wordsId
|
|
FROM AssignDetail 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>
|
|
<select id="getAssignDetailsByAssignmentIdTwo" 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",a.number as "number"
|
|
from assigndetail a
|
|
inner join
|
|
lesson l on a.unitid = l.lessonid and assignmentid=#{assigndetailid} and l.status != 0
|
|
inner join
|
|
lesson l2 on l2.lessonid = l.parentid and l2.status !=0
|
|
|
|
order by assigndetailid
|
|
</select>
|
|
|
|
</mapper> |