111 lines
6.7 KiB
SQL
111 lines
6.7 KiB
SQL
-- OnboardX 契约锁电子签流程表
|
|
-- 适用数据库:MySQL 8.0+
|
|
-- 说明:
|
|
-- 1. 一条电子签流程可以包含同一入职任务下的多份合同。
|
|
-- 2. ProviderContractId、ProviderDocumentId 一律使用 VARCHAR,避免第三方 19 位 Id 在前端精度丢失。
|
|
-- 3. 回调事件通过 PayloadHash 幂等处理,可安全接收契约锁重复通知。
|
|
|
|
SET NAMES utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS `ob_electronic_sign_process` (
|
|
`Id` BIGINT NOT NULL COMMENT '主键',
|
|
`TaskId` BIGINT NOT NULL COMMENT '入职任务Id',
|
|
`EmployeeId` BIGINT NOT NULL COMMENT '正式员工Id',
|
|
`Provider` VARCHAR(30) NOT NULL DEFAULT 'qiyuesuo' COMMENT '电子签服务商',
|
|
`BizId` VARCHAR(100) NOT NULL COMMENT '本系统幂等业务编号',
|
|
`IsCurrent` TINYINT(1) NULL DEFAULT 1 COMMENT '是否为任务当前电子签流程,历史流程为空',
|
|
`ProviderContractId` VARCHAR(100) NULL COMMENT '契约锁合同流程Id',
|
|
`CategoryId` VARCHAR(100) NOT NULL COMMENT '契约锁业务分类Id快照',
|
|
`SealId` VARCHAR(100) NOT NULL COMMENT '契约锁印章Id快照',
|
|
`Subject` VARCHAR(300) NOT NULL COMMENT '电子签流程标题',
|
|
`EmployeeName` VARCHAR(100) NOT NULL COMMENT '员工姓名快照',
|
|
`EmployeeMobile` VARCHAR(30) NOT NULL COMMENT '员工手机号快照',
|
|
`EmployeeIdCardNumber` VARCHAR(30) NULL COMMENT '员工身份证号码快照',
|
|
`CreatorName` VARCHAR(100) NOT NULL COMMENT '创建人姓名快照',
|
|
`CreatorMobile` VARCHAR(30) NOT NULL COMMENT '创建人手机号快照',
|
|
`SignStatus` VARCHAR(40) NOT NULL COMMENT '本系统电子签状态',
|
|
`ProviderStatus` VARCHAR(60) NULL COMMENT '契约锁原始合同状态',
|
|
`SignUrl` LONGTEXT NULL COMMENT '员工签署页面地址',
|
|
`SignUrlExpireAt` DATETIME(3) NULL COMMENT '签署页面地址到期时间',
|
|
`StartedAt` DATETIME(3) NOT NULL COMMENT '管理员发起时间',
|
|
`SentAt` DATETIME(3) NULL COMMENT '合同发送时间',
|
|
`CompletedAt` DATETIME(3) NULL COMMENT '全部签署完成时间',
|
|
`ArchivedAt` DATETIME(3) NULL COMMENT '归档完成时间',
|
|
`ArchiveFileId` BIGINT NULL COMMENT '完整归档ZIP文件Id',
|
|
`LastSyncedAt` DATETIME(3) NULL COMMENT '最后主动同步时间',
|
|
`LastCallbackAt` DATETIME(3) NULL COMMENT '最后回调时间',
|
|
`LastError` LONGTEXT NULL COMMENT '最近一次失败原因',
|
|
`RetryCount` INT NOT NULL DEFAULT 0 COMMENT '失败重试次数',
|
|
`ReissueReason` VARCHAR(500) NULL COMMENT '重新发起原因',
|
|
`ReissuedAt` DATETIME(3) NULL COMMENT '被新流程替代时间',
|
|
`ReissuedByProcessId` BIGINT NULL COMMENT '替代当前流程的新流程Id',
|
|
`ExtJson` LONGTEXT NULL COMMENT '扩展信息',
|
|
`Status` VARCHAR(20) NULL DEFAULT 'enable' COMMENT '启用状态',
|
|
`CreateTime` DATETIME(3) NULL COMMENT '创建时间',
|
|
`UpdateTime` DATETIME(3) NULL COMMENT '更新时间',
|
|
`CreateUserId` BIGINT NULL COMMENT '创建者Id',
|
|
`UpdateUserId` BIGINT NULL COMMENT '修改者Id',
|
|
`CreateUser` VARCHAR(200) NULL COMMENT '创建人',
|
|
`UpdateUser` VARCHAR(200) NULL COMMENT '更新人',
|
|
`IsDelete` TINYINT(1) NULL DEFAULT 0 COMMENT '软删除',
|
|
PRIMARY KEY (`Id`),
|
|
UNIQUE KEY `uk_ob_esign_process_biz` (`BizId`),
|
|
UNIQUE KEY `uk_ob_esign_process_current` (`TaskId`, `IsCurrent`),
|
|
UNIQUE KEY `uk_ob_esign_process_provider_contract` (`ProviderContractId`),
|
|
KEY `idx_ob_esign_process_task` (`TaskId`, `StartedAt`),
|
|
KEY `idx_ob_esign_process_status` (`SignStatus`, `UpdateTime`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='入职电子签流程';
|
|
|
|
CREATE TABLE IF NOT EXISTS `ob_electronic_sign_document` (
|
|
`Id` BIGINT NOT NULL COMMENT '主键',
|
|
`SignProcessId` BIGINT NOT NULL COMMENT '电子签流程Id',
|
|
`TaskContractId` BIGINT NOT NULL COMMENT '任务合同Id',
|
|
`ProviderDocumentId` VARCHAR(100) NOT NULL COMMENT '契约锁文档Id',
|
|
`DocumentName` VARCHAR(300) NOT NULL COMMENT '文档名称快照',
|
|
`DocumentSort` INT NOT NULL DEFAULT 1 COMMENT '文档顺序',
|
|
`OriginalDocxFileId` BIGINT NOT NULL COMMENT '原始DOCX文件Id',
|
|
`SignedPdfFileId` BIGINT NULL COMMENT '签署完成PDF文件Id',
|
|
`EmployeeSignKeyword` VARCHAR(200) NOT NULL COMMENT '员工签名关键字快照',
|
|
`CompanySealKeyword` VARCHAR(200) NOT NULL COMMENT '企业盖章关键字快照',
|
|
`EmployeeActionId` VARCHAR(100) NULL COMMENT '员工签署动作Id',
|
|
`CompanyActionId` VARCHAR(100) NULL COMMENT '企业盖章动作Id',
|
|
`ExtJson` LONGTEXT NULL COMMENT '扩展信息',
|
|
`Status` VARCHAR(20) NULL DEFAULT 'enable' COMMENT '启用状态',
|
|
`CreateTime` DATETIME(3) NULL COMMENT '创建时间',
|
|
`UpdateTime` DATETIME(3) NULL COMMENT '更新时间',
|
|
`CreateUserId` BIGINT NULL COMMENT '创建者Id',
|
|
`UpdateUserId` BIGINT NULL COMMENT '修改者Id',
|
|
`CreateUser` VARCHAR(200) NULL COMMENT '创建人',
|
|
`UpdateUser` VARCHAR(200) NULL COMMENT '更新人',
|
|
`IsDelete` TINYINT(1) NULL DEFAULT 0 COMMENT '软删除',
|
|
PRIMARY KEY (`Id`),
|
|
UNIQUE KEY `uk_ob_esign_document_task_contract` (`SignProcessId`, `TaskContractId`),
|
|
UNIQUE KEY `uk_ob_esign_document_provider` (`ProviderDocumentId`),
|
|
KEY `idx_ob_esign_document_process_sort` (`SignProcessId`, `DocumentSort`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='入职电子签文档';
|
|
|
|
CREATE TABLE IF NOT EXISTS `ob_electronic_sign_event` (
|
|
`Id` BIGINT NOT NULL COMMENT '主键',
|
|
`SignProcessId` BIGINT NULL COMMENT '电子签流程Id',
|
|
`PayloadHash` VARCHAR(64) NOT NULL COMMENT '回调内容SHA-256',
|
|
`EventSource` VARCHAR(30) NOT NULL COMMENT '事件来源',
|
|
`EventType` VARCHAR(100) NULL COMMENT '契约锁事件类型',
|
|
`ProviderStatus` VARCHAR(60) NULL COMMENT '契约锁状态',
|
|
`PayloadJson` LONGTEXT NULL COMMENT '事件原始内容',
|
|
`ProcessResult` VARCHAR(500) NULL COMMENT '处理结果',
|
|
`ReceivedAt` DATETIME(3) NOT NULL COMMENT '接收时间',
|
|
`ProcessedAt` DATETIME(3) NULL COMMENT '处理完成时间',
|
|
`ExtJson` LONGTEXT NULL COMMENT '扩展信息',
|
|
`Status` VARCHAR(20) NULL DEFAULT 'enable' COMMENT '启用状态',
|
|
`CreateTime` DATETIME(3) NULL COMMENT '创建时间',
|
|
`UpdateTime` DATETIME(3) NULL COMMENT '更新时间',
|
|
`CreateUserId` BIGINT NULL COMMENT '创建者Id',
|
|
`UpdateUserId` BIGINT NULL COMMENT '修改者Id',
|
|
`CreateUser` VARCHAR(200) NULL COMMENT '创建人',
|
|
`UpdateUser` VARCHAR(200) NULL COMMENT '更新人',
|
|
`IsDelete` TINYINT(1) NULL DEFAULT 0 COMMENT '软删除',
|
|
PRIMARY KEY (`Id`),
|
|
UNIQUE KEY `uk_ob_esign_event_payload_hash` (`PayloadHash`),
|
|
KEY `idx_ob_esign_event_process` (`SignProcessId`, `ReceivedAt`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='入职电子签事件';
|