update 重构办理人接口

This commit is contained in:
AprilWind 2025-05-10 16:51:56 +08:00
parent d6758dc47b
commit 9df837f047
10 changed files with 292 additions and 52 deletions

View File

@ -3,6 +3,7 @@ package org.dromara.common.core.service;
import org.dromara.common.core.domain.dto.UserDTO; import org.dromara.common.core.domain.dto.UserDTO;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 通用 用户服务 * 通用 用户服务
@ -91,4 +92,36 @@ public interface UserService {
*/ */
List<UserDTO> selectUsersByPostIds(List<Long> postIds); List<UserDTO> selectUsersByPostIds(List<Long> postIds);
/**
* 根据用户 ID 列表查询用户名称映射关系
*
* @param userIds 用户 ID 列表
* @return Map其中 key 为用户 IDvalue 为对应的用户名称
*/
Map<Long, String> selectUserNamesByIds(List<Long> userIds);
/**
* 根据角色 ID 列表查询角色名称映射关系
*
* @param roleIds 角色 ID 列表
* @return Map其中 key 为角色 IDvalue 为对应的角色名称
*/
Map<Long, String> selectRoleNamesByIds(List<Long> roleIds);
/**
* 根据部门 ID 列表查询部门名称映射关系
*
* @param deptIds 部门 ID 列表
* @return Map其中 key 为部门 IDvalue 为对应的部门名称
*/
Map<Long, String> selectDeptNamesByIds(List<Long> deptIds);
/**
* 根据岗位 ID 列表查询岗位名称映射关系
*
* @param postIds 岗位 ID 列表
* @return Map其中 key 为岗位 IDvalue 为对应的岗位名称
*/
Map<Long, String> selectPostNamesByIds(List<Long> postIds);
} }

View File

@ -35,10 +35,8 @@ import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.*;
import java.util.List; import java.util.stream.Collectors;
import java.util.Map;
import java.util.Set;
/** /**
* 用户 业务层处理 * 用户 业务层处理
@ -720,4 +718,80 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
return selectListByIds(new ArrayList<>(userIds)); return selectListByIds(new ArrayList<>(userIds));
} }
/**
* 根据用户 ID 列表查询用户名称映射关系
*
* @param userIds 用户 ID 列表
* @return Map其中 key 为用户 IDvalue 为对应的用户名称
*/
@Override
public Map<Long, String> selectUserNamesByIds(List<Long> userIds) {
if (CollUtil.isEmpty(userIds)) {
return Collections.emptyMap();
}
return baseMapper.selectList(
new LambdaQueryWrapper<SysUser>()
.select(SysUser::getUserId, SysUser::getNickName)
.in(SysUser::getUserId, userIds)
).stream()
.collect(Collectors.toMap(SysUser::getUserId, SysUser::getNickName));
}
/**
* 根据角色 ID 列表查询角色名称映射关系
*
* @param roleIds 角色 ID 列表
* @return Map其中 key 为角色 IDvalue 为对应的角色名称
*/
@Override
public Map<Long, String> selectRoleNamesByIds(List<Long> roleIds) {
if (CollUtil.isEmpty(roleIds)) {
return Collections.emptyMap();
}
return roleMapper.selectList(
new LambdaQueryWrapper<SysRole>()
.select(SysRole::getRoleId, SysRole::getRoleName)
.in(SysRole::getRoleId, roleIds)
).stream()
.collect(Collectors.toMap(SysRole::getRoleId, SysRole::getRoleName));
}
/**
* 根据部门 ID 列表查询部门名称映射关系
*
* @param deptIds 部门 ID 列表
* @return Map其中 key 为部门 IDvalue 为对应的部门名称
*/
@Override
public Map<Long, String> selectDeptNamesByIds(List<Long> deptIds) {
if (CollUtil.isEmpty(deptIds)) {
return Collections.emptyMap();
}
return deptMapper.selectList(
new LambdaQueryWrapper<SysDept>()
.select(SysDept::getDeptId, SysDept::getDeptName)
.in(SysDept::getDeptId, deptIds)
).stream()
.collect(Collectors.toMap(SysDept::getDeptId, SysDept::getDeptName));
}
/**
* 根据岗位 ID 列表查询岗位名称映射关系
*
* @param postIds 岗位 ID 列表
* @return Map其中 key 为岗位 IDvalue 为对应的岗位名称
*/
@Override
public Map<Long, String> selectPostNamesByIds(List<Long> postIds) {
if (CollUtil.isEmpty(postIds)) {
return Collections.emptyMap();
}
return postMapper.selectList(
new LambdaQueryWrapper<SysPost>()
.select(SysPost::getPostId, SysPost::getPostName)
.in(SysPost::getPostId, postIds)
).stream()
.collect(Collectors.toMap(SysPost::getPostId, SysPost::getPostName));
}
} }

View File

@ -13,10 +13,21 @@ public interface IFlwTaskAssigneeService {
/** /**
* 根据存储标识符storageId解析分配类型和ID并获取对应的用户列表 * 根据存储标识符storageId解析分配类型和ID并获取对应的用户列表
* 支持单个标识例如 "user:123" "456"格式非法将返回空列表
* *
* @param storageId 包含分配类型和ID的字符串例如 "user:123" "role:456" * @param storageId 包含分配类型和ID的字符串
* @return 与分配类型和ID匹配的用户列表如果格式无效则返回空列表 * @return 匹配的用户列表格式非法返回空列表
*/ */
List<UserDTO> fetchUsersByStorageId(String storageId); List<UserDTO> fetchUsersByStorageId(String storageId);
/**
* 批量解析多个存储标识符storageIds按类型分类并合并查询用户列表
* 输入格式支持多个以逗号分隔的标识 "user:123,role:456,789"
* 会自动去重返回结果非法格式的标识将被忽略
*
* @param storageIds 多个存储标识符字符串逗号分隔
* @return 合并后的用户列表去重后返回非法格式的标识将被跳过
*/
List<UserDTO> fetchUsersByStorageIds(String storageIds);
} }

View File

@ -2,6 +2,7 @@ package org.dromara.workflow.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Pair;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -10,7 +11,6 @@ import org.dromara.common.core.domain.dto.TaskAssigneeDTO;
import org.dromara.common.core.domain.dto.UserDTO; import org.dromara.common.core.domain.dto.UserDTO;
import org.dromara.common.core.domain.model.TaskAssigneeBody; import org.dromara.common.core.domain.model.TaskAssigneeBody;
import org.dromara.common.core.enums.FormatsType; import org.dromara.common.core.enums.FormatsType;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.service.DeptService; import org.dromara.common.core.service.DeptService;
import org.dromara.common.core.service.TaskAssigneeService; import org.dromara.common.core.service.TaskAssigneeService;
import org.dromara.common.core.service.UserService; import org.dromara.common.core.service.UserService;
@ -20,6 +20,7 @@ import org.dromara.warm.flow.ui.dto.HandlerFunDto;
import org.dromara.warm.flow.ui.dto.HandlerQuery; import org.dromara.warm.flow.ui.dto.HandlerQuery;
import org.dromara.warm.flow.ui.dto.TreeFunDto; import org.dromara.warm.flow.ui.dto.TreeFunDto;
import org.dromara.warm.flow.ui.service.HandlerSelectService; 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.warm.flow.ui.vo.HandlerSelectVo;
import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.common.ConditionalOnEnable;
import org.dromara.workflow.common.enums.TaskAssigneeEnum; import org.dromara.workflow.common.enums.TaskAssigneeEnum;
@ -74,6 +75,49 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand
return getHandlerSelectVo(buildHandlerData(dto, type), buildDeptTree(depts)); return getHandlerSelectVo(buildHandlerData(dto, type), buildDeptTree(depts));
} }
/**
* 办理人权限名称回显
*
* @param storageIds 入库主键集合
* @return 结果
*/
@Override
public List<HandlerFeedBackVo> handlerFeedback(List<String> storageIds) {
if (CollUtil.isEmpty(storageIds)) {
return Collections.emptyList();
}
// 解析并归类 ID同时记录原始顺序和对应解析结果
Map<TaskAssigneeEnum, List<Long>> typeIdMap = new EnumMap<>(TaskAssigneeEnum.class);
Map<String, Pair<TaskAssigneeEnum, Long>> parsedMap = new LinkedHashMap<>();
for (String storageId : storageIds) {
Pair<TaskAssigneeEnum, Long> parsed = this.parseStorageId(storageId);
parsedMap.put(storageId, parsed);
if (parsed != null) {
typeIdMap.computeIfAbsent(parsed.getKey(), k -> new ArrayList<>()).add(parsed.getValue());
}
}
// 查询所有类型对应的 ID 名称映射
Map<TaskAssigneeEnum, Map<Long, String>> 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<TaskAssigneeEnum, Long> parsed = entry.getValue();
String handlerName = "格式错误";
if (parsed != null) {
Map<Long, String> 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();
}
/** /**
* 根据任务办理类型查询对应的数据 * 根据任务办理类型查询对应的数据
*/ */
@ -83,7 +127,6 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand
case ROLE -> taskAssigneeService.selectRolesByTaskAssigneeList(taskQuery); case ROLE -> taskAssigneeService.selectRolesByTaskAssigneeList(taskQuery);
case DEPT -> taskAssigneeService.selectDeptsByTaskAssigneeList(taskQuery); case DEPT -> taskAssigneeService.selectDeptsByTaskAssigneeList(taskQuery);
case POST -> taskAssigneeService.selectPostsByTaskAssigneeList(taskQuery); case POST -> taskAssigneeService.selectPostsByTaskAssigneeList(taskQuery);
default -> throw new ServiceException("Unsupported handler type");
}; };
} }
@ -124,33 +167,41 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand
/** /**
* 根据存储标识符storageId解析分配类型和ID并获取对应的用户列表 * 根据存储标识符storageId解析分配类型和ID并获取对应的用户列表
* 支持单个标识例如 "user:123" "456"格式非法将返回空列表
* *
* @param storageId 包含分配类型和ID的字符串例如 "user:123" "role:456" * @param storageId 包含分配类型和ID的字符串
* @return 与分配类型和ID匹配的用户列表如果格式无效则返回空列表 * @return 匹配的用户列表格式非法返回空列表
*/ */
@Override @Override
public List<UserDTO> fetchUsersByStorageId(String storageId) { public List<UserDTO> fetchUsersByStorageId(String storageId) {
List<UserDTO> list = new ArrayList<>(); Pair<TaskAssigneeEnum, Long> parsed = this.parseStorageId(storageId);
if (parsed == null) {
return Collections.emptyList();
}
return this.getUsersByType(parsed.getKey(), Collections.singletonList(parsed.getValue()));
}
/**
* 批量解析多个存储标识符storageIds按类型分类并合并查询用户列表
* 输入格式支持多个以逗号分隔的标识 "user:123,role:456,789"
* 会自动去重返回结果非法格式的标识将被忽略
*
* @param storageIds 多个存储标识符字符串逗号分隔
* @return 合并后的用户列表去重后返回非法格式的标识将被跳过
*/
@Override
public List<UserDTO> fetchUsersByStorageIds(String storageIds) {
Map<TaskAssigneeEnum, List<Long>> typeIdMap = new EnumMap<>(TaskAssigneeEnum.class); Map<TaskAssigneeEnum, List<Long>> typeIdMap = new EnumMap<>(TaskAssigneeEnum.class);
for (String str : storageId.split(StrUtil.COMMA)) { for (String storageId : storageIds.split(StrUtil.COMMA)) {
String[] parts = str.split(StrUtil.COLON, 2); Pair<TaskAssigneeEnum, Long> parsed = this.parseStorageId(storageId);
TaskAssigneeEnum type; if (parsed != null) {
Long id; typeIdMap.computeIfAbsent(parsed.getKey(), k -> new ArrayList<>()).add(parsed.getValue());
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);
} }
typeIdMap.entrySet().stream() return typeIdMap.entrySet().stream()
.filter(entry -> CollUtil.isNotEmpty(entry.getValue())) .flatMap(entry -> this.getUsersByType(entry.getKey(), entry.getValue()).stream())
.forEach(entry -> list.addAll(getUsersByType(entry.getKey(), entry.getValue()))); .distinct()
return list.stream().distinct().toList(); .toList();
} }
/** /**
@ -172,4 +223,41 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand
}; };
} }
/**
* 根据任务分配类型和对应 ID 列表批量查询名称映射关系
*
* @param type 分配类型用户角色部门岗位
* @param ids ID 列表如用户ID角色ID等
* @return 返回 Map其中 key IDvalue 为对应的名称
*/
private Map<Long, String> getNamesByType(TaskAssigneeEnum type, List<Long> ids) {
return switch (type) {
case USER -> userService.selectUserNamesByIds(ids);
case ROLE -> userService.selectRoleNamesByIds(ids);
case DEPT -> userService.selectDeptNamesByIds(ids);
case POST -> userService.selectPostNamesByIds(ids);
};
}
/**
* 解析 storageId 字符串返回类型和ID的组合
*
* @param storageId 例如 "user:123" "456"
* @return Pair(TaskAssigneeEnum, Long)如果格式非法返回 null
*/
private Pair<TaskAssigneeEnum, Long> 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;
}
}
} }

View File

@ -1,3 +1,6 @@
-- ----------------------------
-- 0、warm-flow-all.sql地址https://gitee.com/dromara/warm-flow/blob/master/sql/oracle/oracle-wram-flow-all.sql
-- ----------------------------
create table FLOW_DEFINITION create table FLOW_DEFINITION
( (
ID NUMBER(20) not null, ID NUMBER(20) not null,
@ -18,7 +21,8 @@ create table FLOW_DEFINITION
TENANT_ID VARCHAR2(40) TENANT_ID VARCHAR2(40)
); );
alter table FLOW_DEFINITION add constraint PK_FLOW_DEFINITION primary key (ID); alter table FLOW_DEFINITION
add constraint PK_FLOW_DEFINITION primary key (ID);
comment on table FLOW_DEFINITION is '流程定义表'; comment on table FLOW_DEFINITION is '流程定义表';
comment on column FLOW_DEFINITION.ID is '主键id'; comment on column FLOW_DEFINITION.ID is '主键id';
@ -63,7 +67,8 @@ create table FLOW_NODE
PERMISSION_FLAG VARCHAR2(200) PERMISSION_FLAG VARCHAR2(200)
); );
alter table FLOW_NODE add constraint PK_FLOW_NODE primary key (ID); alter table FLOW_NODE
add constraint PK_FLOW_NODE primary key (ID);
comment on table FLOW_NODE is '流程节点表'; comment on table FLOW_NODE is '流程节点表';
comment on column FLOW_NODE.ID is '主键id'; comment on column FLOW_NODE.ID is '主键id';
@ -106,7 +111,8 @@ create table FLOW_SKIP
TENANT_ID VARCHAR2(40) TENANT_ID VARCHAR2(40)
); );
alter table FLOW_SKIP add constraint PK_FLOW_SKIP primary key (ID); alter table FLOW_SKIP
add constraint PK_FLOW_SKIP primary key (ID);
comment on table FLOW_SKIP is '节点跳转关联表'; comment on table FLOW_SKIP is '节点跳转关联表';
comment on column FLOW_SKIP.ID is '主键id'; comment on column FLOW_SKIP.ID is '主键id';
@ -144,7 +150,8 @@ create table FLOW_INSTANCE
TENANT_ID VARCHAR2(40) TENANT_ID VARCHAR2(40)
); );
alter table FLOW_INSTANCE add constraint PK_FLOW_INSTANCE primary key (ID); alter table FLOW_INSTANCE
add constraint PK_FLOW_INSTANCE primary key (ID);
comment on table FLOW_INSTANCE is '流程实例表'; comment on table FLOW_INSTANCE is '流程实例表';
comment on column FLOW_INSTANCE.ID is '主键id'; comment on column FLOW_INSTANCE.ID is '主键id';
@ -154,7 +161,7 @@ comment on column FLOW_INSTANCE.NODE_TYPE is '开始节点类型 (0开始节点
comment on column FLOW_INSTANCE.NODE_CODE is '开始节点编码'; comment on column FLOW_INSTANCE.NODE_CODE is '开始节点编码';
comment on column FLOW_INSTANCE.NODE_NAME is '开始节点名称'; comment on column FLOW_INSTANCE.NODE_NAME is '开始节点名称';
comment on column FLOW_INSTANCE.VARIABLE 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.ACTIVITY_STATUS is '流程激活状态0挂起 1激活';
comment on column FLOW_INSTANCE.DEF_JSON is '流程定义json'; comment on column FLOW_INSTANCE.DEF_JSON is '流程定义json';
comment on column FLOW_INSTANCE.CREATE_BY is '创建者'; comment on column FLOW_INSTANCE.CREATE_BY is '创建者';
@ -172,6 +179,7 @@ create table FLOW_TASK
NODE_CODE VARCHAR2(100), NODE_CODE VARCHAR2(100),
NODE_NAME VARCHAR2(100), NODE_NAME VARCHAR2(100),
NODE_TYPE NUMBER(1), NODE_TYPE NUMBER(1),
FLOW_STATUS VARCHAR2(20),
FORM_CUSTOM VARCHAR2(1) default 'N', FORM_CUSTOM VARCHAR2(1) default 'N',
FORM_PATH VARCHAR2(100), FORM_PATH VARCHAR2(100),
CREATE_TIME DATE, CREATE_TIME DATE,
@ -180,7 +188,8 @@ create table FLOW_TASK
TENANT_ID VARCHAR2(40) TENANT_ID VARCHAR2(40)
); );
alter table FLOW_TASK add constraint PK_FLOW_TASK primary key (ID); alter table FLOW_TASK
add constraint PK_FLOW_TASK primary key (ID);
comment on table FLOW_TASK is '待办任务表'; comment on table FLOW_TASK is '待办任务表';
comment on column FLOW_TASK.ID is '主键id'; comment on column FLOW_TASK.ID is '主键id';
@ -189,6 +198,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_CODE is '节点编码';
comment on column FLOW_TASK.NODE_NAME 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.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_CUSTOM is '审批表单是否自定义 (Y是 N否)';
comment on column FLOW_TASK.FORM_PATH is '审批表单路径'; comment on column FLOW_TASK.FORM_PATH is '审批表单路径';
comment on column FLOW_TASK.CREATE_TIME is '创建时间'; comment on column FLOW_TASK.CREATE_TIME is '创建时间';
@ -224,7 +234,8 @@ create table FLOW_HIS_TASK
); );
alter table FLOW_HIS_TASK add constraint PK_FLOW_HIS_TASK primary key (ID); alter table FLOW_HIS_TASK
add constraint PK_FLOW_HIS_TASK primary key (ID);
comment on table FLOW_HIS_TASK is '历史任务记录表'; comment on table FLOW_HIS_TASK is '历史任务记录表';
comment on column FLOW_HIS_TASK.ID is '主键id'; comment on column FLOW_HIS_TASK.ID is '主键id';
@ -237,7 +248,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_CODE is '目标节点编码';
comment on column FLOW_HIS_TASK.TARGET_NODE_NAME 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.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_CUSTOM is '审批表单是否自定义 (Y是 N否)';
comment on column FLOW_HIS_TASK.FORM_PATH is '审批表单路径'; comment on column FLOW_HIS_TASK.FORM_PATH is '审批表单路径';
comment on column FLOW_HIS_TASK.MESSAGE is '审批意见'; comment on column FLOW_HIS_TASK.MESSAGE is '审批意见';
@ -264,7 +275,8 @@ create table FLOW_USER
TENANT_ID VARCHAR2(40) TENANT_ID VARCHAR2(40)
); );
alter table FLOW_USER add constraint PK_FLOW_USER primary key (ID); alter table FLOW_USER
add constraint PK_FLOW_USER primary key (ID);
comment on table FLOW_USER is '待办任务表'; comment on table FLOW_USER is '待办任务表';
comment on column FLOW_USER.ID is '主键id'; comment on column FLOW_USER.ID is '主键id';

View File

@ -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_code IS '流程节点编码';
COMMENT ON COLUMN flow_instance.node_name IS '流程节点名称'; COMMENT ON COLUMN flow_instance.node_name IS '流程节点名称';
COMMENT ON COLUMN flow_instance.variable 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.activity_status IS '流程激活状态0挂起 1激活';
COMMENT ON COLUMN flow_instance.def_json IS '流程定义json'; COMMENT ON COLUMN flow_instance.def_json IS '流程定义json';
COMMENT ON COLUMN flow_instance.create_by IS '创建者'; COMMENT ON COLUMN flow_instance.create_by IS '创建者';
@ -172,6 +172,7 @@ CREATE TABLE flow_task
node_code varchar(100) NOT NULL, -- 节点编码 node_code varchar(100) NOT NULL, -- 节点编码
node_name varchar(100) NULL, -- 节点名称 node_name varchar(100) NULL, -- 节点名称
node_type int2 NOT NULL, -- 节点类型0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关 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_custom bpchar(1) NULL DEFAULT 'N':: character varying, -- 审批表单是否自定义Y是 N否
form_path varchar(100) NULL, -- 审批表单路径 form_path varchar(100) NULL, -- 审批表单路径
create_time timestamp 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_code IS '节点编码';
COMMENT ON COLUMN flow_task.node_name 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.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_custom IS '审批表单是否自定义Y是 N否';
COMMENT ON COLUMN flow_task.form_path IS '审批表单路径'; COMMENT ON COLUMN flow_task.form_path IS '审批表单路径';
COMMENT ON COLUMN flow_task.create_time 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 definition_id int8 NOT NULL, -- 对应flow_definition表的id
instance_id int8 NOT NULL, -- 对应flow_instance表的id instance_id int8 NOT NULL, -- 对应flow_instance表的id
task_id int8 NOT NULL, -- 对应flow_task表的id task_id int8 NOT NULL, -- 对应flow_task表的id
node_code varchar(200) NULL, -- 开始节点编码 node_code varchar(100) NULL, -- 开始节点编码
node_name varchar(200) NULL, -- 开始节点名称 node_name varchar(100) NULL, -- 开始节点名称
node_type int2 NULL, -- 开始节点类型0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关 node_type int2 NULL, -- 开始节点类型0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关
target_node_code varchar(200) NULL, -- 目标节点编码 target_node_code varchar(200) NULL, -- 目标节点编码
target_node_name 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.cooperate_type IS '协作方式(1审批 2转办 3委派 4会签 5票签 6加签 7减签)';
COMMENT ON COLUMN flow_his_task.collaborator IS '协作人'; 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.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_custom IS '审批表单是否自定义Y是 N否';
COMMENT ON COLUMN flow_his_task.form_path IS '审批表单路径'; COMMENT ON COLUMN flow_his_task.form_path IS '审批表单路径';
COMMENT ON COLUMN flow_his_task.message IS '审批意见'; COMMENT ON COLUMN flow_his_task.message IS '审批意见';

View File

@ -3,7 +3,7 @@
-- ---------------------------- -- ----------------------------
CREATE TABLE `flow_definition` 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_code` varchar(40) NOT NULL COMMENT '流程编码',
`flow_name` varchar(100) NOT NULL COMMENT '流程名称', `flow_name` varchar(100) NOT NULL COMMENT '流程名称',
`category` varchar(100) DEFAULT NULL COMMENT '流程类别', `category` varchar(100) DEFAULT NULL COMMENT '流程类别',
@ -50,7 +50,7 @@ CREATE TABLE `flow_node`
CREATE TABLE `flow_skip` CREATE TABLE `flow_skip`
( (
`id` bigint unsigned NOT NULL COMMENT '主键id', `id` bigint NOT NULL COMMENT '主键id',
`definition_id` bigint NOT NULL COMMENT '流程定义id', `definition_id` bigint NOT NULL COMMENT '流程定义id',
`now_node_code` varchar(100) NOT NULL COMMENT '当前流程节点的编码', `now_node_code` varchar(100) NOT NULL COMMENT '当前流程节点的编码',
`now_node_type` tinyint(1) DEFAULT NULL COMMENT '当前节点类型0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关', `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_code` varchar(40) NOT NULL COMMENT '流程节点编码',
`node_name` varchar(100) DEFAULT NULL COMMENT '流程节点名称', `node_name` varchar(100) DEFAULT NULL COMMENT '流程节点名称',
`variable` text 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激活', `activity_status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '流程激活状态0挂起 1激活',
`def_json` text COMMENT '流程定义json', `def_json` text COMMENT '流程定义json',
`create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
@ -96,6 +96,7 @@ CREATE TABLE `flow_task`
`node_code` varchar(100) NOT NULL COMMENT '节点编码', `node_code` varchar(100) NOT NULL COMMENT '节点编码',
`node_name` varchar(100) DEFAULT NULL COMMENT '节点名称', `node_name` varchar(100) DEFAULT NULL COMMENT '节点名称',
`node_type` tinyint(1) NOT NULL COMMENT '节点类型0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关', `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_custom` char(1) DEFAULT 'N' COMMENT '审批表单是否自定义Y是 N否',
`form_path` varchar(100) DEFAULT NULL COMMENT '审批表单路径', `form_path` varchar(100) DEFAULT NULL COMMENT '审批表单路径',
`create_time` datetime DEFAULT NULL COMMENT '创建时间', `create_time` datetime DEFAULT NULL COMMENT '创建时间',
@ -107,7 +108,7 @@ CREATE TABLE `flow_task`
CREATE TABLE `flow_his_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', `definition_id` bigint(20) NOT NULL COMMENT '对应flow_definition表的id',
`instance_id` bigint(20) NOT NULL COMMENT '对应flow_instance表的id', `instance_id` bigint(20) NOT NULL COMMENT '对应flow_instance表的id',
`task_id` bigint(20) NOT NULL COMMENT '对应flow_task表的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减签)', `cooperate_type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '协作方式(1审批 2转办 3委派 4会签 5票签 6加签 7减签)',
`collaborator` varchar(40) DEFAULT NULL COMMENT '协作人', `collaborator` varchar(40) DEFAULT NULL COMMENT '协作人',
`skip_type` varchar(10) NOT NULL COMMENT '流转类型PASS通过 REJECT退回 NONE无动作', `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_custom` char(1) DEFAULT 'N' COMMENT '审批表单是否自定义Y是 N否',
`form_path` varchar(100) DEFAULT NULL COMMENT '审批表单路径', `form_path` varchar(100) DEFAULT NULL COMMENT '审批表单路径',
`message` varchar(500) DEFAULT NULL COMMENT '审批意见', `message` varchar(500) DEFAULT NULL COMMENT '审批意见',
@ -136,7 +137,7 @@ CREATE TABLE `flow_his_task`
CREATE TABLE `flow_user` 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待办任务的委托人权限', `type` char(1) NOT NULL COMMENT '人员类型1待办任务的审批人权限 2待办任务的转办人权限 3待办任务的委托人权限',
`processed_by` varchar(80) DEFAULT NULL COMMENT '权限人', `processed_by` varchar(80) DEFAULT NULL COMMENT '权限人',
`associated` bigint NOT NULL COMMENT '任务表id', `associated` bigint NOT NULL COMMENT '任务表id',

View File

@ -1,3 +1,6 @@
-- ----------------------------
-- 0、warm-flow-all.sql地址https://gitee.com/dromara/warm-flow/blob/master/sql/sqlserver/sqlserver.sql
-- ----------------------------
CREATE TABLE flow_definition ( CREATE TABLE flow_definition (
id bigint NOT NULL, id bigint NOT NULL,
flow_code nvarchar(40) NOT NULL, flow_code nvarchar(40) NOT NULL,
@ -523,7 +526,7 @@ EXEC sp_addextendedproperty
GO GO
EXEC sp_addextendedproperty EXEC sp_addextendedproperty
'MS_Description', N'流程状态0待提交 1审批中 2 审批通过 3自动通过 4终止 5作废 6撤销 7取回 8已完成 9已退回 10失效', 'MS_Description', N'流程状态0待提交 1审批中 2审批通过 4终止 5作废 6撤销 8已完成 9已退回 10失效 11拿回',
'SCHEMA', N'dbo', 'SCHEMA', N'dbo',
'TABLE', N'flow_instance', 'TABLE', N'flow_instance',
'COLUMN', N'flow_status' 'COLUMN', N'flow_status'
@ -598,6 +601,7 @@ CREATE TABLE flow_task (
node_code nvarchar(100) NOT NULL, node_code nvarchar(100) NOT NULL,
node_name nvarchar(100) NULL, node_name nvarchar(100) NULL,
node_type tinyint NOT NULL, node_type tinyint NOT NULL,
flow_status nvarchar(20) NOT NULL,
form_custom nchar(1) DEFAULT('N') NULL, form_custom nchar(1) DEFAULT('N') NULL,
form_path nvarchar(100) NULL, form_path nvarchar(100) NULL,
create_time datetime2(7) NULL, create_time datetime2(7) NULL,
@ -653,6 +657,13 @@ EXEC sp_addextendedproperty
'COLUMN', N'node_type' 'COLUMN', N'node_type'
GO GO
EXEC sp_addextendedproperty
'MS_Description', N'流程状态0待提交 1审批中 2审批通过 4终止 5作废 6撤销 8已完成 9已退回 10失效 11拿回',
'SCHEMA', N'dbo',
'TABLE', N'flow_task',
'COLUMN', N'flow_status'
GO
EXEC sp_addextendedproperty EXEC sp_addextendedproperty
'MS_Description', N'审批表单是否自定义Y是 N否', 'MS_Description', N'审批表单是否自定义Y是 N否',
'SCHEMA', N'dbo', 'SCHEMA', N'dbo',
@ -824,7 +835,7 @@ EXEC sp_addextendedproperty
GO GO
EXEC sp_addextendedproperty EXEC sp_addextendedproperty
'MS_Description', N'流程状态(1审批中 2 审批通过 9已退回 10失效', 'MS_Description', N'流程状态(0待提交 1审批中 2审批通过 4终止 5作废 6撤销 8已完成 9已退回 10失效 11拿回',
'SCHEMA', N'dbo', 'SCHEMA', N'dbo',
'TABLE', N'flow_his_task', 'TABLE', N'flow_his_task',
'COLUMN', N'flow_status' 'COLUMN', N'flow_status'

View File

@ -0,0 +1,8 @@
ALTER TABLE `flow_task`
ADD COLUMN `flow_status` varchar(20) NOT NULL COMMENT '流程状态0待提交 1审批中 2审批通过 4终止 5作废 6撤销 8已完成 9已退回 10失效 11拿回' AFTER `node_type`;
ALTER TABLE `flow_instance`
MODIFY COLUMN `flow_status` varchar(20) NOT NULL COMMENT '流程状态0待提交 1审批中 2审批通过 4终止 5作废 6撤销 8已完成 9已退回 10失效 11拿回' AFTER `variable`;
ALTER TABLE `flow_his_task`
MODIFY COLUMN `flow_status` varchar(20) NOT NULL COMMENT '流程状态0待提交 1审批中 2审批通过 4终止 5作废 6撤销 8已完成 9已退回 10失效 11拿回' AFTER `skip_type`