mirror of
				https://github.com/dromara/RuoYi-Vue-Plus.git
				synced 2025-11-04 16:23:42 +08:00 
			
		
		
		
	@@ -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>
 | 
			
		||||
 
 | 
			
		||||
@@ -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>
 | 
			
		||||
 
 | 
			
		||||
@@ -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>
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@
 | 
			
		||||
[](https://gitee.com/dromara/RuoYi-Vue-Plus/blob/master/LICENSE)
 | 
			
		||||
[](https://www.jetbrains.com/?from=RuoYi-Vue-Plus)
 | 
			
		||||
<br>
 | 
			
		||||
[](https://gitee.com/dromara/RuoYi-Vue-Plus)
 | 
			
		||||
[](https://gitee.com/dromara/RuoYi-Vue-Plus)
 | 
			
		||||
[]()
 | 
			
		||||
[]()
 | 
			
		||||
[]()
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								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>
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
    </description>
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
        <revision>5.3.0-BETA</revision>
 | 
			
		||||
        <revision>5.3.0</revision>
 | 
			
		||||
    </properties>
 | 
			
		||||
 | 
			
		||||
    <dependencyManagement>
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -4,6 +4,7 @@ import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import java.io.Serial;
 | 
			
		||||
import java.io.Serializable;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 总体流程监听
 | 
			
		||||
@@ -36,6 +37,11 @@ public class ProcessEvent implements Serializable {
 | 
			
		||||
     */
 | 
			
		||||
    private String status;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 办理参数
 | 
			
		||||
     */
 | 
			
		||||
    private Map<String, Object> params;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 当为true时为申请人节点办理
 | 
			
		||||
     */
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@ package org.dromara.common.core.service;
 | 
			
		||||
 | 
			
		||||
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;
 | 
			
		||||
@@ -45,6 +46,13 @@ public interface WorkflowService {
 | 
			
		||||
     */
 | 
			
		||||
    void setVariable(Long instanceId, Map<String, Object> variable);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获取流程变量
 | 
			
		||||
     *
 | 
			
		||||
     * @param instanceId 流程实例id
 | 
			
		||||
     */
 | 
			
		||||
    Map<String, Object> instanceVariable(Long instanceId);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 按照业务id查询流程实例id
 | 
			
		||||
     *
 | 
			
		||||
@@ -66,7 +74,7 @@ public interface WorkflowService {
 | 
			
		||||
     * @param startProcess 参数
 | 
			
		||||
     * @return 结果
 | 
			
		||||
     */
 | 
			
		||||
    Map<String, Object> startWorkFlow(StartProcessDTO startProcess);
 | 
			
		||||
    StartProcessReturnDTO startWorkFlow(StartProcessDTO startProcess);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 办理任务
 | 
			
		||||
 
 | 
			
		||||
@@ -125,7 +125,7 @@ public class FlwCategoryController extends BaseController {
 | 
			
		||||
     * @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));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -138,7 +138,7 @@ public class FlwInstanceController extends BaseController {
 | 
			
		||||
     * @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));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@ package org.dromara.workflow.controller;
 | 
			
		||||
 | 
			
		||||
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.validation.annotation.Validated;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 任务管理 控制层
 | 
			
		||||
@@ -44,9 +44,9 @@ public class FlwTaskController extends BaseController {
 | 
			
		||||
    @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);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 
 | 
			
		||||
@@ -30,6 +30,11 @@ public class BackProcessBo implements Serializable {
 | 
			
		||||
    @NotNull(message = "任务ID不能为空", groups = AddGroup.class)
 | 
			
		||||
    private Long taskId;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 附件id
 | 
			
		||||
     */
 | 
			
		||||
    private String fileId;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 消息类型
 | 
			
		||||
     */
 | 
			
		||||
 
 | 
			
		||||
@@ -4,8 +4,6 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 | 
			
		||||
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;
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,8 @@ import org.dromara.common.tenant.helper.TenantHelper;
 | 
			
		||||
import org.dromara.workflow.common.ConditionalOnEnable;
 | 
			
		||||
import org.springframework.stereotype.Component;
 | 
			
		||||
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 流程监听服务
 | 
			
		||||
 *
 | 
			
		||||
@@ -28,7 +30,7 @@ public class FlowProcessEventHandler {
 | 
			
		||||
     * @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 @@ public class FlowProcessEventHandler {
 | 
			
		||||
        processEvent.setFlowCode(flowCode);
 | 
			
		||||
        processEvent.setBusinessId(businessId);
 | 
			
		||||
        processEvent.setStatus(status);
 | 
			
		||||
        processEvent.setParams(params);
 | 
			
		||||
        processEvent.setSubmit(submit);
 | 
			
		||||
        SpringUtils.context().publishEvent(processEvent);
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -17,7 +17,9 @@ import org.dromara.workflow.service.IFlwInstanceService;
 | 
			
		||||
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 @@ public class WorkflowGlobalListener implements GlobalListener {
 | 
			
		||||
        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);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,7 @@ public interface IFlwCategoryService {
 | 
			
		||||
     * @param categoryId 流程分类ID
 | 
			
		||||
     * @return 流程分类名称
 | 
			
		||||
     */
 | 
			
		||||
    String selectCategoryNameById(String categoryId);
 | 
			
		||||
    String selectCategoryNameById(Long categoryId);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询符合条件的流程分类列表
 | 
			
		||||
@@ -43,7 +43,7 @@ public interface IFlwCategoryService {
 | 
			
		||||
     * @param category 流程分类信息
 | 
			
		||||
     * @return 流程分类树信息集合
 | 
			
		||||
     */
 | 
			
		||||
    List<Tree<Long>> selectCategoryTreeList(FlowCategoryBo category);
 | 
			
		||||
    List<Tree<String>> selectCategoryTreeList(FlowCategoryBo category);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 校验流程分类是否有数据权限
 | 
			
		||||
 
 | 
			
		||||
@@ -123,7 +123,7 @@ public interface IFlwInstanceService {
 | 
			
		||||
     * @param instanceId 实例id
 | 
			
		||||
     * @return 结果
 | 
			
		||||
     */
 | 
			
		||||
    Map<String, Object> instanceVariable(String instanceId);
 | 
			
		||||
    Map<String, Object> instanceVariable(Long instanceId);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 设置流程变量
 | 
			
		||||
 
 | 
			
		||||
@@ -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 @@ public interface IFlwTaskService {
 | 
			
		||||
     * @param startProcessBo 启动流程参数
 | 
			
		||||
     * @return 结果
 | 
			
		||||
     */
 | 
			
		||||
    Map<String, Object> startWorkFlow(StartProcessBo startProcessBo);
 | 
			
		||||
    StartProcessReturnDTO startWorkFlow(StartProcessBo startProcessBo);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 办理任务
 | 
			
		||||
 
 | 
			
		||||
@@ -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 @@ public class CategoryNameTranslationImpl implements TranslationInterface<String>
 | 
			
		||||
 | 
			
		||||
    @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);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -66,8 +66,8 @@ public class FlwCategoryServiceImpl implements IFlwCategoryService {
 | 
			
		||||
     */
 | 
			
		||||
    @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 @@ public class FlwCategoryServiceImpl implements IFlwCategoryService {
 | 
			
		||||
     * @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);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -107,7 +107,7 @@ public class FlwDefinitionServiceImpl implements IFlwDefinitionService {
 | 
			
		||||
        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;
 | 
			
		||||
 
 | 
			
		||||
@@ -138,7 +138,7 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
 | 
			
		||||
        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 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
 | 
			
		||||
     * @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();
 | 
			
		||||
 
 | 
			
		||||
@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 | 
			
		||||
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 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
 | 
			
		||||
     */
 | 
			
		||||
    @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 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
 | 
			
		||||
        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 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
 | 
			
		||||
        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 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
 | 
			
		||||
            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 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
 | 
			
		||||
        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 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
 | 
			
		||||
            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());
 | 
			
		||||
 
 | 
			
		||||
@@ -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.stereotype.Service;
 | 
			
		||||
import org.springframework.transaction.annotation.Transactional;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 请假Service业务层处理
 | 
			
		||||
@@ -131,6 +134,16 @@ public class TestLeaveServiceImpl implements ITestLeaveService {
 | 
			
		||||
        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());
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
 | 
			
		||||
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;
 | 
			
		||||
@@ -77,6 +78,16 @@ public class WorkflowServiceImpl implements WorkflowService {
 | 
			
		||||
        flwInstanceService.setVariable(instanceId, variables);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获取流程变量
 | 
			
		||||
     *
 | 
			
		||||
     * @param instanceId 流程实例id
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public Map<String, Object> instanceVariable(Long instanceId) {
 | 
			
		||||
        return flwInstanceService.instanceVariable(instanceId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 按照业务id查询流程实例id
 | 
			
		||||
     *
 | 
			
		||||
@@ -105,7 +116,7 @@ public class WorkflowServiceImpl implements WorkflowService {
 | 
			
		||||
     * @param startProcess 参数
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public Map<String, Object> startWorkFlow(StartProcessDTO startProcess) {
 | 
			
		||||
    public StartProcessReturnDTO startWorkFlow(StartProcessDTO startProcess) {
 | 
			
		||||
        return flwTaskService.startWorkFlow(BeanUtil.toBean(startProcess, StartProcessBo.class));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -98,7 +98,7 @@ services:
 | 
			
		||||
    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 @@ services:
 | 
			
		||||
    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 @@ services:
 | 
			
		||||
    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 @@ services:
 | 
			
		||||
    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:
 | 
			
		||||
      # 时区上海
 | 
			
		||||
 
 | 
			
		||||
@@ -615,6 +615,8 @@ insert into sys_role_menu values ('3', '105');
 | 
			
		||||
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', '1042');
 | 
			
		||||
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', '1508');
 | 
			
		||||
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');
 | 
			
		||||
 
 | 
			
		||||
@@ -617,6 +617,8 @@ insert into sys_role_menu values ('3', '105');
 | 
			
		||||
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', '1042');
 | 
			
		||||
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', '1508');
 | 
			
		||||
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');
 | 
			
		||||
 
 | 
			
		||||
@@ -136,6 +136,7 @@ CREATE TABLE flow_instance
 | 
			
		||||
    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.node_name IS '流程节点名称';
 | 
			
		||||
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 @@ CREATE TABLE flow_his_task
 | 
			
		||||
    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,                                     -- 结束节点名称
 | 
			
		||||
 
 | 
			
		||||
@@ -441,6 +441,8 @@ insert into sys_role_menu values ('3', '105');
 | 
			
		||||
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', '1042');
 | 
			
		||||
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', '1508');
 | 
			
		||||
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');
 | 
			
		||||
 
 | 
			
		||||
@@ -1239,7 +1239,7 @@ INSERT sys_dict_data VALUES (18, N'000000', 1, N'新增', N'1', N'sys_oper_type'
 | 
			
		||||
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 @@ INSERT sys_role_menu VALUES (3, 107);
 | 
			
		||||
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 @@ INSERT sys_role_menu VALUES (3, 1044);
 | 
			
		||||
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);
 | 
			
		||||
@@ -2597,6 +2613,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
 | 
			
		||||
INSERT sys_role_menu VALUES (4, 1500);
 | 
			
		||||
@@ -3119,7 +3173,7 @@ INSERT INTO sys_oss_config VALUES (N'1', N'000000', N'minio', N'ruoyi',
 | 
			
		||||
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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user