增加form表单

This commit is contained in:
dengqichen 2025-10-24 15:21:08 +08:00
parent 42a8609b8c
commit 84bdf69a9f
4 changed files with 92 additions and 109 deletions

View File

@ -1,15 +1,12 @@
package com.qqchen.deploy.backend.workflow.dto; package com.qqchen.deploy.backend.workflow.dto;
import com.fasterxml.jackson.databind.JsonNode;
import com.qqchen.deploy.backend.framework.dto.BaseDTO; import com.qqchen.deploy.backend.framework.dto.BaseDTO;
import com.qqchen.deploy.backend.workflow.dto.FormDefinitionDTO;
import com.qqchen.deploy.backend.workflow.dto.definition.workflow.WorkflowDefinitionGraph; import com.qqchen.deploy.backend.workflow.dto.definition.workflow.WorkflowDefinitionGraph;
import com.qqchen.deploy.backend.workflow.enums.WorkflowDefinitionStatusEnums; import com.qqchen.deploy.backend.workflow.enums.WorkflowDefinitionStatusEnums;
import com.qqchen.deploy.backend.workflow.enums.WorkflowTriggerTypeEnum;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.List;
/** /**
* 工作流定义DTO * 工作流定义DTO
* *
@ -41,9 +38,14 @@ public class WorkflowDefinitionDTO extends BaseDTO {
private WorkflowCategoryDTO category; private WorkflowCategoryDTO category;
/** /**
* 触发类型列表 * 启动表单ID
*/ */
private List<WorkflowTriggerTypeEnum> triggers; private Long formDefinitionId;
/**
* 启动表单信息用于展示
*/
private FormDefinitionDTO formDefinition;
/** /**
* 流程版本 * 流程版本

View File

@ -1,15 +1,11 @@
package com.qqchen.deploy.backend.workflow.entity; package com.qqchen.deploy.backend.workflow.entity;
import com.fasterxml.jackson.databind.JsonNode;
import com.qqchen.deploy.backend.framework.annotation.LogicDelete; import com.qqchen.deploy.backend.framework.annotation.LogicDelete;
import com.qqchen.deploy.backend.workflow.dto.definition.workflow.WorkflowDefinitionGraph; import com.qqchen.deploy.backend.workflow.dto.definition.workflow.WorkflowDefinitionGraph;
import com.qqchen.deploy.backend.workflow.enums.WorkflowDefinitionStatusEnums; import com.qqchen.deploy.backend.workflow.enums.WorkflowDefinitionStatusEnums;
import com.qqchen.deploy.backend.workflow.enums.WorkflowTriggerTypeEnum;
import com.qqchen.deploy.backend.workflow.entity.converter.WorkflowGraphType; import com.qqchen.deploy.backend.workflow.entity.converter.WorkflowGraphType;
import com.qqchen.deploy.backend.framework.domain.Entity; import com.qqchen.deploy.backend.framework.domain.Entity;
import com.vladmihalcea.hibernate.type.json.JsonType;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.Convert;
import jakarta.persistence.EnumType; import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated; import jakarta.persistence.Enumerated;
import jakarta.persistence.Table; import jakarta.persistence.Table;
@ -17,8 +13,6 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import org.hibernate.annotations.Type; import org.hibernate.annotations.Type;
import java.util.List;
/** /**
* 工作流定义实体 * 工作流定义实体
*/ */
@ -47,12 +41,13 @@ public class WorkflowDefinition extends Entity<Long> {
@Column(name = "category_id") @Column(name = "category_id")
private Long categoryId; private Long categoryId;
/**
* 启动表单ID外键关联form_definition
*/
@Column(name = "form_definition_id")
private Long formDefinitionId;
@Column(name = "triggers", nullable = false) @Column(name = "process_definition_id")
@Convert(converter = WorkflowTriggerTypeListConverter.class)
private List<WorkflowTriggerTypeEnum> triggers;
@Column(name = "process_definition_id", nullable = false)
private String processDefinitionId; private String processDefinitionId;
/** /**
@ -87,12 +82,4 @@ public class WorkflowDefinition extends Entity<Long> {
*/ */
@Column(columnDefinition = "TEXT") @Column(columnDefinition = "TEXT")
private String description; private String description;
/**
* 流程标签用于分组和过滤
*/
@Type(JsonType.class)
@Column(name = "tags", columnDefinition = "json")
private JsonNode tags;
} }

View File

@ -233,9 +233,9 @@ VALUES
-- 工作流定义测试数据 -- 工作流定义测试数据
INSERT INTO workflow_definition ( INSERT INTO workflow_definition (
-- 基础信息 -- 基础信息
name, `key`, process_definition_id, flow_version, description, category_id, triggers, name, `key`, process_definition_id, flow_version, description, category_id, form_definition_id,
-- 流程配置 -- 流程配置
graph, tags, graph,
-- 流程属性 -- 流程属性
status, status,
-- 审计字段 -- 审计字段
@ -404,7 +404,6 @@ INSERT INTO workflow_definition (
"properties" : null "properties" : null
} ] } ]
}', }',
'["simple","script","test"]',
'DRAFT', 'DRAFT',
NOW(), NOW(), NULL, NULL, 0, 0 NOW(), NOW(), NULL, NULL, 0, 0
), ),
@ -635,7 +634,6 @@ INSERT INTO workflow_definition (
"properties" : null "properties" : null
} ] } ]
}', }',
'["complex","business","multi-task"]',
'DRAFT', 'DRAFT',
NOW(), NOW(), NULL, NULL, 0, 0 NOW(), NOW(), NULL, NULL, 0, 0
); );

View File

@ -406,6 +406,78 @@ CREATE TABLE workflow_category
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci
COMMENT = '工作流分类表'; COMMENT = '工作流分类表';
CREATE TABLE form_category
(
-- 主键
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
-- 基础信息
name VARCHAR(100) NOT NULL COMMENT '分类名称',
code VARCHAR(50) NOT NULL COMMENT '分类编码(唯一)',
description VARCHAR(500) NULL COMMENT '分类描述',
icon VARCHAR(50) NULL COMMENT '图标',
sort INT NOT NULL DEFAULT 0 COMMENT '排序',
-- 状态
enabled BIT NOT NULL DEFAULT 1 COMMENT '是否启用',
-- 审计字段
create_by VARCHAR(255) NULL COMMENT '创建人',
create_time DATETIME(6) NULL COMMENT '创建时间',
deleted BIT NOT NULL DEFAULT 0 COMMENT '是否删除',
update_by VARCHAR(255) NULL COMMENT '更新人',
update_time DATETIME(6) NULL COMMENT '更新时间',
version INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本号',
-- 约束和索引
UNIQUE KEY uk_code (code),
INDEX idx_enabled (enabled),
INDEX idx_deleted (deleted),
INDEX idx_sort (sort)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci
COMMENT = '表单分类表';
-- 表单定义表
CREATE TABLE form_definition
(
-- 主键
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
-- 基础信息
name VARCHAR(255) NOT NULL COMMENT '表单名称',
`key` VARCHAR(255) NOT NULL COMMENT '表单标识(业务唯一)',
form_version INT NOT NULL DEFAULT 1 COMMENT '表单版本号',
category_id BIGINT NULL COMMENT '表单分类ID外键关联form_category',
description TEXT NULL COMMENT '表单描述',
-- 表单配置
`schema` JSON NOT NULL COMMENT '表单Schema前端设计器导出的JSON结构',
tags JSON NULL COMMENT '标签(用于分类和搜索)',
-- 表单属性
status VARCHAR(50) NOT NULL DEFAULT 'DRAFT' COMMENT '状态DRAFT-草稿、PUBLISHED-已发布、DISABLED-已禁用)',
is_template BIT NOT NULL DEFAULT 0 COMMENT '是否为模板',
-- 审计字段
create_by VARCHAR(255) NULL COMMENT '创建人',
create_time DATETIME(6) NULL COMMENT '创建时间',
deleted BIT NOT NULL DEFAULT 0 COMMENT '是否删除',
update_by VARCHAR(255) NULL COMMENT '更新人',
update_time DATETIME(6) NULL COMMENT '更新时间',
version INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本号',
-- 约束和索引
UNIQUE KEY uk_key_version (`key`, form_version),
INDEX idx_category_id (category_id),
INDEX idx_status (status),
INDEX idx_is_template (is_template),
INDEX idx_deleted (deleted),
-- 外键约束
CONSTRAINT fk_form_definition_category FOREIGN KEY (category_id) REFERENCES form_category(id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci
COMMENT = '表单定义表';
-- 工作流定义表 -- 工作流定义表
CREATE TABLE workflow_definition CREATE TABLE workflow_definition
( (
@ -416,7 +488,7 @@ CREATE TABLE workflow_definition
name VARCHAR(255) NOT NULL COMMENT '流程名称', name VARCHAR(255) NOT NULL COMMENT '流程名称',
`key` VARCHAR(255) NOT NULL COMMENT '流程标识', `key` VARCHAR(255) NOT NULL COMMENT '流程标识',
category_id BIGINT NULL COMMENT '流程分类ID外键关联workflow_category', category_id BIGINT NULL COMMENT '流程分类ID外键关联workflow_category',
triggers JSON NULL COMMENT '触发器配置JSON数组', form_definition_id BIGINT NULL COMMENT '启动表单ID外键关联form_definition',
process_definition_id VARCHAR(100) NULL COMMENT '工作流定义ID', process_definition_id VARCHAR(100) NULL COMMENT '工作流定义ID',
flow_version INT NOT NULL COMMENT '流程版本', flow_version INT NOT NULL COMMENT '流程版本',
description TEXT COMMENT '流程描述', description TEXT COMMENT '流程描述',
@ -424,7 +496,6 @@ CREATE TABLE workflow_definition
-- 流程配置 -- 流程配置
bpmn_xml TEXT COMMENT 'BPMN XML内容', bpmn_xml TEXT COMMENT 'BPMN XML内容',
graph JSON COMMENT '流程图数据,包含节点和连线的位置、样式等信息', graph JSON COMMENT '流程图数据,包含节点和连线的位置、样式等信息',
tags JSON COMMENT '流程标签',
-- 流程属性 -- 流程属性
status VARCHAR(50) NOT NULL COMMENT '流程状态DRAFT-草稿、PUBLISHED-已发布、DISABLED-已禁用)', status VARCHAR(50) NOT NULL COMMENT '流程状态DRAFT-草稿、PUBLISHED-已发布、DISABLED-已禁用)',
@ -440,9 +511,11 @@ CREATE TABLE workflow_definition
-- 约束和索引 -- 约束和索引
UNIQUE KEY uk_key_version (`key`, flow_version), UNIQUE KEY uk_key_version (`key`, flow_version),
INDEX idx_category_id (category_id), INDEX idx_category_id (category_id),
INDEX idx_form_definition_id (form_definition_id),
INDEX idx_status (status), INDEX idx_status (status),
INDEX idx_deleted (deleted), INDEX idx_deleted (deleted),
CONSTRAINT fk_workflow_definition_category FOREIGN KEY (category_id) REFERENCES workflow_category(id) CONSTRAINT fk_workflow_definition_category FOREIGN KEY (category_id) REFERENCES workflow_category(id),
CONSTRAINT fk_workflow_definition_form FOREIGN KEY (form_definition_id) REFERENCES form_definition(id)
) ENGINE = InnoDB ) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4 DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT ='工作流定义表'; COLLATE = utf8mb4_unicode_ci COMMENT ='工作流定义表';
@ -728,83 +801,6 @@ CREATE TABLE sys_notification_channel (
INDEX idx_deleted (deleted) INDEX idx_deleted (deleted)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='通知渠道配置表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='通知渠道配置表';
-- =====================================================================================================================
-- 表单管理相关表
-- =====================================================================================================================
-- 表单分类表
CREATE TABLE form_category
(
-- 主键
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
-- 基础信息
name VARCHAR(100) NOT NULL COMMENT '分类名称',
code VARCHAR(50) NOT NULL COMMENT '分类编码(唯一)',
description VARCHAR(500) NULL COMMENT '分类描述',
icon VARCHAR(50) NULL COMMENT '图标',
sort INT NOT NULL DEFAULT 0 COMMENT '排序',
-- 状态
enabled BIT NOT NULL DEFAULT 1 COMMENT '是否启用',
-- 审计字段
create_by VARCHAR(255) NULL COMMENT '创建人',
create_time DATETIME(6) NULL COMMENT '创建时间',
deleted BIT NOT NULL DEFAULT 0 COMMENT '是否删除',
update_by VARCHAR(255) NULL COMMENT '更新人',
update_time DATETIME(6) NULL COMMENT '更新时间',
version INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本号',
-- 约束和索引
UNIQUE KEY uk_code (code),
INDEX idx_enabled (enabled),
INDEX idx_deleted (deleted),
INDEX idx_sort (sort)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci
COMMENT = '表单分类表';
-- 表单定义表
CREATE TABLE form_definition
(
-- 主键
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
-- 基础信息
name VARCHAR(255) NOT NULL COMMENT '表单名称',
`key` VARCHAR(255) NOT NULL COMMENT '表单标识(业务唯一)',
form_version INT NOT NULL DEFAULT 1 COMMENT '表单版本号',
category_id BIGINT NULL COMMENT '表单分类ID外键关联form_category',
description TEXT NULL COMMENT '表单描述',
-- 表单配置
`schema` JSON NOT NULL COMMENT '表单Schema前端设计器导出的JSON结构',
tags JSON NULL COMMENT '标签(用于分类和搜索)',
-- 表单属性
status VARCHAR(50) NOT NULL DEFAULT 'DRAFT' COMMENT '状态DRAFT-草稿、PUBLISHED-已发布、DISABLED-已禁用)',
is_template BIT NOT NULL DEFAULT 0 COMMENT '是否为模板',
-- 审计字段
create_by VARCHAR(255) NULL COMMENT '创建人',
create_time DATETIME(6) NULL COMMENT '创建时间',
deleted BIT NOT NULL DEFAULT 0 COMMENT '是否删除',
update_by VARCHAR(255) NULL COMMENT '更新人',
update_time DATETIME(6) NULL COMMENT '更新时间',
version INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本号',
-- 约束和索引
UNIQUE KEY uk_key_version (`key`, form_version),
INDEX idx_category_id (category_id),
INDEX idx_status (status),
INDEX idx_is_template (is_template),
INDEX idx_deleted (deleted),
-- 外键约束
CONSTRAINT fk_form_definition_category FOREIGN KEY (category_id) REFERENCES form_category(id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci
COMMENT = '表单定义表';
-- 表单数据表 -- 表单数据表
CREATE TABLE form_data CREATE TABLE form_data
( (