diff --git a/pom.xml b/pom.xml
index 85dcf5457..bb7b0fec4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -54,7 +54,7 @@
3.3.4
8.7.2-20250101
-
+
1.7.0
2.3.0
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteUserService.java b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteUserService.java
index 706733d15..3e8b54850 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteUserService.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteUserService.java
@@ -8,6 +8,7 @@ import org.dromara.system.api.model.LoginUser;
import org.dromara.system.api.model.XcxLoginUser;
import java.util.List;
+import java.util.Map;
/**
* 用户服务
@@ -156,4 +157,36 @@ public interface RemoteUserService {
*/
List selectUsersByPostIds(List postIds);
+ /**
+ * 根据用户 ID 列表查询用户名称映射关系
+ *
+ * @param userIds 用户 ID 列表
+ * @return Map,其中 key 为用户 ID,value 为对应的用户名称
+ */
+ Map selectUserNamesByIds(List userIds);
+
+ /**
+ * 根据角色 ID 列表查询角色名称映射关系
+ *
+ * @param roleIds 角色 ID 列表
+ * @return Map,其中 key 为角色 ID,value 为对应的角色名称
+ */
+ Map selectRoleNamesByIds(List roleIds);
+
+ /**
+ * 根据部门 ID 列表查询部门名称映射关系
+ *
+ * @param deptIds 部门 ID 列表
+ * @return Map,其中 key 为部门 ID,value 为对应的部门名称
+ */
+ Map selectDeptNamesByIds(List deptIds);
+
+ /**
+ * 根据岗位 ID 列表查询岗位名称映射关系
+ *
+ * @param postIds 岗位 ID 列表
+ * @return Map,其中 key 为岗位 ID,value 为对应的岗位名称
+ */
+ Map selectPostNamesByIds(List postIds);
+
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java
index 9ea4ae601..aad3b1a30 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java
@@ -24,23 +24,18 @@ import org.dromara.system.api.model.LoginUser;
import org.dromara.system.api.model.PostDTO;
import org.dromara.system.api.model.RoleDTO;
import org.dromara.system.api.model.XcxLoginUser;
-import org.dromara.system.domain.SysUser;
-import org.dromara.system.domain.SysUserPost;
-import org.dromara.system.domain.SysUserRole;
+import org.dromara.system.domain.*;
import org.dromara.system.domain.bo.SysUserBo;
import org.dromara.system.domain.vo.SysDeptVo;
import org.dromara.system.domain.vo.SysPostVo;
import org.dromara.system.domain.vo.SysRoleVo;
import org.dromara.system.domain.vo.SysUserVo;
-import org.dromara.system.mapper.SysUserMapper;
-import org.dromara.system.mapper.SysUserPostMapper;
-import org.dromara.system.mapper.SysUserRoleMapper;
+import org.dromara.system.mapper.*;
import org.dromara.system.service.*;
import org.springframework.stereotype.Service;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* 用户服务
@@ -59,6 +54,9 @@ public class RemoteUserServiceImpl implements RemoteUserService {
private final ISysDeptService deptService;
private final ISysPostService postService;
private final SysUserMapper userMapper;
+ private final SysRoleMapper roleMapper;
+ private final SysDeptMapper deptMapper;
+ private final SysPostMapper postMapper;
private final SysUserRoleMapper userRoleMapper;
private final SysUserPostMapper userPostMapper;
@@ -396,4 +394,80 @@ public class RemoteUserServiceImpl implements RemoteUserService {
return selectListByIds(new ArrayList<>(userIds));
}
+ /**
+ * 根据用户 ID 列表查询用户名称映射关系
+ *
+ * @param userIds 用户 ID 列表
+ * @return Map,其中 key 为用户 ID,value 为对应的用户名称
+ */
+ @Override
+ public Map selectUserNamesByIds(List userIds) {
+ if (CollUtil.isEmpty(userIds)) {
+ return Collections.emptyMap();
+ }
+ return userMapper.selectList(
+ new LambdaQueryWrapper()
+ .select(SysUser::getUserId, SysUser::getNickName)
+ .in(SysUser::getUserId, userIds)
+ ).stream()
+ .collect(Collectors.toMap(SysUser::getUserId, SysUser::getNickName));
+ }
+
+ /**
+ * 根据角色 ID 列表查询角色名称映射关系
+ *
+ * @param roleIds 角色 ID 列表
+ * @return Map,其中 key 为角色 ID,value 为对应的角色名称
+ */
+ @Override
+ public Map selectRoleNamesByIds(List roleIds) {
+ if (CollUtil.isEmpty(roleIds)) {
+ return Collections.emptyMap();
+ }
+ return roleMapper.selectList(
+ new LambdaQueryWrapper()
+ .select(SysRole::getRoleId, SysRole::getRoleName)
+ .in(SysRole::getRoleId, roleIds)
+ ).stream()
+ .collect(Collectors.toMap(SysRole::getRoleId, SysRole::getRoleName));
+ }
+
+ /**
+ * 根据部门 ID 列表查询部门名称映射关系
+ *
+ * @param deptIds 部门 ID 列表
+ * @return Map,其中 key 为部门 ID,value 为对应的部门名称
+ */
+ @Override
+ public Map selectDeptNamesByIds(List deptIds) {
+ if (CollUtil.isEmpty(deptIds)) {
+ return Collections.emptyMap();
+ }
+ return deptMapper.selectList(
+ new LambdaQueryWrapper()
+ .select(SysDept::getDeptId, SysDept::getDeptName)
+ .in(SysDept::getDeptId, deptIds)
+ ).stream()
+ .collect(Collectors.toMap(SysDept::getDeptId, SysDept::getDeptName));
+ }
+
+ /**
+ * 根据岗位 ID 列表查询岗位名称映射关系
+ *
+ * @param postIds 岗位 ID 列表
+ * @return Map,其中 key 为岗位 ID,value 为对应的岗位名称
+ */
+ @Override
+ public Map selectPostNamesByIds(List postIds) {
+ if (CollUtil.isEmpty(postIds)) {
+ return Collections.emptyMap();
+ }
+ return postMapper.selectList(
+ new LambdaQueryWrapper()
+ .select(SysPost::getPostId, SysPost::getPostName)
+ .in(SysPost::getPostId, postIds)
+ ).stream()
+ .collect(Collectors.toMap(SysPost::getPostId, SysPost::getPostName));
+ }
+
}
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskAssigneeService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskAssigneeService.java
index 6396b2868..462a2b58e 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskAssigneeService.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskAssigneeService.java
@@ -13,10 +13,21 @@ public interface IFlwTaskAssigneeService {
/**
* 根据存储标识符(storageId)解析分配类型和ID,并获取对应的用户列表
+ * 支持单个标识(例如 "user:123" 或 "456"),格式非法将返回空列表
*
- * @param storageId 包含分配类型和ID的字符串(例如 "user:123" 或 "role:456")
- * @return 与分配类型和ID匹配的用户列表,如果格式无效则返回空列表
+ * @param storageId 包含分配类型和ID的字符串
+ * @return 匹配的用户列表,格式非法返回空列表
*/
List fetchUsersByStorageId(String storageId);
+ /**
+ * 批量解析多个存储标识符(storageIds),按类型分类并合并查询用户列表
+ * 输入格式支持多个以逗号分隔的标识(如 "user:123,role:456,789")
+ * 会自动去重返回结果,非法格式的标识将被忽略
+ *
+ * @param storageIds 多个存储标识符字符串(逗号分隔)
+ * @return 合并后的用户列表,去重后返回,非法格式的标识将被跳过
+ */
+ List fetchUsersByStorageIds(String storageIds);
+
}
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java
index 75b99be86..207945664 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java
@@ -2,6 +2,7 @@ package org.dromara.workflow.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.lang.Pair;
import cn.hutool.core.util.StrUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -21,6 +22,7 @@ import org.dromara.warm.flow.ui.dto.HandlerFunDto;
import org.dromara.warm.flow.ui.dto.HandlerQuery;
import org.dromara.warm.flow.ui.dto.TreeFunDto;
import org.dromara.warm.flow.ui.service.HandlerSelectService;
+import org.dromara.warm.flow.ui.vo.HandlerFeedBackVo;
import org.dromara.warm.flow.ui.vo.HandlerSelectVo;
import org.dromara.workflow.common.ConditionalOnEnable;
import org.dromara.workflow.common.enums.TaskAssigneeEnum;
@@ -79,6 +81,49 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand
return getHandlerSelectVo(buildHandlerData(dto, type), buildDeptTree(depts));
}
+ /**
+ * 办理人权限名称回显
+ *
+ * @param storageIds 入库主键集合
+ * @return 结果
+ */
+ @Override
+ public List handlerFeedback(List storageIds) {
+ if (CollUtil.isEmpty(storageIds)) {
+ return Collections.emptyList();
+ }
+ // 解析并归类 ID,同时记录原始顺序和对应解析结果
+ Map> typeIdMap = new EnumMap<>(TaskAssigneeEnum.class);
+ Map> parsedMap = new LinkedHashMap<>();
+ for (String storageId : storageIds) {
+ Pair parsed = this.parseStorageId(storageId);
+ parsedMap.put(storageId, parsed);
+ if (parsed != null) {
+ typeIdMap.computeIfAbsent(parsed.getKey(), k -> new ArrayList<>()).add(parsed.getValue());
+ }
+ }
+
+ // 查询所有类型对应的 ID 名称映射
+ Map> nameMap = new EnumMap<>(TaskAssigneeEnum.class);
+ typeIdMap.forEach((type, ids) -> nameMap.put(type, this.getNamesByType(type, ids)));
+
+ // 组装返回结果,保持原始顺序
+ return parsedMap.entrySet().stream()
+ .map(entry -> {
+ String storageId = entry.getKey();
+ Pair parsed = entry.getValue();
+ String handlerName = "格式错误";
+ if (parsed != null) {
+ Map nameMapping = nameMap.getOrDefault(parsed.getKey(), Collections.emptyMap());
+ handlerName = nameMapping.getOrDefault(parsed.getValue(), "未知名称");
+ }
+ HandlerFeedBackVo backVo = new HandlerFeedBackVo();
+ backVo.setStorageId(storageId);
+ backVo.setHandlerName(handlerName);
+ return backVo;
+ }).toList();
+ }
+
/**
* 根据任务办理类型查询对应的数据
*/
@@ -88,7 +133,6 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand
case ROLE -> remoteTaskAssigneeService.selectRolesByTaskAssigneeList(taskQuery);
case DEPT -> remoteTaskAssigneeService.selectDeptsByTaskAssigneeList(taskQuery);
case POST -> remoteTaskAssigneeService.selectPostsByTaskAssigneeList(taskQuery);
- default -> throw new ServiceException("Unsupported handler type");
};
}
@@ -129,33 +173,41 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand
/**
* 根据存储标识符(storageId)解析分配类型和ID,并获取对应的用户列表
+ * 支持单个标识(例如 "user:123" 或 "456"),格式非法将返回空列表
*
- * @param storageId 包含分配类型和ID的字符串(例如 "user:123" 或 "role:456")
- * @return 与分配类型和ID匹配的用户列表,如果格式无效则返回空列表
+ * @param storageId 包含分配类型和ID的字符串
+ * @return 匹配的用户列表,格式非法返回空列表
*/
@Override
public List fetchUsersByStorageId(String storageId) {
- List list = new ArrayList<>();
- Map> typeIdMap = new EnumMap<>(TaskAssigneeEnum.class);
- for (String str : storageId.split(StrUtil.COMMA)) {
- String[] parts = str.split(StrUtil.COLON, 2);
- TaskAssigneeEnum type;
- Long id;
- if (parts.length < 2) {
- // 无前缀时默认是用户类型
- type = TaskAssigneeEnum.USER;
- id = Long.valueOf(parts[0]);
- } else {
- // 根据前缀解析类型(如 "role:123" -> ROLE 类型)
- type = TaskAssigneeEnum.fromCode(parts[0] + StrUtil.COLON);
- id = Long.valueOf(parts[1]);
- }
- typeIdMap.computeIfAbsent(type, k -> new ArrayList<>()).add(id);
+ Pair parsed = this.parseStorageId(storageId);
+ if (parsed == null) {
+ return Collections.emptyList();
}
- typeIdMap.entrySet().stream()
- .filter(entry -> CollUtil.isNotEmpty(entry.getValue()))
- .forEach(entry -> list.addAll(getUsersByType(entry.getKey(), entry.getValue())));
- return list.stream().distinct().toList();
+ return this.getUsersByType(parsed.getKey(), Collections.singletonList(parsed.getValue()));
+ }
+
+ /**
+ * 批量解析多个存储标识符(storageIds),按类型分类并合并查询用户列表
+ * 输入格式支持多个以逗号分隔的标识(如 "user:123,role:456,789")
+ * 会自动去重返回结果,非法格式的标识将被忽略
+ *
+ * @param storageIds 多个存储标识符字符串(逗号分隔)
+ * @return 合并后的用户列表,去重后返回,非法格式的标识将被跳过
+ */
+ @Override
+ public List fetchUsersByStorageIds(String storageIds) {
+ Map> typeIdMap = new EnumMap<>(TaskAssigneeEnum.class);
+ for (String storageId : storageIds.split(StrUtil.COMMA)) {
+ Pair parsed = this.parseStorageId(storageId);
+ if (parsed != null) {
+ typeIdMap.computeIfAbsent(parsed.getKey(), k -> new ArrayList<>()).add(parsed.getValue());
+ }
+ }
+ return typeIdMap.entrySet().stream()
+ .flatMap(entry -> this.getUsersByType(entry.getKey(), entry.getValue()).stream())
+ .distinct()
+ .toList();
}
/**
@@ -177,4 +229,41 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand
};
}
+ /**
+ * 根据任务分配类型和对应 ID 列表,批量查询名称映射关系
+ *
+ * @param type 分配类型(用户、角色、部门、岗位)
+ * @param ids ID 列表(如用户ID、角色ID等)
+ * @return 返回 Map,其中 key 为 ID,value 为对应的名称
+ */
+ private Map getNamesByType(TaskAssigneeEnum type, List ids) {
+ return switch (type) {
+ case USER -> remoteUserService.selectUserNamesByIds(ids);
+ case ROLE -> remoteUserService.selectRoleNamesByIds(ids);
+ case DEPT -> remoteUserService.selectDeptNamesByIds(ids);
+ case POST -> remoteUserService.selectPostNamesByIds(ids);
+ };
+ }
+
+ /**
+ * 解析 storageId 字符串,返回类型和ID的组合
+ *
+ * @param storageId 例如 "user:123" 或 "456"
+ * @return Pair(TaskAssigneeEnum, Long),如果格式非法返回 null
+ */
+ private Pair parseStorageId(String storageId) {
+ try {
+ String[] parts = storageId.split(StrUtil.COLON, 2);
+ if (parts.length < 2) {
+ return Pair.of(TaskAssigneeEnum.USER, Long.valueOf(parts[0]));
+ } else {
+ TaskAssigneeEnum type = TaskAssigneeEnum.fromCode(parts[0] + StrUtil.COLON);
+ return Pair.of(type, Long.valueOf(parts[1]));
+ }
+ } catch (Exception e) {
+ log.warn("解析 storageId 失败,格式非法:{},错误信息:{}", storageId, e.getMessage());
+ return null;
+ }
+ }
+
}
diff --git a/script/sql/oracle/oracle_ry_workflow.sql b/script/sql/oracle/oracle_ry_workflow.sql
index 62563d191..08fb357e0 100644
--- a/script/sql/oracle/oracle_ry_workflow.sql
+++ b/script/sql/oracle/oracle_ry_workflow.sql
@@ -154,7 +154,7 @@ comment on column FLOW_INSTANCE.NODE_TYPE is '开始节点类型 (0开始节点
comment on column FLOW_INSTANCE.NODE_CODE is '开始节点编码';
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.FLOW_STATUS is '流程状态(0待提交 1审批中 2审批通过 4终止 5作废 6撤销 8已完成 9已退回 10失效 11拿回)';
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 '创建者';
@@ -172,6 +172,7 @@ create table FLOW_TASK
NODE_CODE VARCHAR2(100),
NODE_NAME VARCHAR2(100),
NODE_TYPE NUMBER(1),
+ FLOW_STATUS VARCHAR2(20),
FORM_CUSTOM VARCHAR2(1) default 'N',
FORM_PATH VARCHAR2(100),
CREATE_TIME DATE,
@@ -189,6 +190,7 @@ comment on column FLOW_TASK.INSTANCE_ID is '对应flow_instance表的id';
comment on column FLOW_TASK.NODE_CODE is '节点编码';
comment on column FLOW_TASK.NODE_NAME is '节点名称';
comment on column FLOW_TASK.NODE_TYPE is '节点类型 (0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关)';
+comment on column FLOW_TASK.FLOW_STATUS is '流程状态(0待提交 1审批中 2审批通过 4终止 5作废 6撤销 8已完成 9已退回 10失效 11拿回)';
comment on column FLOW_TASK.FORM_CUSTOM is '审批表单是否自定义 (Y是 N否)';
comment on column FLOW_TASK.FORM_PATH is '审批表单路径';
comment on column FLOW_TASK.CREATE_TIME is '创建时间';
@@ -237,7 +239,7 @@ comment on column FLOW_HIS_TASK.NODE_TYPE is '开始节点类型 (0开始节点
comment on column FLOW_HIS_TASK.TARGET_NODE_CODE is '目标节点编码';
comment on column FLOW_HIS_TASK.TARGET_NODE_NAME is '目标节点名称';
comment on column FLOW_HIS_TASK.SKIP_TYPE is '流转类型(PASS通过 REJECT退回 NONE无动作)';
-comment on column FLOW_HIS_TASK.FLOW_STATUS is '流程状态(1审批中 2 审批通过 9已退回 10失效)';
+comment on column FLOW_HIS_TASK.FLOW_STATUS is '流程状态(0待提交 1审批中 2审批通过 4终止 5作废 6撤销 8已完成 9已退回 10失效 11拿回)';
comment on column FLOW_HIS_TASK.FORM_CUSTOM is '审批表单是否自定义 (Y是 N否)';
comment on column FLOW_HIS_TASK.FORM_PATH is '审批表单路径';
comment on column FLOW_HIS_TASK.MESSAGE is '审批意见';
diff --git a/script/sql/postgres/postgres_ry_workflow.sql b/script/sql/postgres/postgres_ry_workflow.sql
index 8574118fd..cc231a31d 100644
--- a/script/sql/postgres/postgres_ry_workflow.sql
+++ b/script/sql/postgres/postgres_ry_workflow.sql
@@ -154,7 +154,7 @@ COMMENT ON COLUMN flow_instance.node_type IS '节点类型(0开始节点 1中
COMMENT ON COLUMN flow_instance.node_code IS '流程节点编码';
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.flow_status IS '流程状态(0待提交 1审批中 2审批通过 4终止 5作废 6撤销 8已完成 9已退回 10失效 11拿回)';
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 '创建者';
@@ -172,6 +172,7 @@ CREATE TABLE flow_task
node_code varchar(100) NOT NULL, -- 节点编码
node_name varchar(100) NULL, -- 节点名称
node_type int2 NOT NULL, -- 节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关)
+ flow_status varchar(20) NOT NULL, -- 流程状态(0待提交 1审批中 2 审批通过 8已完成 9已退回 10失效)
form_custom bpchar(1) NULL DEFAULT 'N':: character varying, -- 审批表单是否自定义(Y是 N否)
form_path varchar(100) NULL, -- 审批表单路径
create_time timestamp NULL, -- 创建时间
@@ -188,6 +189,7 @@ COMMENT ON COLUMN flow_task.instance_id IS '对应flow_instance表的id';
COMMENT ON COLUMN flow_task.node_code IS '节点编码';
COMMENT ON COLUMN flow_task.node_name IS '节点名称';
COMMENT ON COLUMN flow_task.node_type IS '节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关)';
+COMMENT ON COLUMN flow_task.flow_status IS '流程状态(0待提交 1审批中 2审批通过 4终止 5作废 6撤销 8已完成 9已退回 10失效 11拿回)';
COMMENT ON COLUMN flow_task.form_custom IS '审批表单是否自定义(Y是 N否)';
COMMENT ON COLUMN flow_task.form_path IS '审批表单路径';
COMMENT ON COLUMN flow_task.create_time IS '创建时间';
@@ -201,8 +203,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(200) NULL, -- 开始节点编码
- node_name varchar(200) NULL, -- 开始节点名称
+ node_code varchar(100) NULL, -- 开始节点编码
+ node_name varchar(100) NULL, -- 开始节点名称
node_type int2 NULL, -- 开始节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关)
target_node_code varchar(200) NULL, -- 目标节点编码
target_node_name varchar(200) NULL, -- 结束节点名称
@@ -237,7 +239,7 @@ COMMENT ON COLUMN flow_his_task.approver IS '审批者';
COMMENT ON COLUMN flow_his_task.cooperate_type IS '协作方式(1审批 2转办 3委派 4会签 5票签 6加签 7减签)';
COMMENT ON COLUMN flow_his_task.collaborator IS '协作人';
COMMENT ON COLUMN flow_his_task.skip_type IS '流转类型(PASS通过 REJECT退回 NONE无动作)';
-COMMENT ON COLUMN flow_his_task.flow_status IS '流程状态(1审批中 2 审批通过 9已退回 10失效)';
+COMMENT ON COLUMN flow_his_task.flow_status IS '流程状态(0待提交 1审批中 2审批通过 4终止 5作废 6撤销 8已完成 9已退回 10失效 11拿回)';
COMMENT ON COLUMN flow_his_task.form_custom IS '审批表单是否自定义(Y是 N否)';
COMMENT ON COLUMN flow_his_task.form_path IS '审批表单路径';
COMMENT ON COLUMN flow_his_task.message IS '审批意见';
diff --git a/script/sql/ry-workflow.sql b/script/sql/ry-workflow.sql
index 542d6dee3..23893ddba 100644
--- a/script/sql/ry-workflow.sql
+++ b/script/sql/ry-workflow.sql
@@ -3,7 +3,7 @@
-- ----------------------------
CREATE TABLE `flow_definition`
(
- `id` bigint unsigned NOT NULL COMMENT '主键id',
+ `id` bigint NOT NULL COMMENT '主键id',
`flow_code` varchar(40) NOT NULL COMMENT '流程编码',
`flow_name` varchar(100) NOT NULL COMMENT '流程名称',
`category` varchar(100) DEFAULT NULL COMMENT '流程类别',
@@ -50,7 +50,7 @@ CREATE TABLE `flow_node`
CREATE TABLE `flow_skip`
(
- `id` bigint unsigned NOT NULL COMMENT '主键id',
+ `id` bigint NOT NULL COMMENT '主键id',
`definition_id` bigint NOT NULL COMMENT '流程定义id',
`now_node_code` varchar(100) NOT NULL COMMENT '当前流程节点的编码',
`now_node_type` tinyint(1) DEFAULT NULL COMMENT '当前节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关)',
@@ -76,7 +76,7 @@ CREATE TABLE `flow_instance`
`node_code` varchar(40) NOT NULL COMMENT '流程节点编码',
`node_name` varchar(100) DEFAULT NULL COMMENT '流程节点名称',
`variable` text COMMENT '任务变量',
- `flow_status` varchar(20) NOT NULL COMMENT '流程状态(0待提交 1审批中 2 审批通过 3自动通过 4终止 5作废 6撤销 7取回 8已完成 9已退回 10失效)',
+ `flow_status` varchar(20) NOT NULL COMMENT '流程状态(0待提交 1审批中 2审批通过 4终止 5作废 6撤销 8已完成 9已退回 10失效 11拿回)',
`activity_status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '流程激活状态(0挂起 1激活)',
`def_json` text COMMENT '流程定义json',
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
@@ -96,6 +96,7 @@ CREATE TABLE `flow_task`
`node_code` varchar(100) NOT NULL COMMENT '节点编码',
`node_name` varchar(100) DEFAULT NULL COMMENT '节点名称',
`node_type` tinyint(1) NOT NULL COMMENT '节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关)',
+ `flow_status` varchar(20) NOT NULL COMMENT '流程状态(0待提交 1审批中 2审批通过 4终止 5作废 6撤销 8已完成 9已退回 10失效 11拿回)',
`form_custom` char(1) DEFAULT 'N' COMMENT '审批表单是否自定义(Y是 N否)',
`form_path` varchar(100) DEFAULT NULL COMMENT '审批表单路径',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
@@ -107,7 +108,7 @@ CREATE TABLE `flow_task`
CREATE TABLE `flow_his_task`
(
- `id` bigint(20) unsigned NOT NULL COMMENT '主键id',
+ `id` bigint(20) NOT NULL COMMENT '主键id',
`definition_id` bigint(20) NOT NULL COMMENT '对应flow_definition表的id',
`instance_id` bigint(20) NOT NULL COMMENT '对应flow_instance表的id',
`task_id` bigint(20) NOT NULL COMMENT '对应flow_task表的id',
@@ -120,7 +121,7 @@ CREATE TABLE `flow_his_task`
`cooperate_type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '协作方式(1审批 2转办 3委派 4会签 5票签 6加签 7减签)',
`collaborator` varchar(40) DEFAULT NULL COMMENT '协作人',
`skip_type` varchar(10) NOT NULL COMMENT '流转类型(PASS通过 REJECT退回 NONE无动作)',
- `flow_status` varchar(20) NOT NULL COMMENT '流程状态(1审批中 2 审批通过 9已退回 10失效)',
+ `flow_status` varchar(20) NOT NULL COMMENT '流程状态(0待提交 1审批中 2审批通过 4终止 5作废 6撤销 8已完成 9已退回 10失效 11拿回)',
`form_custom` char(1) DEFAULT 'N' COMMENT '审批表单是否自定义(Y是 N否)',
`form_path` varchar(100) DEFAULT NULL COMMENT '审批表单路径',
`message` varchar(500) DEFAULT NULL COMMENT '审批意见',
@@ -136,7 +137,7 @@ CREATE TABLE `flow_his_task`
CREATE TABLE `flow_user`
(
- `id` bigint unsigned NOT NULL COMMENT '主键id',
+ `id` bigint NOT NULL COMMENT '主键id',
`type` char(1) NOT NULL COMMENT '人员类型(1待办任务的审批人权限 2待办任务的转办人权限 3待办任务的委托人权限)',
`processed_by` varchar(80) DEFAULT NULL COMMENT '权限人',
`associated` bigint NOT NULL COMMENT '任务表id',