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