From 209606e9138f3c2fcb74dfc5a9dfbd6880cf9fa2 Mon Sep 17 00:00:00 2001 From: konbai <1527468660@qq.com> Date: Sun, 18 Dec 2022 18:17:10 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=20=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=E7=B1=BB=EF=BC=8C=E6=B7=BB=E5=8A=A0=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E6=90=9C=E7=B4=A2=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/flowable/utils/ProcessUtils.java | 115 ++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 ruoyi-flowable/src/main/java/com/ruoyi/flowable/utils/ProcessUtils.java diff --git a/ruoyi-flowable/src/main/java/com/ruoyi/flowable/utils/ProcessUtils.java b/ruoyi-flowable/src/main/java/com/ruoyi/flowable/utils/ProcessUtils.java new file mode 100644 index 00000000..3d9387d7 --- /dev/null +++ b/ruoyi-flowable/src/main/java/com/ruoyi/flowable/utils/ProcessUtils.java @@ -0,0 +1,115 @@ +package com.ruoyi.flowable.utils; + +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.flowable.core.domain.ProcessQuery; +import org.flowable.common.engine.api.query.Query; +import org.flowable.common.engine.impl.db.SuspensionState; +import org.flowable.engine.history.HistoricProcessInstanceQuery; +import org.flowable.engine.repository.ProcessDefinitionQuery; +import org.flowable.task.api.TaskQuery; +import org.flowable.task.api.history.HistoricTaskInstanceQuery; + +import java.util.Map; + +/** + * 流程工具类 + * + * @author konbai + * @since 2022/12/11 03:35 + */ +public class ProcessUtils { + + public static void buildProcessSearch(Query query, ProcessQuery process) { + if (query instanceof ProcessDefinitionQuery) { + buildProcessDefinitionSearch((ProcessDefinitionQuery) query, process); + } else if (query instanceof TaskQuery) { + buildTaskSearch((TaskQuery) query, process); + } else if (query instanceof HistoricTaskInstanceQuery) { + buildHistoricTaskInstanceSearch((HistoricTaskInstanceQuery) query, process); + } else if (query instanceof HistoricProcessInstanceQuery) { + buildHistoricProcessInstanceSearch((HistoricProcessInstanceQuery) query, process); + } + } + + /** + * 构建流程定义搜索 + */ + public static void buildProcessDefinitionSearch(ProcessDefinitionQuery query, ProcessQuery process) { + // 流程标识 + if (StringUtils.isNotBlank(process.getProcessKey())) { + query.processDefinitionKeyLike("%" + process.getProcessKey() + "%"); + } + // 流程名称 + if (StringUtils.isNotBlank(process.getProcessName())) { + query.processDefinitionNameLike("%" + process.getProcessName() + "%"); + } + // 流程分类 + if (StringUtils.isNotBlank(process.getCategory())) { + query.processDefinitionCategory(process.getCategory()); + } + // 流程状态 + if (StringUtils.isNotBlank(process.getState())) { + if (SuspensionState.ACTIVE.toString().equals(process.getState())) { + query.active(); + } else if (SuspensionState.SUSPENDED.toString().equals(process.getState())) { + query.suspended(); + } + } + } + + /** + * 构建任务搜索 + */ + public static void buildTaskSearch(TaskQuery query, ProcessQuery process) { + Map params = process.getParams(); + if (StringUtils.isNotBlank(process.getProcessKey())) { + query.processDefinitionKeyLike("%" + process.getProcessKey() + "%"); + } + if (StringUtils.isNotBlank(process.getProcessName())) { + query.processDefinitionNameLike("%" + process.getProcessName() + "%"); + } + if (params.get("beginTime") != null && params.get("endTime") != null) { + query.taskCreatedAfter(DateUtils.parseDate(params.get("beginTime"))); + query.taskCreatedBefore(DateUtils.parseDate(params.get("endTime"))); + } + } + + private static void buildHistoricTaskInstanceSearch(HistoricTaskInstanceQuery query, ProcessQuery process) { + Map params = process.getParams(); + if (StringUtils.isNotBlank(process.getProcessKey())) { + query.processDefinitionKeyLike("%" + process.getProcessKey() + "%"); + } + if (StringUtils.isNotBlank(process.getProcessName())) { + query.processDefinitionNameLike("%" + process.getProcessName() + "%"); + } + if (params.get("beginTime") != null && params.get("endTime") != null) { + query.taskCompletedAfter(DateUtils.parseDate(params.get("beginTime"))); + query.taskCompletedBefore(DateUtils.parseDate(params.get("endTime"))); + } + } + + /** + * 构建历史流程实例搜索 + */ + public static void buildHistoricProcessInstanceSearch(HistoricProcessInstanceQuery query, ProcessQuery process) { + Map params = process.getParams(); + // 流程标识 + if (StringUtils.isNotBlank(process.getProcessKey())) { + query.processDefinitionKey(process.getProcessKey()); + } + // 流程名称 + if (StringUtils.isNotBlank(process.getProcessName())) { + query.processDefinitionName(process.getProcessName()); + } + // 流程名称 + if (StringUtils.isNotBlank(process.getCategory())) { + query.processDefinitionCategory(process.getCategory()); + } + if (params.get("beginTime") != null && params.get("endTime") != null) { + query.startedAfter(DateUtils.parseDate(params.get("beginTime"))); + query.startedBefore(DateUtils.parseDate(params.get("endTime"))); + } + } + +}