@ -2,6 +2,7 @@ package com.cloud.kicc.workflow.service.impl;
import cn.hutool.core.collection.CollectionUtil ;
import cn.hutool.core.collection.CollectionUtil ;
import cn.hutool.core.map.MapUtil ;
import cn.hutool.core.map.MapUtil ;
import cn.hutool.core.util.ObjectUtil ;
import cn.hutool.core.util.StrUtil ;
import cn.hutool.core.util.StrUtil ;
import com.baomidou.mybatisplus.core.metadata.IPage ;
import com.baomidou.mybatisplus.core.metadata.IPage ;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page ;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page ;
@ -41,6 +42,7 @@ import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service ;
import org.springframework.stereotype.Service ;
import java.sql.ResultSet ;
import java.sql.ResultSet ;
import java.sql.Types ;
import java.util.* ;
import java.util.* ;
import java.util.stream.Collectors ;
import java.util.stream.Collectors ;
@ -80,6 +82,7 @@ public class WorkflowTaskServiceImpl implements WorkflowTaskService {
public IPage < ProcessInstanceInfoVo > list ( Map < String , Object > params ) {
public IPage < ProcessInstanceInfoVo > list ( Map < String , Object > params ) {
// =============== 已经签收或者等待签收的任务 ===============
// =============== 已经签收或者等待签收的任务 ===============
TaskQuery query = taskService . createTaskQuery ( )
TaskQuery query = taskService . createTaskQuery ( )
. taskTenantIdLike ( SecurityUtils . getTenantIdLike ( ) )
. taskCandidateOrAssigned ( SecurityUtils . getUser ( ) . getId ( ) ) . active ( )
. taskCandidateOrAssigned ( SecurityUtils . getUser ( ) . getId ( ) ) . active ( )
. includeProcessVariables ( ) . orderByTaskCreateTime ( ) . desc ( ) ;
. includeProcessVariables ( ) . orderByTaskCreateTime ( ) . desc ( ) ;
@ -112,6 +115,7 @@ public class WorkflowTaskServiceImpl implements WorkflowTaskService {
for ( Task task : taskList ) {
for ( Task task : taskList ) {
ProcessDefinition processDefinition = repositoryService . createProcessDefinitionQuery ( )
ProcessDefinition processDefinition = repositoryService . createProcessDefinitionQuery ( )
. processDefinitionTenantIdLike ( SecurityUtils . getTenantIdLike ( ) )
. processDefinitionId ( task . getProcessDefinitionId ( ) ) . singleResult ( ) ;
. processDefinitionId ( task . getProcessDefinitionId ( ) ) . singleResult ( ) ;
ProcessInstanceInfoVo processInstanceInfo = new ProcessInstanceInfoVo ( ) ;
ProcessInstanceInfoVo processInstanceInfo = new ProcessInstanceInfoVo ( ) ;
TaskInfoVo taskInfo = new TaskInfoVo ( task ) ;
TaskInfoVo taskInfo = new TaskInfoVo ( task ) ;
@ -130,6 +134,7 @@ public class WorkflowTaskServiceImpl implements WorkflowTaskService {
@Override
@Override
public IPage < HistoryTaskInfoVo > historyList ( Map < String , Object > params ) {
public IPage < HistoryTaskInfoVo > historyList ( Map < String , Object > params ) {
HistoricTaskInstanceQuery query = historyService . createHistoricTaskInstanceQuery ( )
HistoricTaskInstanceQuery query = historyService . createHistoricTaskInstanceQuery ( )
. taskTenantIdLike ( SecurityUtils . getTenantIdLike ( ) )
. taskAssignee ( SecurityUtils . getUser ( ) . getId ( ) ) . finished ( )
. taskAssignee ( SecurityUtils . getUser ( ) . getId ( ) ) . finished ( )
. includeProcessVariables ( ) . orderByHistoricTaskInstanceEndTime ( ) . desc ( ) ;
. includeProcessVariables ( ) . orderByHistoricTaskInstanceEndTime ( ) . desc ( ) ;
@ -162,18 +167,21 @@ public class WorkflowTaskServiceImpl implements WorkflowTaskService {
for ( HistoricTaskInstance historicTask : historicTaskList ) {
for ( HistoricTaskInstance historicTask : historicTaskList ) {
ProcessDefinition processDefinition = repositoryService . createProcessDefinitionQuery ( )
ProcessDefinition processDefinition = repositoryService . createProcessDefinitionQuery ( )
. processDefinitionTenantIdLike ( SecurityUtils . getTenantIdLike ( ) )
. processDefinitionId ( historicTask . getProcessDefinitionId ( ) ) . singleResult ( ) ;
. processDefinitionId ( historicTask . getProcessDefinitionId ( ) ) . singleResult ( ) ;
HistoryTaskInfoVo HistoryTaskInfo = new HistoryTaskInfoVo ( historicTask ) ;
HistoryTaskInfoVo HistoryTaskInfo = new HistoryTaskInfoVo ( historicTask ) ;
HistoryTaskInfo . setProcessDefName ( processDefinition . getName ( ) ) ;
HistoryTaskInfo . setProcessDefName ( processDefinition . getName ( ) ) ;
HistoryTaskInfo . setRollBack ( this . rollBackTask ( historicTask ) ) ;
HistoryTaskInfo . setRollBack ( this . rollBackTask ( historicTask ) ) ;
List < Task > taskList = taskService . createTaskQuery ( ) . processInstanceId ( historicTask . getProcessInstanceId ( ) ) . list ( ) ;
List < Task > taskList = taskService . createTaskQuery ( )
if ( taskList . size ( ) > 0 ) {
. taskTenantIdLike ( SecurityUtils . getTenantIdLike ( ) )
. processInstanceId ( historicTask . getProcessInstanceId ( ) ) . list ( ) ;
if ( ! taskList . isEmpty ( ) ) {
TaskInfoVo taskInfo = new TaskInfoVo ( taskList . get ( 0 ) ) ;
TaskInfoVo taskInfo = new TaskInfoVo ( taskList . get ( 0 ) ) ;
HistoryTaskInfo . setTaskInfo ( taskInfo ) ;
HistoryTaskInfo . setTaskInfo ( taskInfo ) ;
}
}
// 获取意见评论内容
// 获取意见评论内容
List < ActivityCommentInfoVo > activityCommentInfoList = this . getTaskComments ( historicTask . getId ( ) ) ;
List < ActivityCommentInfoVo > activityCommentInfoList = this . getTaskComments ( historicTask . getId ( ) ) ;
if ( activityCommentInfoList . size ( ) > 0 ) {
if ( ! activityCommentInfoList . isEmpty ( ) ) {
ActivityCommentInfoVo activityCommentInfo = activityCommentInfoList . get ( activityCommentInfoList . size ( ) - 1 ) ;
ActivityCommentInfoVo activityCommentInfo = activityCommentInfoList . get ( activityCommentInfoList . size ( ) - 1 ) ;
HistoryTaskInfo . setComment ( activityCommentInfo . getMessage ( ) ) ;
HistoryTaskInfo . setComment ( activityCommentInfo . getMessage ( ) ) ;
HistoryTaskInfo . setMesLevel ( activityCommentInfo . getMesLevel ( ) ) ;
HistoryTaskInfo . setMesLevel ( activityCommentInfo . getMesLevel ( ) ) ;
@ -188,15 +196,15 @@ public class WorkflowTaskServiceImpl implements WorkflowTaskService {
@Override
@Override
public List < Workflow > historyFlowChangeList ( String processInsId ) {
public List < Workflow > historyFlowChangeList ( String processInsId ) {
List < HistoricActivityInstance > historicActivityInstances = historyService . createHistoricActivityInstanceQuery ( )
List < HistoricActivityInstance > historicActivityInstances = historyService . createHistoricActivityInstanceQuery ( )
. activityTenantIdLike ( SecurityUtils . getTenantIdLike ( ) )
. processInstanceId ( processInsId ) . orderByHistoricActivityInstanceStartTime ( ) . asc ( )
. processInstanceId ( processInsId ) . orderByHistoricActivityInstanceStartTime ( ) . asc ( )
. orderByHistoricActivityInstanceEndTime ( ) . asc ( ) . list ( ) ;
. orderByHistoricActivityInstanceEndTime ( ) . asc ( ) . list ( ) ;
List < Workflow > historicFlowChangeList = new ArrayList ( ) ;
List < Workflow > historicFlowChangeList = new ArrayList ( ) ;
for ( int i = 0 ; i < historicActivityInstances . size ( ) ; i + + ) {
for ( HistoricActivityInstance historicActivityInstance : historicActivityInstances ) {
HistoricActivityInstance historicActivityInstance = historicActivityInstances . get ( i ) ;
// 只显示开始节点和结束节点,并且执行人不为空的任务
// 只显示开始节点和结束节点,并且执行人不为空的任务
if ( StrUtil . isNotBlank ( historicActivityInstance . getAssignee ( ) )
if ( StrUtil . isNotBlank ( historicActivityInstance . getAssignee ( ) )
& & historyService . createHistoricTaskInstanceQuery ( ) . taskId ( historicActivityInstance . getTaskId ( ) ) . count ( ) ! = 0
& & historyService . createHistoricTaskInstanceQuery ( ) . taskTenantIdLike ( SecurityUtils . getTenantIdLike ( ) ) . task Id ( historicActivityInstance . getTaskId ( ) ) . count ( ) ! = 0
| | BpmnXMLConstants . ELEMENT_TASK_USER . equals ( historicActivityInstance . getActivityType ( ) )
| | BpmnXMLConstants . ELEMENT_TASK_USER . equals ( historicActivityInstance . getActivityType ( ) )
& & historicActivityInstance . getEndTime ( ) = = null
& & historicActivityInstance . getEndTime ( ) = = null
| | BpmnXMLConstants . ELEMENT_EVENT_START . equals ( historicActivityInstance . getActivityType ( ) )
| | BpmnXMLConstants . ELEMENT_EVENT_START . equals ( historicActivityInstance . getActivityType ( ) )
@ -259,7 +267,9 @@ public class WorkflowTaskServiceImpl implements WorkflowTaskService {
processVars . put ( WorkflowConstant . TITLE , workFlow . getTitle ( ) ) ;
processVars . put ( WorkflowConstant . TITLE , workFlow . getTitle ( ) ) ;
}
}
Task task = taskService . createTaskQuery ( ) . taskId ( workFlow . getTaskId ( ) ) . singleResult ( ) ;
Task task = taskService . createTaskQuery ( )
. taskTenantIdLike ( SecurityUtils . getTenantIdLike ( ) )
. taskId ( workFlow . getTaskId ( ) ) . singleResult ( ) ;
// owner不为空说明可能存在委托任务
// owner不为空说明可能存在委托任务
if ( StrUtil . isNotBlank ( task . getOwner ( ) ) ) {
if ( StrUtil . isNotBlank ( task . getOwner ( ) ) ) {
DelegationState delegationState = task . getDelegationState ( ) ;
DelegationState delegationState = task . getDelegationState ( ) ;
@ -292,15 +302,20 @@ public class WorkflowTaskServiceImpl implements WorkflowTaskService {
public Map getPaintDiagramXml ( String processInsId ) {
public Map getPaintDiagramXml ( String processInsId ) {
Map result = MapUtil . newHashMap ( ) ;
Map result = MapUtil . newHashMap ( ) ;
String processDefId ;
String processDefId ;
ProcessInstance processInstance = runtimeService . createProcessInstanceQuery ( ) . processInstanceId ( processInsId ) . singleResult ( ) ;
ProcessInstance processInstance = runtimeService . createProcessInstanceQuery ( )
. processInstanceTenantIdLike ( SecurityUtils . getTenantIdLike ( ) )
. processInstanceId ( processInsId ) . singleResult ( ) ;
// 获取流程定义ID
// 获取流程定义ID
if ( processInstance = = null ) {
if ( processInstance = = null ) {
processDefId = historyService . createHistoricProcessInstanceQuery ( ) . processInstanceId ( processInsId ) . singleResult ( ) . getProcessDefinitionId ( ) ;
processDefId = historyService . createHistoricProcessInstanceQuery ( )
. processInstanceTenantIdLike ( SecurityUtils . getTenantIdLike ( ) )
. processInstanceId ( processInsId ) . singleResult ( ) . getProcessDefinitionId ( ) ;
} else {
} else {
processDefId = processInstance . getProcessDefinitionId ( ) ;
processDefId = processInstance . getProcessDefinitionId ( ) ;
}
}
BpmnModel bpmnModel = repositoryService . getBpmnModel ( processDefId ) ;
BpmnModel bpmnModel = repositoryService . getBpmnModel ( processDefId ) ;
List < HistoricActivityInstance > historicActivityInstanceList = historyService . createHistoricActivityInstanceQuery ( )
List < HistoricActivityInstance > historicActivityInstanceList = historyService . createHistoricActivityInstanceQuery ( )
. activityTenantIdLike ( SecurityUtils . getTenantIdLike ( ) )
. processInstanceId ( processInsId ) . finished ( )
. processInstanceId ( processInsId ) . finished ( )
. orderByHistoricActivityInstanceEndTime ( ) . asc ( ) . list ( ) ;
. orderByHistoricActivityInstanceEndTime ( ) . asc ( ) . list ( ) ;
@ -312,14 +327,16 @@ public class WorkflowTaskServiceImpl implements WorkflowTaskService {
if ( activityType . equals ( BpmnXMLConstants . ELEMENT_SEQUENCE_FLOW ) | | activityType . equals ( BpmnXMLConstants . ELEMENT_GATEWAY_EXCLUSIVE ) ) {
if ( activityType . equals ( BpmnXMLConstants . ELEMENT_SEQUENCE_FLOW ) | | activityType . equals ( BpmnXMLConstants . ELEMENT_GATEWAY_EXCLUSIVE ) ) {
flows . add ( historicActivityInstance . getActivityId ( ) ) ;
flows . add ( historicActivityInstance . getActivityId ( ) ) ;
} else if ( StrUtil . isNotBlank ( historicActivityInstance . getAssignee ( ) )
} else if ( StrUtil . isNotBlank ( historicActivityInstance . getAssignee ( ) )
& & historyService . createHistoricTaskInstanceQuery ( ) . taskId ( historicActivityInstance . getTaskId ( ) ) . count ( ) ! = 0
& & historyService . createHistoricTaskInstanceQuery ( ) . taskTenantIdLike ( SecurityUtils . getTenantIdLike ( ) ) . task Id ( historicActivityInstance . getTaskId ( ) ) . count ( ) ! = 0
| | BpmnXMLConstants . ELEMENT_TASK_USER . equals ( historicActivityInstance . getActivityType ( ) ) & & historicActivityInstance . getEndTime ( ) = = null
| | BpmnXMLConstants . ELEMENT_TASK_USER . equals ( historicActivityInstance . getActivityType ( ) ) & & historicActivityInstance . getEndTime ( ) = = null
| | BpmnXMLConstants . ELEMENT_EVENT_START . equals ( historicActivityInstance . getActivityType ( ) )
| | BpmnXMLConstants . ELEMENT_EVENT_START . equals ( historicActivityInstance . getActivityType ( ) )
| | BpmnXMLConstants . ELEMENT_EVENT_END . equals ( historicActivityInstance . getActivityType ( ) ) ) {
| | BpmnXMLConstants . ELEMENT_EVENT_END . equals ( historicActivityInstance . getActivityType ( ) ) ) {
activityIds . add ( historicActivityInstance . getActivityId ( ) ) ;
activityIds . add ( historicActivityInstance . getActivityId ( ) ) ;
}
}
}
}
List < Task > tasks = taskService . createTaskQuery ( ) . processInstanceId ( processInsId ) . list ( ) ;
List < Task > tasks = taskService . createTaskQuery ( )
. taskTenantIdLike ( SecurityUtils . getTenantIdLike ( ) )
. processInstanceId ( processInsId ) . list ( ) ;
for ( Task task : tasks ) {
for ( Task task : tasks ) {
activityIds . add ( task . getTaskDefinitionKey ( ) ) ;
activityIds . add ( task . getTaskDefinitionKey ( ) ) ;
}
}
@ -337,13 +354,16 @@ public class WorkflowTaskServiceImpl implements WorkflowTaskService {
@Override
@Override
public void rollBackTask ( String rollBackTaskDefKey , String currentTaskId , ActivityCommentInfoVo activityCommentInfo ) {
public void rollBackTask ( String rollBackTaskDefKey , String currentTaskId , ActivityCommentInfoVo activityCommentInfo ) {
Task task = taskService . createTaskQuery ( ) . taskId ( currentTaskId ) . singleResult ( ) ;
Task task = taskService . createTaskQuery ( )
. taskTenantIdLike ( SecurityUtils . getTenantIdLike ( ) )
. taskId ( currentTaskId ) . singleResult ( ) ;
if ( StrUtil . isBlank ( task . getAssignee ( ) ) ) {
if ( StrUtil . isBlank ( task . getAssignee ( ) ) ) {
//代理人为空自己签收任务
//代理人为空自己签收任务
taskService . claim ( currentTaskId , SecurityUtils . getUser ( ) . getId ( ) ) ;
taskService . claim ( currentTaskId , SecurityUtils . getUser ( ) . getId ( ) ) ;
}
}
// 退回发起者处理,退回到发起者,默认设置任务执行人为发起者
// 退回发起者处理,退回到发起者,默认设置任务执行人为发起者
ActivityInstance targetRealActivityInstance = runtimeService . createActivityInstanceQuery ( )
ActivityInstance targetRealActivityInstance = runtimeService . createActivityInstanceQuery ( )
. activityTenantIdLike ( SecurityUtils . getTenantIdLike ( ) )
. processInstanceId ( task . getProcessInstanceId ( ) ) . activityId ( rollBackTaskDefKey ) . list ( ) . get ( 0 ) ;
. processInstanceId ( task . getProcessInstanceId ( ) ) . activityId ( rollBackTaskDefKey ) . list ( ) . get ( 0 ) ;
if ( targetRealActivityInstance . getActivityType ( ) . equals ( BpmnXMLConstants . ELEMENT_EVENT_START ) ) {
if ( targetRealActivityInstance . getActivityType ( ) . equals ( BpmnXMLConstants . ELEMENT_EVENT_START ) ) {
workflowProcessServices . stopProcessInstance ( task . getProcessInstanceId ( ) , ExtendMessage . PROCESS_REJECT , activityCommentInfo . getMessage ( ) ) ;
workflowProcessServices . stopProcessInstance ( task . getProcessInstanceId ( ) , ExtendMessage . PROCESS_REJECT , activityCommentInfo . getMessage ( ) ) ;
@ -355,7 +375,9 @@ public class WorkflowTaskServiceImpl implements WorkflowTaskService {
@Override
@Override
public List < Workflow > rollBackTaskList ( String taskId ) {
public List < Workflow > rollBackTaskList ( String taskId ) {
Task task = taskService . createTaskQuery ( ) . taskId ( taskId ) . singleResult ( ) ;
Task task = taskService . createTaskQuery ( )
. taskTenantIdLike ( SecurityUtils . getTenantIdLike ( ) )
. taskId ( taskId ) . singleResult ( ) ;
String processInstanceId = task . getProcessInstanceId ( ) ;
String processInstanceId = task . getProcessInstanceId ( ) ;
String currentActivityId = task . getTaskDefinitionKey ( ) ;
String currentActivityId = task . getTaskDefinitionKey ( ) ;
String processDefinitionId = task . getProcessDefinitionId ( ) ;
String processDefinitionId = task . getProcessDefinitionId ( ) ;
@ -364,14 +386,15 @@ public class WorkflowTaskServiceImpl implements WorkflowTaskService {
//获取已经完成的活动节点
//获取已经完成的活动节点
List < ActivityInstance > activityInstanceList = runtimeService . createActivityInstanceQuery ( )
List < ActivityInstance > activityInstanceList = runtimeService . createActivityInstanceQuery ( )
. activityTenantIdLike ( SecurityUtils . getTenantIdLike ( ) )
. processInstanceId ( processInstanceId ) . finished ( ) . orderByActivityInstanceStartTime ( ) . asc ( ) . list ( ) ;
. processInstanceId ( processInstanceId ) . finished ( ) . orderByActivityInstanceStartTime ( ) . asc ( ) . list ( ) ;
//获取已经完成节点的活动ID
//获取已经完成节点的活动ID
List < String > activityIds = activityInstanceList . stream ( ) . filter ( activity - > activity . getActivityType ( )
List < String > activityIds = activityInstanceList . stream ( ) . filter ( activity - > activity . getActivityType ( )
. equals ( BpmnXMLConstants . ELEMENT_TASK_USER ) | | activity . getActivityType ( )
. equals ( BpmnXMLConstants . ELEMENT_TASK_USER ) | | activity . getActivityType ( )
. equals ( BpmnXMLConstants . ELEMENT_EVENT_START ) )
. equals ( BpmnXMLConstants . ELEMENT_EVENT_START ) )
. filter ( activity - > ! activity . getActivityId ( ) . equals ( currentActivityId ) )
. map ( ActivityInstance : : getActivityId )
. map ( ActivityInstance : : getActivityId ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
. filter ( activityId - > ! activityId . equals ( currentActivityId ) ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
List < Workflow > result = CollectionUtil . newArrayList ( ) ;
List < Workflow > result = CollectionUtil . newArrayList ( ) ;
for ( String activityId : activityIds ) {
for ( String activityId : activityIds ) {
@ -394,16 +417,21 @@ public class WorkflowTaskServiceImpl implements WorkflowTaskService {
Map result = new HashMap ( ) ;
Map result = new HashMap ( ) ;
try {
try {
String processDefId ;
String processDefId ;
ProcessInstance pi = runtimeService . createProcessInstanceQuery ( ) . processInstanceId ( processInsId ) . singleResult ( ) ;
ProcessInstance pi = runtimeService . createProcessInstanceQuery ( )
. processInstanceTenantIdLike ( SecurityUtils . getTenantIdLike ( ) )
. processInstanceId ( processInsId ) . singleResult ( ) ;
//流程走完的不显示图
//流程走完的不显示图
if ( pi = = null ) {
if ( pi = = null ) {
processDefId = historyService . createHistoricProcessInstanceQuery ( ) . processInstanceId ( processInsId ) . singleResult ( ) . getProcessDefinitionId ( ) ;
processDefId = historyService . createHistoricProcessInstanceQuery ( )
. processInstanceTenantIdLike ( SecurityUtils . getTenantIdLike ( ) )
. processInstanceId ( processInsId ) . singleResult ( ) . getProcessDefinitionId ( ) ;
} else {
} else {
processDefId = pi . getProcessDefinitionId ( ) ;
processDefId = pi . getProcessDefinitionId ( ) ;
}
}
BpmnModel bpmnModel = repositoryService . getBpmnModel ( processDefId ) ;
BpmnModel bpmnModel = repositoryService . getBpmnModel ( processDefId ) ;
List < HistoricActivityInstance > historyProcess = historyService // 历史相关Service
List < HistoricActivityInstance > historyProcess = historyService // 历史相关Service
. createHistoricActivityInstanceQuery ( ) // 创建历史活动实例查询
. createHistoricActivityInstanceQuery ( ) // 创建历史活动实例查询
. activityTenantIdLike ( SecurityUtils . getTenantIdLike ( ) )
. processInstanceId ( processInsId ) // 执行流程实例id
. processInstanceId ( processInsId ) // 执行流程实例id
. finished ( ) . orderByHistoricActivityInstanceEndTime ( ) . asc ( )
. finished ( ) . orderByHistoricActivityInstanceEndTime ( ) . asc ( )
. list ( ) ;
. list ( ) ;
@ -411,7 +439,7 @@ public class WorkflowTaskServiceImpl implements WorkflowTaskService {
Set < String > runActivityIds = new LinkedHashSet ( ) ;
Set < String > runActivityIds = new LinkedHashSet ( ) ;
for ( HistoricActivityInstance hi : historyProcess ) {
for ( HistoricActivityInstance hi : historyProcess ) {
if ( StrUtil . isNotBlank ( hi . getAssignee ( ) )
if ( StrUtil . isNotBlank ( hi . getAssignee ( ) )
& & historyService . createHistoricTaskInstanceQuery ( ) . taskId ( hi . getTaskId ( ) ) . count ( ) ! = 0
& & historyService . createHistoricTaskInstanceQuery ( ) . taskTenantIdLike ( SecurityUtils . getTenantIdLike ( ) ) . task Id ( hi . getTaskId ( ) ) . count ( ) ! = 0
| | BpmnXMLConstants . ELEMENT_TASK_USER . equals ( hi . getActivityType ( ) ) & & hi . getEndTime ( ) = = null
| | BpmnXMLConstants . ELEMENT_TASK_USER . equals ( hi . getActivityType ( ) ) & & hi . getEndTime ( ) = = null
| | BpmnXMLConstants . ELEMENT_EVENT_START . equals ( hi . getActivityType ( ) )
| | BpmnXMLConstants . ELEMENT_EVENT_START . equals ( hi . getActivityType ( ) )
| | BpmnXMLConstants . ELEMENT_EVENT_END . equals ( hi . getActivityType ( ) )
| | BpmnXMLConstants . ELEMENT_EVENT_END . equals ( hi . getActivityType ( ) )
@ -420,7 +448,9 @@ public class WorkflowTaskServiceImpl implements WorkflowTaskService {
activityIds . add ( hi . getActivityId ( ) ) ;
activityIds . add ( hi . getActivityId ( ) ) ;
}
}
}
}
List < Task > taskList = taskService . createTaskQuery ( ) . processInstanceId ( processInsId ) . list ( ) ;
List < Task > taskList = taskService . createTaskQuery ( )
. taskTenantIdLike ( SecurityUtils . getTenantIdLike ( ) )
. processInstanceId ( processInsId ) . list ( ) ;
for ( Task task : taskList ) {
for ( Task task : taskList ) {
runActivityIds . add ( task . getTaskDefinitionKey ( ) ) ;
runActivityIds . add ( task . getTaskDefinitionKey ( ) ) ;
}
}
@ -430,7 +460,7 @@ public class WorkflowTaskServiceImpl implements WorkflowTaskService {
result . put ( "runActivityIds" , runActivityIds ) ;
result . put ( "runActivityIds" , runActivityIds ) ;
return result ;
return result ;
} catch ( Exception e ) {
} catch ( Exception e ) {
e . printStackTrace ( ) ;
log . error ( "An error occurred" , e ) ;
}
}
return null ;
return null ;
}
}
@ -438,15 +468,19 @@ public class WorkflowTaskServiceImpl implements WorkflowTaskService {
/** 是否可以回滚任务 */
/** 是否可以回滚任务 */
private boolean rollBackTask ( HistoricTaskInstance historicTaskInstance ) {
private boolean rollBackTask ( HistoricTaskInstance historicTaskInstance ) {
ProcessInstance processInstance = runtimeService . createProcessInstanceQuery ( )
ProcessInstance processInstance = runtimeService . createProcessInstanceQuery ( )
. processInstanceTenantIdLike ( SecurityUtils . getTenantIdLike ( ) )
. processInstanceId ( historicTaskInstance . getProcessInstanceId ( ) ) . singleResult ( ) ;
. processInstanceId ( historicTaskInstance . getProcessInstanceId ( ) ) . singleResult ( ) ;
if ( processInstance ! = null ) {
if ( processInstance ! = null ) {
if ( ! processInstance . isSuspended ( ) ) {
if ( ! processInstance . isSuspended ( ) ) {
Task currentTask = taskService . createTaskQuery ( ) . processInstanceId ( historicTaskInstance . getProcessInstanceId ( ) ) . list ( ) . get ( 0 ) ;
Task currentTask = taskService . createTaskQuery ( )
. taskTenantIdLike ( SecurityUtils . getTenantIdLike ( ) )
. processInstanceId ( historicTaskInstance . getProcessInstanceId ( ) ) . list ( ) . get ( 0 ) ;
HistoricTaskInstance lastHisTask = historyService . createHistoricTaskInstanceQuery ( )
HistoricTaskInstance lastHisTask = historyService . createHistoricTaskInstanceQuery ( )
. taskTenantIdLike ( SecurityUtils . getTenantIdLike ( ) )
. processInstanceId ( historicTaskInstance . getProcessInstanceId ( ) ) . finished ( ) . includeProcessVariables ( ) . orderByHistoricTaskInstanceEndTime ( ) . desc ( ) . list ( ) . get ( 0 ) ;
. processInstanceId ( historicTaskInstance . getProcessInstanceId ( ) ) . finished ( ) . includeProcessVariables ( ) . orderByHistoricTaskInstanceEndTime ( ) . desc ( ) . list ( ) . get ( 0 ) ;
// 用户已签收
// 用户已签收
if ( currentTask . getClaimTime ( ) ! = null ) return false ;
if ( currentTask . getClaimTime ( ) ! = null ) return false ;
if ( historicTaskInstance . getId ( ) . equals ( lastHisTask . getId ( ) ) ) return true ;
return historicTaskInstance . getId ( ) . equals ( lastHisTask . getId ( ) ) ;
}
}
}
}
return false ;
return false ;
@ -454,7 +488,10 @@ public class WorkflowTaskServiceImpl implements WorkflowTaskService {
/** 获取任务意见评论内容 */
/** 获取任务意见评论内容 */
private List < ActivityCommentInfoVo > getTaskComments ( String taskId ) {
private List < ActivityCommentInfoVo > getTaskComments ( String taskId ) {
return jdbcTemplate . query ( SqlConstants . QUERY_ACT_HI_COMMENT , new String [ ] { WorkflowConstant . COMMENT_TYPE_PREFIX + "%" , taskId } , ( ResultSet rs , int rowNum ) - > {
return jdbcTemplate . query ( SqlConstants . QUERY_ACT_HI_COMMENT ,
new String [ ] { WorkflowConstant . COMMENT_TYPE_PREFIX + "%" , taskId } ,
new int [ ] { Types . VARCHAR , Types . VARCHAR } ,
( ResultSet rs , int rowNum ) - > {
ActivityCommentInfoVo activityCommentInfo = new ActivityCommentInfoVo ( ) ;
ActivityCommentInfoVo activityCommentInfo = new ActivityCommentInfoVo ( ) ;
activityCommentInfo . setExtendMessage ( rs . getString ( "TYPE_" ) ) ;
activityCommentInfo . setExtendMessage ( rs . getString ( "TYPE_" ) ) ;
activityCommentInfo . setCombinationMessage ( new String ( rs . getBytes ( "FULL_MSG_" ) ) ) ;
activityCommentInfo . setCombinationMessage ( new String ( rs . getBytes ( "FULL_MSG_" ) ) ) ;
@ -470,12 +507,13 @@ public class WorkflowTaskServiceImpl implements WorkflowTaskService {
// 获取开始事件流程发起人名称
// 获取开始事件流程发起人名称
if ( BpmnXMLConstants . ELEMENT_EVENT_START . equals ( historicActivityInstance . getActivityType ( ) ) ) {
if ( BpmnXMLConstants . ELEMENT_EVENT_START . equals ( historicActivityInstance . getActivityType ( ) ) ) {
List < HistoricProcessInstance > historicProcessInstanceList = historyService . createHistoricProcessInstanceQuery ( )
List < HistoricProcessInstance > historicProcessInstanceList = historyService . createHistoricProcessInstanceQuery ( )
. processInstanceTenantIdLike ( SecurityUtils . getTenantIdLike ( ) )
. processInstanceId ( historicActivityInstance . getProcessInstanceId ( ) )
. processInstanceId ( historicActivityInstance . getProcessInstanceId ( ) )
. orderByProcessInstanceStartTime ( ) . asc ( ) . list ( ) ;
. orderByProcessInstanceStartTime ( ) . asc ( ) . list ( ) ;
if ( historicProcessInstanceList . size ( ) > 0 ) {
if ( ! historicProcessInstanceList . isEmpty ( ) ) {
if ( StrUtil . isNotBlank ( historicProcessInstanceList . get ( 0 ) . getStartUserId ( ) ) ) {
if ( StrUtil . isNotBlank ( historicProcessInstanceList . get ( 0 ) . getStartUserId ( ) ) ) {
Map < String , Object > user = jdbcTemplate . queryForMap ( SqlConstants . QUERY_USER_BY_ID , historicProcessInstanceList . get ( 0 ) . getStartUserId ( ) ) ;
Map < String , Object > user = jdbcTemplate . queryForMap ( SqlConstants . QUERY_USER_BY_ID , historicProcessInstanceList . get ( 0 ) . getStartUserId ( ) , SecurityUtils . getTenantIdLike ( ) ) ;
if ( user ! = null ) {
if ( ObjectUtil . isNotEmpty ( user ) ) {
workflow . setAssignee ( historicActivityInstance . getAssignee ( ) ) ;
workflow . setAssignee ( historicActivityInstance . getAssignee ( ) ) ;
workflow . setAssigneeName ( MapUtil . getStr ( user , "userName" ) ) ;
workflow . setAssigneeName ( MapUtil . getStr ( user , "userName" ) ) ;
}
}
@ -500,8 +538,8 @@ public class WorkflowTaskServiceImpl implements WorkflowTaskService {
// 获取任务执行人名称
// 获取任务执行人名称
if ( StrUtil . isNotEmpty ( historicActivityInstance . getAssignee ( ) ) ) {
if ( StrUtil . isNotEmpty ( historicActivityInstance . getAssignee ( ) ) ) {
Map < String , Object > user = jdbcTemplate . queryForMap ( SqlConstants . QUERY_USER_BY_ID , historicActivityInstance . getAssignee ( ) ) ;
Map < String , Object > user = jdbcTemplate . queryForMap ( SqlConstants . QUERY_USER_BY_ID , historicActivityInstance . getAssignee ( ) , SecurityUtils . getTenantIdLik e ( ) ) ;
if ( user ! = null ) {
if ( ObjectUtil . isNotEmpty ( user ) ) {
workflow . setAssignee ( historicActivityInstance . getAssignee ( ) ) ;
workflow . setAssignee ( historicActivityInstance . getAssignee ( ) ) ;
workflow . setAssigneeName ( MapUtil . getStr ( user , "userName" ) ) ;
workflow . setAssigneeName ( MapUtil . getStr ( user , "userName" ) ) ;
}
}
@ -510,7 +548,7 @@ public class WorkflowTaskServiceImpl implements WorkflowTaskService {
// 获取意见评论内容
// 获取意见评论内容
if ( StrUtil . isNotBlank ( historicActivityInstance . getTaskId ( ) ) ) {
if ( StrUtil . isNotBlank ( historicActivityInstance . getTaskId ( ) ) ) {
List < ActivityCommentInfoVo > activityCommentInfoList = this . getTaskComments ( historicActivityInstance . getTaskId ( ) ) ;
List < ActivityCommentInfoVo > activityCommentInfoList = this . getTaskComments ( historicActivityInstance . getTaskId ( ) ) ;
if ( activityCommentInfoList . size ( ) > 0 ) {
if ( ! activityCommentInfoList . isEmpty ( ) ) {
ActivityCommentInfoVo activityCommentInfo = activityCommentInfoList . get ( activityCommentInfoList . size ( ) - 1 ) ;
ActivityCommentInfoVo activityCommentInfo = activityCommentInfoList . get ( activityCommentInfoList . size ( ) - 1 ) ;
workflow . setActivityCommentInfo ( ( activityCommentInfo ) ) ;
workflow . setActivityCommentInfo ( ( activityCommentInfo ) ) ;
}
}