diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/BusinessStatusEnum.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/BusinessStatusEnum.java index 4fb4c23f5..fbb32ccef 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/BusinessStatusEnum.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/BusinessStatusEnum.java @@ -52,6 +52,24 @@ public enum BusinessStatusEnum { */ private final String desc; + /** + * 获取业务状态 + * + * @param status 状态 + */ + public static String getEumByStatus(String status) { + if (StringUtils.isBlank(status)) { + return null; + } + + for (BusinessStatusEnum statusEnum : BusinessStatusEnum.values()) { + if (statusEnum.getStatus().equals(status)) { + return statusEnum.getDesc(); + } + } + return null; + } + /** * 启动流程校验 * diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActProcessInstanceController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActProcessInstanceController.java index 312f7038e..495101a37 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActProcessInstanceController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActProcessInstanceController.java @@ -116,4 +116,14 @@ public class ActProcessInstanceController extends BaseController { public R cancelProcessApply(@NotBlank(message = "流程实例id不能为空") @PathVariable String processInstanceId) { return toAjax(iActProcessInstanceService.cancelProcessApply(processInstanceId)); } + + /** + * 分页查询当前登录人单据 + * + * @param processInstanceBo 参数 + */ + @GetMapping("/getCurrentSubmitByPage") + public TableDataInfo getCurrentSubmitByPage(ProcessInstanceBo processInstanceBo) { + return iActProcessInstanceService.getCurrentSubmitByPage(processInstanceBo); + } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/ProcessInstanceVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/ProcessInstanceVo.java index e7367a878..e3b17c4b1 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/ProcessInstanceVo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/ProcessInstanceVo.java @@ -76,4 +76,14 @@ public class ProcessInstanceVo implements Serializable { * 启动人id */ private String startUserId; + + /** + * 流程状态 + */ + private String businessStatus; + + /** + * 流程状态 + */ + private String businessStatusName; } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TaskVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TaskVo.java index 4169de0a1..0d4bae364 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TaskVo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TaskVo.java @@ -96,4 +96,14 @@ public class TaskVo { * 认领时间 */ private Date claimTime; + + /** + * 流程状态 + */ + private String businessStatus; + + /** + * 流程状态 + */ + private String businessStatusName; } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActProcessInstanceService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActProcessInstanceService.java index 3d6a478ac..2f122b6ad 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActProcessInstanceService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActProcessInstanceService.java @@ -77,4 +77,12 @@ public interface IActProcessInstanceService { * @return 结果 */ boolean cancelProcessApply(String processInstanceId); + + /** + * 分页查询当前登录人单据 + * + * @param processInstanceBo 参数 + * @return 结果 + */ + TableDataInfo getCurrentSubmitByPage(ProcessInstanceBo processInstanceBo); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java index 24d3468d7..9174370db 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java @@ -97,6 +97,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService for (ProcessInstance processInstance : processInstances) { ProcessInstanceVo processInstanceVo = BeanUtil.toBean(processInstance, ProcessInstanceVo.class); processInstanceVo.setIsSuspended(processInstance.isSuspended()); + processInstanceVo.setBusinessStatusName(BusinessStatusEnum.getEumByStatus(processInstance.getBusinessStatus())); list.add(processInstanceVo); } long count = query.count(); @@ -125,7 +126,9 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService } List historicProcessInstances = query.listPage(processInstanceBo.getPageNum(), processInstanceBo.getPageSize()); for (HistoricProcessInstance historicProcessInstance : historicProcessInstances) { - list.add(BeanUtil.toBean(historicProcessInstance, ProcessInstanceVo.class)); + ProcessInstanceVo processInstanceVo = BeanUtil.toBean(historicProcessInstance, ProcessInstanceVo.class); + processInstanceVo.setBusinessStatusName(BusinessStatusEnum.getEumByStatus(historicProcessInstance.getBusinessStatus())); + list.add(processInstanceVo); } long count = query.count(); return new TableDataInfo<>(list, count); @@ -246,8 +249,10 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService //翻译人员名称 if (CollUtil.isNotEmpty(actHistoryInfoVoList)) { actHistoryInfoVoList.forEach(e -> { - SysUserVo sysUserVo = iSysUserService.selectUserById(Long.valueOf(e.getAssignee())); - e.setNickName(ObjectUtil.isNotEmpty(sysUserVo) ? sysUserVo.getNickName() : ""); + if (StringUtils.isNotBlank(e.getAssignee())) { + SysUserVo sysUserVo = iSysUserService.selectUserById(Long.valueOf(e.getAssignee())); + e.setNickName(ObjectUtil.isNotEmpty(sysUserVo) ? sysUserVo.getNickName() : ""); + } }); } List nodeInfoList = new ArrayList<>(); @@ -436,4 +441,31 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService throw new ServiceException("撤销失败:" + e.getMessage()); } } + + /** + * 分页查询当前登录人单据 + * + * @param processInstanceBo 参数 + */ + @Override + public TableDataInfo getCurrentSubmitByPage(ProcessInstanceBo processInstanceBo) { + List list = new ArrayList<>(); + HistoricProcessInstanceQuery query = historyService.createHistoricProcessInstanceQuery(); + query.processInstanceTenantId(TenantHelper.getTenantId()); + query.startedBy(processInstanceBo.getStartUserId()); + if (StringUtils.isNotBlank(processInstanceBo.getName())) { + query.processInstanceNameLikeIgnoreCase("%" + processInstanceBo.getName() + "%"); + } + if (StringUtils.isNotBlank(processInstanceBo.getBusinessKey())) { + query.processInstanceBusinessKey(processInstanceBo.getBusinessKey()); + } + List historicProcessInstanceList = query.listPage(processInstanceBo.getPageNum(), processInstanceBo.getPageSize()); + for (HistoricProcessInstance processInstance : historicProcessInstanceList) { + ProcessInstanceVo processInstanceVo = BeanUtil.toBean(processInstance, ProcessInstanceVo.class); + processInstanceVo.setBusinessStatusName(BusinessStatusEnum.getEumByStatus(processInstance.getBusinessStatus())); + list.add(processInstanceVo); + } + long count = query.count(); + return new TableDataInfo<>(list, count); + } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java index 0d81edce7..d47938601 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java @@ -32,10 +32,7 @@ import org.flowable.task.service.impl.persistence.entity.TaskEntity; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 任务 服务层实现 @@ -169,9 +166,19 @@ public class ActTaskServiceImpl implements IActTaskService { query.taskNameLike("%" + taskBo.getName() + "%"); } List taskList = query.listPage(taskBo.getPageNum(), taskBo.getPageSize()); + List processInstanceList = null; + if (CollUtil.isNotEmpty(taskList)) { + Set processInstanceIds = StreamUtils.toSet(taskList, Task::getProcessInstanceId); + processInstanceList = runtimeService.createProcessInstanceQuery().processInstanceIds(processInstanceIds).list(); + } List list = new ArrayList<>(); for (Task task : taskList) { - list.add(BeanUtil.toBean(task, TaskVo.class)); + TaskVo taskVo = BeanUtil.toBean(task, TaskVo.class); + processInstanceList.stream().filter(e -> e.getId().equals(task.getProcessInstanceId())).findFirst().ifPresent(e -> { + taskVo.setBusinessStatus(e.getBusinessStatus()); + taskVo.setBusinessStatusName(BusinessStatusEnum.getEumByStatus(taskVo.getBusinessStatus())); + }); + list.add(taskVo); } long count = query.count(); return new TableDataInfo<>(list, count); @@ -191,9 +198,19 @@ public class ActTaskServiceImpl implements IActTaskService { query.taskNameLike("%" + taskBo.getName() + "%"); } List taskInstanceList = query.listPage(taskBo.getPageNum(), taskBo.getPageSize()); + List historicProcessInstanceList = null; + if (CollUtil.isNotEmpty(taskInstanceList)) { + Set processInstanceIds = StreamUtils.toSet(taskInstanceList, HistoricTaskInstance::getProcessInstanceId); + historicProcessInstanceList = historyService.createHistoricProcessInstanceQuery().processInstanceIds(processInstanceIds).list(); + } List list = new ArrayList<>(); for (HistoricTaskInstance task : taskInstanceList) { - list.add(BeanUtil.toBean(task, TaskVo.class)); + TaskVo taskVo = BeanUtil.toBean(task, TaskVo.class); + historicProcessInstanceList.stream().filter(e -> e.getId().equals(task.getProcessInstanceId())).findFirst().ifPresent(e -> { + taskVo.setBusinessStatus(e.getBusinessStatus()); + taskVo.setBusinessStatusName(BusinessStatusEnum.getEumByStatus(taskVo.getBusinessStatus())); + }); + list.add(taskVo); } long count = query.count(); return new TableDataInfo<>(list, count);