修改会签不支持候选组的bug

test_flowableAssgin
admin 1 year ago
parent d5ff40103c
commit a61e6525b0

@ -155,7 +155,13 @@ public interface IFlowTaskService {
* @param processInstanceId
*/
public FlowTaskCompleteVO updateNowTaskAssignee(String processInstanceId, String processDefinitionId,String deptid);
/**
*
* @param userTask
* @param startUserId
* @return
*/
public List<String> getAssignee(UserTask userTask,String startUserId);
/**
*
*

@ -94,8 +94,9 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
MultiInstanceLoopCharacteristics multiInstance = userTask.getLoopCharacteristics();
// 会签节点
if (Objects.nonNull(multiInstance)) {
if(null != userTask.getCandidateUsers() && userTask.getCandidateUsers().size() > 1){
variables.put("persons",userTask.getCandidateUsers());
List<String> loginnames = flowTaskService.getAssignee(userTask,userName);
if(null != loginnames && !loginnames.isEmpty()){
variables.put("persons",loginnames);
}
}
}
@ -179,8 +180,9 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
MultiInstanceLoopCharacteristics multiInstance = userTask.getLoopCharacteristics();
// 会签节点
if (Objects.nonNull(multiInstance)) {
if(null != userTask.getCandidateUsers() && userTask.getCandidateUsers().size() > 1){
variables.put("persons",userTask.getCandidateUsers());
List<String> loginnames = flowTaskService.getAssignee(userTask,userName);
if(null != loginnames && !loginnames.isEmpty()){
variables.put("persons",loginnames);
}
}
}

@ -31,6 +31,7 @@ import cn.jyjz.xiaoyao.common.base.vo.UserToken;
import cn.jyjz.xiaoyao.oa.from.dataobject.Category;
import cn.jyjz.xiaoyao.oa.from.dataobject.Flowablecc;
import cn.jyjz.xiaoyao.oa.from.dataobject.Userdistionary;
import cn.jyjz.xiaoyao.oa.from.service.*;
import cn.jyjz.xiaoyao.oa.from.vo.FlowUnionVo;
@ -116,7 +117,8 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
@Resource
private IOcrMsgService ocrMsgService;
@Resource
private UserdistionaryService userdistionaryService;
@Override
public void myTodoTaskList(PageUtils vo, HttpServletRequest request) {
@ -564,8 +566,9 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
MultiInstanceLoopCharacteristics multiInstance = userTask.getLoopCharacteristics();
// 会签节点
if (Objects.nonNull(multiInstance)) {
if(null != userTask.getCandidateUsers() && userTask.getCandidateUsers().size() > 1){
variables.put("persons",userTask.getCandidateUsers());
List<String> loginnames = this.getAssignee(userTask,model.getCreateuser());
if(null != loginnames && !loginnames.isEmpty()){
variables.put("persons",loginnames);
}
}
}
@ -777,6 +780,47 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
return activeActivityIds;
}
/**
*
* @param userTask
* @param loginname
* @return
*/
public List<String> getAssignee(UserTask userTask,String loginname){
if(null != userTask.getCandidateUsers() && userTask.getCandidateUsers().size() > 1){
//获取候选用户集合
List<String> loginnames = userTask.getCandidateUsers();
//顺序设置审批用户
return loginnames;
}else {
//得到候选组
List<String> candidateGroups = userTask.getCandidateGroups();
if(null != candidateGroups && !candidateGroups.isEmpty()){
List<User> listusers = new ArrayList<>();
for(String groupid:candidateGroups){
//排除不在同一个公司的人员
List<Userdistionary> userdistionaryList = userdistionaryService.selectListByCandidateid(groupid,loginname);
List<Long> listuserid = userdistionaryList.stream().map(Userdistionary::getUserid).collect(Collectors.toList());
if(null!= listuserid && !listuserid.isEmpty()){
listusers.addAll(this.userService.selectUserById(listuserid));
}
}
if(null != listusers && !listusers.isEmpty()){
List<String> loginnames = listusers.stream().map(User::getLoginname).collect(Collectors.toList());
return loginnames;
}
}
}
return null;
}
/**
*
*
@ -792,6 +836,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
//记录审批人信息
StringBuffer assignee = new StringBuffer();
int taskIndex = 0;
for (Task task : taskList) {
//传节点定义key获取当前节点
@ -799,6 +844,47 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
if (flowElement instanceof UserTask && StringUtils.isBlank(task.getAssignee())) {
UserTask userTask = (UserTask) flowElement;
MultiInstanceLoopCharacteristics multiInstance = userTask.getLoopCharacteristics();
// 会签节点
if (Objects.nonNull(multiInstance)) {
if(null != userTask.getCandidateUsers() && userTask.getCandidateUsers().size() > 1){
//获取候选用户集合
List<String> loginnames = userTask.getCandidateUsers();
//顺序设置审批用户
taskService.setAssignee(task.getId(), loginnames.get(taskIndex));
}else {
//得到候选组
List<String> candidateGroups = userTask.getCandidateGroups();
if(null != candidateGroups && !candidateGroups.isEmpty()){
flowTaskCompleteVO = new FlowTaskCompleteVO();
flowTaskCompleteVO.setTaskId(task.getId());
List<User> listusers = new ArrayList<>();
for(String groupid:candidateGroups){
//获取发起人员信息
HistoricProcessInstance hi = historyService.createHistoricProcessInstanceQuery()
.processInstanceId(processInstanceId)
.singleResult();
//发起人员登录账号
String startUserId = hi.getStartUserId();
//排除不在同一个公司的人员
List<Userdistionary> userdistionaryList = userdistionaryService.selectListByCandidateid(groupid,startUserId);
List<Long> listuserid = userdistionaryList.stream().map(Userdistionary::getUserid).collect(Collectors.toList());
listusers.addAll(this.userService.selectUserById(listuserid));
}
if(null != listusers && !listusers.isEmpty()){
List<String> loginnames = listusers.stream().map(User::getLoginname).collect(Collectors.toList());
//顺序设置审批用户
taskService.setAssignee(task.getId(), loginnames.get(taskIndex));
}
}
}
taskIndex++;
}else{
//如果审批不存在,需要在候选组中查询
if (StringUtils.isBlank(userTask.getAssignee())) {
//得到候选人
@ -828,6 +914,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
}
}
}
}
log.info("task.getAssignee()={}", task.getAssignee());

Loading…
Cancel
Save