-- 报销流程配置表 - 数据库表结构
-- 执行时间：2025年
-- 说明：支持预先配置多个报销审批流程模板，用户创建报销申请时可以选择已配置的流程

-- 1. 流程配置主表（存储流程模板基本信息）
CREATE TABLE IF NOT EXISTS `lq_reimbursement_workflow_config` (
  `F_Id` varchar(50) NOT NULL COMMENT '流程配置ID',
  `F_WorkflowName` varchar(100) NOT NULL COMMENT '流程名称',
  `F_IsEnabled` int NOT NULL DEFAULT 1 COMMENT '是否启用（1-启用，0-禁用）',
  `F_Description` varchar(500) DEFAULT NULL COMMENT '流程描述',
  `F_CreateTime` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `F_CreateUser` varchar(50) DEFAULT NULL COMMENT '创建人ID',
  `F_ModifyTime` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `F_ModifyUser` varchar(50) DEFAULT NULL COMMENT '修改人ID',
  PRIMARY KEY (`F_Id`),
  KEY `idx_is_enabled` (`F_IsEnabled`),
  KEY `idx_workflow_name` (`F_WorkflowName`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='报销流程配置表';

-- 2. 流程节点配置表（存储每个流程的节点配置）
CREATE TABLE IF NOT EXISTS `lq_reimbursement_workflow_node` (
  `F_Id` varchar(50) NOT NULL COMMENT '节点配置ID',
  `F_WorkflowConfigId` varchar(50) NOT NULL COMMENT '流程配置ID（外键，关联流程配置）',
  `F_NodeOrder` int NOT NULL COMMENT '节点顺序（1,2,3,4,5...）',
  `F_NodeName` varchar(100) DEFAULT NULL COMMENT '节点名称',
  `F_ApprovalType` varchar(20) DEFAULT '会签' COMMENT '审批类型（会签/或签）',
  `F_IsRequired` int DEFAULT 1 COMMENT '是否必审（1-必审，0-可选）',
  `F_CreateTime` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`F_Id`),
  KEY `idx_workflow_config_id` (`F_WorkflowConfigId`),
  KEY `idx_node_order` (`F_WorkflowConfigId`, `F_NodeOrder`),
  CONSTRAINT `fk_workflow_node_config` FOREIGN KEY (`F_WorkflowConfigId`) 
    REFERENCES `lq_reimbursement_workflow_config` (`F_Id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='流程节点配置表';

-- 3. 流程节点审批人配置表（存储每个节点的审批人配置，可选）
CREATE TABLE IF NOT EXISTS `lq_reimbursement_workflow_node_user` (
  `F_Id` varchar(50) NOT NULL COMMENT '记录ID',
  `F_WorkflowConfigId` varchar(50) NOT NULL COMMENT '流程配置ID（外键）',
  `F_NodeId` varchar(50) NOT NULL COMMENT '节点配置ID（外键，关联流程节点配置）',
  `F_NodeOrder` int NOT NULL COMMENT '节点顺序（冗余字段，方便查询）',
  `F_UserId` varchar(50) NOT NULL COMMENT '审批人ID',
  `F_UserName` varchar(100) DEFAULT NULL COMMENT '审批人姓名',
  `F_SortOrder` int DEFAULT 0 COMMENT '排序',
  `F_CreateTime` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`F_Id`),
  KEY `idx_workflow_config_id` (`F_WorkflowConfigId`),
  KEY `idx_node_id` (`F_NodeId`),
  KEY `idx_user_id` (`F_UserId`),
  KEY `idx_node_order` (`F_WorkflowConfigId`, `F_NodeOrder`),
  UNIQUE KEY `uk_workflow_node_user` (`F_WorkflowConfigId`, `F_NodeId`, `F_UserId`),
  CONSTRAINT `fk_workflow_node_user_config` FOREIGN KEY (`F_WorkflowConfigId`) 
    REFERENCES `lq_reimbursement_workflow_config` (`F_Id`) ON DELETE CASCADE,
  CONSTRAINT `fk_workflow_node_user_node` FOREIGN KEY (`F_NodeId`) 
    REFERENCES `lq_reimbursement_workflow_node` (`F_Id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='流程节点审批人配置表';
