biz_per_sample_payment_presign.sql 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. -- 按样本缴费 + 预签约订单 + 协议退费登记
  2. -- MySQL 5.7 / utf8mb4
  3. -- 说明:
  4. -- 1) biz_collection_protocol 增量字段用 information_schema 判断后 ADD,可重复执行
  5. -- 2) payment_model_version 默认 2;首次升级将存量行置为 1(已有 version=1 则跳过 UPDATE)
  6. -- 3) 新表 CREATE TABLE IF NOT EXISTS,校对规则与存量库一致:utf8mb4_unicode_ci
  7. -- 4) 第 9 节 CONVERT 用于已建表纠偏(可重复执行)
  8. -- ---------------------------------------------------------------------------
  9. -- 1) 采集协议单增量字段
  10. -- ---------------------------------------------------------------------------
  11. SET @db := DATABASE();
  12. SET @col_exists := (
  13. SELECT COUNT(*) FROM information_schema.COLUMNS
  14. WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'biz_collection_protocol' AND COLUMN_NAME = 'protocol_total_amount'
  15. );
  16. SET @sql := IF(@col_exists = 0,
  17. 'ALTER TABLE `biz_collection_protocol` ADD COLUMN `protocol_total_amount` DECIMAL(18,2) DEFAULT NULL COMMENT ''手填协议总金额'' AFTER `collector_user_id`',
  18. 'SELECT 1');
  19. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  20. SET @col_exists := (
  21. SELECT COUNT(*) FROM information_schema.COLUMNS
  22. WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'biz_collection_protocol' AND COLUMN_NAME = 'source_presign_order_id'
  23. );
  24. SET @sql := IF(@col_exists = 0,
  25. 'ALTER TABLE `biz_collection_protocol` ADD COLUMN `source_presign_order_id` VARCHAR(64) DEFAULT NULL COMMENT ''来源预签约订单ID'' AFTER `protocol_total_amount`',
  26. 'SELECT 1');
  27. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  28. SET @col_exists := (
  29. SELECT COUNT(*) FROM information_schema.COLUMNS
  30. WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'biz_collection_protocol' AND COLUMN_NAME = 'payment_model_version'
  31. );
  32. SET @sql := IF(@col_exists = 0,
  33. 'ALTER TABLE `biz_collection_protocol` ADD COLUMN `payment_model_version` SMALLINT NOT NULL DEFAULT 2 COMMENT ''缴费模型版本 1旧/2新'' AFTER `source_presign_order_id`',
  34. 'SELECT 1');
  35. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  36. -- 存量协议走旧模型;若库中已有 version=1 则视为已回填,跳过(避免重跑误伤新单)
  37. SET @has_v1 := (
  38. SELECT IF(EXISTS(
  39. SELECT 1 FROM `biz_collection_protocol` WHERE `payment_model_version` = 1 LIMIT 1
  40. ), 1, 0)
  41. );
  42. UPDATE `biz_collection_protocol`
  43. SET `payment_model_version` = 1
  44. WHERE @has_v1 = 0;
  45. -- ---------------------------------------------------------------------------
  46. -- 2) 样本缴费方案
  47. -- ---------------------------------------------------------------------------
  48. CREATE TABLE IF NOT EXISTS `biz_protocol_sample_payment` (
  49. `id` varchar(64) NOT NULL COMMENT '主键ID',
  50. `collection_protocol_id` varchar(64) NOT NULL COMMENT '采集协议单ID',
  51. `protocol_sample_id` varchar(64) DEFAULT NULL COMMENT '协议样本ID(可空兜底)',
  52. `sample_code` varchar(32) NOT NULL COMMENT '样本编码(业务关联键)',
  53. `pay_mode` varchar(8) NOT NULL COMMENT 'dj趸交 fq分期',
  54. `contract_amount` decimal(18,2) DEFAULT NULL COMMENT '该样本合同金额',
  55. `installment_count` int(11) DEFAULT NULL COMMENT '分期期数',
  56. `installment_interval_months` decimal(10,2) DEFAULT NULL COMMENT '每期间隔(月)',
  57. `installment_start_date` char(8) DEFAULT NULL COMMENT '分期开始YYYYMMDD',
  58. `installment_advance_days` int(11) DEFAULT NULL COMMENT '第2期起应缴费提前天数',
  59. `installment_ratios` varchar(256) DEFAULT NULL COMMENT '各期缴费比例JSON数组',
  60. `lump_sum_deadline` char(8) DEFAULT NULL COMMENT '趸交截止时间YYYYMMDD',
  61. `tenant_no` varchar(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
  62. `order_num` int(11) DEFAULT NULL COMMENT '排序号',
  63. `remark` varchar(512) DEFAULT NULL COMMENT '备注',
  64. `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id',
  65. `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID',
  66. `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  67. `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id',
  68. `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  69. `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记',
  70. PRIMARY KEY (`id`),
  71. KEY `idx_psp_tenant_protocol` (`tenant_no`,`collection_protocol_id`,`del_flag`),
  72. KEY `idx_psp_tenant_sample` (`tenant_no`,`sample_code`,`del_flag`)
  73. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采集协议单-按样本缴费方案';
  74. -- ---------------------------------------------------------------------------
  75. -- 3) 应缴批次
  76. -- ---------------------------------------------------------------------------
  77. CREATE TABLE IF NOT EXISTS `biz_protocol_payment_schedule` (
  78. `id` varchar(64) NOT NULL COMMENT '主键ID',
  79. `sample_payment_id` varchar(64) NOT NULL COMMENT '样本缴费方案ID',
  80. `collection_protocol_id` varchar(64) NOT NULL COMMENT '采集协议单ID',
  81. `sample_code` varchar(32) NOT NULL COMMENT '样本编码',
  82. `schedule_no` int(11) DEFAULT NULL COMMENT '期次序号',
  83. `due_amount` decimal(18,2) DEFAULT NULL COMMENT '应缴金额',
  84. `due_date` char(8) DEFAULT NULL COMMENT '应缴日期YYYYMMDD',
  85. `schedule_status` varchar(16) DEFAULT NULL COMMENT '批次状态 open/cleared/void',
  86. `tenant_no` varchar(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
  87. `order_num` int(11) DEFAULT NULL COMMENT '排序号',
  88. `remark` varchar(512) DEFAULT NULL COMMENT '备注',
  89. `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id',
  90. `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID',
  91. `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  92. `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id',
  93. `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  94. `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记',
  95. PRIMARY KEY (`id`),
  96. KEY `idx_pps_tenant_protocol` (`tenant_no`,`collection_protocol_id`,`del_flag`)
  97. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采集协议单-应缴批次';
  98. -- ---------------------------------------------------------------------------
  99. -- 4) 转账笔(无退费字段)
  100. -- ---------------------------------------------------------------------------
  101. CREATE TABLE IF NOT EXISTS `biz_protocol_payment_transfer` (
  102. `id` varchar(64) NOT NULL COMMENT '主键ID',
  103. `schedule_id` varchar(64) NOT NULL COMMENT '应缴批次ID',
  104. `sample_payment_id` varchar(64) NOT NULL COMMENT '样本缴费方案ID',
  105. `collection_protocol_id` varchar(64) NOT NULL COMMENT '采集协议单ID',
  106. `sample_code` varchar(32) NOT NULL COMMENT '样本编码',
  107. `transfer_amount` decimal(18,2) DEFAULT NULL COMMENT '转账金额',
  108. `transfer_time` datetime DEFAULT NULL COMMENT '转账时间',
  109. `transfer_type` varchar(16) DEFAULT NULL COMMENT '转账方式',
  110. `transfer_attachments` text COMMENT '转账附件',
  111. `pay_status` varchar(32) NOT NULL DEFAULT 'dfj' COMMENT '缴费状态 dfj/jfqrz/yjf',
  112. `finance_confirm_attachments` text COMMENT '缴费财务确认附件',
  113. `finance_remark` varchar(512) DEFAULT NULL COMMENT '缴费财务确认备注',
  114. `tenant_no` varchar(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
  115. `order_num` int(11) DEFAULT NULL COMMENT '排序号',
  116. `remark` varchar(512) DEFAULT NULL COMMENT '备注',
  117. `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id',
  118. `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID',
  119. `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  120. `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id',
  121. `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  122. `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记',
  123. PRIMARY KEY (`id`),
  124. KEY `idx_ppt_tenant_protocol` (`tenant_no`,`collection_protocol_id`,`del_flag`),
  125. KEY `idx_ppt_tenant_sample` (`tenant_no`,`sample_code`,`del_flag`),
  126. KEY `idx_ppt_tenant_pay_status` (`tenant_no`,`pay_status`,`del_flag`)
  127. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采集协议单-缴费转账笔';
  128. -- ---------------------------------------------------------------------------
  129. -- 5) 协议退费登记
  130. -- ---------------------------------------------------------------------------
  131. CREATE TABLE IF NOT EXISTS `biz_protocol_refund_record` (
  132. `id` varchar(64) NOT NULL COMMENT '主键ID',
  133. `collection_protocol_id` varchar(64) NOT NULL COMMENT '采集协议单ID',
  134. `refund_amount` decimal(18,2) DEFAULT NULL COMMENT '退费金额',
  135. `refund_time` datetime DEFAULT NULL COMMENT '退费时间',
  136. `refund_remark` varchar(512) DEFAULT NULL COMMENT '退费备注',
  137. `refund_attachments` text COMMENT '退费附件',
  138. `workflow_instance_id` varchar(64) DEFAULT NULL COMMENT 'OA工作流实例ID',
  139. `tenant_no` varchar(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
  140. `order_num` int(11) DEFAULT NULL COMMENT '排序号',
  141. `remark` varchar(512) DEFAULT NULL COMMENT '备注',
  142. `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id',
  143. `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID',
  144. `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  145. `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id',
  146. `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  147. `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记',
  148. PRIMARY KEY (`id`),
  149. KEY `idx_prr_tenant_protocol` (`tenant_no`,`collection_protocol_id`,`del_flag`)
  150. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采集协议单-退费登记';
  151. -- ---------------------------------------------------------------------------
  152. -- 6) 预签约订单
  153. -- ---------------------------------------------------------------------------
  154. CREATE TABLE IF NOT EXISTS `biz_presign_order` (
  155. `id` varchar(64) NOT NULL COMMENT '主键ID',
  156. `order_date` char(8) DEFAULT NULL COMMENT '业务日期YYYYMMDD',
  157. `protocol_no` varchar(64) DEFAULT NULL COMMENT '协议编号',
  158. `mother_name` varchar(64) DEFAULT NULL COMMENT '母亲姓名',
  159. `expected_delivery_date` char(8) DEFAULT NULL COMMENT '预产期YYYYMMDD',
  160. `region_id` varchar(64) DEFAULT NULL COMMENT '采集地区ID',
  161. `hospital_id` varchar(64) DEFAULT NULL COMMENT '医院ID',
  162. `sample_collect_time` datetime DEFAULT NULL COMMENT '采集时间',
  163. `pay_mode` varchar(8) DEFAULT NULL COMMENT '整单缴费方式 dj/fq',
  164. `contract_amount` decimal(18,2) DEFAULT NULL COMMENT '整单合同金额',
  165. `collector_user_id` varchar(64) DEFAULT NULL COMMENT '采集专员用户ID',
  166. `sales_user_id` varchar(64) DEFAULT NULL COMMENT '市场专员用户ID',
  167. `region_manager_user_id` varchar(64) DEFAULT NULL COMMENT '采集经理/地区经理用户ID',
  168. `order_status` varchar(16) DEFAULT NULL COMMENT '订单状态 draft/active/converted/void',
  169. `converted_protocol_id` varchar(64) DEFAULT NULL COMMENT '转成的正式协议ID',
  170. `tenant_no` varchar(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
  171. `order_num` int(11) DEFAULT NULL COMMENT '排序号',
  172. `remark` varchar(512) DEFAULT NULL COMMENT '备注',
  173. `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id',
  174. `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID',
  175. `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  176. `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id',
  177. `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  178. `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记',
  179. PRIMARY KEY (`id`),
  180. KEY `idx_po_tenant_protocol_no` (`tenant_no`,`protocol_no`,`del_flag`)
  181. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='预签约订单';
  182. -- 已建表环境增量:采集专员
  183. SET @col_exists := (
  184. SELECT COUNT(*) FROM information_schema.COLUMNS
  185. WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'biz_presign_order' AND COLUMN_NAME = 'collector_user_id'
  186. );
  187. SET @sql := IF(@col_exists = 0,
  188. 'ALTER TABLE `biz_presign_order` ADD COLUMN `collector_user_id` VARCHAR(64) DEFAULT NULL COMMENT ''采集专员用户ID'' AFTER `contract_amount`',
  189. 'SELECT 1');
  190. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  191. -- ---------------------------------------------------------------------------
  192. -- 7) 预签约样本类型
  193. -- ---------------------------------------------------------------------------
  194. CREATE TABLE IF NOT EXISTS `biz_presign_order_sample_type` (
  195. `id` varchar(64) NOT NULL COMMENT '主键ID',
  196. `presign_order_id` varchar(64) NOT NULL COMMENT '预签约订单ID',
  197. `sample_type_id` varchar(64) NOT NULL COMMENT '样本类型ID',
  198. `tenant_no` varchar(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
  199. `order_num` int(11) DEFAULT NULL COMMENT '排序号',
  200. `remark` varchar(512) DEFAULT NULL COMMENT '备注',
  201. `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id',
  202. `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID',
  203. `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  204. `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id',
  205. `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  206. `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记',
  207. PRIMARY KEY (`id`),
  208. KEY `idx_post_presign` (`tenant_no`,`presign_order_id`,`del_flag`)
  209. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='预签约订单-样本类型';
  210. -- ---------------------------------------------------------------------------
  211. -- 8) 预签约意向金转账笔
  212. -- ---------------------------------------------------------------------------
  213. CREATE TABLE IF NOT EXISTS `biz_presign_transfer` (
  214. `id` varchar(64) NOT NULL COMMENT '主键ID',
  215. `presign_order_id` varchar(64) NOT NULL COMMENT '预签约订单ID',
  216. `transfer_amount` decimal(18,2) DEFAULT NULL COMMENT '转账金额',
  217. `transfer_time` datetime DEFAULT NULL COMMENT '转账时间',
  218. `transfer_type` varchar(16) DEFAULT NULL COMMENT '转账方式',
  219. `transfer_attachments` text COMMENT '转账附件',
  220. `pay_status` varchar(32) NOT NULL DEFAULT 'dfj' COMMENT '缴费状态 dfj/jfqrz/yjf',
  221. `finance_confirm_attachments` text COMMENT '缴费财务确认附件',
  222. `finance_remark` varchar(512) DEFAULT NULL COMMENT '缴费财务确认备注',
  223. `tenant_no` varchar(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
  224. `order_num` int(11) DEFAULT NULL COMMENT '排序号',
  225. `remark` varchar(512) DEFAULT NULL COMMENT '备注',
  226. `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id',
  227. `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID',
  228. `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  229. `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id',
  230. `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  231. `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记',
  232. PRIMARY KEY (`id`),
  233. KEY `idx_pt_tenant_pay_status` (`tenant_no`,`pay_status`,`del_flag`),
  234. KEY `idx_pt_presign` (`tenant_no`,`presign_order_id`,`del_flag`)
  235. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='预签约订单-意向金转账笔';
  236. -- ---------------------------------------------------------------------------
  237. -- 9) 已建表校对规则对齐存量库 utf8mb4_unicode_ci(避免 JOIN 报 1267 mix of collations)
  238. -- ---------------------------------------------------------------------------
  239. ALTER TABLE `biz_protocol_sample_payment` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  240. ALTER TABLE `biz_protocol_payment_schedule` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  241. ALTER TABLE `biz_protocol_payment_transfer` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  242. ALTER TABLE `biz_protocol_refund_record` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  243. ALTER TABLE `biz_presign_order` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  244. ALTER TABLE `biz_presign_order_sample_type` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  245. ALTER TABLE `biz_presign_transfer` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;