@ -1,10 +1,12 @@
package com.easy.admin.modules.huzhou.controller ;
import cn.hutool.core.date.DateUnit ;
import cn.hutool.core.date.DateUtil ;
import cn.hutool.core.util.StrUtil ;
import com.alibaba.excel.util.StringUtils ;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper ;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper ;
import com.baomidou.mybatisplus.core.metadata.IPage ;
import cn.hutool.core.date.BetweenFormatter.Level ;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page ;
import com.easy.admin.activiti.constant.ActivitiTaskStatusConst ;
@ -355,9 +357,9 @@ public class WorkflowController {
hashMap . put ( "operateDate" , item . getEndTime ( ) ) ;
String assignee = item . getAssignee ( ) ;
hashMap . put ( "operator" , assignee ) ;
String nickname = "" ;
if ( StringUtils . isNotBlank ( assignee ) ) {
String nickname = sysUserService . getById ( assignee ) . getNickname ( ) ;
nickname = sysUserService . getById ( assignee ) . getNickname ( ) ;
hashMap . put ( "operator" , nickname ) ;
} else {
@ -365,10 +367,28 @@ public class WorkflowController {
}
hashMap . put ( "taskName" , item . getName ( ) ) ;
hashMap . put ( "comment" , approvalSuggestion ) ;
if ( StringUtils . isNotBlank ( approvalSuggestion ) & & approvalSuggestion . contains ( "撤回" ) ) {
hashMap . put ( "taskName" , list . get ( i - 1 ) . getName ( ) ) ;
boolean isPut = true ;
for ( HashMap < String , Object > hash : approvalEntityList ) {
String operator = hash . get ( "operator" ) . toString ( ) ;
if ( StringUtils . isNotBlank ( approvalSuggestion ) & & approvalSuggestion . contains ( "撤回" ) ) {
if ( operator . equals ( nickname ) & & hash . get ( "approvalStatue" ) . equals ( "1" ) ) {
hashMap . put ( "taskName" , hash . get ( "taskName" ) ) ;
}
}
//是否重复
Date operateDate = ( Date ) hash . get ( "operateDate" ) ;
Date endTime = item . getEndTime ( ) ;
if ( endTime ! = null & & operateDate ! = null ) {
long between = DateUtil . between ( operateDate , endTime , DateUnit . SECOND ) ;
if ( operator . equals ( nickname ) & & between < 5 ) {
isPut = false ;
}
}
}
if ( isPut ) {
approvalEntityList . add ( hashMap ) ;
}
approvalEntityList . add ( hashMap ) ;
}
//获取未激活的审批人信息
@ -387,23 +407,40 @@ public class WorkflowController {
}
}
for ( HashMap < String , Object > lastUser : approvalEntityList ) {
if ( "0" . equals ( lastUser . get ( "approvalStatue" ) ) ) {
continue ;
}
for ( int i = 0 ; i < userTaskList . size ( ) ; i + + ) {
UserTask task = userTaskList . get ( i ) ;
// HashMap<String, Object> lastUser = approvalEntityList.get(approvalEntityList.size() - 1);//获取最后一个
Object taskName = lastUser . get ( "taskName" ) ;
boolean match = task . getName ( ) . equals ( taskName ) ;
if ( match ) {
userTaskList . remove ( task ) ;
if ( processInstance . getProcessDefinitionKey ( ) . equals ( "createURT" ) ) {
if ( ! "1" . equals ( lastUser . get ( "approvalStatue" ) ) ) {
continue ;
}
for ( int i = 0 ; i < userTaskList . size ( ) ; i + + ) {
UserTask task = userTaskList . get ( i ) ;
// HashMap<String, Object> lastUser = approvalEntityList.get(approvalEntityList.size() - 1);//获取最后一个
Object taskName = lastUser . get ( "taskName" ) ;
boolean match = task . getName ( ) . equals ( taskName ) ;
if ( match ) {
userTaskList . remove ( task ) ;
}
// else{
// userTaskList.remove(task);
// break;
// }
// i--;
}
} else {
HistoricTaskInstance item = list . get ( list . size ( ) - 1 ) ;
for ( int i = 0 ; i < userTaskList . size ( ) ; i + + ) {
UserTask task = userTaskList . get ( i ) ;
// HashMap<String, Object> lastUser = approvalEntityList.get(approvalEntityList.size() - 1);//获取最后一个
Object taskName = item . getName ( ) ;
boolean match = task . getName ( ) . equals ( taskName ) ;
if ( ! match ) {
userTaskList . remove ( task ) ;
}
else {
break ;
}
}
}
}
for ( UserTask userTask : userTaskList ) {
@ -461,19 +498,43 @@ public class WorkflowController {
}
hashMap . put ( "operator" , name ) ;
}
approvalEntityList . add ( hashMap ) ;
Boolean isrecall = true ;
for ( HashMap < String , Object > hash : approvalEntityList ) {
String operator = hash . get ( "operator" ) . toString ( ) ;
String nickname = hashMap . get ( "operator" ) . toString ( ) ;
if ( operator . equals ( nickname ) & & hash . get ( "operateDate" ) = = null ) {
isrecall = false ;
}
}
if ( isrecall ) {
approvalEntityList . add ( hashMap ) ;
}
}
}
List < HashMap < String , Object > > distinctList = approvalEntityList . stream ( )
. collect ( Collectors . collectingAndThen (
Collectors . toMap (
map - > map . get ( "operator" ) ,
map - > map ,
( existing , replacement ) - > replacement // 如果重复,最后一个
) ,
map - > new ArrayList < > ( map . values ( ) )
) ) ;
return Result . OK ( distinctList ) ;
// 使用 Stream 对列表进行排序
List < HashMap < String , Object > > sortedList = approvalEntityList . stream ( )
. sorted ( ( o1 , o2 ) - > {
Date d1 = ( Date ) o1 . get ( "operateDate" ) ;
Date d2 = ( Date ) o2 . get ( "operateDate" ) ;
// 如果 d1 是 null 或不存在,排在后面
if ( d1 = = null & & d2 ! = null ) {
return 1 ;
}
// 如果 d2 是 null 或不存在,排在后面
if ( d1 ! = null & & d2 = = null ) {
return - 1 ;
}
// 如果两者都为 null 或两者都不为 null,按照日期排序
if ( d1 = = null & & d2 = = null ) {
return 0 ;
}
return d1 . compareTo ( d2 ) ;
} )
. collect ( Collectors . toList ( ) ) ;
return Result . OK ( sortedList ) ;
}
@GetMapping ( "/getProcessInstanceIdByProid" )
public Result < ? > getProcessInstanceIdByProid ( String projectid , String stage ) {