From 7405095c6f706d06b578e4a68e46eff298566389 Mon Sep 17 00:00:00 2001 From: dengqichen Date: Fri, 24 Oct 2025 15:58:59 +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 --- .../dto/WorkflowInstanceCreateDTO.java | 11 ++ .../workflow/dto/WorkflowInstanceDTO.java | 10 ++ .../workflow/entity/WorkflowInstance.java | 6 ++ .../db/changelog/changes/v1.0.0-schema.sql | 102 +++++++++--------- 4 files changed, 80 insertions(+), 49 deletions(-) diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/WorkflowInstanceCreateDTO.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/WorkflowInstanceCreateDTO.java index 55c62f04..8d8050b9 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/WorkflowInstanceCreateDTO.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/WorkflowInstanceCreateDTO.java @@ -5,6 +5,7 @@ import com.qqchen.deploy.backend.workflow.enums.WorkflowInstanceStatusEnums; import lombok.Data; import java.time.LocalDateTime; +import java.util.Map; @Data public class WorkflowInstanceCreateDTO extends BaseDTO { @@ -24,6 +25,16 @@ public class WorkflowInstanceCreateDTO extends BaseDTO { */ private String businessKey; + /** + * 启动表单定义ID(可选,如果工作流需要启动表单) + */ + private Long formDefinitionId; + + /** + * 启动表单数据(可选,如果有启动表单) + */ + private Map formData; + /** * 实例状态 */ diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/WorkflowInstanceDTO.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/WorkflowInstanceDTO.java index 59fef30f..b57ce2a2 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/WorkflowInstanceDTO.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/WorkflowInstanceDTO.java @@ -29,6 +29,16 @@ public class WorkflowInstanceDTO extends BaseDTO { */ private String businessKey; + /** + * 启动表单数据ID + */ + private Long formDataId; + + /** + * 启动表单数据(用于展示) + */ + private FormDataDTO formData; + /** * 实例状态 */ diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/entity/WorkflowInstance.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/entity/WorkflowInstance.java index c1361fc0..7094e456 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/workflow/entity/WorkflowInstance.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/workflow/entity/WorkflowInstance.java @@ -44,6 +44,12 @@ public class WorkflowInstance extends Entity { @Column(name = "business_key") private String businessKey; + /** + * 启动表单数据ID(外键关联form_data) + */ + @Column(name = "form_data_id") + private Long formDataId; + /** * 实例状态 */ 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 37ffe732..c79b7ec9 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 @@ -547,6 +547,54 @@ CREATE TABLE workflow_node_definition DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT ='工作流节点定义表'; +-- 表单数据表 +CREATE TABLE form_data +( + -- 主键 + id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', + + -- 关联表单定义 + form_definition_id BIGINT NOT NULL COMMENT '表单定义ID', + form_key VARCHAR(255) NOT NULL COMMENT '表单标识(冗余存储,避免JOIN)', + form_version INT NOT NULL COMMENT '表单版本(冗余存储,用于历史追溯)', + category_id BIGINT NULL COMMENT '表单分类ID(冗余存储,便于统计和查询)', + + -- 业务关联(松耦合) + business_key VARCHAR(255) NULL COMMENT '业务标识(如工作流实例ID、订单号等)', + business_type VARCHAR(50) NULL COMMENT '业务类型(WORKFLOW-工作流、ORDER-订单、STANDALONE-独立表单)', + + -- 表单数据 + data JSON NOT NULL COMMENT '表单填写数据(用户提交的实际数据)', + schema_snapshot JSON NOT NULL COMMENT '表单Schema快照(用于历史追溯,确保数据可还原)', + + -- 提交信息 + submitter VARCHAR(255) NULL COMMENT '提交人', + submit_time DATETIME(6) NULL COMMENT '提交时间', + + -- 状态 + status VARCHAR(50) NOT NULL DEFAULT 'SUBMITTED' COMMENT '状态(DRAFT-草稿、SUBMITTED-已提交、COMPLETED-已完成、REJECTED-已拒绝)', + + -- 审计字段 + 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 '乐观锁版本号', + + -- 索引 + INDEX idx_form_definition_id (form_definition_id), + INDEX idx_form_key (form_key), + INDEX idx_category_id (category_id), + INDEX idx_business_key (business_key), + INDEX idx_business_type (business_type), + INDEX idx_submitter (submitter), + INDEX idx_status (status), + INDEX idx_submit_time (submit_time), + INDEX idx_deleted (deleted) +) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci + COMMENT = '表单数据表'; + -- 工作流实例表 CREATE TABLE workflow_instance ( @@ -562,11 +610,15 @@ CREATE TABLE workflow_instance process_definition_id VARCHAR(64) NOT NULL COMMENT '流程定义ID', workflow_definition_id BIGINT NOT NULL COMMENT '工作流定义ID', business_key VARCHAR(64) NULL COMMENT '业务标识', + form_data_id BIGINT NULL COMMENT '启动表单数据ID(外键关联form_data)', status VARCHAR(100) NOT NULL COMMENT '实例状态', variables TEXT NULL COMMENT '流程变量(JSON)', graph_snapshot JSON NULL COMMENT '流程图数据快照(启动时保存,用于画布还原)', start_time DATETIME(6) NULL COMMENT '开始时间', - end_time DATETIME(6) NULL COMMENT '结束时间' + end_time DATETIME(6) NULL COMMENT '结束时间', + + INDEX idx_form_data_id (form_data_id), + CONSTRAINT fk_workflow_instance_form_data FOREIGN KEY (form_data_id) REFERENCES form_data(id) -- CONSTRAINT FK_workflow_instance_definition FOREIGN KEY (process_definition_id) REFERENCES workflow_definition(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='工作流实例表'; @@ -801,51 +853,3 @@ CREATE TABLE sys_notification_channel ( INDEX idx_deleted (deleted) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='通知渠道配置表'; --- 表单数据表 -CREATE TABLE form_data -( - -- 主键 - id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', - - -- 关联表单定义 - form_definition_id BIGINT NOT NULL COMMENT '表单定义ID', - form_key VARCHAR(255) NOT NULL COMMENT '表单标识(冗余存储,避免JOIN)', - form_version INT NOT NULL COMMENT '表单版本(冗余存储,用于历史追溯)', - category_id BIGINT NULL COMMENT '表单分类ID(冗余存储,便于统计和查询)', - - -- 业务关联(松耦合) - business_key VARCHAR(255) NULL COMMENT '业务标识(如工作流实例ID、订单号等)', - business_type VARCHAR(50) NULL COMMENT '业务类型(WORKFLOW-工作流、ORDER-订单、STANDALONE-独立表单)', - - -- 表单数据 - data JSON NOT NULL COMMENT '表单填写数据(用户提交的实际数据)', - schema_snapshot JSON NOT NULL COMMENT '表单Schema快照(用于历史追溯,确保数据可还原)', - - -- 提交信息 - submitter VARCHAR(255) NULL COMMENT '提交人', - submit_time DATETIME(6) NULL COMMENT '提交时间', - - -- 状态 - status VARCHAR(50) NOT NULL DEFAULT 'SUBMITTED' COMMENT '状态(DRAFT-草稿、SUBMITTED-已提交、COMPLETED-已完成、REJECTED-已拒绝)', - - -- 审计字段 - 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 '乐观锁版本号', - - -- 索引 - INDEX idx_form_definition_id (form_definition_id), - INDEX idx_form_key (form_key), - INDEX idx_category_id (category_id), - INDEX idx_business_key (business_key), - INDEX idx_business_type (business_type), - INDEX idx_submitter (submitter), - INDEX idx_status (status), - INDEX idx_submit_time (submit_time), - INDEX idx_deleted (deleted) -) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci - COMMENT = '表单数据表'; -