From 187db3656f51f31f78f775053f686139964c06ee Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Sat, 14 Sep 2024 20:55:52 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E6=B7=BB=E5=8A=A0=E6=88=91=E5=8F=91?= =?UTF-8?q?=E8=B5=B7=E7=9A=84=E5=8D=95=E6=8D=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/config/WarmFlowConfig.java | 2 +- .../controller/FlwInstanceController.java | 13 +++++ .../workflow/domain/bo/InstanceBo.java | 6 +-- .../workflow/domain/vo/FlowInstanceVo.java | 5 ++ .../workflow/service/IFlwInstanceService.java | 10 ++++ .../service/impl/FlwInstanceServiceImpl.java | 47 +++++++++++++++++++ 6 files changed, 79 insertions(+), 4 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/config/WarmFlowConfig.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/config/WarmFlowConfig.java index 5df842ae5..6e663c00b 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/config/WarmFlowConfig.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/config/WarmFlowConfig.java @@ -7,7 +7,7 @@ import org.springframework.context.annotation.Configuration; import org.dromara.common.satoken.utils.LoginHelper; /** - * 任务状态枚举 + * warmFlow配置 * * @author may */ diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java index 47d7046e2..c517addb0 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java @@ -7,6 +7,7 @@ import org.dromara.common.core.domain.R; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; +import org.dromara.workflow.domain.bo.InstanceBo; import org.dromara.workflow.domain.vo.FlowInstanceVo; import org.dromara.workflow.service.IFlwInstanceService; import org.springframework.validation.annotation.Validated; @@ -94,4 +95,16 @@ public class FlwInstanceController extends BaseController { return R.ok(insService.active(id)); } } + + + /** + * 获取当前登陆人发起的流程实例 + * + * @param instanceBo 参数 + * @param pageQuery 分页 + */ + @GetMapping("/getPageByCurrent") + public TableDataInfo getPageByCurrent(InstanceBo instanceBo, PageQuery pageQuery) { + return flwInstanceService.getPageByCurrent(instanceBo, pageQuery); + } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/InstanceBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/InstanceBo.java index e259e352e..750e2304b 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/InstanceBo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/InstanceBo.java @@ -19,12 +19,12 @@ public class InstanceBo implements Serializable { /** * 流程名称 */ - private String name; + private String flowName; /** - * 流程key + * 流程编码 */ - private String key; + private String flowCode; /** * 任务发起人 diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowInstanceVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowInstanceVo.java index 6e4181c6c..d46637704 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowInstanceVo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowInstanceVo.java @@ -79,6 +79,11 @@ public class FlowInstanceVo { */ private Integer flowStatus; + /** + * 流程状态 + */ + private String flowStatusName; + /** * 流程激活状态(0挂起 1激活) */ diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java index a47a15690..ebdb71019 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java @@ -4,6 +4,7 @@ import com.warm.flow.core.entity.Instance; import com.warm.flow.orm.entity.FlowInstance; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.workflow.domain.bo.InstanceBo; import org.dromara.workflow.domain.vo.FlowInstanceVo; import java.util.List; @@ -64,4 +65,13 @@ public interface IFlwInstanceService { * @return 结果 */ boolean cancelProcessApply(String businessId); + + /** + * 获取当前登陆人发起的流程实例 + * + * @param instanceBo 参数 + * @param pageQuery 分页 + * @return 结果 + */ + TableDataInfo getPageByCurrent(InstanceBo instanceBo, PageQuery pageQuery); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java index 87fa0e45b..8f005576b 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.warm.flow.core.FlowFactory; import com.warm.flow.core.constant.ExceptionCons; @@ -18,14 +19,19 @@ import com.warm.flow.core.service.InsService; import com.warm.flow.core.service.NodeService; import com.warm.flow.core.service.TaskService; import com.warm.flow.core.utils.AssertUtil; +import com.warm.flow.orm.entity.FlowDefinition; import com.warm.flow.orm.entity.FlowInstance; +import com.warm.flow.orm.mapper.FlowDefinitionMapper; import com.warm.flow.orm.mapper.FlowInstanceMapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.workflow.domain.bo.FlowInstanceBo; +import org.dromara.workflow.domain.bo.InstanceBo; import org.dromara.workflow.domain.vo.FlowInstanceVo; import org.dromara.workflow.mapper.FlwInstanceMapper; import org.dromara.workflow.service.IFlwInstanceService; @@ -51,6 +57,7 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { private final TaskService taskService; private final FlowInstanceMapper flowInstanceMapper; private final FlwInstanceMapper flwInstanceMapper; + private final FlowDefinitionMapper flowDefinitionMapper; /** * 分页查询正在运行的流程实例 @@ -155,4 +162,44 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { Skip skip = skips.get(0); return FlowFactory.nodeService().getOne(FlowFactory.newNode().setDefinitionId(startNode.getDefinitionId()).setNodeCode(skip.getNextNodeCode())); } + + /** + * 获取当前登陆人发起的流程实例 + * + * @param instanceBo 参数 + * @param pageQuery 分页 + */ + @Override + public TableDataInfo getPageByCurrent(InstanceBo instanceBo, PageQuery pageQuery) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + + if (StringUtils.isNotBlank(instanceBo.getFlowCode())) { + List flowDefinitions = flowDefinitionMapper.selectList( + new LambdaQueryWrapper().eq(FlowDefinition::getFlowCode, instanceBo.getFlowCode())); + if (CollUtil.isNotEmpty(flowDefinitions)) { + List defIdList = StreamUtils.toList(flowDefinitions, FlowDefinition::getId); + wrapper.in(FlowInstance::getDefinitionId, defIdList); + } + } + wrapper.eq(FlowInstance::getCreateBy, LoginHelper.getUserId()); + Page page = flowInstanceMapper.selectPage(pageQuery.build(), wrapper); + TableDataInfo build = TableDataInfo.build(); + List flowInstanceVos = BeanUtil.copyToList(page.getRecords(), FlowInstanceVo.class); + if (CollUtil.isNotEmpty(flowInstanceVos)) { + List definitionIds = StreamUtils.toList(flowInstanceVos, FlowInstanceVo::getDefinitionId); + List flowDefinitions = flowDefinitionMapper.selectBatchIds(definitionIds); + for (FlowInstanceVo vo : flowInstanceVos) { + flowDefinitions.stream().filter(e -> e.getId().toString().equals(vo.getDefinitionId().toString())).findFirst().ifPresent(e -> { + vo.setFlowName(e.getFlowName()); + vo.setFlowCode(e.getFlowCode()); + vo.setVersion(e.getVersion()); + vo.setFlowStatusName(FlowStatus.getValueByKey(vo.getFlowStatus())); + }); + } + + } + build.setRows(flowInstanceVos); + build.setTotal(page.getTotal()); + return build; + } }