龚焕茏
2024-08-01 a9e60d55e3e8d0c5c84c6678911ee8131491fc45
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<?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.ycl.platform.mapper.CheckScoreMapper">
    
    <resultMap type="com.ycl.platform.domain.entity.CheckScore" id="CheckScoreResult">
        <result property="id"    column="id"    />
        <result property="score"    column="score"    />
        <result property="deptId"    column="dept_id"    />
        <result property="templateId"    column="template_id"    />
        <result property="examineTag"    column="examine_tag"    />
        <result property="examineCategory"    column="examine_category"    />
        <result property="createTime"    column="create_time"    />
        <result property="updateTime"    column="update_time"    />
        <result property="updateUser"    column="update_user"    />
        <result property="publish"    column="publish"    />
    </resultMap>
 
    <sql id="selectCheckScoreVo">
        select id, score, tcs.dept_id, template_id, examine_tag, examine_category, tcs.create_time,tcs.update_time,tcs.update_user, publish
        from t_check_score tcs left join sys_dept d on tcs.dept_id = d.dept_id
    </sql>
 
    <select id="selectCheckScoreList" resultMap="CheckScoreResult">
        <include refid="selectCheckScoreVo"/>
        <where>
            <if test="score != null "> and score = #{score}</if>
            <if test="templateId != null "> and template_id = #{templateId}</if>
            <if test="createTime != null "> and  DATE(tcs.create_time) = #{createTime}</if>
            <if test="date != null "> and  date_format(tcs.create_time,'%Y-%m')  = #{date}</if>
            <if test="examineTag != null "> and examine_tag = #{examineTag}</if>
            <if test="examineCategory != null "> and examine_category = #{examineCategory}</if>
            <if test="params.publish != null  and params.publish != ''"> and publish = #{params.publish}</if>
            <if test="deptId != null "> and tcs.dept_id = #{deptId}</if>
            ${params.dataScope}
        </where>
    </select>
    
    <select id="selectCheckScoreById" parameterType="Long" resultMap="CheckScoreResult">
        <include refid="selectCheckScoreVo"/>
        where id = #{id}
    </select>
        
    <insert id="insertCheckScore" useGeneratedKeys="true" keyProperty="id">
        insert into t_check_score
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="score != null">score,</if>
            <if test="deptId != null">dept_id,</if>
            <if test="templateId != null">template_id,</if>
            <if test="examineTag != null">examine_tag,</if>
            <if test="examineCategory != null">examine_category,</if>
            <if test="createTime != null">create_time,</if>
            <if test="updateTime != null">update_time,</if>
            <if test="updateUser != null">update_user,</if>
            <if test="publish != null">publish,</if>
         </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="score != null">#{score},</if>
            <if test="deptId != null">#{deptId},</if>
            <if test="templateId != null">#{templateId},</if>
            <if test="examineTag != null">#{examineTag},</if>
            <if test="examineCategory != null">#{examineCategory},</if>
            <if test="createTime != null">#{createTime},</if>
            <if test="updateTime != null">#{updateTime},</if>
            <if test="updateUser != null">#{updateUser},</if>
            <if test="publish != null">#{publish},</if>
         </trim>
    </insert>
 
    <update id="updateCheckScore" >
        update t_check_score
        <trim prefix="SET" suffixOverrides=",">
            <if test="score != null">score = #{score},</if>
            <if test="deptId != null">dept_id = #{deptId},</if>
            <if test="templateId != null">template_id = #{templateId},</if>
            <if test="examineTag != null">examine_tag = #{examineTag},</if>
            <if test="examineCategory != null">examine_category = #{examineCategory},</if>
            <if test="createTime != null">create_time = #{createTime},</if>
            <if test="updateTime != null">update_time = #{updateTime},</if>
            <if test="updateUser != null">update_user = #{updateUser},</if>
            <if test="publish != null">publish = #{publish},</if>
        </trim>
        where id = #{id}
    </update>
 
    <delete id="deleteCheckScoreById" parameterType="Long">
        delete from t_check_score where id = #{id}
    </delete>
 
    <delete id="deleteCheckScoreByIds" parameterType="String">
        delete from t_check_score where id in 
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>
 
    <update id="publishCheckScore">
        update t_check_score set publish = #{publish},update_time =#{updateTime},update_user= #{updateUser} where id in
        <foreach collection="id" item="id" open="(" close=")" separator=",">
            #{id}
        </foreach>
    </update>
 
    <select id="selectScoreIndex" resultType="java.util.Map">
        select t.* from ${tableName} t
        left join sys_dept d on t.dept_id = d.dept_id
        where t.dept_id = #{deptId}
        <if test="date != null">
            and date_format(t.create_time,'%Y-%m') = #{date}
        </if>
        <if test="quarter != null and quarter.size > 0">
            and date_format(t.create_time, '%Y-%m') between #{quarter[0]} and #{quarter[1]}
        </if>
        ${params.dataScope}
    </select>
 
    <insert id="saveBatch">
        insert into t_check_score (score,dept_id,template_id,examine_tag,examine_category,create_time) values <foreach collection="scoreList" separator="," item="score">
        (#{score.score},#{score.deptId},#{score.templateId},#{score.examineTag},#{score.examineCategory},#{score.createTime})
    </foreach>
    </insert>
 
    <select id="selectCheckScoreMap" resultType="com.ycl.platform.domain.entity.CheckScore">
        SELECT
            id,
            tcs.dept_id,
            examine_category,
            ROUND(AVG(score) OVER(PARTITION BY tcs.dept_id, examine_category), 2) AS score,
            tcs.create_time AS createTime
        FROM
            t_check_score tcs
                LEFT JOIN sys_dept d ON tcs.dept_id = d.dept_id
        WHERE
            examine_tag = #{examineTag}
          AND DATE_FORMAT(tcs.create_time, '%Y-%m') BETWEEN DATE_FORMAT(#{startDate}, '%Y-%m') AND DATE_FORMAT(#{endDate}, '%Y-%m')
    </select>
 
</mapper>