增加:allExport

This commit is contained in:
tiezx 2025-07-17 13:00:27 +08:00
parent 1860c70ff5
commit 2971b22596
4 changed files with 168 additions and 294 deletions

View File

@ -142,6 +142,21 @@ public class WfProcessController extends BaseController {
ExcelUtil.exportExcel(listVo, "我拥有流程", WfOwnTaskExportVo.class, response); ExcelUtil.exportExcel(listVo, "我拥有流程", WfOwnTaskExportVo.class, response);
} }
/**
* 导出我拥有流程列表
*/
@SaCheckPermission("workflow:process:allExport")
@Log(title = "所有流程", businessType = BusinessType.EXPORT)
@PostMapping("/allExport")
public void allExport(@Validated ProcessQuery processQuery, HttpServletResponse response) {
List<WfTaskVo> list = processService.selectAllProcessList(processQuery);
List<WfOwnTaskExportVo> listVo = BeanUtil.copyToList(list, WfOwnTaskExportVo.class);
for (WfOwnTaskExportVo exportVo : listVo) {
exportVo.setStatus(ObjectUtil.isNull(exportVo.getFinishTime()) ? "进行中" : "已完成");
}
ExcelUtil.exportExcel(listVo, "所有流程", WfOwnTaskExportVo.class, response);
}
/** /**
* 导出待办流程列表 * 导出待办流程列表
*/ */

View File

@ -61,4 +61,14 @@ public class WfTaskBo {
* 下一节点审批人 * 下一节点审批人
*/ */
private String nextUserIds; private String nextUserIds;
/**
* 批次
*/
private String specBatch;
/**
* 规格名称
*/
private String specName;
} }

View File

@ -12,6 +12,7 @@ import org.flowable.task.api.TaskQuery;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.List;
/** /**
* 流程节点携带参数记录监听类 * 流程节点携带参数记录监听类
@ -38,7 +39,17 @@ public class VariablePublishListener implements ExecutionListener {
.taskCandidateOrAssigned(TaskUtils.getUserId()) .taskCandidateOrAssigned(TaskUtils.getUserId())
.taskCandidateGroupIn(TaskUtils.getCandidateGroup()) .taskCandidateGroupIn(TaskUtils.getCandidateGroup())
.processDefinitionId(delegateExecution.getProcessDefinitionId()) .processDefinitionId(delegateExecution.getProcessDefinitionId())
.orderByTaskCreateTime().desc(); .processInstanceBusinessKey(delegateExecution.getProcessInstanceBusinessKey())
;
//.orderByTaskCreateTime();
//.desc();
System.out.println("userid =" + TaskUtils.getUserId());
System.out.println("getCandidateGroup =" + TaskUtils.getCandidateGroup());
System.out.println("getProcessDefinitionId =" + delegateExecution.getProcessDefinitionId());
long n = taskQuery.count();
List<Task> taskQueryList = taskQuery.list();
Task task = taskQuery.singleResult(); Task task = taskQuery.singleResult();
if (task == null) { if (task == null) {
throw new ServiceException("任务没找到"); throw new ServiceException("任务没找到");

View File

@ -155,36 +155,59 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce
return definitionVoList; return definitionVoList;
} }
@Override private HistoricProcessInstanceQuery getAllHistoricProcessInstanceQuery(ProcessQuery processQuery){
public TableDataInfo<WfTaskVo> selectPageAllProcessList(ProcessQuery processQuery, PageQuery pageQuery) {
HistoricProcessInstanceQuery historicProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery() HistoricProcessInstanceQuery historicProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery()
//.startedBy(TaskUtils.getUserId()) //.startedBy(TaskUtils.getUserId())
.orderByProcessInstanceStartTime() .orderByProcessInstanceStartTime()
.desc(); .desc();
Page<WfTaskVo> page = getHistProcessList(historicProcessInstanceQuery,processQuery,pageQuery); // 构建搜索条件
ProcessUtils.buildProcessSearch(historicProcessInstanceQuery, processQuery);
return historicProcessInstanceQuery;
}
@Override
public TableDataInfo<WfTaskVo> selectPageAllProcessList(ProcessQuery processQuery, PageQuery pageQuery) {
HistoricProcessInstanceQuery historicProcessInstanceQuery = getAllHistoricProcessInstanceQuery(processQuery);
Page<WfTaskVo> page = getHistProcessPageList(historicProcessInstanceQuery,processQuery,pageQuery);
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
Page<WfTaskVo> getHistProcessList(HistoricProcessInstanceQuery historicProcessInstanceQuery,ProcessQuery processQuery, PageQuery pageQuery){ @Override
Page<WfTaskVo> page = new Page<>(); public List<WfTaskVo> selectAllProcessList(ProcessQuery processQuery) {
// 构建搜索条件 HistoricProcessInstanceQuery historicProcessInstanceQuery = getAllHistoricProcessInstanceQuery(processQuery);
ProcessUtils.buildProcessSearch(historicProcessInstanceQuery, processQuery); List<HistoricProcessInstance> historicProcessInstances = historicProcessInstanceQuery.list();
int offset = pageQuery.getPageSize() * (pageQuery.getPageNum() - 1); List<WfTaskVo> taskVoList = getHistProcessList(historicProcessInstances,processQuery);
List<HistoricProcessInstance> historicProcessInstances = historicProcessInstanceQuery
.listPage(offset, pageQuery.getPageSize()); return taskVoList;
page.setTotal(historicProcessInstanceQuery.count()); }
private Map<String, Object> getHistProcessvariablesMap(HistoricProcessInstance hisIns){
// 获取流程 Variables , 为了方便查询将其放入 Map
List<HistoricVariableInstance> historicVariableInstances = historyService.createHistoricVariableInstanceQuery()
.processInstanceId(hisIns.getId())
.list();
Map<String, Object> variablesMap = new HashMap<>();
for (HistoricVariableInstance hvi : historicVariableInstances) {
variablesMap.put(hvi.getVariableName(), hvi.getValue());
}
return variablesMap;
}
private void setSpecParaToTaskVo(Map<String, Object> variablesMap,WfTaskVo taskVo){
Object var2Value = variablesMap.get(ProcessConstants.PROCESS_BATCH ); //批次
String specBatch = Convert.toStr(var2Value);
taskVo.setSpecBatch(specBatch);
Object var3Value = variablesMap.get(ProcessConstants.PROCESS_SPEC_NAME); // 规格名称
String specName = Convert.toStr(var3Value);
taskVo.setSpecName(specName);
}
private List<WfTaskVo> getHistProcessList(List<HistoricProcessInstance> historicProcessInstances,ProcessQuery processQuery){
List<WfTaskVo> taskVoList = new ArrayList<>(); List<WfTaskVo> taskVoList = new ArrayList<>();
for (HistoricProcessInstance hisIns : historicProcessInstances) { for (HistoricProcessInstance hisIns : historicProcessInstances) {
WfTaskVo taskVo = new WfTaskVo(); WfTaskVo taskVo = new WfTaskVo();
// 获取流程 Variables , 为了方便查询将其放入 Map Map<String, Object> variablesMap = getHistProcessvariablesMap(hisIns);
List<HistoricVariableInstance> historicVariableInstances = historyService.createHistoricVariableInstanceQuery()
.processInstanceId(hisIns.getId())
.list();
Map<String, Object> variablesMap = new HashMap<>();
for (HistoricVariableInstance hvi : historicVariableInstances) {
variablesMap.put(hvi.getVariableName(), hvi.getValue());
}
// 获取流程状态 // 获取流程状态
Object var1Value = variablesMap.get(ProcessConstants.PROCESS_STATUS_KEY); Object var1Value = variablesMap.get(ProcessConstants.PROCESS_STATUS_KEY);
@ -210,13 +233,7 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce
taskVo.setFinishTime(hisIns.getEndTime()); taskVo.setFinishTime(hisIns.getEndTime());
taskVo.setProcInsId(hisIns.getId()); taskVo.setProcInsId(hisIns.getId());
Object var2Value = variablesMap.get(ProcessConstants.PROCESS_BATCH ); //批次 setSpecParaToTaskVo(variablesMap,taskVo);
String specBatch = Convert.toStr(var2Value);
taskVo.setSpecBatch(specBatch);
Object var3Value = variablesMap.get(ProcessConstants.PROCESS_SPEC_NAME); // 规格名称
String specName = Convert.toStr(var3Value);
taskVo.setSpecName(specName);
// 计算耗时 // 计算耗时
if (Objects.nonNull(hisIns.getEndTime())) { if (Objects.nonNull(hisIns.getEndTime())) {
@ -239,83 +256,49 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce
} }
taskVoList.add(taskVo); taskVoList.add(taskVo);
} }
return taskVoList;
}
private Page<WfTaskVo> getHistProcessPageList(HistoricProcessInstanceQuery historicProcessInstanceQuery,ProcessQuery processQuery, PageQuery pageQuery){
Page<WfTaskVo> page = new Page<>();
// 构建搜索条件
ProcessUtils.buildProcessSearch(historicProcessInstanceQuery, processQuery);
int offset = pageQuery.getPageSize() * (pageQuery.getPageNum() - 1);
List<HistoricProcessInstance> historicProcessInstances = historicProcessInstanceQuery
.listPage(offset, pageQuery.getPageSize());
page.setTotal(historicProcessInstanceQuery.count());
List<WfTaskVo> taskVoList = getHistProcessList(historicProcessInstances,processQuery);
page.setRecords(taskVoList); page.setRecords(taskVoList);
return page; return page;
} }
@Override private HistoricProcessInstanceQuery getOwnHistoricProcessInstanceQuery(ProcessQuery processQuery){
public TableDataInfo<WfTaskVo> selectPageOwnProcessList(ProcessQuery processQuery, PageQuery pageQuery) {
HistoricProcessInstanceQuery historicProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery() HistoricProcessInstanceQuery historicProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery()
.startedBy(TaskUtils.getUserId()) .startedBy(TaskUtils.getUserId())
.orderByProcessInstanceStartTime() .orderByProcessInstanceStartTime()
.desc(); .desc();
Page<WfTaskVo> page = getHistProcessList(historicProcessInstanceQuery,processQuery,pageQuery); // 构建搜索条件
ProcessUtils.buildProcessSearch(historicProcessInstanceQuery, processQuery);
return historicProcessInstanceQuery;
}
@Override
public TableDataInfo<WfTaskVo> selectPageOwnProcessList(ProcessQuery processQuery, PageQuery pageQuery) {
HistoricProcessInstanceQuery historicProcessInstanceQuery = getOwnHistoricProcessInstanceQuery(processQuery);
Page<WfTaskVo> page = getHistProcessPageList(historicProcessInstanceQuery,processQuery,pageQuery);
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
@Override @Override
public List<WfTaskVo> selectOwnProcessList(ProcessQuery processQuery) { public List<WfTaskVo> selectOwnProcessList(ProcessQuery processQuery) {
HistoricProcessInstanceQuery historicProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery() HistoricProcessInstanceQuery historicProcessInstanceQuery = getOwnHistoricProcessInstanceQuery(processQuery);
.startedBy(TaskUtils.getUserId())
.orderByProcessInstanceStartTime()
.desc();
// 构建搜索条件
ProcessUtils.buildProcessSearch(historicProcessInstanceQuery, processQuery);
List<HistoricProcessInstance> historicProcessInstances = historicProcessInstanceQuery.list(); List<HistoricProcessInstance> historicProcessInstances = historicProcessInstanceQuery.list();
List<WfTaskVo> taskVoList = new ArrayList<>(); List<WfTaskVo> taskVoList = getHistProcessList(historicProcessInstances,processQuery);
for (HistoricProcessInstance hisIns : historicProcessInstances) {
WfTaskVo taskVo = new WfTaskVo();
taskVo.setCreateTime(hisIns.getStartTime());
taskVo.setFinishTime(hisIns.getEndTime());
taskVo.setProcInsId(hisIns.getId());
// 计算耗时
if (Objects.nonNull(hisIns.getEndTime())) {
taskVo.setDuration(DateUtils.getDatePoor(hisIns.getEndTime(), hisIns.getStartTime()));
} else {
taskVo.setDuration(DateUtils.getDatePoor(DateUtils.getNowDate(), hisIns.getStartTime()));
}
// 流程部署实例信息
Deployment deployment = repositoryService.createDeploymentQuery()
.deploymentId(hisIns.getDeploymentId()).singleResult();
taskVo.setDeployId(hisIns.getDeploymentId());
taskVo.setProcDefId(hisIns.getProcessDefinitionId());
taskVo.setProcDefName(hisIns.getProcessDefinitionName());
taskVo.setProcDefVersion(hisIns.getProcessDefinitionVersion());
taskVo.setCategory(deployment.getCategory());
//add for test --tzx
String spec[] = new String[2];
getHistSpecInfo(hisIns.getId(),spec);
taskVo.setSpecBatch(spec[0]);
taskVo.setSpecName(spec[1]);
//add end for test --tzx
// 当前所处流程
List<Task> taskList = taskService.createTaskQuery().processInstanceId(hisIns.getId()).includeIdentityLinks().list();
if (CollUtil.isNotEmpty(taskList)) {
taskVo.setTaskName(taskList.stream().map(Task::getName).filter(StringUtils::isNotEmpty).collect(Collectors.joining(",")));
}
taskVoList.add(taskVo);
}
return taskVoList; return taskVoList;
} }
@Override private List<WfTaskVo> getTaskProcessList(List<Task> taskList){
public TableDataInfo<WfTaskVo> selectPageTodoProcessList(ProcessQuery processQuery, PageQuery pageQuery) {
Page<WfTaskVo> page = new Page<>();
TaskQuery taskQuery = taskService.createTaskQuery()
.active()
.includeProcessVariables()
.taskCandidateOrAssigned(TaskUtils.getUserId())
.taskCandidateGroupIn(TaskUtils.getCandidateGroup())
.orderByTaskCreateTime().desc();
// 构建搜索条件
ProcessUtils.buildProcessSearch(taskQuery, processQuery);
page.setTotal(taskQuery.count());
int offset = pageQuery.getPageSize() * (pageQuery.getPageNum() - 1);
List<Task> taskList = taskQuery.listPage(offset, pageQuery.getPageSize());
List<WfTaskVo> flowList = new ArrayList<>(); List<WfTaskVo> flowList = new ArrayList<>();
for (Task task : taskList) { for (Task task : taskList) {
WfTaskVo flowTask = new WfTaskVo(); WfTaskVo flowTask = new WfTaskVo();
@ -343,77 +326,53 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce
flowTask.setStartUserId(userId); flowTask.setStartUserId(userId);
flowTask.setStartUserName(nickName); flowTask.setStartUserName(nickName);
//add for test --tzx Map<String, Object> variablesMap = getHistProcessvariablesMap(historicProcessInstance);
setSpecParaToTaskVo(variablesMap,flowTask);
String spec[] = new String[2];
getHistSpecInfo(task.getProcessInstanceId(),spec);
flowTask.setSpecBatch(spec[0]);
flowTask.setSpecName(spec[1]);
//add end for test --tzx
// 流程变量 // 流程变量
flowTask.setProcVars(task.getProcessVariables()); flowTask.setProcVars(task.getProcessVariables());
flowList.add(flowTask); flowList.add(flowTask);
} }
return flowList;
}
private TaskQuery getTodoTaskQuery(ProcessQuery processQuery){
TaskQuery taskQuery = taskService.createTaskQuery()
.active()
.includeProcessVariables()
.taskAssignee(TaskUtils.getUserId())
//.taskCandidateOrAssigned(TaskUtils.getUserId())
//.taskCandidateGroupIn(TaskUtils.getCandidateGroup())
.orderByTaskCreateTime().desc();
// 构建搜索条件
ProcessUtils.buildProcessSearch(taskQuery, processQuery);
return taskQuery;
}
@Override
public TableDataInfo<WfTaskVo> selectPageTodoProcessList(ProcessQuery processQuery, PageQuery pageQuery) {
Page<WfTaskVo> page = new Page<>();
TaskQuery taskQuery = getTodoTaskQuery(processQuery);
page.setTotal(taskQuery.count());
int offset = pageQuery.getPageSize() * (pageQuery.getPageNum() - 1);
List<Task> taskList = taskQuery.listPage(offset, pageQuery.getPageSize());
List<WfTaskVo> flowList = getTaskProcessList(taskList);
page.setRecords(flowList); page.setRecords(flowList);
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
@Override @Override
public List<WfTaskVo> selectTodoProcessList(ProcessQuery processQuery) { public List<WfTaskVo> selectTodoProcessList(ProcessQuery processQuery) {
TaskQuery taskQuery = taskService.createTaskQuery() TaskQuery taskQuery = getTodoTaskQuery(processQuery);
.active()
.includeProcessVariables()
.taskCandidateOrAssigned(TaskUtils.getUserId())
.taskCandidateGroupIn(TaskUtils.getCandidateGroup())
.orderByTaskCreateTime().desc();
// 构建搜索条件
ProcessUtils.buildProcessSearch(taskQuery, processQuery);
List<Task> taskList = taskQuery.list(); List<Task> taskList = taskQuery.list();
List<WfTaskVo> taskVoList = new ArrayList<>(); List<WfTaskVo> taskVoList = getTaskProcessList(taskList);
for (Task task : taskList) {
WfTaskVo taskVo = new WfTaskVo();
// 当前流程信息
taskVo.setTaskId(task.getId());
taskVo.setTaskDefKey(task.getTaskDefinitionKey());
taskVo.setCreateTime(task.getCreateTime());
taskVo.setProcDefId(task.getProcessDefinitionId());
taskVo.setTaskName(task.getName());
// 流程定义信息
ProcessDefinition pd = repositoryService.createProcessDefinitionQuery()
.processDefinitionId(task.getProcessDefinitionId())
.singleResult();
taskVo.setDeployId(pd.getDeploymentId());
taskVo.setProcDefName(pd.getName());
taskVo.setProcDefVersion(pd.getVersion());
taskVo.setProcInsId(task.getProcessInstanceId());
// 流程发起人信息
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
.processInstanceId(task.getProcessInstanceId())
.singleResult();
Long userId = Long.parseLong(historicProcessInstance.getStartUserId());
String nickName = userService.selectNickNameById(userId);
taskVo.setStartUserId(userId);
taskVo.setStartUserName(nickName);
//add for test --tzx
String spec[] = new String[2];
getHistSpecInfo(task.getProcessInstanceId(),spec);
taskVo.setSpecBatch(spec[0]);
taskVo.setSpecName(spec[1]);
//add end for test --tzx
taskVoList.add(taskVo);
}
return taskVoList; return taskVoList;
} }
@Override private TaskQuery getClaimedTaskQuery(ProcessQuery processQuery){
public TableDataInfo<WfTaskVo> selectPageClaimProcessList(ProcessQuery processQuery, PageQuery pageQuery) {
Page<WfTaskVo> page = new Page<>();
TaskQuery taskQuery = taskService.createTaskQuery() TaskQuery taskQuery = taskService.createTaskQuery()
.active() .active()
.includeProcessVariables() .includeProcessVariables()
@ -422,104 +381,32 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce
.orderByTaskCreateTime().desc(); .orderByTaskCreateTime().desc();
// 构建搜索条件 // 构建搜索条件
ProcessUtils.buildProcessSearch(taskQuery, processQuery); ProcessUtils.buildProcessSearch(taskQuery, processQuery);
return taskQuery;
}
@Override
public TableDataInfo<WfTaskVo> selectPageClaimProcessList(ProcessQuery processQuery, PageQuery pageQuery) {
Page<WfTaskVo> page = new Page<>();
TaskQuery taskQuery = getClaimedTaskQuery(processQuery);
page.setTotal(taskQuery.count()); page.setTotal(taskQuery.count());
int offset = pageQuery.getPageSize() * (pageQuery.getPageNum() - 1); int offset = pageQuery.getPageSize() * (pageQuery.getPageNum() - 1);
List<Task> taskList = taskQuery.listPage(offset, pageQuery.getPageSize()); List<Task> taskList = taskQuery.listPage(offset, pageQuery.getPageSize());
List<WfTaskVo> flowList = new ArrayList<>(); List<WfTaskVo> flowList = getTaskProcessList(taskList);
for (Task task : taskList) {
WfTaskVo flowTask = new WfTaskVo();
// 当前流程信息
flowTask.setTaskId(task.getId());
flowTask.setTaskDefKey(task.getTaskDefinitionKey());
flowTask.setCreateTime(task.getCreateTime());
flowTask.setProcDefId(task.getProcessDefinitionId());
flowTask.setTaskName(task.getName());
// 流程定义信息
ProcessDefinition pd = repositoryService.createProcessDefinitionQuery()
.processDefinitionId(task.getProcessDefinitionId())
.singleResult();
flowTask.setDeployId(pd.getDeploymentId());
flowTask.setProcDefName(pd.getName());
flowTask.setProcDefVersion(pd.getVersion());
flowTask.setProcInsId(task.getProcessInstanceId());
// 流程发起人信息
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
.processInstanceId(task.getProcessInstanceId())
.singleResult();
Long userId = Long.parseLong(historicProcessInstance.getStartUserId());
String nickName = userService.selectNickNameById(userId);
flowTask.setStartUserId(userId);
flowTask.setStartUserName(nickName);
//add for test --tzx
String spec[] = new String[2];
getHistSpecInfo(task.getProcessInstanceId(),spec);
flowTask.setSpecBatch(spec[0]);
flowTask.setSpecName(spec[1]);
//add end for test --tzx
flowList.add(flowTask);
}
page.setRecords(flowList); page.setRecords(flowList);
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
@Override @Override
public List<WfTaskVo> selectClaimProcessList(ProcessQuery processQuery) { public List<WfTaskVo> selectClaimProcessList(ProcessQuery processQuery) {
TaskQuery taskQuery = taskService.createTaskQuery() TaskQuery taskQuery = getClaimedTaskQuery(processQuery);
.active()
.includeProcessVariables()
.taskCandidateUser(TaskUtils.getUserId())
.taskCandidateGroupIn(TaskUtils.getCandidateGroup())
.orderByTaskCreateTime().desc();
// 构建搜索条件
ProcessUtils.buildProcessSearch(taskQuery, processQuery);
List<Task> taskList = taskQuery.list(); List<Task> taskList = taskQuery.list();
List<WfTaskVo> flowList = new ArrayList<>(); List<WfTaskVo> flowList = getTaskProcessList(taskList);
for (Task task : taskList) {
WfTaskVo flowTask = new WfTaskVo();
// 当前流程信息
flowTask.setTaskId(task.getId());
flowTask.setTaskDefKey(task.getTaskDefinitionKey());
flowTask.setCreateTime(task.getCreateTime());
flowTask.setProcDefId(task.getProcessDefinitionId());
flowTask.setTaskName(task.getName());
// 流程定义信息
ProcessDefinition pd = repositoryService.createProcessDefinitionQuery()
.processDefinitionId(task.getProcessDefinitionId())
.singleResult();
flowTask.setDeployId(pd.getDeploymentId());
flowTask.setProcDefName(pd.getName());
flowTask.setProcDefVersion(pd.getVersion());
flowTask.setProcInsId(task.getProcessInstanceId());
// 流程发起人信息
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
.processInstanceId(task.getProcessInstanceId())
.singleResult();
Long userId = Long.parseLong(historicProcessInstance.getStartUserId());
String nickName = userService.selectNickNameById(userId);
flowTask.setStartUserId(userId);
flowTask.setStartUserName(nickName);
//add for test --tzx
String spec[] = new String[2];
getHistSpecInfo(task.getProcessInstanceId(),spec);
flowTask.setSpecBatch(spec[0]);
flowTask.setSpecName(spec[1]);
//add end for test --tzx
flowList.add(flowTask);
}
return flowList; return flowList;
} }
@Override private HistoricTaskInstanceQuery getFinishedTaskInstanceQuery(ProcessQuery processQuery){
public TableDataInfo<WfTaskVo> selectPageFinishedProcessList(ProcessQuery processQuery, PageQuery pageQuery) {
Page<WfTaskVo> page = new Page<>();
HistoricTaskInstanceQuery taskInstanceQuery = historyService.createHistoricTaskInstanceQuery() HistoricTaskInstanceQuery taskInstanceQuery = historyService.createHistoricTaskInstanceQuery()
.includeProcessVariables() .includeProcessVariables()
.finished() .finished()
@ -528,8 +415,10 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce
.desc(); .desc();
// 构建搜索条件 // 构建搜索条件
ProcessUtils.buildProcessSearch(taskInstanceQuery, processQuery); ProcessUtils.buildProcessSearch(taskInstanceQuery, processQuery);
int offset = pageQuery.getPageSize() * (pageQuery.getPageNum() - 1); return taskInstanceQuery;
List<HistoricTaskInstance> historicTaskInstanceList = taskInstanceQuery.listPage(offset, pageQuery.getPageSize()); }
private List<WfTaskVo> getFinishedTaskProcessList(List<HistoricTaskInstance> historicTaskInstanceList){
List<WfTaskVo> hisTaskList = new ArrayList<>(); List<WfTaskVo> hisTaskList = new ArrayList<>();
for (HistoricTaskInstance histTask : historicTaskInstanceList) { for (HistoricTaskInstance histTask : historicTaskInstanceList) {
WfTaskVo flowTask = new WfTaskVo(); WfTaskVo flowTask = new WfTaskVo();
@ -565,80 +454,36 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce
// 流程变量 // 流程变量
flowTask.setProcVars(histTask.getProcessVariables()); flowTask.setProcVars(histTask.getProcessVariables());
//add for test --tzx Map<String, Object> variablesMap = getHistProcessvariablesMap(historicProcessInstance);
setSpecParaToTaskVo(variablesMap,flowTask);
String spec[] = new String[2];
getHistSpecInfo(histTask.getId(),spec);
flowTask.setSpecBatch(spec[0]);
flowTask.setSpecName(spec[1]);
//add end for test --tzx
hisTaskList.add(flowTask); hisTaskList.add(flowTask);
} }
return hisTaskList;
}
@Override
public TableDataInfo<WfTaskVo> selectPageFinishedProcessList(ProcessQuery processQuery, PageQuery pageQuery) {
HistoricTaskInstanceQuery taskInstanceQuery = getFinishedTaskInstanceQuery(processQuery);
int offset = pageQuery.getPageSize() * (pageQuery.getPageNum() - 1);
List<HistoricTaskInstance> historicTaskInstanceList = taskInstanceQuery.listPage(offset, pageQuery.getPageSize());
List<WfTaskVo> hisTaskList = getFinishedTaskProcessList(historicTaskInstanceList);
Page<WfTaskVo> page = new Page<>();
page.setTotal(taskInstanceQuery.count()); page.setTotal(taskInstanceQuery.count());
page.setRecords(hisTaskList); page.setRecords(hisTaskList);
// Map<String, Object> result = new HashMap<>();
// result.put("result",page);
// result.put("finished",true);
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
@Override @Override
public List<WfTaskVo> selectFinishedProcessList(ProcessQuery processQuery) { public List<WfTaskVo> selectFinishedProcessList(ProcessQuery processQuery) {
HistoricTaskInstanceQuery taskInstanceQuery = historyService.createHistoricTaskInstanceQuery() HistoricTaskInstanceQuery taskInstanceQuery = getFinishedTaskInstanceQuery(processQuery);
.includeProcessVariables()
.finished()
.taskAssignee(TaskUtils.getUserId())
.orderByHistoricTaskInstanceEndTime()
.desc();
// 构建搜索条件
ProcessUtils.buildProcessSearch(taskInstanceQuery, processQuery);
List<HistoricTaskInstance> historicTaskInstanceList = taskInstanceQuery.list(); List<HistoricTaskInstance> historicTaskInstanceList = taskInstanceQuery.list();
List<WfTaskVo> hisTaskList = new ArrayList<>(); List<WfTaskVo> hisTaskList = getFinishedTaskProcessList(historicTaskInstanceList);
for (HistoricTaskInstance histTask : historicTaskInstanceList) {
WfTaskVo flowTask = new WfTaskVo();
// 当前流程信息
flowTask.setTaskId(histTask.getId());
// 审批人员信息
flowTask.setCreateTime(histTask.getCreateTime());
flowTask.setFinishTime(histTask.getEndTime());
flowTask.setDuration(DateUtil.formatBetween(histTask.getDurationInMillis(), BetweenFormatter.Level.SECOND));
flowTask.setProcDefId(histTask.getProcessDefinitionId());
flowTask.setTaskDefKey(histTask.getTaskDefinitionKey());
flowTask.setTaskName(histTask.getName());
// 流程定义信息
ProcessDefinition pd = repositoryService.createProcessDefinitionQuery()
.processDefinitionId(histTask.getProcessDefinitionId())
.singleResult();
flowTask.setDeployId(pd.getDeploymentId());
flowTask.setProcDefName(pd.getName());
flowTask.setProcDefVersion(pd.getVersion());
flowTask.setProcInsId(histTask.getProcessInstanceId());
flowTask.setHisProcInsId(histTask.getProcessInstanceId());
// 流程发起人信息
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
.processInstanceId(histTask.getProcessInstanceId())
.singleResult();
Long userId = Long.parseLong(historicProcessInstance.getStartUserId());
String nickName = userService.selectNickNameById(userId);
flowTask.setStartUserId(userId);
flowTask.setStartUserName(nickName);
// 流程变量
flowTask.setProcVars(histTask.getProcessVariables());
//add for test --tzx
String spec[] = new String[2];
getHistSpecInfo(histTask.getId(),spec);
flowTask.setSpecBatch(spec[0]);
flowTask.setSpecName(spec[1]);
//add end for test --tzx
hisTaskList.add(flowTask);
}
return hisTaskList; return hisTaskList;
} }
@ -1156,14 +1001,7 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce
// 获取流程实例 // 获取流程实例
List<HistoricVariableInstance> historicVariableInstances = historyService.createHistoricVariableInstanceQuery() Map<String, Object> variablesMap = getHistProcessvariablesMap(hisIns);
.processInstanceId(hisIns.getProcessDefinitionId())
.list();
Map<String, Object> variablesMap = new HashMap<>();
for (HistoricVariableInstance hvi : historicVariableInstances) {
variablesMap.put(hvi.getVariableName(), hvi.getValue());
}
// 获取流程状态 // 获取流程状态
Object var1Value = variablesMap.get(ProcessConstants.PROCESS_STATUS_KEY); Object var1Value = variablesMap.get(ProcessConstants.PROCESS_STATUS_KEY);