|
|
|
@ -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.ResultVoUtil;
|
|
|
|
|
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.factory.FlowServiceFactory;
|
|
|
|
|
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.RepeatedContentVo;
|
|
|
|
|
import cn.jyjz.xiaoyao.oa.from.vo.RepeatedTaskVo;
|
|
|
|
|
import cn.jyjz.xiaoyao.ocr.dataobject.*;
|
|
|
|
|
import cn.jyjz.xiaoyao.ocr.service.*;
|
|
|
|
|
import cn.jyjz.xiaoyao.ocr.util.SearchParaFormatting;
|
|
|
|
@ -119,6 +117,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
|
|
|
|
|
private IOcrMsgService ocrMsgService;
|
|
|
|
|
@Resource
|
|
|
|
|
private UserdistionaryService userdistionaryService;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void myTodoTaskList(PageUtils vo, HttpServletRequest request) {
|
|
|
|
|
|
|
|
|
@ -435,7 +434,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public UserTask getNextTasks(String processDefinitionId ){
|
|
|
|
|
public UserTask getNextTasks(String processDefinitionId) {
|
|
|
|
|
//流程实例id
|
|
|
|
|
//String processInstanceId = "5b945750-81db-11e9-a576-1a73f8e23adc";
|
|
|
|
|
|
|
|
|
@ -463,7 +462,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public UserTask getNextTasks(Task task){
|
|
|
|
|
public UserTask getNextTasks(Task task) {
|
|
|
|
|
|
|
|
|
|
//获取流程发布Id信息
|
|
|
|
|
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);
|
|
|
|
|
if(null != userTask){
|
|
|
|
|
if (null != userTask) {
|
|
|
|
|
MultiInstanceLoopCharacteristics multiInstance = userTask.getLoopCharacteristics();
|
|
|
|
|
// 会签节点
|
|
|
|
|
if (Objects.nonNull(multiInstance)) {
|
|
|
|
|
List<String> loginnames = this.getAssignee(userTask,model.getCreateuser());
|
|
|
|
|
if(null != loginnames && !loginnames.isEmpty()){
|
|
|
|
|
variables.put("persons",loginnames);
|
|
|
|
|
List<String> loginnames = this.getAssignee(userTask, model.getCreateuser());
|
|
|
|
|
if (null != loginnames && !loginnames.isEmpty()) {
|
|
|
|
|
variables.put("persons", loginnames);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -784,37 +784,38 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取候选用户或者审批组的用户信息集合
|
|
|
|
|
*
|
|
|
|
|
* @param userTask 当前审批节点
|
|
|
|
|
* @param loginname 流程发起人
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public List<String> getAssignee(UserTask userTask,String loginname){
|
|
|
|
|
if(null != userTask.getCandidateUsers() && userTask.getCandidateUsers().size() > 1){
|
|
|
|
|
public List<String> getAssignee(UserTask userTask, String loginname) {
|
|
|
|
|
if (null != userTask.getCandidateUsers() && userTask.getCandidateUsers().size() > 1) {
|
|
|
|
|
//获取候选用户集合
|
|
|
|
|
List<String> loginnames = userTask.getCandidateUsers();
|
|
|
|
|
//顺序设置审批用户
|
|
|
|
|
return loginnames;
|
|
|
|
|
}else {
|
|
|
|
|
} else {
|
|
|
|
|
//得到候选组
|
|
|
|
|
List<String> candidateGroups = userTask.getCandidateGroups();
|
|
|
|
|
if(null != candidateGroups && !candidateGroups.isEmpty()){
|
|
|
|
|
if (null != candidateGroups && !candidateGroups.isEmpty()) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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());
|
|
|
|
|
if(null!= listuserid && !listuserid.isEmpty()){
|
|
|
|
|
if (null != listuserid && !listuserid.isEmpty()) {
|
|
|
|
|
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());
|
|
|
|
|
|
|
|
|
|
return loginnames;
|
|
|
|
@ -823,6 +824,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 设置当前审批节点的审批人
|
|
|
|
|
* 目前只多候选组和多个候选人起作用
|
|
|
|
@ -849,20 +851,20 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
|
|
|
|
|
MultiInstanceLoopCharacteristics multiInstance = userTask.getLoopCharacteristics();
|
|
|
|
|
// 会签节点
|
|
|
|
|
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();
|
|
|
|
|
//顺序设置审批用户
|
|
|
|
|
taskService.setAssignee(task.getId(), loginnames.get(taskIndex));
|
|
|
|
|
}else {
|
|
|
|
|
} else {
|
|
|
|
|
//得到候选组
|
|
|
|
|
List<String> candidateGroups = userTask.getCandidateGroups();
|
|
|
|
|
if(null != candidateGroups && !candidateGroups.isEmpty()){
|
|
|
|
|
if (null != candidateGroups && !candidateGroups.isEmpty()) {
|
|
|
|
|
flowTaskCompleteVO = new FlowTaskCompleteVO();
|
|
|
|
|
flowTaskCompleteVO.setTaskId(task.getId());
|
|
|
|
|
|
|
|
|
|
List<User> listusers = new ArrayList<>();
|
|
|
|
|
for(String groupid:candidateGroups){
|
|
|
|
|
for (String groupid : candidateGroups) {
|
|
|
|
|
//获取发起人员信息
|
|
|
|
|
HistoricProcessInstance hi = historyService.createHistoricProcessInstanceQuery()
|
|
|
|
|
.processInstanceId(processInstanceId)
|
|
|
|
@ -871,13 +873,13 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
|
|
|
|
|
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());
|
|
|
|
|
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());
|
|
|
|
|
|
|
|
|
|
//顺序设置审批用户
|
|
|
|
@ -886,7 +888,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
taskIndex++;
|
|
|
|
|
}else{
|
|
|
|
|
} else {
|
|
|
|
|
//如果审批不存在,需要在候选组中查询
|
|
|
|
|
if (StringUtils.isBlank(userTask.getAssignee())) {
|
|
|
|
|
//得到候选人
|
|
|
|
@ -1172,9 +1174,10 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
|
|
|
|
|
*
|
|
|
|
|
* @param query 搜索条件
|
|
|
|
|
* @param pageUtils 分页参数
|
|
|
|
|
* @param user
|
|
|
|
|
* @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.setStart((pageUtils.getCurrPage() - 1) * pageUtils.getPageSize());
|
|
|
|
|
paramterPage.setPagesize(pageUtils.getPageSize());
|
|
|
|
@ -1282,7 +1285,18 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
|
|
|
|
|
// 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.setList(list);
|
|
|
|
|
}
|
|
|
|
|