zhangherong
2025-06-25 23855599412c4d61b38d78f0f3abd3430a48b5b1
lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/xml/HisWorkTaskMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,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>