453 lines
25 KiB
XML
453 lines
25 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._3e.dao.EssayDao">
|
||
|
|
|
||
|
|
<!-- 定义resultMap -->
|
||
|
|
<resultMap id="essayBaseResultMap" type="com._3e.http.essay.dto.ResEssayBase_1">
|
||
|
|
<!-- 其他字段的映射 -->
|
||
|
|
<result property="essayBaseId" column="essayBaseId"/>
|
||
|
|
<result property="wordCount" column="wordCount"/>
|
||
|
|
<result property="essayType" column="essayType"/>
|
||
|
|
<result property="essayTypeName" column="essayTypeName"/>
|
||
|
|
<result property="style" column="style"/>
|
||
|
|
<result property="styleName" column="styleName"/>
|
||
|
|
<result property="theme" column="theme" typeHandler="com._3e.http.wrongbook.typehandler.IntegerListArrayTypeHandler"/>
|
||
|
|
<result property="themeName" column="themeName" typeHandler="com._3e.http.wrongbook.typehandler.ArrayStringHandlerForMP"/>
|
||
|
|
<result property="goodsId" column="goodsId" typeHandler="com._3e.http.wrongbook.typehandler.IntegerListArrayTypeHandler"/>
|
||
|
|
<result property="goodsIdName" column="goodsIdName" typeHandler="com._3e.http.wrongbook.typehandler.ArrayStringHandlerForMP"/>
|
||
|
|
<result property="source" column="source"/>
|
||
|
|
<result property="useNode" column="useNode" typeHandler="com._3e.http.wrongbook.typehandler.IntegerListArrayTypeHandler"/>
|
||
|
|
<result property="useNodeName" column="useNodeName" typeHandler="com._3e.http.wrongbook.typehandler.ArrayStringHandlerForMP"/>
|
||
|
|
<result property="properties" column="properties"/>
|
||
|
|
<result property="classLevel" column="classLevel"/>
|
||
|
|
<result property="lessonId" column="lessonId" typeHandler="com._3e.http.wrongbook.typehandler.IntegerListArrayTypeHandler"/>
|
||
|
|
<result property="lessonIdName" column="lessonIdName" typeHandler="com._3e.http.wrongbook.typehandler.ArrayStringHandlerForMP"/>
|
||
|
|
<result property="essayYear" column="essayYear"/>
|
||
|
|
<result property="grade" column="grade"/>
|
||
|
|
<result property="created" column="created"/>
|
||
|
|
<result property="demand" column="demand"/>
|
||
|
|
<result property="difficulty" column="difficulty"/>
|
||
|
|
<result property="enTitle" column="enTitle"/>
|
||
|
|
<result property="cnTitle" column="cnTitle"/>
|
||
|
|
<result property="description" column="description"/>
|
||
|
|
<result property="demandPic" column="demandPic"/>
|
||
|
|
<result property="picDesc" column="picDesc"/>
|
||
|
|
<result property="cnContent" column="cnContent"/>
|
||
|
|
<result property="setScore" column="setScore"/>
|
||
|
|
<result property="essayAnswerId" column="essayAnswerId"/>
|
||
|
|
<result property="userScore" column="userScore"/>
|
||
|
|
<collection property="essayBaseModels" column="essayBaseId" select="selectEssayBaseModelByEssayBaseId"/>
|
||
|
|
</resultMap>
|
||
|
|
|
||
|
|
<select id="selectEssayBaseModelByEssayBaseId" resultType="com._3e.entity.EssayBaseModel">
|
||
|
|
select * from essaybasemodel where essaybaseId = #{essayBaseId} and status = 1
|
||
|
|
</select>
|
||
|
|
<select id="getEssayYear" resultType="com._3e.http.essay.dto.ResPara">
|
||
|
|
select essayyear AS paraId,TO_CHAR(essayyear, '9999') AS valueStr from essaybase where status = 1 group by essayyear order by essayyear desc
|
||
|
|
</select>
|
||
|
|
<select id="getEssayBaseByGradeIdAndVersionIdAndTitle" resultType="com._3e.http.essay.dto.ResEssayBase">
|
||
|
|
with temp As(
|
||
|
|
select p.paraid,l2.lessonId AS lessonId1,l1.lessonName unitName,l1.orderId,eb.* from essaybase eb
|
||
|
|
JOIN LATERAL unnest(eb.lessonid) WITH ORDINALITY AS u(lessonid, ord) ON true
|
||
|
|
JOIN lesson l1 ON l1.lessonid = u.lessonid AND l1.status = 1 and l1.lessontype = 'U'
|
||
|
|
JOIN lesson l2 ON l2.lessonid = l1.parentId AND l2.status = 1 and l2.lessontype = 'B'
|
||
|
|
JOIN lesson l3 ON l3.lessonid = l2.parentid AND l3.status = 1 and l3.lessontype = 'C'
|
||
|
|
INNER JOIN goods g on l3.lessonid = g.lessonid
|
||
|
|
INNER JOIN parameter p on p.valuelong = g.goodsId and p.paratype = 38 and p.paraint = 4 and p.status = 1 and p.paraId = #{versionId}
|
||
|
|
where eb.status = 1 and eb.classLevel in
|
||
|
|
<foreach item="classLevel" index="index" collection="classLevels" open="(" separator="," close=")">
|
||
|
|
#{classLevel}
|
||
|
|
</foreach>
|
||
|
|
and eb.grade = #{gradeId} and EXISTS ( SELECT 1 FROM unnest(eb.goodsId) AS goods_id WHERE goods_id = #{versionId})
|
||
|
|
order by p.paraid,l2.lessonId,l1.orderid ),
|
||
|
|
temp1 AS (
|
||
|
|
SELECT ea.*,
|
||
|
|
ROW_NUMBER() OVER (PARTITION BY ea.essaybaseid ORDER BY ea.created DESC) as rn
|
||
|
|
FROM essayanswer ea
|
||
|
|
WHERE ea.uid = #{uid}
|
||
|
|
)
|
||
|
|
select p_essayType.valueStr AS essayTypeName,
|
||
|
|
p_style.valueStr AS styleName ,
|
||
|
|
p_grade.valueStr AS gradeName,
|
||
|
|
(SELECT STRING_AGG(p_theme.valueStr, ', ') FROM unnest(t.theme) AS theme_id JOIN parameter p_theme ON p_theme.paraId = theme_id AND p_theme.paraType = 38 AND p_theme.paraInt = 3 AND p_theme.status = 1) AS themeName,
|
||
|
|
t.*,t1.essayAnswerId AS essayAnswerId,t1.score AS userScore
|
||
|
|
from temp t
|
||
|
|
LEFT JOIN parameter p_style ON p_style.paraId = t.style AND p_style.paraType = 38 AND p_style.paraInt = 2 and p_style.status = 1
|
||
|
|
LEFT JOIN parameter p_essayType ON p_essayType.paraId = t.essayType AND p_essayType.paraType = 38 AND p_essayType.paraInt = 1 and p_essayType.status = 1
|
||
|
|
LEFT JOIN parameter p_grade ON p_grade.paraId = t.grade AND p_grade.paraType = 38 AND p_grade.paraInt = 9 and p_grade.status = 1
|
||
|
|
LEFT JOIN temp1 t1 ON t1.essaybaseid = t.essaybaseid AND t1.rn = 1
|
||
|
|
where t.status = 1
|
||
|
|
<if test="keyWord != null">
|
||
|
|
and (lower(t.enTitle) like lower(#{keyWord}) or lower(t.cnTitle) like lower(#{keyWord})or lower(t.source) like lower(#{keyWord}))
|
||
|
|
</if>
|
||
|
|
ORDER BY t.paraid,t.lessonId1,t.orderid
|
||
|
|
<if test="page != null">
|
||
|
|
LIMIT #{page.limit} OFFSET #{page.offset}
|
||
|
|
</if>
|
||
|
|
</select>
|
||
|
|
<select id="getEssayBaseByGradeIdAndVersionIdAndTitle_2" resultType="com._3e.http.essay.dto.ResEssayBase">
|
||
|
|
with temp As(
|
||
|
|
select p.paraid,l2.lessonId AS lessonId1,l1.lessonName unitName,l1.orderId,eb.* from essaybase eb
|
||
|
|
JOIN LATERAL unnest(eb.lessonid) WITH ORDINALITY AS u(lessonid, ord) ON true
|
||
|
|
JOIN lesson l1 ON l1.lessonid = u.lessonid AND l1.status = 1 and l1.lessontype = 'U'
|
||
|
|
JOIN lesson l2 ON l2.lessonid = l1.parentId AND l2.status = 1 and l2.lessontype = 'B'
|
||
|
|
JOIN lesson l3 ON l3.lessonid = l2.parentid AND l3.status = 1 and l3.lessontype = 'C'
|
||
|
|
INNER JOIN goods g on l3.lessonid = g.lessonid
|
||
|
|
INNER JOIN parameter p on p.valuelong = g.goodsId and p.paratype = 38 and p.paraint = 4 and p.status = 1 and p.paraId = #{versionId}
|
||
|
|
where eb.status = 1
|
||
|
|
and eb.grade = #{gradeId} and EXISTS ( SELECT 1 FROM unnest(eb.goodsId) AS goods_id WHERE goods_id = #{versionId})
|
||
|
|
order by p.paraid,l2.lessonId,l1.orderid )
|
||
|
|
select p_essayType.valueStr AS essayTypeName,
|
||
|
|
p_style.valueStr AS styleName ,
|
||
|
|
p_grade.valueStr AS gradeName,
|
||
|
|
(SELECT STRING_AGG(p_theme.valueStr, ', ') FROM unnest(t.theme) AS theme_id JOIN parameter p_theme ON p_theme.paraId = theme_id AND p_theme.paraType = 38 AND p_theme.paraInt = 3 AND p_theme.status = 1) AS themeName,
|
||
|
|
t.*,t1.essayAnswerId AS essayAnswerId,t1.score AS userScore,t1.created AS userCreated
|
||
|
|
from temp t
|
||
|
|
inner JOIN essayanswer t1 ON t1.essaybaseid = t.essaybaseid and t1.uid = #{uid}
|
||
|
|
LEFT JOIN parameter p_style ON p_style.paraId = t.style AND p_style.paraType = 38 AND p_style.paraInt = 2 and p_style.status = 1
|
||
|
|
LEFT JOIN parameter p_essayType ON p_essayType.paraId = t.essayType AND p_essayType.paraType = 38 AND p_essayType.paraInt = 1 and p_essayType.status = 1
|
||
|
|
LEFT JOIN parameter p_grade ON p_grade.paraId = t.grade AND p_grade.paraType = 38 AND p_grade.paraInt = 9 and p_grade.status = 1
|
||
|
|
where t.status = 1
|
||
|
|
<if test="keyWord != null">
|
||
|
|
and (lower(t.enTitle) like lower(#{keyWord}) or lower(t.cnTitle) like lower(#{keyWord})or lower(t.source) like lower(#{keyWord}))
|
||
|
|
</if>
|
||
|
|
ORDER BY t1.created DESC
|
||
|
|
<if test="page != null">
|
||
|
|
LIMIT #{page.limit} OFFSET #{page.offset}
|
||
|
|
</if>
|
||
|
|
</select>
|
||
|
|
<select id="getEssayBaseByGradeIdAndVersionIdAndTitle_1" resultType="com._3e.http.essay.dto.ResEssayBase">
|
||
|
|
with temp As(
|
||
|
|
select p.paraid,l2.lessonId AS lessonId1,l1.lessonName unitName,l1.orderId,eb.* from essaybase eb
|
||
|
|
JOIN LATERAL unnest(eb.lessonid) WITH ORDINALITY AS u(lessonid, ord) ON true
|
||
|
|
JOIN lesson l1 ON l1.lessonid = u.lessonid AND l1.status = 1 and l1.lessontype = 'U'
|
||
|
|
JOIN lesson l2 ON l2.lessonid = l1.parentId AND l2.status = 1 and l2.lessontype = 'B'
|
||
|
|
JOIN lesson l3 ON l3.lessonid = l2.parentid AND l3.status = 1 and l3.lessontype = 'C'
|
||
|
|
INNER JOIN goods g on l3.lessonid = g.lessonid
|
||
|
|
INNER JOIN parameter p on p.valuelong = g.goodsId and p.paratype = 38 and p.paraint = 4 and p.status = 1 and p.paraId = #{versionId}
|
||
|
|
where eb.status = 1 and eb.classLevel in
|
||
|
|
<foreach item="classLevel" index="index" collection="classLevels" open="(" separator="," close=")">
|
||
|
|
#{classLevel}
|
||
|
|
</foreach>
|
||
|
|
and eb.grade = #{gradeId} and EXISTS ( SELECT 1 FROM unnest(eb.goodsId) AS goods_id WHERE goods_id = #{versionId})
|
||
|
|
order by p.paraid,l2.lessonId,l1.orderid )
|
||
|
|
select p_essayType.valueStr AS essayTypeName,
|
||
|
|
p_style.valueStr AS styleName ,
|
||
|
|
p_grade.valueStr AS gradeName,
|
||
|
|
(SELECT STRING_AGG(p_theme.valueStr, ', ') FROM unnest(t.theme) AS theme_id JOIN parameter p_theme ON p_theme.paraId = theme_id AND p_theme.paraType = 38 AND p_theme.paraInt = 3 AND p_theme.status = 1) AS themeName,
|
||
|
|
t.*
|
||
|
|
from temp t
|
||
|
|
LEFT JOIN parameter p_style ON p_style.paraId = t.style AND p_style.paraType = 38 AND p_style.paraInt = 2 and p_style.status = 1
|
||
|
|
LEFT JOIN parameter p_essayType ON p_essayType.paraId = t.essayType AND p_essayType.paraType = 38 AND p_essayType.paraInt = 1 and p_essayType.status = 1
|
||
|
|
LEFT JOIN parameter p_grade ON p_grade.paraId = t.grade AND p_grade.paraType = 38 AND p_grade.paraInt = 9 and p_grade.status = 1
|
||
|
|
where t.status = 1
|
||
|
|
<if test="keyWord != null">
|
||
|
|
and (lower(t.enTitle) like lower(#{keyWord}) or lower(t.cnTitle) like lower(#{keyWord})or lower(t.source) like lower(#{keyWord}))
|
||
|
|
</if>
|
||
|
|
ORDER BY t.paraid,t.lessonId1,t.orderid
|
||
|
|
<if test="page != null">
|
||
|
|
LIMIT #{page.limit} OFFSET #{page.offset}
|
||
|
|
</if>
|
||
|
|
</select>
|
||
|
|
<select id="getEssayBaseByThemeIdAndTitle" resultType="com._3e.http.essay.dto.ResEssayBase">
|
||
|
|
with temp As(
|
||
|
|
select DISTINCT ON (eb.essaybaseid) eb.* from essaybase eb
|
||
|
|
JOIN LATERAL unnest(eb.theme) WITH ORDINALITY AS u(themeId, ord) ON true
|
||
|
|
JOIN parameter p_theme on p_theme.paraId = u.themeId and p_theme.paratype = 38 and p_theme.paraInt = 3 and p_theme.status = 1 and p_theme.valueInt != 0
|
||
|
|
JOIN parameter p_theme1 on p_theme.valueInt = p_theme1.paraId and p_theme1.paratype = 38 and p_theme1.paraInt = 3 and p_theme1.status = 1
|
||
|
|
and p_theme1.valueInt = 0
|
||
|
|
<if test="themeId != 0">
|
||
|
|
and p_theme1.paraId = #{themeId}
|
||
|
|
</if>
|
||
|
|
where eb.status = 1 and eb.classLevel in
|
||
|
|
<foreach item="classLevel" index="index" collection="classLevels" open="(" separator="," close=")">
|
||
|
|
#{classLevel}
|
||
|
|
</foreach>
|
||
|
|
order by eb.essaybaseid ),
|
||
|
|
temp1 AS (
|
||
|
|
SELECT ea.*,
|
||
|
|
ROW_NUMBER() OVER (PARTITION BY ea.essaybaseid ORDER BY ea.created DESC) as rn
|
||
|
|
FROM essayanswer ea
|
||
|
|
WHERE ea.uid = #{uid}
|
||
|
|
)
|
||
|
|
select p_essayType.valueStr AS essayTypeName,
|
||
|
|
p_style.valueStr AS styleName ,
|
||
|
|
p_grade.valueStr AS gradeName,
|
||
|
|
(SELECT STRING_AGG(p_theme.valueStr, ', ') FROM unnest(t.theme) AS theme_id
|
||
|
|
JOIN parameter p_theme ON p_theme.paraId = theme_id
|
||
|
|
AND p_theme.paraType = 38
|
||
|
|
AND p_theme.paraInt = 3
|
||
|
|
AND p_theme.status = 1
|
||
|
|
) AS themeName,t.*,t1.essayAnswerId AS essayAnswerId,t1.score AS userScore
|
||
|
|
from temp t
|
||
|
|
LEFT JOIN parameter p_style ON p_style.paraId = t.style AND p_style.paraType = 38 AND p_style.paraInt = 2 and p_style.status = 1
|
||
|
|
LEFT JOIN parameter p_essayType ON p_essayType.paraId = t.essayType AND p_essayType.paraType = 38 AND p_essayType.paraInt = 1 and p_essayType.status = 1
|
||
|
|
LEFT JOIN parameter p_grade ON p_grade.paraId = t.grade AND p_grade.paraType = 38 AND p_grade.paraInt = 9 and p_grade.status = 1
|
||
|
|
LEFT JOIN temp1 t1 ON t1.essaybaseid = t.essaybaseid AND t1.rn = 1
|
||
|
|
where t.status = 1
|
||
|
|
<if test="keyWord != null">
|
||
|
|
and (lower(t.enTitle) like lower(#{keyWord}) or lower(t.cnTitle) like lower(#{keyWord})or lower(t.source) like lower(#{keyWord}))
|
||
|
|
</if>
|
||
|
|
ORDER BY t.created DESC
|
||
|
|
<if test="page != null">
|
||
|
|
LIMIT #{page.limit} OFFSET #{page.offset}
|
||
|
|
</if>
|
||
|
|
</select>
|
||
|
|
<select id="getEssayBaseByThemeIdAndTitle_2" resultType="com._3e.http.essay.dto.ResEssayBase">
|
||
|
|
with temp As(
|
||
|
|
select DISTINCT ON (eb.essaybaseid) eb.* from essaybase eb
|
||
|
|
JOIN LATERAL unnest(eb.theme) WITH ORDINALITY AS u(themeId, ord) ON true
|
||
|
|
JOIN parameter p_theme on p_theme.paraId = u.themeId and p_theme.paratype = 38 and p_theme.paraInt = 3 and p_theme.status = 1 and p_theme. valueInt != 0
|
||
|
|
JOIN parameter p_theme1 on p_theme.valueInt = p_theme1.paraId and p_theme1.paratype = 38 and p_theme1.paraInt = 3 and p_theme1.status = 1
|
||
|
|
and p_theme1.valueInt = 0
|
||
|
|
<if test="themeId != 0">
|
||
|
|
and p_theme1.paraId = #{themeId}
|
||
|
|
</if>
|
||
|
|
where eb.status = 1
|
||
|
|
order by eb.essaybaseid )
|
||
|
|
select p_essayType.valueStr AS essayTypeName,
|
||
|
|
p_style.valueStr AS styleName ,
|
||
|
|
p_grade.valueStr AS gradeName,
|
||
|
|
(SELECT STRING_AGG(p_theme.valueStr, ', ') FROM unnest(t.theme) AS theme_id
|
||
|
|
JOIN parameter p_theme ON p_theme.paraId = theme_id
|
||
|
|
AND p_theme.paraType = 38
|
||
|
|
AND p_theme.paraInt = 3
|
||
|
|
AND p_theme.status = 1
|
||
|
|
) AS themeName,t.*,t1.essayAnswerId AS essayAnswerId,t1.score AS userScore,t1.created AS userCreated
|
||
|
|
from temp t
|
||
|
|
inner JOIN essayanswer t1 ON t1.essaybaseid = t.essaybaseid and t1.uid = #{uid}
|
||
|
|
LEFT JOIN parameter p_style ON p_style.paraId = t.style AND p_style.paraType = 38 AND p_style.paraInt = 2 and p_style.status = 1
|
||
|
|
LEFT JOIN parameter p_essayType ON p_essayType.paraId = t.essayType AND p_essayType.paraType = 38 AND p_essayType.paraInt = 1 and p_essayType.status = 1
|
||
|
|
LEFT JOIN parameter p_grade ON p_grade.paraId = t.grade AND p_grade.paraType = 38 AND p_grade.paraInt = 9 and p_grade.status = 1
|
||
|
|
where t.status = 1
|
||
|
|
<if test="keyWord != null">
|
||
|
|
and (lower(t.enTitle) like lower(#{keyWord}) or lower(t.cnTitle) like lower(#{keyWord})or lower(t.source) like lower(#{keyWord}))
|
||
|
|
</if>
|
||
|
|
ORDER BY t1.created DESC
|
||
|
|
<if test="page != null">
|
||
|
|
LIMIT #{page.limit} OFFSET #{page.offset}
|
||
|
|
</if>
|
||
|
|
</select>
|
||
|
|
<select id="getEssayBaseByThemeIdAndTitle_1" resultType="com._3e.http.essay.dto.ResEssayBase">
|
||
|
|
with temp As(
|
||
|
|
select DISTINCT ON (eb.essaybaseid) eb.* from essaybase eb
|
||
|
|
JOIN LATERAL unnest(eb.theme) WITH ORDINALITY AS u(themeId, ord) ON true
|
||
|
|
JOIN parameter p_theme on p_theme.paraId = u.themeId and p_theme.paratype = 38 and p_theme.paraInt = 3 and p_theme.status = 1 and p_theme. valueInt != 0
|
||
|
|
JOIN parameter p_theme1 on p_theme.valueInt = p_theme1.paraId and p_theme1.paratype = 38 and p_theme1.paraInt = 3 and p_theme1.status = 1
|
||
|
|
and p_theme1.valueInt = 0
|
||
|
|
<if test="themeId != 0">
|
||
|
|
and p_theme1.paraId = #{themeId}
|
||
|
|
</if>
|
||
|
|
where eb.status = 1 and eb.classLevel in
|
||
|
|
<foreach item="classLevel" index="index" collection="classLevels" open="(" separator="," close=")">
|
||
|
|
#{classLevel}
|
||
|
|
</foreach>
|
||
|
|
order by eb.essaybaseid )
|
||
|
|
select p_essayType.valueStr AS essayTypeName,
|
||
|
|
p_style.valueStr AS styleName ,
|
||
|
|
p_grade.valueStr AS gradeName,
|
||
|
|
(SELECT STRING_AGG(p_theme.valueStr, ', ') FROM unnest(t.theme) AS theme_id
|
||
|
|
JOIN parameter p_theme ON p_theme.paraId = theme_id
|
||
|
|
AND p_theme.paraType = 38
|
||
|
|
AND p_theme.paraInt = 3
|
||
|
|
AND p_theme.status = 1
|
||
|
|
) AS themeName,t.*
|
||
|
|
from temp t
|
||
|
|
LEFT JOIN parameter p_style ON p_style.paraId = t.style AND p_style.paraType = 38 AND p_style.paraInt = 2 and p_style.status = 1
|
||
|
|
LEFT JOIN parameter p_essayType ON p_essayType.paraId = t.essayType AND p_essayType.paraType = 38 AND p_essayType.paraInt = 1 and p_essayType.status = 1
|
||
|
|
LEFT JOIN parameter p_grade ON p_grade.paraId = t.grade AND p_grade.paraType = 38 AND p_grade.paraInt = 9 and p_grade.status = 1
|
||
|
|
where t.status = 1
|
||
|
|
<if test="keyWord != null">
|
||
|
|
and (lower(t.enTitle) like lower(#{keyWord}) or lower(t.cnTitle) like lower(#{keyWord})or lower(t.source) like lower(#{keyWord}))
|
||
|
|
</if>
|
||
|
|
ORDER BY t.created DESC
|
||
|
|
<if test="page != null">
|
||
|
|
LIMIT #{page.limit} OFFSET #{page.offset}
|
||
|
|
</if>
|
||
|
|
</select>
|
||
|
|
<select id="getEssayBaseByYearAndTitle" resultType="com._3e.http.essay.dto.ResEssayBase">
|
||
|
|
with temp1 AS (
|
||
|
|
SELECT ea.*,
|
||
|
|
ROW_NUMBER() OVER (PARTITION BY ea.essaybaseid ORDER BY ea.created DESC) as rn
|
||
|
|
FROM essayanswer ea
|
||
|
|
WHERE ea.uid = #{uid}
|
||
|
|
)
|
||
|
|
select p_essayType.valueStr AS essayTypeName,
|
||
|
|
p_style.valueStr AS styleName ,
|
||
|
|
p_grade.valueStr AS gradeName,
|
||
|
|
(
|
||
|
|
SELECT STRING_AGG(p_theme.valueStr, ', ')
|
||
|
|
FROM unnest(t.theme) AS theme_id
|
||
|
|
JOIN parameter p_theme ON p_theme.paraId = theme_id
|
||
|
|
AND p_theme.paraType = 38
|
||
|
|
AND p_theme.paraInt = 3
|
||
|
|
AND p_theme.status = 1
|
||
|
|
) AS themeName,t.*,t1.essayAnswerId AS essayAnswerId,t1.score AS userScore
|
||
|
|
from essaybase t
|
||
|
|
LEFT JOIN parameter p_style ON p_style.paraId = t.style AND p_style.paraType = 38 AND p_style.paraInt = 2 and p_style.status = 1
|
||
|
|
LEFT JOIN parameter p_essayType ON p_essayType.paraId = t.essayType AND p_essayType.paraType = 38 AND p_essayType.paraInt = 1 and p_essayType.status = 1
|
||
|
|
LEFT JOIN parameter p_grade ON p_grade.paraId = t.grade AND p_grade.paraType = 38 AND p_grade.paraInt = 9 and p_grade.status = 1
|
||
|
|
LEFT JOIN temp1 t1 ON t1.essaybaseid = t.essaybaseid AND t1.rn = 1
|
||
|
|
where t.status = 1 and t.classLevel in
|
||
|
|
<foreach item="classLevel" index="index" collection="classLevels" open="(" separator="," close=")">
|
||
|
|
#{classLevel}
|
||
|
|
</foreach>
|
||
|
|
and #{paraId} = any(t.useNode)
|
||
|
|
<if test="year != 0">
|
||
|
|
and t.essayyear = #{year}
|
||
|
|
</if>
|
||
|
|
<if test="keyWord != null">
|
||
|
|
and (lower(t.enTitle) like lower(#{keyWord}) or lower(t.cnTitle) like lower(#{keyWord})or lower(t.source) like lower(#{keyWord}))
|
||
|
|
</if>
|
||
|
|
ORDER BY t.essayyear desc,t.created DESC
|
||
|
|
<if test="page != null">
|
||
|
|
LIMIT #{page.limit} OFFSET #{page.offset}
|
||
|
|
</if>
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="getEssayBaseByYearAndTitle_2" resultType="com._3e.http.essay.dto.ResEssayBase">
|
||
|
|
select p_essayType.valueStr AS essayTypeName,
|
||
|
|
p_style.valueStr AS styleName ,
|
||
|
|
p_grade.valueStr AS gradeName,
|
||
|
|
(
|
||
|
|
SELECT STRING_AGG(p_theme.valueStr, ', ')
|
||
|
|
FROM unnest(t.theme) AS theme_id
|
||
|
|
JOIN parameter p_theme ON p_theme.paraId = theme_id
|
||
|
|
AND p_theme.paraType = 38
|
||
|
|
AND p_theme.paraInt = 3
|
||
|
|
AND p_theme.status = 1
|
||
|
|
) AS themeName,t.*,t1.essayAnswerId AS essayAnswerId,t1.score AS userScore,t1.created AS userCreated
|
||
|
|
from essaybase t
|
||
|
|
inner JOIN essayanswer t1 ON t1.essaybaseid = t.essaybaseid and t1.uid = #{uid}
|
||
|
|
LEFT JOIN parameter p_style ON p_style.paraId = t.style AND p_style.paraType = 38 AND p_style.paraInt = 2 and p_style.status = 1
|
||
|
|
LEFT JOIN parameter p_essayType ON p_essayType.paraId = t.essayType AND p_essayType.paraType = 38 AND p_essayType.paraInt = 1 and p_essayType.status = 1
|
||
|
|
LEFT JOIN parameter p_grade ON p_grade.paraId = t.grade AND p_grade.paraType = 38 AND p_grade.paraInt = 9 and p_grade.status = 1
|
||
|
|
where t.status = 1
|
||
|
|
and #{paraId} = any(t.useNode)
|
||
|
|
<if test="year != 0">
|
||
|
|
and t.essayyear = #{year}
|
||
|
|
</if>
|
||
|
|
<if test="keyWord != null">
|
||
|
|
and (lower(t.enTitle) like lower(#{keyWord}) or lower(t.cnTitle) like lower(#{keyWord})or lower(t.source) like lower(#{keyWord}))
|
||
|
|
</if>
|
||
|
|
ORDER BY t1.created DESC
|
||
|
|
<if test="page != null">
|
||
|
|
LIMIT #{page.limit} OFFSET #{page.offset}
|
||
|
|
</if>
|
||
|
|
</select>
|
||
|
|
<select id="getEssayBaseByYearAndTitle_1" resultType="com._3e.http.essay.dto.ResEssayBase">
|
||
|
|
select p_essayType.valueStr AS essayTypeName,
|
||
|
|
p_style.valueStr AS styleName ,
|
||
|
|
p_grade.valueStr AS gradeName,
|
||
|
|
(
|
||
|
|
SELECT STRING_AGG(p_theme.valueStr, ', ')
|
||
|
|
FROM unnest(t.theme) AS theme_id
|
||
|
|
JOIN parameter p_theme ON p_theme.paraId = theme_id
|
||
|
|
AND p_theme.paraType = 38
|
||
|
|
AND p_theme.paraInt = 3
|
||
|
|
AND p_theme.status = 1
|
||
|
|
) AS themeName,t.*
|
||
|
|
from essaybase t
|
||
|
|
LEFT JOIN parameter p_style ON p_style.paraId = t.style AND p_style.paraType = 38 AND p_style.paraInt = 2 and p_style.status = 1
|
||
|
|
LEFT JOIN parameter p_essayType ON p_essayType.paraId = t.essayType AND p_essayType.paraType = 38 AND p_essayType.paraInt = 1 and p_essayType.status = 1
|
||
|
|
LEFT JOIN parameter p_grade ON p_grade.paraId = t.grade AND p_grade.paraType = 38 AND p_grade.paraInt = 9 and p_grade.status = 1
|
||
|
|
where t.status = 1 and t.classLevel in
|
||
|
|
<foreach item="classLevel" index="index" collection="classLevels" open="(" separator="," close=")">
|
||
|
|
#{classLevel}
|
||
|
|
</foreach>
|
||
|
|
and #{paraId} = any(t.useNode)
|
||
|
|
<if test="year != 0">
|
||
|
|
and t.essayyear = #{year}
|
||
|
|
</if>
|
||
|
|
<if test="keyWord != null">
|
||
|
|
and (lower(t.enTitle) like lower(#{keyWord}) or lower(t.cnTitle) like lower(#{keyWord})or lower(t.source) like lower(#{keyWord}))
|
||
|
|
</if>
|
||
|
|
ORDER BY t.essayyear desc, t.created DESC
|
||
|
|
<if test="page != null">
|
||
|
|
LIMIT #{page.limit} OFFSET #{page.offset}
|
||
|
|
</if>
|
||
|
|
</select>
|
||
|
|
<select id="getEssayBaseById" resultMap="essayBaseResultMap">
|
||
|
|
SELECT e.*,
|
||
|
|
0 As essayAnswerId,
|
||
|
|
0 AS userScore,
|
||
|
|
(SELECT json_agg(DISTINCT valueStr) FROM parameter WHERE paraId = ANY(e.theme) AND paraType = 38 AND paraInt = 3) AS themeName,
|
||
|
|
(SELECT json_agg(DISTINCT valueStr) FROM parameter WHERE paraId = ANY(e.goodsId) AND paraType = 38 AND paraInt = 4) AS goodsIdName,
|
||
|
|
(SELECT json_agg(DISTINCT valueStr) FROM parameter WHERE paraId = ANY(e.useNode) AND paraType = 38 AND paraInt = 7) AS useNodeName,
|
||
|
|
(SELECT json_agg(DISTINCT lessonName)FROM lesson WHERE lessonId = ANY(e.lessonId)) AS lessonIdName,
|
||
|
|
(SELECT valueStr FROM parameter WHERE paraId = e.essayType AND paraType = 38 AND paraInt = 1) AS essayTypeName,
|
||
|
|
(SELECT valueStr FROM parameter WHERE paraId = e.style AND paraType = 38 AND paraInt = 2) AS styleName,
|
||
|
|
(SELECT valueStr FROM parameter WHERE paraId = e.grade AND paraType = 38 AND paraInt = 9) AS gradeName
|
||
|
|
FROM
|
||
|
|
essaybase e
|
||
|
|
WHERE
|
||
|
|
e.essayBaseId = #{essayBaseId}
|
||
|
|
AND (e.theme IS NOT NULL OR e.goodsId IS NOT NULL OR e.useNode IS NOT NULL OR e.lessonId IS NOT NULL)
|
||
|
|
ORDER BY e.created DESC;
|
||
|
|
</select>
|
||
|
|
<select id="getEssayBaseByIdAndUid" resultMap="essayBaseResultMap">
|
||
|
|
WITH latest_user_answer AS (
|
||
|
|
SELECT essaybaseid,essayAnswerId,score
|
||
|
|
FROM (SELECT essaybaseid,essayAnswerId,score,ROW_NUMBER() OVER (PARTITION BY essaybaseid ORDER BY created DESC) as rn FROM essayanswer WHERE uid = #{uid}) ranked_answers
|
||
|
|
WHERE rn = 1
|
||
|
|
)
|
||
|
|
SELECT e.*,
|
||
|
|
lua.essayAnswerId,
|
||
|
|
lua.score AS userScore,
|
||
|
|
(SELECT json_agg(DISTINCT valueStr) FROM parameter WHERE paraId = ANY(e.theme) AND paraType = 38 AND paraInt = 3) AS themeName,
|
||
|
|
(SELECT json_agg(DISTINCT valueStr) FROM parameter WHERE paraId = ANY(e.goodsId) AND paraType = 38 AND paraInt = 4) AS goodsIdName,
|
||
|
|
(SELECT json_agg(DISTINCT valueStr) FROM parameter WHERE paraId = ANY(e.useNode) AND paraType = 38 AND paraInt = 7) AS useNodeName,
|
||
|
|
(SELECT json_agg(DISTINCT lessonName)FROM lesson WHERE lessonId = ANY(e.lessonId)) AS lessonIdName,
|
||
|
|
(SELECT valueStr FROM parameter WHERE paraId = e.essayType AND paraType = 38 AND paraInt = 1) AS essayTypeName,
|
||
|
|
(SELECT valueStr FROM parameter WHERE paraId = e.style AND paraType = 38 AND paraInt = 2) AS styleName,
|
||
|
|
(SELECT valueStr FROM parameter WHERE paraId = e.grade AND paraType = 38 AND paraInt = 9) AS gradeName
|
||
|
|
FROM
|
||
|
|
essaybase e LEFT JOIN latest_user_answer lua ON lua.essaybaseid = e.essaybaseid
|
||
|
|
WHERE
|
||
|
|
e.essayBaseId = #{essayBaseId}
|
||
|
|
AND (e.theme IS NOT NULL OR e.goodsId IS NOT NULL OR e.useNode IS NOT NULL OR e.lessonId IS NOT NULL)
|
||
|
|
ORDER BY e.created DESC;
|
||
|
|
</select>
|
||
|
|
<select id="getMyEssayGrades" resultType="com._3e.http.essay.dto.ResMyEssayGrade">
|
||
|
|
select * from essayanswer where uid = #{uid} and raceid = 0
|
||
|
|
ORDER BY created DESC
|
||
|
|
<if test="page != null">
|
||
|
|
LIMIT #{page.limit} OFFSET #{page.offset}
|
||
|
|
</if>
|
||
|
|
</select>
|
||
|
|
<select id="getAllLevelWordsV1" resultType="com._3e.http.essay.dto.LevelWordDto">
|
||
|
|
select classLevel AS level,content from levelwords
|
||
|
|
</select>
|
||
|
|
<select id="findMyMAXEssayAnswerHistoryV1" resultType="com._3e.http.essay.dto.ResMyEssayGrade">
|
||
|
|
SELECT a.*
|
||
|
|
FROM (
|
||
|
|
SELECT * , rank() over (partition by essayAnswerId order by score desc , created desc ) as mm
|
||
|
|
FROM essayanswer
|
||
|
|
WHERE created > '${begintime} 00:00:00' AND created < '${endTime} 23:59:59'
|
||
|
|
and areaid = #{areaid}
|
||
|
|
AND uid = #{userId}
|
||
|
|
) a
|
||
|
|
WHERE a.mm = 1
|
||
|
|
ORDER BY score DESC, created DESC
|
||
|
|
<if test="page != null">
|
||
|
|
LIMIT #{page.limit} OFFSET #{page.offset}
|
||
|
|
</if>
|
||
|
|
</select>
|
||
|
|
<select id="findMyEssayAnswerHistoryV1" resultType="com._3e.http.essay.dto.ResMyEssayGrade">
|
||
|
|
SELECT *
|
||
|
|
FROM essayanswer
|
||
|
|
WHERE created > '${begintime} 00:00:00' AND created < '${endTime} 23:59:59'
|
||
|
|
and areaid = #{areaid}
|
||
|
|
AND uid = #{userId} and raceid = 0
|
||
|
|
ORDER BY created DESC
|
||
|
|
<if test="page != null">
|
||
|
|
LIMIT #{page.limit} OFFSET #{page.offset}
|
||
|
|
</if>
|
||
|
|
</select>
|
||
|
|
<select id="getEssayBaseByEssayBaseId" resultType="com._3e.entity.EssayBase">
|
||
|
|
select * from essaybase where essaybaseid = #{essayBaseId}
|
||
|
|
</select>
|
||
|
|
|
||
|
|
</mapper>
|