fix: 修改终审列表

pull/138/head
sunchenliang 1 year ago
parent dd5b553c74
commit 53fd9afc15

@ -496,7 +496,7 @@ public class FlowTaskController extends BaseController {
Map<String, Object> query = searchQuery.getQuery(); Map<String, Object> query = searchQuery.getQuery();
flowTaskService.getFinalProcessInstances(query, pageUtils); flowTaskService.getFinalProcessInstances(query, pageUtils,user);
return ResultVoUtil.success(pageUtils); return ResultVoUtil.success(pageUtils);
} }

@ -13,11 +13,8 @@ import cn.jyjz.xiaoyao.common.base.vo.UserToken;
import cn.jyjz.xiaoyao.oa.from.dataobject.Category; import cn.jyjz.xiaoyao.oa.from.dataobject.Category;
import cn.jyjz.xiaoyao.oa.from.vo.FlowUnionVo; import cn.jyjz.xiaoyao.oa.from.vo.FlowUnionVo;
import cn.jyjz.xiaoyao.oa.from.vo.RepeatedTaskVo;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture; import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPictureAppro; import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPictureAppro;
import cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo;
import cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo;
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;
import org.flowable.bpmn.model.UserTask; import org.flowable.bpmn.model.UserTask;
@ -102,9 +99,10 @@ public interface IFlowTaskService {
* *
* @param query * @param query
* @param pageUtils * @param pageUtils
* @param user
* @return * @return
*/ */
public void getFinalProcessInstances(Map<String, Object> query, PageUtils<OcrTaskchildPicture> pageUtils); public void getFinalProcessInstances(Map<String, Object> query, PageUtils<OcrTaskchildPicture> pageUtils, User user);
/** /**

@ -16,7 +16,6 @@ import cn.jyjz.xiaoyao.common.base.util.requestFormat.SearchQuery;
import cn.jyjz.xiaoyao.common.base.vo.ResultVo; import cn.jyjz.xiaoyao.common.base.vo.ResultVo;
import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil; import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil;
import cn.jyjz.xiaoyao.oa.from.dataDao.FlowableccMybatisDao; import cn.jyjz.xiaoyao.oa.from.dataDao.FlowableccMybatisDao;
import cn.jyjz.xiaoyao.oa.from.dataDao.IHisFlowableActinstDao;
import cn.jyjz.flowable.domain.dto.HistoricTaskInstanceDto; import cn.jyjz.flowable.domain.dto.HistoricTaskInstanceDto;
import cn.jyjz.flowable.factory.FlowServiceFactory; import cn.jyjz.flowable.factory.FlowServiceFactory;
import cn.jyjz.flowable.service.IFlowTaskService; import cn.jyjz.flowable.service.IFlowTaskService;
@ -36,7 +35,6 @@ import cn.jyjz.xiaoyao.oa.from.service.*;
import cn.jyjz.xiaoyao.oa.from.vo.FlowUnionVo; import cn.jyjz.xiaoyao.oa.from.vo.FlowUnionVo;
import cn.jyjz.xiaoyao.oa.from.vo.RepeatedContentVo; import cn.jyjz.xiaoyao.oa.from.vo.RepeatedContentVo;
import cn.jyjz.xiaoyao.oa.from.vo.RepeatedTaskVo;
import cn.jyjz.xiaoyao.ocr.dataobject.*; import cn.jyjz.xiaoyao.ocr.dataobject.*;
import cn.jyjz.xiaoyao.ocr.service.*; import cn.jyjz.xiaoyao.ocr.service.*;
import cn.jyjz.xiaoyao.ocr.util.SearchParaFormatting; import cn.jyjz.xiaoyao.ocr.util.SearchParaFormatting;
@ -119,6 +117,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
private IOcrMsgService ocrMsgService; private IOcrMsgService ocrMsgService;
@Resource @Resource
private UserdistionaryService userdistionaryService; private UserdistionaryService userdistionaryService;
@Override @Override
public void myTodoTaskList(PageUtils vo, HttpServletRequest request) { public void myTodoTaskList(PageUtils vo, HttpServletRequest request) {
@ -433,23 +432,23 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
} }
return result; return result;
} }
public UserTask getNextTasks(String processDefinitionId ){ public UserTask getNextTasks(String processDefinitionId) {
//流程实例id //流程实例id
//String processInstanceId = "5b945750-81db-11e9-a576-1a73f8e23adc"; //String processInstanceId = "5b945750-81db-11e9-a576-1a73f8e23adc";
// 获取流程定义 // 获取流程定义
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery() ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
.processDefinitionId(processDefinitionId) .processDefinitionId(processDefinitionId)
.singleResult(); .singleResult();
// 获取BpmnModel // 获取BpmnModel
BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId()); BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId());
// 获取所有的FlowElement包括开始事件、结束事件、用户任务等 // 获取所有的FlowElement包括开始事件、结束事件、用户任务等
List<FlowElement> flowElements = (List<FlowElement>) bpmnModel.getMainProcess().getFlowElements(); List<FlowElement> flowElements = (List<FlowElement>) bpmnModel.getMainProcess().getFlowElements();
// 遍历FlowElement // 遍历FlowElement
for (FlowElement targetFlowElement : flowElements) { for (FlowElement targetFlowElement : flowElements) {
//用户任务 //用户任务
@ -463,7 +462,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
return null; return null;
} }
public UserTask getNextTasks(Task task){ public UserTask getNextTasks(Task task) {
//获取流程发布Id信息 //获取流程发布Id信息
String definitionId = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult().getProcessDefinitionId(); String definitionId = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult().getProcessDefinitionId();
@ -512,6 +511,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
} }
} }
} }
/** /**
* *
*/ */
@ -562,13 +562,13 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
//获取下一个节点 //获取下一个节点
UserTask userTask = this.getNextTasks(task); UserTask userTask = this.getNextTasks(task);
if(null != userTask){ if (null != userTask) {
MultiInstanceLoopCharacteristics multiInstance = userTask.getLoopCharacteristics(); MultiInstanceLoopCharacteristics multiInstance = userTask.getLoopCharacteristics();
// 会签节点 // 会签节点
if (Objects.nonNull(multiInstance)) { if (Objects.nonNull(multiInstance)) {
List<String> loginnames = this.getAssignee(userTask,model.getCreateuser()); List<String> loginnames = this.getAssignee(userTask, model.getCreateuser());
if(null != loginnames && !loginnames.isEmpty()){ if (null != loginnames && !loginnames.isEmpty()) {
variables.put("persons",loginnames); variables.put("persons", loginnames);
} }
} }
} }
@ -781,48 +781,50 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
return activeActivityIds; return activeActivityIds;
} }
/** /**
* *
* @param userTask *
* @param userTask
* @param loginname * @param loginname
* @return * @return
*/ */
public List<String> getAssignee(UserTask userTask,String loginname){ public List<String> getAssignee(UserTask userTask, String loginname) {
if(null != userTask.getCandidateUsers() && userTask.getCandidateUsers().size() > 1){ if (null != userTask.getCandidateUsers() && userTask.getCandidateUsers().size() > 1) {
//获取候选用户集合 //获取候选用户集合
List<String> loginnames = userTask.getCandidateUsers(); List<String> loginnames = userTask.getCandidateUsers();
//顺序设置审批用户 //顺序设置审批用户
return loginnames; return loginnames;
}else { } else {
//得到候选组 //得到候选组
List<String> candidateGroups = userTask.getCandidateGroups(); List<String> candidateGroups = userTask.getCandidateGroups();
if(null != candidateGroups && !candidateGroups.isEmpty()){ if (null != candidateGroups && !candidateGroups.isEmpty()) {
List<User> listusers = new ArrayList<>(); List<User> listusers = new ArrayList<>();
for(String groupid:candidateGroups){ for (String groupid : candidateGroups) {
//排除不在同一个公司的人员 //排除不在同一个公司的人员
List<Userdistionary> userdistionaryList = userdistionaryService.selectListByCandidateid(groupid,loginname); List<Userdistionary> userdistionaryList = userdistionaryService.selectListByCandidateid(groupid, loginname);
List<Long> listuserid = userdistionaryList.stream().map(Userdistionary::getUserid).collect(Collectors.toList()); List<Long> listuserid = userdistionaryList.stream().map(Userdistionary::getUserid).collect(Collectors.toList());
if(null!= listuserid && !listuserid.isEmpty()){ if (null != listuserid && !listuserid.isEmpty()) {
listusers.addAll(this.userService.selectUserById(listuserid)); listusers.addAll(this.userService.selectUserById(listuserid));
} }
} }
if(null != listusers && !listusers.isEmpty()){ if (null != listusers && !listusers.isEmpty()) {
List<String> loginnames = listusers.stream().map(User::getLoginname).collect(Collectors.toList()); List<String> loginnames = listusers.stream().map(User::getLoginname).collect(Collectors.toList());
return loginnames; return loginnames;
} }
} }
} }
return null; return null;
} }
/** /**
* *
* *
@ -845,48 +847,48 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
FlowElement flowElement = bpmnModel.getFlowElement(task.getTaskDefinitionKey()); FlowElement flowElement = bpmnModel.getFlowElement(task.getTaskDefinitionKey());
if (flowElement instanceof UserTask && StringUtils.isBlank(task.getAssignee())) { if (flowElement instanceof UserTask && StringUtils.isBlank(task.getAssignee())) {
UserTask userTask = (UserTask) flowElement; UserTask userTask = (UserTask) flowElement;
MultiInstanceLoopCharacteristics multiInstance = userTask.getLoopCharacteristics(); MultiInstanceLoopCharacteristics multiInstance = userTask.getLoopCharacteristics();
// 会签节点 // 会签节点
if (Objects.nonNull(multiInstance)) { if (Objects.nonNull(multiInstance)) {
if(null != userTask.getCandidateUsers() && userTask.getCandidateUsers().size() > 1){ if (null != userTask.getCandidateUsers() && userTask.getCandidateUsers().size() > 1) {
//获取候选用户集合 //获取候选用户集合
List<String> loginnames = userTask.getCandidateUsers(); List<String> loginnames = userTask.getCandidateUsers();
//顺序设置审批用户 //顺序设置审批用户
taskService.setAssignee(task.getId(), loginnames.get(taskIndex)); taskService.setAssignee(task.getId(), loginnames.get(taskIndex));
}else { } else {
//得到候选组 //得到候选组
List<String> candidateGroups = userTask.getCandidateGroups(); List<String> candidateGroups = userTask.getCandidateGroups();
if(null != candidateGroups && !candidateGroups.isEmpty()){ if (null != candidateGroups && !candidateGroups.isEmpty()) {
flowTaskCompleteVO = new FlowTaskCompleteVO(); flowTaskCompleteVO = new FlowTaskCompleteVO();
flowTaskCompleteVO.setTaskId(task.getId()); flowTaskCompleteVO.setTaskId(task.getId());
List<User> listusers = new ArrayList<>(); List<User> listusers = new ArrayList<>();
for(String groupid:candidateGroups){ for (String groupid : candidateGroups) {
//获取发起人员信息 //获取发起人员信息
HistoricProcessInstance hi = historyService.createHistoricProcessInstanceQuery() HistoricProcessInstance hi = historyService.createHistoricProcessInstanceQuery()
.processInstanceId(processInstanceId) .processInstanceId(processInstanceId)
.singleResult(); .singleResult();
//发起人员登录账号 //发起人员登录账号
String startUserId = hi.getStartUserId(); String startUserId = hi.getStartUserId();
//排除不在同一个公司的人员 //排除不在同一个公司的人员
List<Userdistionary> userdistionaryList = userdistionaryService.selectListByCandidateid(groupid,startUserId); List<Userdistionary> userdistionaryList = userdistionaryService.selectListByCandidateid(groupid, startUserId);
List<Long> listuserid = userdistionaryList.stream().map(Userdistionary::getUserid).collect(Collectors.toList()); List<Long> listuserid = userdistionaryList.stream().map(Userdistionary::getUserid).collect(Collectors.toList());
listusers.addAll(this.userService.selectUserById(listuserid)); listusers.addAll(this.userService.selectUserById(listuserid));
} }
if(null != listusers && !listusers.isEmpty()){ if (null != listusers && !listusers.isEmpty()) {
List<String> loginnames = listusers.stream().map(User::getLoginname).collect(Collectors.toList()); List<String> loginnames = listusers.stream().map(User::getLoginname).collect(Collectors.toList());
//顺序设置审批用户 //顺序设置审批用户
taskService.setAssignee(task.getId(), loginnames.get(taskIndex)); taskService.setAssignee(task.getId(), loginnames.get(taskIndex));
} }
} }
} }
taskIndex++; taskIndex++;
}else{ } else {
//如果审批不存在,需要在候选组中查询 //如果审批不存在,需要在候选组中查询
if (StringUtils.isBlank(userTask.getAssignee())) { if (StringUtils.isBlank(userTask.getAssignee())) {
//得到候选人 //得到候选人
@ -895,7 +897,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
Random rand = new Random(); Random rand = new Random();
taskService.claim(task.getId(), candidateUsers.get(rand.nextInt(candidateUsers.size()))); taskService.claim(task.getId(), candidateUsers.get(rand.nextInt(candidateUsers.size())));
} }
//得到候选组 //得到候选组
List<String> candidateGroups = userTask.getCandidateGroups(); List<String> candidateGroups = userTask.getCandidateGroups();
if (null != candidateGroups && !candidateGroups.isEmpty()) { if (null != candidateGroups && !candidateGroups.isEmpty()) {
@ -913,7 +915,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
taskService.claim(task.getId(), loginuser); taskService.claim(task.getId(), loginuser);
} }
} }
} }
} }
} }
@ -1172,9 +1174,10 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
* *
* @param query * @param query
* @param pageUtils * @param pageUtils
* @param user
* @return * @return
*/ */
public void getFinalProcessInstances(Map<String, Object> query, PageUtils<OcrTaskchildPicture> pageUtils) { public void getFinalProcessInstances(Map<String, Object> query, PageUtils<OcrTaskchildPicture> pageUtils, User user) {
ParamterPage paramterPage = new ParamterPage(); ParamterPage paramterPage = new ParamterPage();
paramterPage.setStart((pageUtils.getCurrPage() - 1) * pageUtils.getPageSize()); paramterPage.setStart((pageUtils.getCurrPage() - 1) * pageUtils.getPageSize());
paramterPage.setPagesize(pageUtils.getPageSize()); paramterPage.setPagesize(pageUtils.getPageSize());
@ -1282,7 +1285,18 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
// taskchildPicture.setTransferRecords(historicTaskInstanceDtos); // taskchildPicture.setTransferRecords(historicTaskInstanceDtos);
// } // }
// } // }
for (OcrTaskchildPicture ocrTaskchildPicture : list) {
String assignee = ocrTaskchildPicture.getAssignee();
if (assignee.contains(",")) {
String[] split = assignee.split(",");
for (int i = 0; i < split.length; i++) {
if (user.getLoginname().equals(split[i])) {
String[] taskIds = ocrTaskchildPicture.getTaskId().split(",");
ocrTaskchildPicture.setTaskId(taskIds[i]);
}
}
}
}
pageUtils.setTotalCount(count.intValue()); pageUtils.setTotalCount(count.intValue());
pageUtils.setList(list); pageUtils.setList(list);
} }

Loading…
Cancel
Save