From 764782c58bd5902950c9a41cb6a7f5ae5c35938a Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Thu, 19 Dec 2024 14:52:51 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E6=96=B0=E5=A2=9E=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E5=88=86=E7=B1=BBid=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/enums/BusinessStatusEnum.java | 24 +++++++------------ .../workflow/domain/bo/FlowInstanceBo.java | 4 ++-- .../workflow/domain/bo/FlowTaskBo.java | 7 ++++++ .../workflow/domain/vo/FlowDefinitionVo.java | 2 +- .../workflow/domain/vo/FlowHisTaskVo.java | 16 +++++++++---- .../workflow/domain/vo/FlowTaskVo.java | 5 ++++ .../workflow/mapper/FlwCategoryMapper.java | 16 +++++++++++++ .../workflow/mapper/FlwTaskMapper.java | 1 + .../impl/FlwDefinitionServiceImpl.java | 9 +------ .../service/impl/FlwInstanceServiceImpl.java | 8 ++++++- .../service/impl/FlwTaskServiceImpl.java | 23 ++++++++++++++++++ .../mapper/workflow/FlwTaskMapper.xml | 3 +++ 12 files changed, 85 insertions(+), 33 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/BusinessStatusEnum.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/BusinessStatusEnum.java index b941760ca..c1660ee93 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/BusinessStatusEnum.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/BusinessStatusEnum.java @@ -6,7 +6,6 @@ import lombok.Getter; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.StringUtils; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -116,30 +115,23 @@ public enum BusinessStatusEnum { } /** - * 运行中的实例状态 + * 获取运行中的实例状态列表 * - * @return 运行中的实例状态 + * @return 包含运行中实例状态的不可变列表 + * (包含 DRAFT、WAITING、BACK 和 CANCEL 状态) */ public static List runningStatus() { - List list = new ArrayList<>(); - list.add(BusinessStatusEnum.DRAFT.getStatus()); - list.add(BusinessStatusEnum.WAITING.getStatus()); - list.add(BusinessStatusEnum.BACK.getStatus()); - list.add(BusinessStatusEnum.CANCEL.getStatus()); - return list; + return Arrays.asList(DRAFT.status, WAITING.status, BACK.status, CANCEL.status); } /** - * 结束实例状态 + * 获取结束实例的状态列表 * - * @return 结束实例状态 + * @return 包含结束实例状态的不可变列表 + * (包含 FINISH、INVALID 和 TERMINATION 状态) */ public static List finishStatus() { - List list = new ArrayList<>(); - list.add(BusinessStatusEnum.FINISH.getStatus()); - list.add(BusinessStatusEnum.INVALID.getStatus()); - list.add(BusinessStatusEnum.TERMINATION.getStatus()); - return list; + return Arrays.asList(FINISH.status, INVALID.status, TERMINATION.status); } /** diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowInstanceBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowInstanceBo.java index 107b9a9ed..9d11c93fb 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowInstanceBo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowInstanceBo.java @@ -38,7 +38,7 @@ public class FlowInstanceBo implements Serializable { private String businessId; /** - * 模型分类 + * 流程分类id */ private String category; @@ -47,9 +47,9 @@ public class FlowInstanceBo implements Serializable { */ private String nodeName; - /** * 申请人Ids */ private List createByIds; + } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowTaskBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowTaskBo.java index 904ef167e..64dd08255 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowTaskBo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowTaskBo.java @@ -32,6 +32,11 @@ public class FlowTaskBo implements Serializable { */ private String flowCode; + /** + * 流程分类id + */ + private String category; + /** * 流程实例id */ @@ -41,8 +46,10 @@ public class FlowTaskBo implements Serializable { * 权限列表 */ private List permissionList; + /** * 申请人Ids */ private List createByIds; + } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowDefinitionVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowDefinitionVo.java index bf05f740f..7f55b567c 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowDefinitionVo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowDefinitionVo.java @@ -52,7 +52,7 @@ public class FlowDefinitionVo implements Serializable { private String flowName; /** - * 流程类别 + * 流程分类id */ private String category; diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowHisTaskVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowHisTaskVo.java index 8acb9b44e..7b70e2f8c 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowHisTaskVo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowHisTaskVo.java @@ -160,6 +160,16 @@ public class FlowHisTaskVo implements Serializable { */ private String createBy; + /** + * 申请人 + */ + @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "createBy") + private String createByName; + + /** + * 流程分类id + */ + private String category; /** * 审批表单是否自定义(Y是 N否) @@ -223,9 +233,5 @@ public class FlowHisTaskVo implements Serializable { this.cooperateType = cooperateType; this.cooperateTypeName = CooperateType.getValueByKey(cooperateType); } - /** - * 申请人 - */ - @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "createBy") - private String createByName; + } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java index a5ee9c49c..7028ffae1 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java @@ -114,6 +114,11 @@ public class FlowTaskVo implements Serializable { */ private String flowStatus; + /** + * 流程分类id + */ + private String category; + /** * 流程状态 */ diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwCategoryMapper.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwCategoryMapper.java index 91d455b18..d2c0b3a4d 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwCategoryMapper.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwCategoryMapper.java @@ -9,6 +9,8 @@ import org.dromara.workflow.domain.FlowCategory; import org.dromara.workflow.domain.vo.FlowCategoryVo; import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; /** * 流程分类Mapper接口 @@ -41,4 +43,18 @@ public interface FlwCategoryMapper extends BaseMapperPlus selectCategoryIdsByParentId(Long parentId) { + return Stream.concat( + this.selectListByParentId(parentId).stream() + .map(FlowCategory::getCategoryId), + Stream.of(parentId) + ).collect(Collectors.toList()); + } + } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java index 9d010f735..fd86c82de 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java @@ -36,6 +36,7 @@ public interface FlwTaskMapper { * @return 结果 */ List getListRunTask(@Param(Constants.WRAPPER) Wrapper queryWrapper); + /** * 获取已办 * diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java index 42a4c3919..0f3286045 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java @@ -29,7 +29,6 @@ import org.dromara.warm.flow.orm.entity.FlowDefinition; import org.dromara.warm.flow.orm.entity.FlowHisTask; import org.dromara.warm.flow.orm.mapper.FlowDefinitionMapper; import org.dromara.warm.flow.orm.mapper.FlowHisTaskMapper; -import org.dromara.workflow.domain.FlowCategory; import org.dromara.workflow.domain.vo.FlowDefinitionVo; import org.dromara.workflow.mapper.FlwCategoryMapper; import org.dromara.workflow.mapper.FlwDefMapper; @@ -40,7 +39,6 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.List; -import java.util.stream.Collectors; /** * 流程定义 服务层实现 @@ -70,12 +68,7 @@ public class FlwDefinitionServiceImpl implements IFlwDefinitionService { queryWrapper.like(StringUtils.isNotBlank(flowDefinition.getFlowCode()), "flow_code", flowDefinition.getFlowCode()); queryWrapper.like(StringUtils.isNotBlank(flowDefinition.getFlowName()), "flow_Name", flowDefinition.getFlowName()); if (StringUtils.isNotBlank(flowDefinition.getCategory())) { - Long categoryId = Convert.toLong(flowDefinition.getCategory()); - List categoryIds = flwCategoryMapper.selectListByParentId(categoryId) - .stream() - .map(FlowCategory::getCategoryId) - .collect(Collectors.toList()); - categoryIds.add(categoryId); + List categoryIds = flwCategoryMapper.selectCategoryIdsByParentId(Convert.toLong(flowDefinition.getCategory())); queryWrapper.in("category", categoryIds); } queryWrapper.orderByDesc("create_time"); 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 dc4abcd81..87b739450 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 @@ -2,6 +2,7 @@ package org.dromara.workflow.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -41,6 +42,7 @@ import org.dromara.workflow.domain.vo.FlowHisTaskVo; import org.dromara.workflow.domain.vo.FlowInstanceVo; import org.dromara.workflow.domain.vo.VariableVo; import org.dromara.workflow.handler.FlowProcessEventHandler; +import org.dromara.workflow.mapper.FlwCategoryMapper; import org.dromara.workflow.mapper.FlwInstanceMapper; import org.dromara.workflow.service.IFlwInstanceService; import org.dromara.workflow.service.IFlwTaskService; @@ -70,6 +72,7 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { private final TaskService taskService; private final IFlwTaskService flwTaskService; private final FlowProcessEventHandler flowProcessEventHandler; + private final FlwCategoryMapper flwCategoryMapper; /** * 分页查询正在运行的流程实例 @@ -130,7 +133,10 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { queryWrapper.like(StringUtils.isNotBlank(flowInstanceBo.getNodeName()), "fi.node_name", flowInstanceBo.getNodeName()); queryWrapper.like(StringUtils.isNotBlank(flowInstanceBo.getFlowName()), "fd.flow_name", flowInstanceBo.getFlowName()); queryWrapper.like(StringUtils.isNotBlank(flowInstanceBo.getFlowCode()), "fd.flow_code", flowInstanceBo.getFlowCode()); - queryWrapper.eq(StringUtils.isNotBlank(flowInstanceBo.getCategory()), "fd.category", flowInstanceBo.getCategory()); + if (StringUtils.isNotBlank(flowInstanceBo.getCategory())) { + List categoryIds = flwCategoryMapper.selectCategoryIdsByParentId(Convert.toLong(flowInstanceBo.getCategory())); + queryWrapper.in("fd.category", categoryIds); + } queryWrapper.eq(StringUtils.isNotBlank(flowInstanceBo.getBusinessId()), "fi.business_id", flowInstanceBo.getBusinessId()); queryWrapper.in(CollUtil.isNotEmpty(flowInstanceBo.getCreateByIds()), "fi.create_by", flowInstanceBo.getCreateByIds()); queryWrapper.eq("fi.del_flag", "0"); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index 1080c9474..3c110ae9f 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -2,6 +2,7 @@ package org.dromara.workflow.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -41,6 +42,7 @@ import org.dromara.workflow.domain.vo.FlowHisTaskVo; import org.dromara.workflow.domain.vo.FlowTaskVo; import org.dromara.workflow.handler.FlowProcessEventHandler; import org.dromara.workflow.handler.WorkflowPermissionHandler; +import org.dromara.workflow.mapper.FlwCategoryMapper; import org.dromara.workflow.mapper.FlwTaskMapper; import org.dromara.workflow.service.IFlwTaskService; import org.dromara.workflow.utils.WorkflowUtils; @@ -76,6 +78,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { private final IdentifierGenerator identifierGenerator; private final NodeService nodeService; private final FlowNodeMapper flowNodeMapper; + private final FlwCategoryMapper flwCategoryMapper; /** * 启动任务 @@ -249,6 +252,10 @@ public class FlwTaskServiceImpl implements IFlwTaskService { queryWrapper.eq("t.node_type", NodeType.BETWEEN.getKey()); queryWrapper.in("t.processed_by", SpringUtils.getBean(WorkflowPermissionHandler.class).permissions()); queryWrapper.in("t.flow_status", BusinessStatusEnum.WAITING.getStatus()); + if (StringUtils.isNotBlank(flowTaskBo.getCategory())) { + List categoryIds = flwCategoryMapper.selectCategoryIdsByParentId(Convert.toLong(flowTaskBo.getCategory())); + queryWrapper.in("d.category", categoryIds); + } Page page = this.getFlowTaskVoPage(pageQuery, queryWrapper); return TableDataInfo.build(page); } @@ -265,6 +272,10 @@ public class FlwTaskServiceImpl implements IFlwTaskService { queryWrapper.eq("t.node_type", NodeType.BETWEEN.getKey()); queryWrapper.in("t.approver", LoginHelper.getUserIdStr()); queryWrapper.orderByDesc("t.create_time").orderByDesc("t.update_time"); + if (StringUtils.isNotBlank(flowTaskBo.getCategory())) { + List categoryIds = flwCategoryMapper.selectCategoryIdsByParentId(Convert.toLong(flowTaskBo.getCategory())); + queryWrapper.in("c.category", categoryIds); + } Page page = flwTaskMapper.getListFinishTask(pageQuery.build(), queryWrapper); return TableDataInfo.build(page); } @@ -279,6 +290,10 @@ public class FlwTaskServiceImpl implements IFlwTaskService { public TableDataInfo pageByAllTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery) { QueryWrapper queryWrapper = buildQueryWrapper(flowTaskBo); queryWrapper.eq("t.node_type", NodeType.BETWEEN.getKey()); + if (StringUtils.isNotBlank(flowTaskBo.getCategory())) { + List categoryIds = flwCategoryMapper.selectCategoryIdsByParentId(Convert.toLong(flowTaskBo.getCategory())); + queryWrapper.in("d.category", categoryIds); + } Page page = getFlowTaskVoPage(pageQuery, queryWrapper); return TableDataInfo.build(page); } @@ -309,6 +324,10 @@ public class FlwTaskServiceImpl implements IFlwTaskService { @Override public TableDataInfo pageByAllTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery) { QueryWrapper queryWrapper = buildQueryWrapper(flowTaskBo); + if (StringUtils.isNotBlank(flowTaskBo.getCategory())) { + List categoryIds = flwCategoryMapper.selectCategoryIdsByParentId(Convert.toLong(flowTaskBo.getCategory())); + queryWrapper.in("c.category", categoryIds); + } Page page = flwTaskMapper.getListFinishTask(pageQuery.build(), queryWrapper); return TableDataInfo.build(page); } @@ -323,6 +342,10 @@ public class FlwTaskServiceImpl implements IFlwTaskService { public TableDataInfo pageByTaskCopy(FlowTaskBo flowTaskBo, PageQuery pageQuery) { QueryWrapper queryWrapper = buildQueryWrapper(flowTaskBo); queryWrapper.in("t.processed_by", LoginHelper.getUserIdStr()); + if (StringUtils.isNotBlank(flowTaskBo.getCategory())) { + List categoryIds = flwCategoryMapper.selectCategoryIdsByParentId(Convert.toLong(flowTaskBo.getCategory())); + queryWrapper.in("d.category", categoryIds); + } Page page = flwTaskMapper.getTaskCopyByPage(pageQuery.build(), queryWrapper); return TableDataInfo.build(page); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml b/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml index 18fd42d43..7a50e8717 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml +++ b/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml @@ -26,6 +26,7 @@ d.flow_name, d.flow_code, d.form_custom, + d.category, COALESCE(t.form_path, d.form_path) as form_path, d.version, uu.processed_by, @@ -69,6 +70,7 @@ b.create_by, c.flow_name, c.flow_code, + c.category, c.version from flow_his_task a left join flow_instance b on a.instance_id = b.id @@ -95,6 +97,7 @@ b.node_code, d.flow_name, d.flow_code, + d.category, d.version from flow_user a left join flow_his_task b on a.associated = b.task_id