疯狂的狮子Li
2025-01-24 296466fa134e689368c5e34265a2030a1deb37b1
!640 发布 5.3.0 新春版 祝大家新年快乐
Merge pull request !640 from 疯狂的狮子Li/dev
已添加1个文件
已修改31个文件
338 ■■■■ 文件已修改
.run/ruoyi-monitor-admin.run.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
.run/ruoyi-server.run.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
.run/ruoyi-snailjob-server.run.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
README.md 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-bom/pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/StartProcessReturnDTO.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessEvent.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwCategoryController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/BackProcessBo.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowCategoryVo.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwCategoryService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/CategoryNameTranslationImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
script/docker/docker-compose.yml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
script/sql/oracle/oracle_ry_vue_5.X.sql 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
script/sql/postgres/postgres_ry_vue_5.X.sql 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
script/sql/postgres/postgres_ry_workflow.sql 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
script/sql/ry_vue_5.X.sql 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
script/sql/sqlserver/sqlserver_ry_vue_5.X.sql 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.run/ruoyi-monitor-admin.run.xml
@@ -2,7 +2,7 @@
  <configuration default="false" name="ruoyi-monitor-admin" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
    <deployment type="dockerfile">
      <settings>
        <option name="imageTag" value="ruoyi/ruoyi-monitor-admin:5.3.0-BETA" />
        <option name="imageTag" value="ruoyi/ruoyi-monitor-admin:5.3.0" />
        <option name="buildOnly" value="true" />
        <option name="sourceFilePath" value="ruoyi-extend/ruoyi-monitor-admin/Dockerfile" />
      </settings>
.run/ruoyi-server.run.xml
@@ -2,7 +2,7 @@
  <configuration default="false" name="ruoyi-server" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
    <deployment type="dockerfile">
      <settings>
        <option name="imageTag" value="ruoyi/ruoyi-server:5.3.0-BETA" />
        <option name="imageTag" value="ruoyi/ruoyi-server:5.3.0" />
        <option name="buildOnly" value="true" />
        <option name="sourceFilePath" value="ruoyi-admin/Dockerfile" />
      </settings>
.run/ruoyi-snailjob-server.run.xml
@@ -2,7 +2,7 @@
  <configuration default="false" name="ruoyi-snailjob-server" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
    <deployment type="dockerfile">
      <settings>
        <option name="imageTag" value="ruoyi/ruoyi-snailjob-server:5.3.0-BETA" />
        <option name="imageTag" value="ruoyi/ruoyi-snailjob-server:5.3.0" />
        <option name="buildOnly" value="true" />
        <option name="sourceFilePath" value="ruoyi-extend/ruoyi-snailjob-server/Dockerfile" />
      </settings>
README.md
@@ -10,7 +10,7 @@
[![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://gitee.com/dromara/RuoYi-Vue-Plus/blob/master/LICENSE)
[![使用IntelliJ IDEA开发维护](https://img.shields.io/badge/IntelliJ%20IDEA-提供支持-blue.svg)](https://www.jetbrains.com/?from=RuoYi-Vue-Plus)
<br>
[![RuoYi-Vue-Plus](https://img.shields.io/badge/RuoYi_Vue_Plus-5.3.0--BETA-success.svg)](https://gitee.com/dromara/RuoYi-Vue-Plus)
[![RuoYi-Vue-Plus](https://img.shields.io/badge/RuoYi_Vue_Plus-5.3.0-success.svg)](https://gitee.com/dromara/RuoYi-Vue-Plus)
[![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.4-blue.svg)]()
[![JDK-17](https://img.shields.io/badge/JDK-17-green.svg)]()
[![JDK-21](https://img.shields.io/badge/JDK-21-green.svg)]()
@@ -23,7 +23,6 @@
> ç³»ç»Ÿæ¼”示: [传送门](https://plus-doc.dromara.org/#/common/demo_system)
> å®˜æ–¹å‰ç«¯é¡¹ç›®åœ°å€: [plus-ui](https://gitee.com/JavaLionLi/plus-ui)<br>
> æˆå‘˜å‰ç«¯é¡¹ç›®åœ°å€: åŸºäºŽvben [ruoyi-plus-vben](https://gitee.com/dapppp/ruoyi-plus-vben)<br>
> æˆå‘˜å‰ç«¯é¡¹ç›®åœ°å€: åŸºäºŽvben5 [ruoyi-plus-vben5](https://gitee.com/dapppp/ruoyi-plus-vben5)
> æ–‡æ¡£åœ°å€: [plus-doc](https://plus-doc.dromara.org)
pom.xml
@@ -13,7 +13,7 @@
    <description>Dromara RuoYi-Vue-Plus多租户管理系统</description>
    <properties>
        <revision>5.3.0-BETA</revision>
        <revision>5.3.0</revision>
        <spring-boot.version>3.4.1</spring-boot.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
@@ -31,7 +31,7 @@
        <redisson.version>3.43.0</redisson.version>
        <lock4j.version>2.2.7</lock4j.version>
        <dynamic-ds.version>4.3.1</dynamic-ds.version>
        <snailjob.version>1.3.0-beta1.1</snailjob.version>
        <snailjob.version>1.3.0</snailjob.version>
        <mapstruct-plus.version>1.4.6</mapstruct-plus.version>
        <mapstruct-plus.lombok.version>0.2.0</mapstruct-plus.lombok.version>
        <lombok.version>1.18.36</lombok.version>
@@ -50,7 +50,7 @@
        <!-- é¢å‘运行时的D-ORM依赖 -->
        <anyline.version>8.7.2-20250101</anyline.version>
        <!--工作流配置-->
        <warm-flow.version>1.6.0-m5</warm-flow.version>
        <warm-flow.version>1.6.6</warm-flow.version>
        <!-- æ’件版本 -->
        <maven-jar-plugin.version>3.2.2</maven-jar-plugin.version>
ruoyi-common/ruoyi-common-bom/pom.xml
@@ -14,7 +14,7 @@
    </description>
    <properties>
        <revision>5.3.0-BETA</revision>
        <revision>5.3.0</revision>
    </properties>
    <dependencyManagement>
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/StartProcessReturnDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package org.dromara.common.core.domain.dto;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
 * å¯åŠ¨æµç¨‹è¿”å›žå¯¹è±¡
 *
 * @author Lion Li
 */
@Data
public class StartProcessReturnDTO implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    /**
     * æµç¨‹å®žä¾‹id
     */
    private Long processInstanceId;
    /**
     * ä»»åŠ¡id
     */
    private Long taskId;
}
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessEvent.java
@@ -4,6 +4,7 @@
import java.io.Serial;
import java.io.Serializable;
import java.util.Map;
/**
 * æ€»ä½“流程监听
@@ -37,6 +38,11 @@
    private String status;
    /**
     * åŠžç†å‚æ•°
     */
    private Map<String, Object> params;
    /**
     * å½“为true时为申请人节点办理
     */
    private boolean submit;
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java
@@ -2,6 +2,7 @@
import org.dromara.common.core.domain.dto.CompleteTaskDTO;
import org.dromara.common.core.domain.dto.StartProcessDTO;
import org.dromara.common.core.domain.dto.StartProcessReturnDTO;
import java.util.List;
import java.util.Map;
@@ -46,6 +47,13 @@
    void setVariable(Long instanceId, Map<String, Object> variable);
    /**
     * èŽ·å–æµç¨‹å˜é‡
     *
     * @param instanceId æµç¨‹å®žä¾‹id
     */
    Map<String, Object> instanceVariable(Long instanceId);
    /**
     * æŒ‰ç…§ä¸šåŠ¡id查询流程实例id
     *
     * @param businessId ä¸šåŠ¡id
@@ -66,7 +74,7 @@
     * @param startProcess å‚æ•°
     * @return ç»“æžœ
     */
    Map<String, Object> startWorkFlow(StartProcessDTO startProcess);
    StartProcessReturnDTO startWorkFlow(StartProcessDTO startProcess);
    /**
     * åŠžç†ä»»åŠ¡
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwCategoryController.java
@@ -125,7 +125,7 @@
     * @param categoryBo æµç¨‹åˆ†ç±»
     */
    @GetMapping("/categoryTree")
    public R<List<Tree<Long>>> categoryTree(FlowCategoryBo categoryBo) {
    public R<List<Tree<String>>> categoryTree(FlowCategoryBo categoryBo) {
        return R.ok(flwCategoryService.selectCategoryTreeList(categoryBo));
    }
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java
@@ -138,7 +138,7 @@
     * @param instanceId æµç¨‹å®žä¾‹id
     */
    @GetMapping("/instanceVariable/{instanceId}")
    public R<Map<String, Object>> instanceVariable(@PathVariable String instanceId) {
    public R<Map<String, Object>> instanceVariable(@PathVariable Long instanceId) {
        return R.ok(flwInstanceService.instanceVariable(instanceId));
    }
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java
@@ -2,6 +2,7 @@
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.domain.dto.StartProcessReturnDTO;
import org.dromara.common.core.domain.dto.UserDTO;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
@@ -20,7 +21,6 @@
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
 * ä»»åŠ¡ç®¡ç† æŽ§åˆ¶å±‚
@@ -44,9 +44,9 @@
    @Log(title = "任务管理", businessType = BusinessType.INSERT)
    @RepeatSubmit()
    @PostMapping("/startWorkFlow")
    public R<Map<String, Object>> startWorkFlow(@Validated(AddGroup.class) @RequestBody StartProcessBo startProcessBo) {
        Map<String, Object> map = flwTaskService.startWorkFlow(startProcessBo);
        return R.ok("提交成功", map);
    public R<StartProcessReturnDTO> startWorkFlow(@Validated(AddGroup.class) @RequestBody StartProcessBo startProcessBo) {
        StartProcessReturnDTO startProcessReturn = flwTaskService.startWorkFlow(startProcessBo);
        return R.ok("提交成功", startProcessReturn);
    }
    /**
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/BackProcessBo.java
@@ -31,6 +31,11 @@
    private Long taskId;
    /**
     * é™„ä»¶id
     */
    private String fileId;
    /**
     * æ¶ˆæ¯ç±»åž‹
     */
    private List<String> messageType;
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowCategoryVo.java
@@ -4,8 +4,6 @@
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.workflow.domain.FlowCategory;
import java.io.Serial;
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java
@@ -9,6 +9,8 @@
import org.dromara.workflow.common.ConditionalOnEnable;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
 * æµç¨‹ç›‘听服务
 *
@@ -28,7 +30,7 @@
     * @param status     çŠ¶æ€
     * @param submit     å½“为true时为申请人节点办理
     */
    public void processHandler(String flowCode, String businessId, String status, boolean submit) {
    public void processHandler(String flowCode, String businessId, String status, Map<String, Object> params, boolean submit) {
        String tenantId = TenantHelper.getTenantId();
        log.info("发布流程事件,租户ID: {}, æµç¨‹çŠ¶æ€: {}, æµç¨‹ç¼–码: {}, ä¸šåŠ¡ID: {}, æ˜¯å¦ç”³è¯·äººèŠ‚ç‚¹åŠžç†: {}", tenantId, status, flowCode, businessId, submit);
        ProcessEvent processEvent = new ProcessEvent();
@@ -36,6 +38,7 @@
        processEvent.setFlowCode(flowCode);
        processEvent.setBusinessId(businessId);
        processEvent.setStatus(status);
        processEvent.setParams(params);
        processEvent.setSubmit(submit);
        SpringUtils.context().publishEvent(processEvent);
    }
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java
@@ -17,7 +17,9 @@
import org.dromara.workflow.service.IFlwTaskService;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * å…¨å±€ä»»åŠ¡åŠžç†ç›‘å¬
@@ -81,10 +83,17 @@
        Definition definition = listenerVariable.getDefinition();
        String businessId = instance.getBusinessId();
        String flowStatus = instance.getFlowStatus();
        Map<String, Object> params = new HashMap<>();
        // åŽ†å²ä»»åŠ¡æ‰©å±•(通常为附件)
        params.put("hisTaskExt", listenerVariable.getFlowParams().getHisTaskExt());
        // åŠžç†äºº
        params.put("handler", listenerVariable.getFlowParams().getHandler());
        // åŠžç†æ„è§
        params.put("message", listenerVariable.getFlowParams().getMessage());
        // åˆ¤æ–­æµç¨‹çŠ¶æ€ï¼ˆå‘å¸ƒï¼šæ’¤é”€ï¼Œé€€å›žï¼Œä½œåºŸï¼Œç»ˆæ­¢ï¼Œå·²å®Œæˆäº‹ä»¶ï¼‰
        String status = determineFlowStatus(instance, flowStatus);
        if (StringUtils.isNotBlank(status)) {
            flowProcessEventHandler.processHandler(definition.getFlowCode(), businessId, status, false);
            flowProcessEventHandler.processHandler(definition.getFlowCode(), businessId, status, params, false);
        }
    }
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwCategoryService.java
@@ -27,7 +27,7 @@
     * @param categoryId æµç¨‹åˆ†ç±»ID
     * @return æµç¨‹åˆ†ç±»åç§°
     */
    String selectCategoryNameById(String categoryId);
    String selectCategoryNameById(Long categoryId);
    /**
     * æŸ¥è¯¢ç¬¦åˆæ¡ä»¶çš„æµç¨‹åˆ†ç±»åˆ—表
@@ -43,7 +43,7 @@
     * @param category æµç¨‹åˆ†ç±»ä¿¡æ¯
     * @return æµç¨‹åˆ†ç±»æ ‘信息集合
     */
    List<Tree<Long>> selectCategoryTreeList(FlowCategoryBo category);
    List<Tree<String>> selectCategoryTreeList(FlowCategoryBo category);
    /**
     * æ ¡éªŒæµç¨‹åˆ†ç±»æ˜¯å¦æœ‰æ•°æ®æƒé™
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java
@@ -123,7 +123,7 @@
     * @param instanceId å®žä¾‹id
     * @return ç»“æžœ
     */
    Map<String, Object> instanceVariable(String instanceId);
    Map<String, Object> instanceVariable(Long instanceId);
    /**
     * è®¾ç½®æµç¨‹å˜é‡
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java
@@ -1,5 +1,6 @@
package org.dromara.workflow.service;
import org.dromara.common.core.domain.dto.StartProcessReturnDTO;
import org.dromara.common.core.domain.dto.UserDTO;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -26,7 +27,7 @@
     * @param startProcessBo å¯åŠ¨æµç¨‹å‚æ•°
     * @return ç»“æžœ
     */
    Map<String, Object> startWorkFlow(StartProcessBo startProcessBo);
    StartProcessReturnDTO startWorkFlow(StartProcessBo startProcessBo);
    /**
     * åŠžç†ä»»åŠ¡
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/CategoryNameTranslationImpl.java
@@ -1,5 +1,6 @@
package org.dromara.workflow.service.impl;
import cn.hutool.core.convert.Convert;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.translation.annotation.TranslationType;
@@ -25,9 +26,12 @@
    @Override
    public String translation(Object key, String other) {
        Long id = null;
        if (key instanceof String categoryId) {
            return flwCategoryService.selectCategoryNameById(categoryId);
            id = Convert.toLong(categoryId);
        } else if (key instanceof Long categoryId) {
            id = categoryId;
        }
        return null;
        return flwCategoryService.selectCategoryNameById(id);
    }
}
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java
@@ -66,8 +66,8 @@
     */
    @Cacheable(cacheNames = FlowConstant.FLOW_CATEGORY_NAME, key = "#categoryId")
    @Override
    public String selectCategoryNameById(String categoryId) {
        if (StringUtils.isBlank(categoryId)) {
    public String selectCategoryNameById(Long categoryId) {
        if (ObjectUtil.isNull(categoryId)) {
            return null;
        }
        FlowCategory category = baseMapper.selectOne(new LambdaQueryWrapper<FlowCategory>()
@@ -94,24 +94,24 @@
     * @return æµç¨‹åˆ†ç±»æ ‘信息集合
     */
    @Override
    public List<Tree<Long>> selectCategoryTreeList(FlowCategoryBo category) {
    public List<Tree<String>> selectCategoryTreeList(FlowCategoryBo category) {
        LambdaQueryWrapper<FlowCategory> lqw = buildQueryWrapper(category);
        List<FlowCategoryVo> categorys = baseMapper.selectVoList(lqw);
        if (CollUtil.isEmpty(categorys)) {
            return CollUtil.newArrayList();
        }
        // èŽ·å–å½“å‰åˆ—è¡¨ä¸­æ¯ä¸€ä¸ªèŠ‚ç‚¹çš„parentId,然后在列表中查找是否有id与其parentId对应,若无对应,则表明此时节点列表中,该节点在当前列表中属于顶级节点
        List<Tree<Long>> treeList = CollUtil.newArrayList();
        List<Tree<String>> treeList = CollUtil.newArrayList();
        for (FlowCategoryVo d : categorys) {
            Long parentId = d.getParentId();
            FlowCategoryVo categoryVo = StreamUtils.findFirst(categorys, it -> it.getCategoryId().longValue() == parentId);
            String parentId = d.getParentId().toString();
            FlowCategoryVo categoryVo = StreamUtils.findFirst(categorys, it -> it.getCategoryId().toString().equals(parentId));
            if (ObjectUtil.isNull(categoryVo)) {
                List<Tree<Long>> trees = TreeBuildUtils.build(categorys, parentId, (dept, tree) ->
                    tree.setId(dept.getCategoryId())
                        .setParentId(dept.getParentId())
                List<Tree<String>> trees = TreeBuildUtils.build(categorys, parentId, (dept, tree) ->
                    tree.setId(dept.getCategoryId().toString())
                        .setParentId(dept.getParentId().toString())
                        .setName(dept.getCategoryName())
                        .setWeight(dept.getOrderNum()));
                Tree<Long> tree = StreamUtils.findFirst(trees, it -> it.getId().longValue() == d.getCategoryId());
                Tree<String> tree = StreamUtils.findFirst(trees, it -> it.getId().equals(d.getCategoryId().toString()));
                treeList.add(tree);
            }
        }
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java
@@ -107,7 +107,7 @@
        wrapper.like(StringUtils.isNotBlank(flowDefinition.getFlowName()), FlowDefinition::getFlowName, flowDefinition.getFlowName());
        if (StringUtils.isNotBlank(flowDefinition.getCategory())) {
            List<Long> categoryIds = flwCategoryMapper.selectCategoryIdsByParentId(Convert.toLong(flowDefinition.getCategory()));
            wrapper.in(FlowDefinition::getCategory, categoryIds);
            wrapper.in(FlowDefinition::getCategory, StreamUtils.toList(categoryIds, Convert::toStr));
        }
        wrapper.orderByDesc(FlowDefinition::getCreateTime);
        return wrapper;
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java
@@ -138,7 +138,7 @@
        queryWrapper.like(StringUtils.isNotBlank(flowInstanceBo.getFlowCode()), "fd.flow_code", flowInstanceBo.getFlowCode());
        if (StringUtils.isNotBlank(flowInstanceBo.getCategory())) {
            List<Long> categoryIds = flwCategoryMapper.selectCategoryIdsByParentId(Convert.toLong(flowInstanceBo.getCategory()));
            queryWrapper.in("fd.category", categoryIds);
            queryWrapper.in("fd.category", StreamUtils.toList(categoryIds, Convert::toStr));
        }
        queryWrapper.eq(StringUtils.isNotBlank(flowInstanceBo.getBusinessId()), "fi.business_id", flowInstanceBo.getBusinessId());
        queryWrapper.in(CollUtil.isNotEmpty(flowInstanceBo.getCreateByIds()), "fi.create_by", flowInstanceBo.getCreateByIds());
@@ -344,7 +344,7 @@
     * @param instanceId å®žä¾‹id
     */
    @Override
    public Map<String, Object> instanceVariable(String instanceId) {
    public Map<String, Object> instanceVariable(Long instanceId) {
        Map<String, Object> map = new HashMap<>();
        FlowInstance flowInstance = flowInstanceMapper.selectById(instanceId);
        Map<String, Object> variableMap = flowInstance.getVariableMap();
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java
@@ -11,6 +11,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.dto.StartProcessReturnDTO;
import org.dromara.common.core.domain.dto.UserDTO;
import org.dromara.common.core.enums.BusinessStatusEnum;
import org.dromara.common.core.exception.ServiceException;
@@ -86,7 +87,7 @@
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Map<String, Object> startWorkFlow(StartProcessBo startProcessBo) {
    public StartProcessReturnDTO startWorkFlow(StartProcessBo startProcessBo) {
        String businessId = startProcessBo.getBusinessId();
        if (StringUtils.isBlank(businessId)) {
            throw new ServiceException("启动工作流时必须包含业务ID");
@@ -102,7 +103,10 @@
        if (ObjectUtil.isNotNull(flowInstance)) {
            BusinessStatusEnum.checkStartStatus(flowInstance.getFlowStatus());
            List<Task> taskList = taskService.list(new FlowTask().setInstanceId(flowInstance.getId()));
            return Map.of(PROCESS_INSTANCE_ID, taskList.get(0).getInstanceId(), TASK_ID, taskList.get(0).getId());
            StartProcessReturnDTO dto = new StartProcessReturnDTO();
            dto.setProcessInstanceId(taskList.get(0).getInstanceId());
            dto.setTaskId(taskList.get(0).getId());
            return dto;
        }
        FlowParams flowParams = new FlowParams();
        flowParams.flowCode(startProcessBo.getFlowCode());
@@ -119,7 +123,10 @@
        if (taskList.size() > 1) {
            throw new ServiceException("请检查流程第一个环节是否为申请人!");
        }
        return Map.of(PROCESS_INSTANCE_ID, instance.getId(), TASK_ID, taskList.get(0).getId());
        StartProcessReturnDTO dto = new StartProcessReturnDTO();
        dto.setProcessInstanceId(instance.getId());
        dto.setTaskId(taskList.get(0).getId());
        return dto;
    }
    /**
@@ -146,7 +153,7 @@
            Definition definition = defService.getById(flowTask.getDefinitionId());
            // æ£€æŸ¥æµç¨‹çŠ¶æ€æ˜¯å¦ä¸ºè‰ç¨¿ã€å·²æ’¤é”€æˆ–å·²é€€å›žçŠ¶æ€ï¼Œè‹¥æ˜¯åˆ™æ‰§è¡Œæµç¨‹æäº¤ç›‘å¬
            if (BusinessStatusEnum.isDraftOrCancelOrBack(ins.getFlowStatus())) {
                flowProcessEventHandler.processHandler(definition.getFlowCode(), ins.getBusinessId(), ins.getFlowStatus(), true);
                flowProcessEventHandler.processHandler(definition.getFlowCode(), ins.getBusinessId(), ins.getFlowStatus(), null, true);
            }
            // æž„建流程参数,包括变量、跳转类型、消息、处理人、权限等信息
            FlowParams flowParams = new FlowParams();
@@ -347,7 +354,7 @@
        wrapper.in(CollUtil.isNotEmpty(flowTaskBo.getCreateByIds()), "t.create_by", flowTaskBo.getCreateByIds());
        if (StringUtils.isNotBlank(flowTaskBo.getCategory())) {
            List<Long> categoryIds = flwCategoryMapper.selectCategoryIdsByParentId(Convert.toLong(flowTaskBo.getCategory()));
            wrapper.in("t.category", categoryIds);
            wrapper.in("t.category", StreamUtils.toList(categoryIds, Convert::toStr));
        }
        wrapper.orderByDesc("t.create_time");
        return wrapper;
@@ -381,6 +388,7 @@
            flowParams.skipType(SkipType.REJECT.getKey());
            flowParams.flowStatus(applyNodeCode.equals(bo.getNodeCode()) ? TaskStatusEnum.BACK.getStatus() : TaskStatusEnum.WAITING.getStatus())
                .hisStatus(TaskStatusEnum.BACK.getStatus());
            flowParams.hisTaskExt(bo.getFileId());
            taskService.skip(task.getId(), flowParams);
            Instance instance = insService.getById(inst.getId());
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java
@@ -1,6 +1,8 @@
package org.dromara.workflow.service.impl;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -28,6 +30,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
/**
 * è¯·å‡Service业务层处理
@@ -131,6 +134,16 @@
        log.info("当前任务执行了{}", processEvent.toString());
        TestLeave testLeave = baseMapper.selectById(Long.valueOf(processEvent.getBusinessId()));
        testLeave.setStatus(processEvent.getStatus());
        // ç”¨äºŽä¾‹å¦‚审批附件 å®¡æ‰¹æ„è§ç­‰ å­˜å‚¨åˆ°ä¸šåŠ¡è¡¨å†… è‡ªè¡Œæ ¹æ®ä¸šåŠ¡å®žçŽ°å­˜å‚¨æµç¨‹
        Map<String, Object> params = processEvent.getParams();
        if (MapUtil.isNotEmpty(params)) {
            // åŽ†å²ä»»åŠ¡æ‰©å±•(通常为附件)
            String hisTaskExt = Convert.toStr(params.get("hisTaskExt"));
            // åŠžç†äºº
            String handler = Convert.toStr(params.get("handler"));
            // åŠžç†æ„è§
            String message = Convert.toStr(params.get("message"));
        }
        if (processEvent.isSubmit()) {
            testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus());
        }
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java
@@ -5,6 +5,7 @@
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.dto.CompleteTaskDTO;
import org.dromara.common.core.domain.dto.StartProcessDTO;
import org.dromara.common.core.domain.dto.StartProcessReturnDTO;
import org.dromara.common.core.service.WorkflowService;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.warm.flow.orm.entity.FlowInstance;
@@ -78,6 +79,16 @@
    }
    /**
     * èŽ·å–æµç¨‹å˜é‡
     *
     * @param instanceId æµç¨‹å®žä¾‹id
     */
    @Override
    public Map<String, Object> instanceVariable(Long instanceId) {
        return flwInstanceService.instanceVariable(instanceId);
    }
    /**
     * æŒ‰ç…§ä¸šåŠ¡id查询流程实例id
     *
     * @param businessId ä¸šåŠ¡id
@@ -105,7 +116,7 @@
     * @param startProcess å‚æ•°
     */
    @Override
    public Map<String, Object> startWorkFlow(StartProcessDTO startProcess) {
    public StartProcessReturnDTO startWorkFlow(StartProcessDTO startProcess) {
        return flwTaskService.startWorkFlow(BeanUtil.toBean(startProcess, StartProcessBo.class));
    }
script/docker/docker-compose.yml
@@ -98,7 +98,7 @@
    network_mode: "host"
  ruoyi-server1:
    image: ruoyi/ruoyi-server:5.3.0-BETA
    image: ruoyi/ruoyi-server:5.3.0
    container_name: ruoyi-server1
    environment:
      # æ—¶åŒºä¸Šæµ·
@@ -113,7 +113,7 @@
    network_mode: "host"
  ruoyi-server2:
    image: ruoyi/ruoyi-server:5.3.0-BETA
    image: ruoyi/ruoyi-server:5.3.0
    container_name: ruoyi-server2
    environment:
      # æ—¶åŒºä¸Šæµ·
@@ -128,7 +128,7 @@
    network_mode: "host"
  ruoyi-monitor-admin:
    image: ruoyi/ruoyi-monitor-admin:5.3.0-BETA
    image: ruoyi/ruoyi-monitor-admin:5.3.0
    container_name: ruoyi-monitor-admin
    environment:
      # æ—¶åŒºä¸Šæµ·
@@ -140,7 +140,7 @@
    network_mode: "host"
  ruoyi-snailjob-server:
    image: ruoyi/ruoyi-snailjob-server:5.3.0-BETA
    image: ruoyi/ruoyi-snailjob-server:5.3.0
    container_name: ruoyi-snailjob-server
    environment:
      # æ—¶åŒºä¸Šæµ·
script/sql/oracle/oracle_ry_vue_5.X.sql
@@ -615,6 +615,8 @@
insert into sys_role_menu values ('3', '106');
insert into sys_role_menu values ('3', '107');
insert into sys_role_menu values ('3', '108');
insert into sys_role_menu values ('3', '118');
insert into sys_role_menu values ('3', '123');
insert into sys_role_menu values ('3', '500');
insert into sys_role_menu values ('3', '501');
insert into sys_role_menu values ('3', '1001');
@@ -662,6 +664,12 @@
insert into sys_role_menu values ('3', '1043');
insert into sys_role_menu values ('3', '1044');
insert into sys_role_menu values ('3', '1045');
insert into sys_role_menu values ('3', '1050');
insert into sys_role_menu values ('3', '1061');
insert into sys_role_menu values ('3', '1062');
insert into sys_role_menu values ('3', '1063');
insert into sys_role_menu values ('3', '1064');
insert into sys_role_menu values ('3', '1065');
insert into sys_role_menu values ('3', '1500');
insert into sys_role_menu values ('3', '1501');
insert into sys_role_menu values ('3', '1502');
@@ -674,6 +682,25 @@
insert into sys_role_menu values ('3', '1509');
insert into sys_role_menu values ('3', '1510');
insert into sys_role_menu values ('3', '1511');
insert into sys_role_menu values ('3', '1600');
insert into sys_role_menu values ('3', '1601');
insert into sys_role_menu values ('3', '1602');
insert into sys_role_menu values ('3', '1603');
insert into sys_role_menu values ('3', '1620');
insert into sys_role_menu values ('3', '1621');
insert into sys_role_menu values ('3', '1622');
insert into sys_role_menu values ('3', '1623');
insert into sys_role_menu values ('3', '11618');
insert into sys_role_menu values ('3', '11619');
insert into sys_role_menu values ('3', '11629');
insert into sys_role_menu values ('3', '11632');
insert into sys_role_menu values ('3', '11633');
insert into sys_role_menu values ('3', '11638');
insert into sys_role_menu values ('3', '11639');
insert into sys_role_menu values ('3', '11640');
insert into sys_role_menu values ('3', '11641');
insert into sys_role_menu values ('3', '11642');
insert into sys_role_menu values ('3', '11643');
insert into sys_role_menu values ('4', '5');
insert into sys_role_menu values ('4', '1500');
insert into sys_role_menu values ('4', '1501');
script/sql/postgres/postgres_ry_vue_5.X.sql
@@ -617,6 +617,8 @@
insert into sys_role_menu values ('3', '106');
insert into sys_role_menu values ('3', '107');
insert into sys_role_menu values ('3', '108');
insert into sys_role_menu values ('3', '118');
insert into sys_role_menu values ('3', '123');
insert into sys_role_menu values ('3', '500');
insert into sys_role_menu values ('3', '501');
insert into sys_role_menu values ('3', '1001');
@@ -664,6 +666,12 @@
insert into sys_role_menu values ('3', '1043');
insert into sys_role_menu values ('3', '1044');
insert into sys_role_menu values ('3', '1045');
insert into sys_role_menu values ('3', '1050');
insert into sys_role_menu values ('3', '1061');
insert into sys_role_menu values ('3', '1062');
insert into sys_role_menu values ('3', '1063');
insert into sys_role_menu values ('3', '1064');
insert into sys_role_menu values ('3', '1065');
insert into sys_role_menu values ('3', '1500');
insert into sys_role_menu values ('3', '1501');
insert into sys_role_menu values ('3', '1502');
@@ -676,6 +684,25 @@
insert into sys_role_menu values ('3', '1509');
insert into sys_role_menu values ('3', '1510');
insert into sys_role_menu values ('3', '1511');
insert into sys_role_menu values ('3', '1600');
insert into sys_role_menu values ('3', '1601');
insert into sys_role_menu values ('3', '1602');
insert into sys_role_menu values ('3', '1603');
insert into sys_role_menu values ('3', '1620');
insert into sys_role_menu values ('3', '1621');
insert into sys_role_menu values ('3', '1622');
insert into sys_role_menu values ('3', '1623');
insert into sys_role_menu values ('3', '11618');
insert into sys_role_menu values ('3', '11619');
insert into sys_role_menu values ('3', '11629');
insert into sys_role_menu values ('3', '11632');
insert into sys_role_menu values ('3', '11633');
insert into sys_role_menu values ('3', '11638');
insert into sys_role_menu values ('3', '11639');
insert into sys_role_menu values ('3', '11640');
insert into sys_role_menu values ('3', '11641');
insert into sys_role_menu values ('3', '11642');
insert into sys_role_menu values ('3', '11643');
insert into sys_role_menu values ('4', '5');
insert into sys_role_menu values ('4', '1500');
insert into sys_role_menu values ('4', '1501');
script/sql/postgres/postgres_ry_workflow.sql
@@ -136,6 +136,7 @@
    variable        text         NULL,                                     -- ä»»åŠ¡å˜é‡
    flow_status     varchar(20)  NOT NULL,                                 -- æµç¨‹çŠ¶æ€ï¼ˆ0待提交 1审批中 2 å®¡æ‰¹é€šè¿‡ 8已完成 9已退回 10失效)
    activity_status int2         NOT NULL DEFAULT 1,                       -- æµç¨‹æ¿€æ´»çŠ¶æ€ï¼ˆ0挂起 1激活)
    def_json        text         NULL,                                     -- æµç¨‹å®šä¹‰json
    create_by       varchar(64)  NULL     DEFAULT '':: character varying,  -- åˆ›å»ºè€…
    create_time     timestamp    NULL,                                     -- åˆ›å»ºæ—¶é—´
    update_time     timestamp    NULL,                                     -- æ›´æ–°æ—¶é—´
@@ -155,6 +156,7 @@
COMMENT ON COLUMN flow_instance.variable IS '任务变量';
COMMENT ON COLUMN flow_instance.flow_status IS '流程状态(0待提交 1审批中 2 å®¡æ‰¹é€šè¿‡ 3自动通过 4终止 5作废 6撤销 7取回  8已完成 9已退回 10失效)';
COMMENT ON COLUMN flow_instance.activity_status IS '流程激活状态(0挂起 1激活)';
COMMENT ON COLUMN flow_instance.def_json IS '流程定义json';
COMMENT ON COLUMN flow_instance.create_by IS '创建者';
COMMENT ON COLUMN flow_instance.create_time IS '创建时间';
COMMENT ON COLUMN flow_instance.update_time IS '更新时间';
@@ -199,8 +201,8 @@
    definition_id    int8         NOT NULL,                                 -- å¯¹åº”flow_definition表的id
    instance_id      int8         NOT NULL,                                 -- å¯¹åº”flow_instance表的id
    task_id          int8         NOT NULL,                                 -- å¯¹åº”flow_task表的id
    node_code        varchar(100) NULL,                                     -- å¼€å§‹èŠ‚ç‚¹ç¼–ç 
    node_name        varchar(100) NULL,                                     -- å¼€å§‹èŠ‚ç‚¹åç§°
    node_code        varchar(200) NULL,                                     -- å¼€å§‹èŠ‚ç‚¹ç¼–ç 
    node_name        varchar(200) NULL,                                     -- å¼€å§‹èŠ‚ç‚¹åç§°
    node_type        int2         NULL,                                     -- å¼€å§‹èŠ‚ç‚¹ç±»åž‹ï¼ˆ0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关)
    target_node_code varchar(200) NULL,                                     -- ç›®æ ‡èŠ‚ç‚¹ç¼–ç 
    target_node_name varchar(200) NULL,                                     -- ç»“束节点名称
script/sql/ry_vue_5.X.sql
@@ -441,6 +441,8 @@
insert into sys_role_menu values ('3', '106');
insert into sys_role_menu values ('3', '107');
insert into sys_role_menu values ('3', '108');
insert into sys_role_menu values ('3', '118');
insert into sys_role_menu values ('3', '123');
insert into sys_role_menu values ('3', '500');
insert into sys_role_menu values ('3', '501');
insert into sys_role_menu values ('3', '1001');
@@ -488,6 +490,12 @@
insert into sys_role_menu values ('3', '1043');
insert into sys_role_menu values ('3', '1044');
insert into sys_role_menu values ('3', '1045');
insert into sys_role_menu values ('3', '1050');
insert into sys_role_menu values ('3', '1061');
insert into sys_role_menu values ('3', '1062');
insert into sys_role_menu values ('3', '1063');
insert into sys_role_menu values ('3', '1064');
insert into sys_role_menu values ('3', '1065');
insert into sys_role_menu values ('3', '1500');
insert into sys_role_menu values ('3', '1501');
insert into sys_role_menu values ('3', '1502');
@@ -500,6 +508,25 @@
insert into sys_role_menu values ('3', '1509');
insert into sys_role_menu values ('3', '1510');
insert into sys_role_menu values ('3', '1511');
insert into sys_role_menu values ('3', '1600');
insert into sys_role_menu values ('3', '1601');
insert into sys_role_menu values ('3', '1602');
insert into sys_role_menu values ('3', '1603');
insert into sys_role_menu values ('3', '1620');
insert into sys_role_menu values ('3', '1621');
insert into sys_role_menu values ('3', '1622');
insert into sys_role_menu values ('3', '1623');
insert into sys_role_menu values ('3', '11618');
insert into sys_role_menu values ('3', '11619');
insert into sys_role_menu values ('3', '11629');
insert into sys_role_menu values ('3', '11632');
insert into sys_role_menu values ('3', '11633');
insert into sys_role_menu values ('3', '11638');
insert into sys_role_menu values ('3', '11639');
insert into sys_role_menu values ('3', '11640');
insert into sys_role_menu values ('3', '11641');
insert into sys_role_menu values ('3', '11642');
insert into sys_role_menu values ('3', '11643');
insert into sys_role_menu values ('4', '5');
insert into sys_role_menu values ('4', '1500');
insert into sys_role_menu values ('4', '1501');
script/sql/sqlserver/sqlserver_ry_vue_5.X.sql
@@ -1239,7 +1239,7 @@
GO
INSERT sys_dict_data VALUES (19, N'000000', 2, N'修改', N'2', N'sys_oper_type', N'', N'info', N'N', 103, 1, getdate(), NULL, NULL, N'修改操作')
GO
INSERT sys_dict_data VALUES (20, N'000000', 3, N'删除', N'3', N'sys_oper_type', N'', N'danger', N'N', 103, 1, getdate(), NULL, NULL, N'删除操作')
INSERT sys_dict_data VALUES (20, N'000000', 3, N'删除', N3, N'sys_oper_type', N'', N'danger', N'N', 103, 1, getdate(), NULL, NULL, N'删除操作')
GO
INSERT sys_dict_data VALUES (21, N'000000', 4, N'授权', N'4', N'sys_oper_type', N'', N'primary', N'N', 103, 1, getdate(), NULL, NULL, N'授权操作')
GO
@@ -2479,6 +2479,10 @@
GO
INSERT sys_role_menu VALUES (3, 108);
GO
INSERT sys_role_menu VALUES (3, 118);
GO
INSERT sys_role_menu VALUES (3, 123);
GO
INSERT sys_role_menu VALUES (3, 500);
GO
INSERT sys_role_menu VALUES (3, 501);
@@ -2573,6 +2577,18 @@
GO
INSERT sys_role_menu VALUES (3, 1045);
GO
INSERT sys_role_menu VALUES (3, 1050);
GO
INSERT sys_role_menu VALUES (3, 1061);
GO
INSERT sys_role_menu VALUES (3, 1062);
GO
INSERT sys_role_menu VALUES (3, 1063);
GO
INSERT sys_role_menu VALUES (3, 1064);
GO
INSERT sys_role_menu VALUES (3, 1065);
GO
INSERT sys_role_menu VALUES (3, 1500);
GO
INSERT sys_role_menu VALUES (3, 1501);
@@ -2596,6 +2612,44 @@
INSERT sys_role_menu VALUES (3, 1510);
GO
INSERT sys_role_menu VALUES (3, 1511);
GO
INSERT sys_role_menu VALUES (3, 1600);
GO
INSERT sys_role_menu VALUES (3, 1601);
GO
INSERT sys_role_menu VALUES (3, 1602);
GO
INSERT sys_role_menu VALUES (3, 1603);
GO
INSERT sys_role_menu VALUES (3, 1620);
GO
INSERT sys_role_menu VALUES (3, 1621);
GO
INSERT sys_role_menu VALUES (3, 1622);
GO
INSERT sys_role_menu VALUES (3, 1623);
GO
INSERT sys_role_menu VALUES (3, 11618);
GO
INSERT sys_role_menu VALUES (3, 11619);
GO
INSERT sys_role_menu VALUES (3, 11629);
GO
INSERT sys_role_menu VALUES (3, 11632);
GO
INSERT sys_role_menu VALUES (3, 11633);
GO
INSERT sys_role_menu VALUES (3, 11638);
GO
INSERT sys_role_menu VALUES (3, 11639);
GO
INSERT sys_role_menu VALUES (3, 11640);
GO
INSERT sys_role_menu VALUES (3, 11641);
GO
INSERT sys_role_menu VALUES (3, 11642);
GO
INSERT sys_role_menu VALUES (3, 11643);
GO
INSERT sys_role_menu VALUES (4, 5);
GO
@@ -3119,7 +3173,7 @@
GO
INSERT INTO sys_oss_config VALUES (N'2', N'000000', N'qiniu', N'XXXXXXXXXXXXXXXX', N'XXXXXXXXXXXXXXX', N'ruoyi',            N'', N's3-cn-north-1.qiniucs.com',         N'',N'N', N'',           N'1', N'1', N'', 103, 1, getdate(), 1, getdate(), NULL)
GO
INSERT INTO sys_oss_config VALUES (N'3', N'000000', N'aliyun', N'XXXXXXXXXXXXXXX', N'XXXXXXXXXXXXXXX', N'ruoyi',            N'', N'oss-cn-beijing.aliyuncs.com',       N'',N'N', N'',           N'1', N'1', N'', 103, 1, getdate(), 1, getdate(), NULL)
INSERT INTO sys_oss_config VALUES (N3, N'000000', N'aliyun', N'XXXXXXXXXXXXXXX', N'XXXXXXXXXXXXXXX', N'ruoyi',            N'', N'oss-cn-beijing.aliyuncs.com',       N'',N'N', N'',           N'1', N'1', N'', 103, 1, getdate(), 1, getdate(), NULL)
GO
INSERT INTO sys_oss_config VALUES (N'4', N'000000', N'qcloud', N'XXXXXXXXXXXXXXX', N'XXXXXXXXXXXXXXX', N'ruoyi-1250000000', N'', N'cos.ap-beijing.myqcloud.com',       N'',N'N', N'ap-beijing', N'1', N'1', N'', 103, 1, getdate(), 1, getdate(), NULL)
GO