From 84bdf69a9ffe3f39f34c68ece7083ea16552e1a2 Mon Sep 17 00:00:00 2001 From: dengqichen Date: Fri, 24 Oct 2025 15:21:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0form=E8=A1=A8=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/dto/WorkflowDefinitionDTO.java | 14 +- .../workflow/entity/WorkflowDefinition.java | 25 +-- .../db/changelog/changes/v1.0.0-data.sql | 6 +- .../db/changelog/changes/v1.0.0-schema.sql | 156 +++++++++--------- 4 files changed, 92 insertions(+), 109 deletions(-) diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/WorkflowDefinitionDTO.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/WorkflowDefinitionDTO.java index b0e06882..21d12ae7 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/WorkflowDefinitionDTO.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/WorkflowDefinitionDTO.java @@ -1,15 +1,12 @@ 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.workflow.dto.FormDefinitionDTO; 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.WorkflowTriggerTypeEnum; import lombok.Data; import lombok.EqualsAndHashCode; -import java.util.List; - /** * 工作流定义DTO * @@ -41,9 +38,14 @@ public class WorkflowDefinitionDTO extends BaseDTO { private WorkflowCategoryDTO category; /** - * 触发类型列表 + * 启动表单ID */ - private List triggers; + private Long formDefinitionId; + + /** + * 启动表单信息(用于展示) + */ + private FormDefinitionDTO formDefinition; /** * 流程版本 diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/entity/WorkflowDefinition.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/entity/WorkflowDefinition.java index 6e39d81a..93e2bfbd 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/workflow/entity/WorkflowDefinition.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/workflow/entity/WorkflowDefinition.java @@ -1,15 +1,11 @@ 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.workflow.dto.definition.workflow.WorkflowDefinitionGraph; 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.framework.domain.Entity; -import com.vladmihalcea.hibernate.type.json.JsonType; import jakarta.persistence.Column; -import jakarta.persistence.Convert; import jakarta.persistence.EnumType; import jakarta.persistence.Enumerated; import jakarta.persistence.Table; @@ -17,8 +13,6 @@ import lombok.Data; import lombok.EqualsAndHashCode; import org.hibernate.annotations.Type; -import java.util.List; - /** * 工作流定义实体 */ @@ -47,12 +41,13 @@ public class WorkflowDefinition extends Entity { @Column(name = "category_id") private Long categoryId; + /** + * 启动表单ID(外键关联form_definition) + */ + @Column(name = "form_definition_id") + private Long formDefinitionId; - @Column(name = "triggers", nullable = false) - @Convert(converter = WorkflowTriggerTypeListConverter.class) - private List triggers; - - @Column(name = "process_definition_id", nullable = false) + @Column(name = "process_definition_id") private String processDefinitionId; /** @@ -87,12 +82,4 @@ public class WorkflowDefinition extends Entity { */ @Column(columnDefinition = "TEXT") private String description; - - - /** - * 流程标签,用于分组和过滤 - */ - @Type(JsonType.class) - @Column(name = "tags", columnDefinition = "json") - private JsonNode tags; } diff --git a/backend/src/main/resources/db/changelog/changes/v1.0.0-data.sql b/backend/src/main/resources/db/changelog/changes/v1.0.0-data.sql index f7b848a1..c5bc52be 100644 --- a/backend/src/main/resources/db/changelog/changes/v1.0.0-data.sql +++ b/backend/src/main/resources/db/changelog/changes/v1.0.0-data.sql @@ -233,9 +233,9 @@ VALUES -- 工作流定义测试数据 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, -- 审计字段 @@ -404,7 +404,6 @@ INSERT INTO workflow_definition ( "properties" : null } ] }', - '["simple","script","test"]', 'DRAFT', NOW(), NOW(), NULL, NULL, 0, 0 ), @@ -635,7 +634,6 @@ INSERT INTO workflow_definition ( "properties" : null } ] }', - '["complex","business","multi-task"]', 'DRAFT', NOW(), NOW(), NULL, NULL, 0, 0 ); diff --git a/backend/src/main/resources/db/changelog/changes/v1.0.0-schema.sql b/backend/src/main/resources/db/changelog/changes/v1.0.0-schema.sql index f0934f70..37ffe732 100644 --- a/backend/src/main/resources/db/changelog/changes/v1.0.0-schema.sql +++ b/backend/src/main/resources/db/changelog/changes/v1.0.0-schema.sql @@ -406,6 +406,78 @@ CREATE TABLE workflow_category ) 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 workflow_definition ( @@ -416,7 +488,7 @@ CREATE TABLE workflow_definition name VARCHAR(255) NOT NULL COMMENT '流程名称', `key` VARCHAR(255) NOT NULL COMMENT '流程标识', 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', flow_version INT NOT NULL COMMENT '流程版本', description TEXT COMMENT '流程描述', @@ -424,7 +496,6 @@ CREATE TABLE workflow_definition -- 流程配置 bpmn_xml TEXT COMMENT 'BPMN XML内容', graph JSON COMMENT '流程图数据,包含节点和连线的位置、样式等信息', - tags JSON COMMENT '流程标签', -- 流程属性 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), INDEX idx_category_id (category_id), + INDEX idx_form_definition_id (form_definition_id), INDEX idx_status (status), 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 DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT ='工作流定义表'; @@ -728,83 +801,6 @@ CREATE TABLE sys_notification_channel ( INDEX idx_deleted (deleted) ) 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 (