From b54bece04d471badde7ea44d8699f1063347032b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Tue, 8 Jul 2025 18:16:55 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=88=86=E7=B1=BB=E6=96=B0=E5=A2=9E=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/common/enums/TaskStatusEnum.java | 10 +++++++ .../controller/FlwCategoryController.java | 2 -- .../listener/WorkflowGlobalListener.java | 6 ++--- .../workflow/mapper/FlwCategoryMapper.java | 15 ----------- .../workflow/service/IFlwCategoryService.java | 7 ----- .../service/impl/FlwCategoryServiceImpl.java | 27 +++++-------------- 6 files changed, 19 insertions(+), 48 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskStatusEnum.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskStatusEnum.java index d18ebb01..c7bced89 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskStatusEnum.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskStatusEnum.java @@ -100,5 +100,15 @@ public enum TaskStatusEnum { return STATUS_DESC_MAP.getOrDefault(status, StrUtil.EMPTY); } + /** + * 判断状态是否为通过或退回 + * + * @param status 状态值 + * @return true 表示是通过或退回状态 + */ + public static boolean isPassOrBack(String status) { + return PASS.getStatus().equals(status) || BACK.getStatus().equals(status); + } + } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwCategoryController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwCategoryController.java index d9ff40ab..498b8534 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwCategoryController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwCategoryController.java @@ -66,7 +66,6 @@ public class FlwCategoryController extends BaseController { @SaCheckPermission("workflow:category:query") @GetMapping("/{categoryId}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long categoryId) { - flwCategoryService.checkCategoryDataScope(categoryId); return R.ok(flwCategoryService.queryById(categoryId)); } @@ -93,7 +92,6 @@ public class FlwCategoryController extends BaseController { @PutMapping() public R edit(@Validated(EditGroup.class) @RequestBody FlowCategoryBo category) { Long categoryId = category.getCategoryId(); - flwCategoryService.checkCategoryDataScope(categoryId); if (!flwCategoryService.checkCategoryNameUnique(category)) { return R.fail("修改流程分类'" + category.getCategoryName() + "'失败,流程分类名称已存在"); } else if (category.getParentId().equals(categoryId)) { diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java index 2d23f772..76f67c07 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java @@ -83,8 +83,7 @@ public class WorkflowGlobalListener implements GlobalListener { String applyNodeCode = flwCommonService.applyNodeCode(definition.getId()); for (Task flowTask : nextTasks) { // 如果办理或者退回并行存在需要指定办理人,则直接覆盖办理人 - if (variable.containsKey(flowTask.getNodeCode()) && (TaskStatusEnum.PASS.getStatus().equals(flowParams.getHisStatus()) - || TaskStatusEnum.BACK.getStatus().equals(flowParams.getHisStatus()))) { + if (variable.containsKey(flowTask.getNodeCode()) && TaskStatusEnum.isPassOrBack(flowParams.getHisStatus())) { String userIds = variable.get(flowTask.getNodeCode()).toString(); flowTask.setPermissionList(List.of(userIds.split(StringUtils.SEPARATOR))); variable.remove(flowTask.getNodeCode()); @@ -137,8 +136,7 @@ public class WorkflowGlobalListener implements GlobalListener { return; } // 只有办理或者退回的时候才执行消息通知和抄送 - if (!StringUtils.equalsAny(flowParams.getHisStatus(), - TaskStatusEnum.PASS.getStatus(), TaskStatusEnum.BACK.getStatus())) { + if (!TaskStatusEnum.isPassOrBack(flowParams.getHisStatus())) { return; } if (ObjectUtil.isNull(variable)) { 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 4a59f258..c7a3d264 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 @@ -1,8 +1,6 @@ package org.dromara.workflow.mapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import org.dromara.common.mybatis.annotation.DataColumn; -import org.dromara.common.mybatis.annotation.DataPermission; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.common.mybatis.helper.DataBaseHelper; import org.dromara.workflow.domain.FlowCategory; @@ -20,19 +18,6 @@ import java.util.stream.Stream; */ public interface FlwCategoryMapper extends BaseMapperPlus { - /** - * 统计指定流程分类ID的分类数量 - * - * @param categoryId 流程分类ID - * @return 该流程分类ID的分类数量 - */ - @DataPermission({ - @DataColumn(key = "deptName", value = "createDept") - }) - default long countCategoryById(Long categoryId) { - return this.selectCount(new LambdaQueryWrapper().eq(FlowCategory::getCategoryId, categoryId)); - } - /** * 根据父流程分类ID查询其所有子流程分类的列表 * diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwCategoryService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwCategoryService.java index 91f173d4..f66882b8 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwCategoryService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwCategoryService.java @@ -45,13 +45,6 @@ public interface IFlwCategoryService { */ List> selectCategoryTreeList(FlowCategoryBo category); - /** - * 校验流程分类是否有数据权限 - * - * @param categoryId 流程分类ID - */ - void checkCategoryDataScope(Long categoryId); - /** * 校验流程分类名称是否唯一 * diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java index dc8d6c83..ab2ac1e0 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java @@ -23,6 +23,7 @@ import org.dromara.workflow.service.IFlwCategoryService; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; @@ -111,24 +112,6 @@ public class FlwCategoryServiceImpl implements IFlwCategoryService { ); } - /** - * 校验流程分类是否有数据权限 - * - * @param categoryId 流程分类ID - */ - @Override - public void checkCategoryDataScope(Long categoryId) { - if (ObjectUtil.isNull(categoryId)) { - return; - } - if (LoginHelper.isSuperAdmin()) { - return; - } - if (baseMapper.countCategoryById(categoryId) == 0) { - throw new ServiceException("没有权限访问流程分类数据!"); - } - } - /** * 校验流程分类名称是否唯一 * @@ -191,6 +174,9 @@ public class FlwCategoryServiceImpl implements IFlwCategoryService { @Override public int insertByBo(FlowCategoryBo bo) { FlowCategory info = baseMapper.selectById(bo.getParentId()); + if (ObjectUtil.isNull(info)) { + throw new ServiceException("父级流程分类不存在!"); + } FlowCategory category = MapstructUtils.convert(bo, FlowCategory.class); category.setAncestors(info.getAncestors() + StringUtils.SEPARATOR + category.getParentId()); return baseMapper.insert(category); @@ -204,6 +190,7 @@ public class FlwCategoryServiceImpl implements IFlwCategoryService { */ @CacheEvict(cacheNames = FlowConstant.FLOW_CATEGORY_NAME, key = "#bo.categoryId") @Override + @Transactional(rollbackFor = Exception.class) public int updateByBo(FlowCategoryBo bo) { FlowCategory category = MapstructUtils.convert(bo, FlowCategory.class); FlowCategory oldCategory = baseMapper.selectById(category.getCategoryId()); @@ -211,14 +198,14 @@ public class FlwCategoryServiceImpl implements IFlwCategoryService { throw new ServiceException("流程分类不存在,无法修改"); } if (!oldCategory.getParentId().equals(category.getParentId())) { - // 如果是新父流程分类 则校验是否具有新父流程分类权限 避免越权 - this.checkCategoryDataScope(category.getParentId()); FlowCategory newParentCategory = baseMapper.selectById(category.getParentId()); if (ObjectUtil.isNotNull(newParentCategory)) { String newAncestors = newParentCategory.getAncestors() + StringUtils.SEPARATOR + newParentCategory.getCategoryId(); String oldAncestors = oldCategory.getAncestors(); category.setAncestors(newAncestors); updateCategoryChildren(category.getCategoryId(), newAncestors, oldAncestors); + } else { + throw new ServiceException("父级流程分类不存在!"); } } else { category.setAncestors(oldCategory.getAncestors());