|
|
@@ -3,10 +3,12 @@ package com.ningdatech.pmapi.todocenter.manage; |
|
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
|
import cn.hutool.core.date.StopWatch; |
|
|
|
import cn.hutool.core.util.StrUtil; |
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
|
import com.google.common.collect.Sets; |
|
|
|
import com.ningdatech.basic.exception.BizException; |
|
|
|
import com.ningdatech.basic.model.PageVo; |
|
|
|
import com.ningdatech.basic.util.CollUtils; |
|
|
|
import com.ningdatech.pmapi.common.constant.CommonConstant; |
|
|
|
import com.ningdatech.pmapi.common.model.entity.ExcelExportWriter; |
|
|
|
import com.ningdatech.pmapi.common.statemachine.event.ProjectStatusChangeEvent; |
|
|
@@ -46,10 +48,12 @@ import com.wflow.workflow.enums.ProcessStatusEnum; |
|
|
|
import com.wflow.workflow.service.*; |
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.assertj.core.util.Lists; |
|
|
|
import org.flowable.bpmn.model.*; |
|
|
|
import org.flowable.engine.*; |
|
|
|
import org.flowable.engine.history.HistoricProcessInstance; |
|
|
|
import org.flowable.engine.repository.ProcessDefinition; |
|
|
|
import org.flowable.engine.runtime.ActivityInstance; |
|
|
|
import org.springframework.beans.BeanUtils; |
|
|
|
import org.springframework.stereotype.Component; |
|
|
@@ -79,11 +83,12 @@ public class TodoCenterManage { |
|
|
|
|
|
|
|
private final ProjectLibManage projectLibManage; |
|
|
|
private final StateMachineUtils stateMachineUtils; |
|
|
|
private final ZwddClient zwddClient; |
|
|
|
|
|
|
|
private final IDingEmployeeInfoService dingEmployeeInfoService; |
|
|
|
private final IDingOrganizationService dingOrganizationService; |
|
|
|
private final ProcessInstanceService processInstanceService; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* 待办中心待我处理项目列表查询 |
|
|
|
* |
|
|
@@ -96,46 +101,40 @@ public class TodoCenterManage { |
|
|
|
Long userId = LoginUserUtil.getUserId(); |
|
|
|
//因为要解耦 不能把项目和工作流一起查 |
|
|
|
//1.先查出用户工作流 |
|
|
|
StopWatch stopWatch = new StopWatch(); |
|
|
|
stopWatch.start(); |
|
|
|
List<ProcessTaskVo> userTodoList = processTaskService.getUserTodoList(param.getProcessDefId(),String.valueOf(userId)); |
|
|
|
if(CollUtil.isEmpty(userTodoList)){ |
|
|
|
return PageVo.empty(); |
|
|
|
} |
|
|
|
List<String> instCodes = userTodoList.stream().map(ProcessTaskVo::getInstanceId).collect(Collectors.toList()); |
|
|
|
|
|
|
|
stopWatch.stop(); |
|
|
|
log.info("查询 工作流个人列表 所消耗时间 :{}s" + stopWatch.getTotalTimeSeconds()); |
|
|
|
|
|
|
|
StopWatch stopWatch2 = new StopWatch(); |
|
|
|
stopWatch2.start(); |
|
|
|
Map<String, ProcessTaskVo> taskVoMap = userTodoList.stream().collect(Collectors.toMap(ProcessTaskVo::getInstanceId, v -> v)); |
|
|
|
//2.再分页查询项目信息 |
|
|
|
ProjectListReq projectListReq = new ProjectListReq(); |
|
|
|
projectListReq.setInstCodes(instCodes); |
|
|
|
BeanUtils.copyProperties(param,projectListReq); |
|
|
|
PageVo<ProjectLibListItemVO> projectPage = projectLibManage.projectLibList(projectListReq); |
|
|
|
stopWatch2.stop(); |
|
|
|
log.info("查询 项目库列表 所消耗时间 :{}s" + stopWatch2.getTotalTimeSeconds()); |
|
|
|
|
|
|
|
if(0L == projectPage.getTotal()){ |
|
|
|
return PageVo.empty(); |
|
|
|
} |
|
|
|
|
|
|
|
StopWatch stopWatch3 = new StopWatch(); |
|
|
|
stopWatch3.start(); |
|
|
|
List<HistoricProcessInstance> instances = historyService.createHistoricProcessInstanceQuery() |
|
|
|
.list(); |
|
|
|
Map<String,HistoricProcessInstance> instanceMap = CollUtils.listToMap(instances,HistoricProcessInstance::getId); |
|
|
|
|
|
|
|
List<ResToBeProcessedVO> resVos = projectPage.getRecords().stream().map(d -> { |
|
|
|
ResToBeProcessedVO res = new ResToBeProcessedVO(); |
|
|
|
BeanUtils.copyProperties(d, res); |
|
|
|
res.setProjectId(d.getId()); |
|
|
|
ProcessTaskVo taskVo = taskVoMap.get(d.getInstCode()); |
|
|
|
res.setNodeId(taskVo.getTaskDefKey()); |
|
|
|
res.setProcessStatusName(ProcessStatusEnum.getDescByCode(d.getProcessStatus())); |
|
|
|
if(instanceMap.containsKey(d.getInstCode())){ |
|
|
|
res.setProcessStatusName(processInstanceService |
|
|
|
.buildProcessStatusStr(instanceMap.get(d.getInstCode()).getEndActivityId())); |
|
|
|
} |
|
|
|
res.setProcessLaunchTime(d.getCreateOn()); |
|
|
|
return res; |
|
|
|
}).collect(Collectors.toList()); |
|
|
|
stopWatch3.stop(); |
|
|
|
log.info("查询 转换实体 所消耗时间 :{}s" + stopWatch3.getTotalTimeSeconds()); |
|
|
|
return PageVo.of(resVos, projectPage.getTotal()); |
|
|
|
} |
|
|
|
|
|
|
@@ -576,12 +575,7 @@ public class TodoCenterManage { |
|
|
|
String instanceId = request.getInstanceId(); |
|
|
|
String nodeId = request.getNodeId(); |
|
|
|
Long projectId = request.getProjectId(); |
|
|
|
ProcessProgressVo progressInstanceDetail = null; |
|
|
|
if (Objects.isNull(nodeId)) { |
|
|
|
progressInstanceDetail = processInstanceService.getProgressInstanceDetail(null, instanceId); |
|
|
|
}else { |
|
|
|
progressInstanceDetail = processInstanceService.getProgressInstanceDetail(nodeId, instanceId); |
|
|
|
} |
|
|
|
ProcessProgressVo progressInstanceDetail = processInstanceService.getProgressInstanceDetail(nodeId, instanceId); |
|
|
|
|
|
|
|
List<ProgressNode> progressInfo = progressInstanceDetail.getProgressInfo(); |
|
|
|
|
|
|
|