zxl
2025-04-02 419104df560d427e9cfb610bb6549dcfe695822d
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
<?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.mapper.ProcessCodingMapper">
 
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.ycl.domain.vo.ProcessCodingVO">
        <result column="task_id" property="taskId" />
        <result column="task_def_key" property="taskDefKey" />
        <result column="start_task_id" property="startTaskId" />
        <result column="process_ins_id" property="processInsId" />
        <result column="yellow_time" property="yellowTime" />
        <result column="red_time" property="redTime" />
        <result column="overtime" property="overtime" />
        <result column="status" property="status" />
        <result column="overtime_status" property="overtimeStatus" />
    </resultMap>
    <resultMap id="processOvertimeTimesVO" type="com.ycl.domain.vo.ProcessOvertimeTimesVO">
        <id column="id" property="id"/>
        <result column="task_overtime_num" property="taskOvertimeNum"/>
        <result column="process_ins_id" property="processInsId"/>
    </resultMap>
 
    <select id="countProjectOvertimeTimes" resultMap="processOvertimeTimesVO">
        select TPC.id,
               TPC.process_ins_id,
               COUNT(TPC.overtime_status) as task_overtime_num
        FROM t_process_coding TPC
        where
                TPC.overtime_status = 'overtime'
        GROUP BY TPC.process_ins_id
    </select>
 
 
    <select id="getById" resultMap="BaseResultMap">
        SELECT
            TPC.task_id,
            TPC.task_def_key,
            TPC.start_task_id,
            TPC.process_ins_id,
            TPC.yellow_time,
            TPC.red_time,
            TPC.overtime,
            TPC.status,
            TPC.overtime_status,
            TPC.id
        FROM
            t_process_coding TPC
        WHERE
            TPC.id = #{id} AND TPC.deleted = 0
    </select>
 
 
    <select id="getPage" resultMap="BaseResultMap">
        SELECT
            TPC.task_id,
            TPC.task_def_key,
            TPC.start_task_id,
            TPC.process_ins_id,
            TPC.yellow_time,
            TPC.red_time,
            TPC.overtime,
            TPC.status,
            TPC.overtime_status,
            TPC.id
        FROM
            t_process_coding TPC
        WHERE
            TPC.deleted = 0
    </select>
    <select id="findByTaskId" resultType="com.ycl.domain.entity.ProcessCoding">
        SELECT * from t_process_coding where task_id = #{taskId}
    </select>
 
    <!-- 自定义批量更新,使用前判断list是否为空 转换为sql
    update t_process_coding
    set status =
    case
        when id = #{item.id} then #{item.status}
        ...
    end
    where id in (...);-->
    <update id="updateBatch" parameterType="java.util.List">
        update t_process_coding
        <trim prefix="set" suffixOverrides=","><!-- 表示在生成的 SQL 语句前面添加 set 关键字,并移除末尾逗号 -->
            <trim prefix="status =case" suffix="end,"><!-- 构造case语法 末尾加上end,如果需要更新多个字段复制这个trim -->
                <foreach collection="list" item="item">
                    when id=#{item.id} then #{item.status}
                </foreach>
            </trim>
            <trim prefix="overtime_status =case" suffix="end,"><!-- 构造case语法 末尾加上end,如果需要更新多个字段复制这个trim -->
                <foreach collection="list" item="item">
                    when id=#{item.id} then #{item.overtimeStatus}
                </foreach>
            </trim>
            <trim prefix="start_task_time =case" suffix="end,"><!-- 构造case语法 末尾加上end,如果需要更新多个字段复制这个trim -->
                <foreach collection="list" item="item">
                    when id=#{item.id} then #{item.startTaskTime}
                </foreach>
            </trim>
        </trim>
        where id in
        <foreach collection="list" index="index" item="item" separator="," open="(" close=")">
            #{item.id,jdbcType=BIGINT}
        </foreach>
    </update>
 
</mapper>