lyh
2025-04-01 4e2be858f4ccbb7490b59ed584fd1c829eb4d556
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
<?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="org.jeecg.modules.flowable.mapper.IHisWorkTaskMapper">
    <select id="queryHisTaskList" resultType="org.jeecg.modules.flowable.domain.vo.HisWorkTask">
        SELECT
            fb.id AS id,
            aht.NAME_ AS name,
            aht.DESCRIPTION_ AS cause,
            su.realname AS assignee,
            aht.START_TIME_ AS startTime,
            aht.END_TIME_ AS endTime,
            assign.status as status
        FROM
            flow_my_business fb,
            act_hi_taskinst aht,
            NC_ASSIGN_FILE_STREAM assign,
            sys_user su
        WHERE
            fb.data_id= #{drapprovedataId}
          AND fb.process_instance_id= aht.PROC_INST_ID_
          AND su.username= aht.ASSIGNEE_
          AND fb.data_id= assign.STREAM_ID
        ORDER BY
            aht.START_TIME_ ASC
    </select>
    <select id="queryHisTaskByProcInstId" resultType="org.jeecg.modules.flowable.domain.vo.FlowHistoricalVo">
        WITH ActivitySequence AS (
            SELECT
                p.PROC_INST_ID_ AS procInstId,
                p.BUSINESS_KEY_ AS businessKey,
                p.START_TIME_ AS procStartTime,
                p.END_TIME_ AS procEndTime,
                a.ACT_ID_,
                COALESCE ( a.ACT_NAME_, a.ACT_ID_ ) AS actName,
                a.ACT_TYPE_ AS actType,
                a.START_TIME_ AS actStartTime,
                a.END_TIME_ AS actEndTime,
                c.NAME_ AS taskName,
                c.ASSIGNEE_ AS assignee,
                c.DESCRIPTION_ AS description,
-- 使用 LEAD 获取下一个活动信息
                LEAD ( COALESCE ( a.ACT_NAME_, a.ACT_ID_ ) ) OVER ( PARTITION BY p.PROC_INST_ID_ ORDER BY a.START_TIME_ ) AS nextActName,
                LEAD ( a.ACT_TYPE_ ) OVER ( PARTITION BY p.PROC_INST_ID_ ORDER BY a.START_TIME_ ) AS nextActType,
                LEAD ( a.START_TIME_ ) OVER ( PARTITION BY p.PROC_INST_ID_ ORDER BY a.START_TIME_ ) AS nextActStartTime
            FROM
                act_hi_procinst p
                    LEFT JOIN act_hi_actinst a ON p.PROC_INST_ID_ = a.PROC_INST_ID_
                    AND a.ACT_TYPE_ IN ( 'userTask', 'sequenceFlow' )
                    LEFT JOIN ACT_HI_TASKINST c ON a.TASK_ID_ = c.ID_
            WHERE
                p.PROC_INST_ID_ = #{procInstId}
        ) SELECT
              procInstId,
              businessKey,
-- 当前活动(userTask)信息
              actName AS userTaskName,
              taskName,
              assignee,
              actStartTime,
              actEndTime,
              description,
-- 下一个活动(sequenceFlow)信息
              nextActName AS sequenceFlowName,
              nextActStartTime AS sequenceFlowStartTime
        FROM
            ActivitySequence
        WHERE
            actType = 'userTask' -- 筛选当前活动为 userTask
 
          AND nextActType = 'sequenceFlow' -- 且下一个活动为 sequenceFlow
 
        ORDER BY
            actStartTime;
    </select>
</mapper>