17 changed files with 417 additions and 23 deletions
@ -0,0 +1,67 @@ |
|||||
|
package com.easy.admin.modules.huzhou.listener; |
||||
|
|
||||
|
import org.activiti.engine.IdentityService; |
||||
|
import org.activiti.engine.TaskService; |
||||
|
import org.activiti.engine.delegate.DelegateExecution; |
||||
|
import org.activiti.engine.delegate.ExecutionListener; |
||||
|
import org.activiti.engine.identity.User; |
||||
|
import org.activiti.engine.task.IdentityLink; |
||||
|
import org.activiti.engine.task.Task; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.context.ApplicationContext; |
||||
|
import org.springframework.context.ApplicationContextAware; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
|
||||
|
import java.util.ArrayList; |
||||
|
import java.util.HashMap; |
||||
|
import java.util.List; |
||||
|
|
||||
|
@Component |
||||
|
public class ResubmitListener implements ExecutionListener , ApplicationContextAware { |
||||
|
// @Autowired
|
||||
|
// private TaskService taskService;
|
||||
|
private static ApplicationContext applicationContext; |
||||
|
|
||||
|
@Override |
||||
|
public void setApplicationContext(ApplicationContext applicationContext) { |
||||
|
ResubmitListener.applicationContext = applicationContext; |
||||
|
} |
||||
|
@Override |
||||
|
public void notify(DelegateExecution execution) throws Exception { |
||||
|
TaskService taskService = applicationContext.getBean(TaskService.class); |
||||
|
IdentityService identityService = applicationContext.getBean(IdentityService.class); |
||||
|
List<Task> tasks = taskService.createTaskQuery() |
||||
|
.processInstanceId(execution.getProcessInstanceId()) |
||||
|
.list(); |
||||
|
HashMap<String,String> approvedResult = (HashMap<String,String>)execution.getVariable("ApprovedResult"); |
||||
|
if(approvedResult != null){ |
||||
|
approvedResult.forEach((userId,approved)->{ |
||||
|
if ("1".equals(approved)) { |
||||
|
List<String> candidateUsers = new ArrayList<>(); |
||||
|
for (Task task : tasks) { |
||||
|
List<IdentityLink> identityLinks = taskService.getIdentityLinksForTask(task.getId()); |
||||
|
for (IdentityLink identityLink : identityLinks) { |
||||
|
if (identityLink.getType().equals("candidate")) { |
||||
|
if (identityLink.getUserId() != null) { |
||||
|
candidateUsers.add(identityLink.getUserId()); |
||||
|
} else if (identityLink.getGroupId() != null) { |
||||
|
List<User> users = identityService.createUserQuery() |
||||
|
.memberOfGroup(identityLink.getGroupId()) |
||||
|
.list(); |
||||
|
for (User user : users) { |
||||
|
candidateUsers.add(user.getId()); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
if (candidateUsers.contains(userId)) { |
||||
|
taskService.claim(task.getId(), userId); |
||||
|
taskService.complete(task.getId()); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
@ -0,0 +1,36 @@ |
|||||
|
package com.easy.admin.modules.huzhou.listener; |
||||
|
|
||||
|
import org.activiti.engine.delegate.DelegateTask; |
||||
|
import org.activiti.engine.delegate.TaskListener; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
|
||||
|
import java.util.HashMap; |
||||
|
|
||||
|
@Component |
||||
|
public class UserTaskCompleteListener implements TaskListener { |
||||
|
|
||||
|
@Override |
||||
|
public void notify(DelegateTask delegateTask) { |
||||
|
String taskId = delegateTask.getId(); |
||||
|
String userId = delegateTask.getAssignee(); |
||||
|
String approved = (String) delegateTask.getVariableLocal("approvalStatue"); // 获取用户审批结果
|
||||
|
HashMap<String,String> approvedResult = (HashMap<String,String>)delegateTask.getVariable("ApprovedResult"); |
||||
|
if(approvedResult==null){ |
||||
|
approvedResult = new HashMap<>(); |
||||
|
} |
||||
|
if("1".equals(approved)){ |
||||
|
approvedResult.put(userId,"1"); // 审批通过
|
||||
|
}else{ |
||||
|
approvedResult.put(userId,"0"); // 审批不通过
|
||||
|
delegateTask.getExecution().setVariable("rejected",true); // 更新审批结果变量
|
||||
|
} |
||||
|
int size = approvedResult.size(); |
||||
|
if(size==7&&!approvedResult.containsValue("0")){ |
||||
|
delegateTask.getExecution().setVariable("rejected",false); // 更新审批结果变量
|
||||
|
} |
||||
|
delegateTask.getExecution().setVariable( "ApprovedResult", approvedResult); // 更新审批状态变量
|
||||
|
// identityService.createUserQuery()
|
||||
|
// .memberOfGroup(identityLink.getGroupId())
|
||||
|
// .list();
|
||||
|
} |
||||
|
} |
Loading…
Reference in new issue