-- 按样本缴费 + 预签约订单 + 协议退费登记 -- MySQL 5.7 / utf8mb4 -- 说明: -- 1) biz_collection_protocol 增量字段用 information_schema 判断后 ADD,可重复执行 -- 2) payment_model_version 默认 2;首次升级将存量行置为 1(已有 version=1 则跳过 UPDATE) -- 3) 新表 CREATE TABLE IF NOT EXISTS -- --------------------------------------------------------------------------- -- 1) 采集协议单增量字段 -- --------------------------------------------------------------------------- SET @db := DATABASE(); SET @col_exists := ( SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'biz_collection_protocol' AND COLUMN_NAME = 'protocol_total_amount' ); SET @sql := IF(@col_exists = 0, 'ALTER TABLE `biz_collection_protocol` ADD COLUMN `protocol_total_amount` DECIMAL(18,2) DEFAULT NULL COMMENT ''手填协议总金额'' AFTER `collector_user_id`', 'SELECT 1'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @col_exists := ( SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'biz_collection_protocol' AND COLUMN_NAME = 'source_presign_order_id' ); SET @sql := IF(@col_exists = 0, 'ALTER TABLE `biz_collection_protocol` ADD COLUMN `source_presign_order_id` VARCHAR(64) DEFAULT NULL COMMENT ''来源预签约订单ID'' AFTER `protocol_total_amount`', 'SELECT 1'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @col_exists := ( SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'biz_collection_protocol' AND COLUMN_NAME = 'payment_model_version' ); SET @sql := IF(@col_exists = 0, 'ALTER TABLE `biz_collection_protocol` ADD COLUMN `payment_model_version` SMALLINT NOT NULL DEFAULT 2 COMMENT ''缴费模型版本 1旧/2新'' AFTER `source_presign_order_id`', 'SELECT 1'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- 存量协议走旧模型;若库中已有 version=1 则视为已回填,跳过(避免重跑误伤新单) SET @has_v1 := ( SELECT IF(EXISTS( SELECT 1 FROM `biz_collection_protocol` WHERE `payment_model_version` = 1 LIMIT 1 ), 1, 0) ); UPDATE `biz_collection_protocol` SET `payment_model_version` = 1 WHERE @has_v1 = 0; -- --------------------------------------------------------------------------- -- 2) 样本缴费方案 -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `biz_protocol_sample_payment` ( `id` varchar(64) NOT NULL COMMENT '主键ID', `collection_protocol_id` varchar(64) NOT NULL COMMENT '采集协议单ID', `protocol_sample_id` varchar(64) DEFAULT NULL COMMENT '协议样本ID(可空兜底)', `sample_code` varchar(32) NOT NULL COMMENT '样本编码(业务关联键)', `pay_mode` varchar(8) NOT NULL COMMENT 'dj趸交 fq分期', `contract_amount` decimal(18,2) DEFAULT NULL COMMENT '该样本合同金额', `installment_count` int(11) DEFAULT NULL COMMENT '分期期数', `installment_interval_months` decimal(10,2) DEFAULT NULL COMMENT '每期间隔(月)', `installment_start_date` char(8) DEFAULT NULL COMMENT '分期开始YYYYMMDD', `installment_advance_days` int(11) DEFAULT NULL COMMENT '第2期起应缴费提前天数', `installment_ratios` varchar(256) DEFAULT NULL COMMENT '各期缴费比例JSON数组', `lump_sum_deadline` char(8) DEFAULT NULL COMMENT '趸交截止时间YYYYMMDD', `tenant_no` varchar(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号', `order_num` int(11) DEFAULT NULL COMMENT '排序号', `remark` varchar(512) DEFAULT NULL COMMENT '备注', `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记', PRIMARY KEY (`id`), KEY `idx_psp_tenant_protocol` (`tenant_no`,`collection_protocol_id`,`del_flag`), KEY `idx_psp_tenant_sample` (`tenant_no`,`sample_code`,`del_flag`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采集协议单-按样本缴费方案'; -- --------------------------------------------------------------------------- -- 3) 应缴批次 -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `biz_protocol_payment_schedule` ( `id` varchar(64) NOT NULL COMMENT '主键ID', `sample_payment_id` varchar(64) NOT NULL COMMENT '样本缴费方案ID', `collection_protocol_id` varchar(64) NOT NULL COMMENT '采集协议单ID', `sample_code` varchar(32) NOT NULL COMMENT '样本编码', `schedule_no` int(11) DEFAULT NULL COMMENT '期次序号', `due_amount` decimal(18,2) DEFAULT NULL COMMENT '应缴金额', `due_date` char(8) DEFAULT NULL COMMENT '应缴日期YYYYMMDD', `schedule_status` varchar(16) DEFAULT NULL COMMENT '批次状态 open/cleared/void', `tenant_no` varchar(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号', `order_num` int(11) DEFAULT NULL COMMENT '排序号', `remark` varchar(512) DEFAULT NULL COMMENT '备注', `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记', PRIMARY KEY (`id`), KEY `idx_pps_tenant_protocol` (`tenant_no`,`collection_protocol_id`,`del_flag`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采集协议单-应缴批次'; -- --------------------------------------------------------------------------- -- 4) 转账笔(无退费字段) -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `biz_protocol_payment_transfer` ( `id` varchar(64) NOT NULL COMMENT '主键ID', `schedule_id` varchar(64) NOT NULL COMMENT '应缴批次ID', `sample_payment_id` varchar(64) NOT NULL COMMENT '样本缴费方案ID', `collection_protocol_id` varchar(64) NOT NULL COMMENT '采集协议单ID', `sample_code` varchar(32) NOT NULL COMMENT '样本编码', `transfer_amount` decimal(18,2) DEFAULT NULL COMMENT '转账金额', `transfer_time` datetime DEFAULT NULL COMMENT '转账时间', `transfer_type` varchar(16) DEFAULT NULL COMMENT '转账方式', `transfer_attachments` text COMMENT '转账附件', `pay_status` varchar(32) NOT NULL DEFAULT 'dfj' COMMENT '缴费状态 dfj/jfqrz/yjf', `finance_confirm_attachments` text COMMENT '缴费财务确认附件', `finance_remark` varchar(512) DEFAULT NULL COMMENT '缴费财务确认备注', `tenant_no` varchar(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号', `order_num` int(11) DEFAULT NULL COMMENT '排序号', `remark` varchar(512) DEFAULT NULL COMMENT '备注', `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记', PRIMARY KEY (`id`), KEY `idx_ppt_tenant_protocol` (`tenant_no`,`collection_protocol_id`,`del_flag`), KEY `idx_ppt_tenant_sample` (`tenant_no`,`sample_code`,`del_flag`), KEY `idx_ppt_tenant_pay_status` (`tenant_no`,`pay_status`,`del_flag`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采集协议单-缴费转账笔'; -- --------------------------------------------------------------------------- -- 5) 协议退费登记 -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `biz_protocol_refund_record` ( `id` varchar(64) NOT NULL COMMENT '主键ID', `collection_protocol_id` varchar(64) NOT NULL COMMENT '采集协议单ID', `refund_amount` decimal(18,2) DEFAULT NULL COMMENT '退费金额', `refund_time` datetime DEFAULT NULL COMMENT '退费时间', `refund_remark` varchar(512) DEFAULT NULL COMMENT '退费备注', `refund_attachments` text COMMENT '退费附件', `workflow_instance_id` varchar(64) DEFAULT NULL COMMENT 'OA工作流实例ID', `tenant_no` varchar(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号', `order_num` int(11) DEFAULT NULL COMMENT '排序号', `remark` varchar(512) DEFAULT NULL COMMENT '备注', `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记', PRIMARY KEY (`id`), KEY `idx_prr_tenant_protocol` (`tenant_no`,`collection_protocol_id`,`del_flag`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采集协议单-退费登记'; -- --------------------------------------------------------------------------- -- 6) 预签约订单 -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `biz_presign_order` ( `id` varchar(64) NOT NULL COMMENT '主键ID', `order_date` char(8) DEFAULT NULL COMMENT '业务日期YYYYMMDD', `protocol_no` varchar(64) DEFAULT NULL COMMENT '协议编号', `mother_name` varchar(64) DEFAULT NULL COMMENT '母亲姓名', `expected_delivery_date` char(8) DEFAULT NULL COMMENT '预产期YYYYMMDD', `region_id` varchar(64) DEFAULT NULL COMMENT '采集地区ID', `hospital_id` varchar(64) DEFAULT NULL COMMENT '医院ID', `sample_collect_time` datetime DEFAULT NULL COMMENT '采集时间', `pay_mode` varchar(8) DEFAULT NULL COMMENT '整单缴费方式 dj/fq', `contract_amount` decimal(18,2) DEFAULT NULL COMMENT '整单合同金额', `sales_user_id` varchar(64) DEFAULT NULL COMMENT '市场专员用户ID', `region_manager_user_id` varchar(64) DEFAULT NULL COMMENT '地区经理用户ID', `order_status` varchar(16) DEFAULT NULL COMMENT '订单状态 draft/active/converted/void', `converted_protocol_id` varchar(64) DEFAULT NULL COMMENT '转成的正式协议ID', `tenant_no` varchar(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号', `order_num` int(11) DEFAULT NULL COMMENT '排序号', `remark` varchar(512) DEFAULT NULL COMMENT '备注', `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记', PRIMARY KEY (`id`), KEY `idx_po_tenant_protocol_no` (`tenant_no`,`protocol_no`,`del_flag`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='预签约订单'; -- --------------------------------------------------------------------------- -- 7) 预签约样本类型 -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `biz_presign_order_sample_type` ( `id` varchar(64) NOT NULL COMMENT '主键ID', `presign_order_id` varchar(64) NOT NULL COMMENT '预签约订单ID', `sample_type_id` varchar(64) NOT NULL COMMENT '样本类型ID', `tenant_no` varchar(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号', `order_num` int(11) DEFAULT NULL COMMENT '排序号', `remark` varchar(512) DEFAULT NULL COMMENT '备注', `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记', PRIMARY KEY (`id`), KEY `idx_post_presign` (`tenant_no`,`presign_order_id`,`del_flag`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='预签约订单-样本类型'; -- --------------------------------------------------------------------------- -- 8) 预签约意向金转账笔 -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `biz_presign_transfer` ( `id` varchar(64) NOT NULL COMMENT '主键ID', `presign_order_id` varchar(64) NOT NULL COMMENT '预签约订单ID', `transfer_amount` decimal(18,2) DEFAULT NULL COMMENT '转账金额', `transfer_time` datetime DEFAULT NULL COMMENT '转账时间', `transfer_type` varchar(16) DEFAULT NULL COMMENT '转账方式', `transfer_attachments` text COMMENT '转账附件', `pay_status` varchar(32) NOT NULL DEFAULT 'dfj' COMMENT '缴费状态 dfj/jfqrz/yjf', `finance_confirm_attachments` text COMMENT '缴费财务确认附件', `finance_remark` varchar(512) DEFAULT NULL COMMENT '缴费财务确认备注', `tenant_no` varchar(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号', `order_num` int(11) DEFAULT NULL COMMENT '排序号', `remark` varchar(512) DEFAULT NULL COMMENT '备注', `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记', PRIMARY KEY (`id`), KEY `idx_pt_tenant_pay_status` (`tenant_no`,`pay_status`,`del_flag`), KEY `idx_pt_presign` (`tenant_no`,`presign_order_id`,`del_flag`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='预签约订单-意向金转账笔';