276 lines
11 KiB
XML
276 lines
11 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="com.univ3e.dao.UnivClassesDao">
|
|
|
|
<select id= "getNextSeqClassmessage" resultType="int">
|
|
SELECT NEXTVAL('seq_univclassmessageid')
|
|
</select>
|
|
|
|
<select id="findClassesByID" parameterType="long" resultType="com.univ3e.entity.UnivClasses">
|
|
SELECT * FROM UnivClasses WHERE classesid = #{classesid}
|
|
</select>
|
|
|
|
<select id="findClassesByNameAndTeacher" parameterType="map" resultType="com.univ3e.entity.UnivClasses" >
|
|
SELECT * FROM UnivClasses WHERE classname = #{className} and teacherid = #{teacherId} and status = 1
|
|
</select>
|
|
|
|
<insert id="doSave" parameterType="com.univ3e.entity.UnivClasses">
|
|
INSERT INTO univclasses(classesid,classlevel,classname,description,schoolyear,classorder,schoolid,areaid,teacherid,classtype,status,source)
|
|
VALUES (
|
|
<if test="classesid == 0">
|
|
(SELECT NEXTVAL('seq_univclassesid')),
|
|
</if>
|
|
<if test="classesid != 0">
|
|
#{classesid},
|
|
</if>
|
|
#{classlevel},#{classname},#{description},#{schoolyear},#{classorder},
|
|
#{schoolid},#{areaid},#{teacherid},#{classtype},#{status},#{source})
|
|
</insert>
|
|
|
|
<update id="doUpdateSave" parameterType="com.univ3e.entity.UnivClasses">
|
|
Update univclasses
|
|
<set>
|
|
<if test="classlevel != null">classlevel = #{classlevel},</if>
|
|
<if test="classname != null">classname = #{classname},</if>
|
|
<if test="description != null">description = #{description},</if>
|
|
<if test="schoolyear != null">schoolyear = #{schoolyear},</if>
|
|
<if test="classorder != null">classorder = #{classorder},</if>
|
|
<if test="schoolid != null">schoolid = #{schoolid},</if>
|
|
<if test="areaid != null">areaid = #{areaid},</if>
|
|
<if test="teacherid != null">teacherid = #{teacherid},</if>
|
|
<if test="classtype != null">classtype = #{classtype},</if>
|
|
<if test="status != null">status = #{status},</if>
|
|
<if test="source != null">source = #{source}</if>
|
|
</set>
|
|
WHERE classesid = #{classesid}
|
|
</update>
|
|
|
|
<select id="findSchoolByClassid" parameterType="long" resultType="com.univ3e.entity.UnivErsity">
|
|
SELECT *
|
|
FROM UnivErsity
|
|
WHERE schoolid = (select schoolid from univclasses where classesid = #{classesid})
|
|
</select>
|
|
|
|
<select id="findStudentsByClassid" parameterType="long" resultType="com.univ3e.entity.UnivStudent">
|
|
SELECT * FROM univstudent
|
|
WHERE studentid in (
|
|
SELECT b.studentid
|
|
from univstudentownclass b
|
|
where b.classesid = #{classesid} and b.status = 1) and status=1
|
|
ORDER BY trueName
|
|
</select>
|
|
|
|
<select id="findStudesByClassid" parameterType="map" resultType="com._3e.dto.ClassStudentDto" >
|
|
SELECT s.*,c.isdelegate
|
|
FROM UnivStudent s
|
|
inner join UnivStudentOwnClass c on
|
|
s.studentid = c.studentId and s.status=1
|
|
where classesId = #{classesId} and c.status= 1
|
|
<if test="orderby != null">
|
|
order by ${orderby}
|
|
</if>
|
|
<if test="page != null">
|
|
LIMIT #{page.limit} OFFSET #{page.offset}
|
|
</if>
|
|
</select>
|
|
|
|
<select id="findClassByTeacherid" parameterType="long" resultType="com.univ3e.entity.UnivClasses">
|
|
SELECT * FROM UnivClasses
|
|
WHERE teacherid = #{teacherid} and status = 1
|
|
ORDER BY classType
|
|
</select>
|
|
|
|
<select id="findClassesByTeacherid" parameterType="long" resultType="com.univ3e.entity.UnivClasses" >
|
|
SELECT * FROM UnivClasses
|
|
WHERE teacherid = #{teacherid} and status = 1
|
|
AND classType = 1
|
|
</select>
|
|
|
|
<select id="findAllClassByTeacherid" parameterType="long" resultType="com.univ3e.entity.UnivClasses" >
|
|
SELECT * FROM UnivClasses
|
|
WHERE teacherid = #{teacherid}
|
|
</select>
|
|
|
|
<select id="findTeamByTeacherid" parameterType="long" resultType="com.univ3e.entity.UnivClasses">
|
|
SELECT * FROM UnivClasses
|
|
WHERE teacherid = #{teacherid} and classtype = 2 and status = 1
|
|
</select>
|
|
|
|
<select id="findStudesByTeacherid" parameterType="long" resultType="com.univ3e.entity.UnivStudent" >
|
|
select a.*
|
|
from Univstudent a,Univstudentownclass b,univclasses c
|
|
where a.studentid = b.studentid and b.classesid = c.classesid and c.classtype = 1 and a.status=1 and b.status=1
|
|
and c.teacherid = #{teacherid}
|
|
</select>
|
|
|
|
<select id="findMessageByTeacherid" parameterType="map" resultType="com.univ3e.entity.UnivClassmessage">
|
|
SELECT * FROM UnivClassmessage
|
|
WHERE teacherid = #{teacherId} and status = 1 and source = 1
|
|
ORDER BY created desc
|
|
<if test="page != null">
|
|
LIMIT #{page.limit} OFFSET #{page.offset}
|
|
</if>
|
|
</select>
|
|
|
|
<insert id="doPublishClassNotice" parameterType="com.univ3e.entity.UnivClassmessage">
|
|
INSERT INTO univclassmessage(classmessageid,content,teacherid,created,starttime,endtime,status,areaid)
|
|
VALUES (
|
|
<if test="classmessageid == 0">
|
|
(SELECT NEXTVAL('seq_univclassmessageid')),
|
|
</if>
|
|
<if test="classmessageid != 0">
|
|
#{classmessageid},
|
|
</if>
|
|
#{content},#{teacherid},#{created},#{starttime},#{endtime},#{status},#{areaid})
|
|
</insert>
|
|
|
|
<insert id="doClassMessageLink" parameterType="com.univ3e.entity.UnivClassOwnMessage">
|
|
INSERT INTO univclassownmessage(classesid,classmessageid,areaid)
|
|
VALUES (#{classesid},#{classmessageid},#{areaid})
|
|
</insert>
|
|
|
|
<update id="doDelClassNotice" parameterType="int">
|
|
update Univclassmessage set status = 0 where classmessageid = #{classmessageid}
|
|
</update>
|
|
|
|
<select id="findClassdelegate" parameterType="long" resultType="com.univ3e.entity.UnivStudentOwnClass">
|
|
select * from Univstudentownclass where isdelegate = 1 and classesid = #{classesid}
|
|
</select>
|
|
|
|
<update id="doDelClassesDelegate" parameterType="long">
|
|
update Univstudentownclass set isdelegate = 0 where classesid = #{classesid}
|
|
</update>
|
|
|
|
<update id="doAssignDelegate" parameterType="map">
|
|
update Univstudentownclass set isdelegate = 1 where classesid = #{classesId} and studentid = #{studentId}
|
|
</update>
|
|
|
|
<select id="findClassAchivement" parameterType="map" resultType="com._3e.dto.ClassAchivement">
|
|
with temp as( select a.assignmentid,a.starttime,a.endtime,c.unitid,c.lessonid,a.assigntype from univassignment a
|
|
inner join univassigntoclass b
|
|
on a.assignmentid=b.assignmentid and b.classesid=#{classesId}
|
|
and a.created> #{startTime} and a.created <=#{endTime}
|
|
inner join univassigndetail c on a.assignmentid=c.assignmentid ),
|
|
temp1 as(
|
|
select assignmentid,count(lessonid) lessoncount from temp where assigntype='L' group by assignmentid),
|
|
temp2 as(
|
|
select studentid ,c.assignmentid,count(distinct b.objectid) completecount from univstudentownclass a inner join univachivement b on a.studentid=b.uid inner join
|
|
temp c on b.objectid=c.lessonid and c.assigntype='L' and b.created>c.starttime and b.created<c.endtime
|
|
group by studentid,c.assignmentid),
|
|
temp3 as(select b.studentid ,count(case when a.lessoncount=b.completecount then 1 else null end ) finishcount from temp1 a inner join temp2 b on a.assignmentid=b.assignmentid
|
|
group by b.studentid),
|
|
temp4 as(select a.assignmentid,a.starttime,a.endtime,b.wordsid from temp a inner join words b on a.unitid=b.lessonid and a.assigntype='W'),
|
|
temp5 as(select assignmentid,count(wordsid) lessoncount from temp4 group by assignmentid),
|
|
temp6 as(select studentid ,c.assignmentid,count(distinct b.wordsid) completecount from univstudentownclass a inner join univwordachive b on a.studentid=b.uid inner join
|
|
temp4 c on b.wordsid=c.wordsid and b.created>c.starttime and b.created<c.endtime
|
|
group by studentid,c.assignmentid ),
|
|
temp7 as (select b.studentid ,count(case when a.lessoncount=b.completecount then 1 else null end ) finishcount from temp5 a inner join temp6 b on a.assignmentid=b.assignmentid
|
|
group by b.studentid)
|
|
|
|
|
|
|
|
|
|
select b.studentId as uid , b.recognizeCode , b.trueName , b.nickname ,
|
|
c.totalTime , c.totalNum , d.avgScore , d.totalLesson,e.totalAssign
|
|
from UnivStudentOwnClass a
|
|
inner join UnivStudent b
|
|
on a.classesId = #{classesId} and a.studentId = b.studentId and a.status = 1 and b.status=1
|
|
left join (select m.studentId , sum( timeLength ) as totalTime , count(*) as totalNum
|
|
from UnivStudentOwnClass m
|
|
inner join UnivConnectLog n
|
|
on m.classesId = #{classesId} and m.studentId = n.uid
|
|
where n.created > #{startTime} and n.endTime <= #{endTime}
|
|
group by m.studentId ) c
|
|
on a.studentId = c.studentId
|
|
left join (select p.studentId , avg( q.score ) as avgScore ,
|
|
count( objectId ) as totalLesson
|
|
from UnivStudentOwnClass p
|
|
inner join UnivAchivement q
|
|
on p.classesId = #{classesId} and p.studentId = q.uid
|
|
and q.pointCaseType in (3, 5 , 6 , 7 , 8 )
|
|
and q.achiveType in ( 'L' , 'W' )
|
|
where q.created > #{startTime} and q.created <= #{endTime}
|
|
group by p.studentId ) d
|
|
on a.studentId = d.studentId
|
|
left join (select studentid,sum(finishcount ) totalAssign from (select * from temp3 union all select * from temp7 ) as a group by studentid) e
|
|
|
|
on a.studentId = e.studentId
|
|
order by a.studentId
|
|
<if test="page != null">
|
|
LIMIT #{page.limit} OFFSET #{page.offset}
|
|
</if>
|
|
</select>
|
|
|
|
<select id="findClassByTeacheridV3" parameterType="long" resultType="com._3e.dto.ClassesDto" >
|
|
select a.*,b.truename as teachername
|
|
from univClasses a
|
|
left join univteacher b on a.teacherid = b.teacherid
|
|
where a.teacherid = #{teacherid} and a.classtype = 1 and a.status = 1
|
|
</select>
|
|
|
|
<select id="findTeamByTeacheridV3" parameterType="long" resultType="com._3e.dto.ClassesDto" >
|
|
select a.*,b.truename as teachername
|
|
from univClasses a
|
|
left join univteacher b on a.teacherid = b.teacherid
|
|
where a.teacherid = #{teacherid} and a.classtype = 2 and a.status = 1
|
|
</select>
|
|
|
|
<select id="findTeamsByLookLike" parameterType="map" resultType="com._3e.dto.ClassesDto" >
|
|
SELECT c.classesid,c.classlevel,c.classname,c.description,c.schoolyear,
|
|
c.classorder,c.schoolid,c.areaid,c.teacherid,c.classtype,c.status,
|
|
t.truename AS teachername, COALESCE(a.source , 0) AS source
|
|
FROM univclasses c
|
|
INNER JOIN univteacher t ON t.teacherid = c.teacherid
|
|
LEFT JOIN (SELECT count(s.studentid) AS source ,s.classesid
|
|
FROM univstudentownclass s
|
|
WHERE s.status = 1
|
|
GROUP BY s.classesid) a
|
|
ON a.classesid = c.classesid
|
|
WHERE c.classType = 2 AND c.status = 1
|
|
<if test="title != null and title != ''.toString()">
|
|
AND c.classname like '%'||#{title}||'%'
|
|
</if>
|
|
<if test="page != null">
|
|
LIMIT #{page.limit} OFFSET #{page.offset}
|
|
</if>
|
|
</select>
|
|
|
|
<select id="findTeamByIsdelegate" parameterType="long" resultType="com._3e.dto.ClassesDto" >
|
|
SELECT c.*
|
|
FROM univstudentownclass s
|
|
INNER JOIN univclasses c ON c.classesid = s.classesid
|
|
WHERE s.studentid = #{studentid} AND c.status = 1 AND s.isdelegate = 1
|
|
</select>
|
|
|
|
<select id= "findMyTeams" parameterType="map" resultType="com._3e.dto.ClassesDto" >
|
|
SELECT c.classesid,c.classlevel,c.classname,c.description,c.schoolyear,
|
|
c.classorder,c.schoolid,c.areaid,c.teacherid,c.classtype,
|
|
t.truename AS teachername, COALESCE(a.source , 0) AS source,
|
|
CASE o.status WHEN 0 THEN 1
|
|
WHEN 1 THEN 2
|
|
END AS status
|
|
FROM univclasses c
|
|
INNER JOIN univteacher t ON t.teacherid = c.teacherid
|
|
LEFT JOIN univstudentownclass o ON c.classesid = o.classesid
|
|
LEFT JOIN (SELECT count(s.studentid) AS source ,s.classesid
|
|
FROM univstudentownclass s
|
|
WHERE s.status = 1
|
|
GROUP BY s.classesid) a
|
|
ON a.classesid = c.classesid
|
|
WHERE o.studentid = #{studentId} AND c.classType = 2 AND c.status = 1
|
|
ORDER BY source DESC
|
|
<if test="page != null">
|
|
LIMIT #{page.limit} OFFSET #{page.offset}
|
|
</if>
|
|
</select>
|
|
|
|
|
|
<delete id= "doDelTeamMember" parameterType="map">
|
|
DELETE FROM univstudentOwnClass
|
|
WHERE classesId = #{classesId}
|
|
AND studentId IN (${studentIds})
|
|
</delete>
|
|
</mapper>
|