| | |
| | | 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 startTime, |
| | | p.END_TIME_ AS endTime, |
| | | a.ACT_NAME_ AS actName, |
| | | 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, |
| | | CASE |
| | | WHEN c.DURATION_ IS NOT NULL THEN |
| | | CASE |
| | | WHEN FLOOR(c.DURATION_ / 1000.0) = 0 THEN NULL |
| | | ELSE FLOOR(c.DURATION_ / 1000.0) |
| | | END |
| | | ELSE NULL |
| | | END AS duration, |
| | | c.DESCRIPTION_ AS description |
| | | 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} |
| | | AND a.ACT_NAME_ IS NOT NULL |
| | | ) 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 |
| | | COALESCE(a.END_TIME_, '9999-12-31') ASC; |
| | | actStartTime; |
| | | </select> |
| | | </mapper> |