migration_20260725_bx_invoice_wallet.sql 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. -- ============================================================
  2. -- 报销 · 发票夹额度:建表 + 菜单(报销分组下方)
  3. -- 可重复执行(CREATE IF NOT EXISTS;菜单 NOT EXISTS 防护)
  4. -- ============================================================
  5. -- 1) bx_invoice 发票档案
  6. CREATE TABLE IF NOT EXISTS `bx_invoice` (
  7. `id` VARCHAR(64) NOT NULL COMMENT '主键UUID',
  8. `owner_user_id` VARCHAR(64) NOT NULL COMMENT '所属员工ID',
  9. `owner_user_name` VARCHAR(64) NOT NULL COMMENT '所属员工姓名',
  10. `amount` DECIMAL(14,2) NOT NULL COMMENT '入账金额',
  11. `upload_by` VARCHAR(64) DEFAULT NULL COMMENT '上传操作人ID',
  12. `upload_by_name` VARCHAR(64) DEFAULT NULL COMMENT '上传操作人姓名',
  13. `tenant_no` VARCHAR(64) NOT NULL DEFAULT 'shanxia2.0',
  14. `order_num` INT DEFAULT NULL,
  15. `remark` VARCHAR(512) DEFAULT NULL,
  16. `create_by` VARCHAR(64) DEFAULT NULL,
  17. `create_dept_id` VARCHAR(64) NOT NULL DEFAULT '',
  18. `create_time` DATETIME NOT NULL,
  19. `update_by` VARCHAR(64) DEFAULT NULL,
  20. `update_time` DATETIME NOT NULL,
  21. `del_flag` SMALLINT NOT NULL DEFAULT 0,
  22. PRIMARY KEY (`id`),
  23. KEY `idx_bx_invoice_owner` (`tenant_no`,`owner_user_id`,`del_flag`,`create_time`)
  24. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='发票档案';
  25. -- 2) bx_invoice_ledger 额度流水(权威)
  26. CREATE TABLE IF NOT EXISTS `bx_invoice_ledger` (
  27. `id` VARCHAR(64) NOT NULL,
  28. `owner_user_id` VARCHAR(64) NOT NULL,
  29. `entry_type` VARCHAR(32) NOT NULL COMMENT 'credit_upload|debit_delete|debit_reimburse|credit_release',
  30. `amount` DECIMAL(14,2) NOT NULL COMMENT '正数,方向由 entry_type 决定',
  31. `invoice_id` VARCHAR(64) DEFAULT NULL,
  32. `reimburse_id` VARCHAR(64) DEFAULT NULL,
  33. `ref_ledger_id` VARCHAR(64) DEFAULT NULL COMMENT '退回指向原占用流水',
  34. `tenant_no` VARCHAR(64) NOT NULL DEFAULT 'shanxia2.0',
  35. `order_num` INT DEFAULT NULL,
  36. `remark` VARCHAR(512) DEFAULT NULL,
  37. `create_by` VARCHAR(64) DEFAULT NULL,
  38. `create_dept_id` VARCHAR(64) NOT NULL DEFAULT '',
  39. `create_time` DATETIME NOT NULL,
  40. `update_by` VARCHAR(64) DEFAULT NULL,
  41. `update_time` DATETIME DEFAULT NULL,
  42. `del_flag` SMALLINT NOT NULL DEFAULT 0,
  43. PRIMARY KEY (`id`),
  44. KEY `idx_bx_ledger_owner` (`tenant_no`,`owner_user_id`,`del_flag`,`create_time`),
  45. KEY `idx_bx_ledger_reimburse` (`tenant_no`,`reimburse_id`,`entry_type`,`del_flag`)
  46. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='发票额度流水';
  47. -- 3) bx_reimburse_invoice 报销关联发票(M:N,可选)
  48. CREATE TABLE IF NOT EXISTS `bx_reimburse_invoice` (
  49. `id` VARCHAR(64) NOT NULL,
  50. `reimburse_id` VARCHAR(64) NOT NULL,
  51. `invoice_id` VARCHAR(64) NOT NULL,
  52. `tenant_no` VARCHAR(64) NOT NULL DEFAULT 'shanxia2.0',
  53. `order_num` INT DEFAULT NULL,
  54. `remark` VARCHAR(512) DEFAULT NULL,
  55. `create_by` VARCHAR(64) DEFAULT NULL,
  56. `create_dept_id` VARCHAR(64) NOT NULL DEFAULT '',
  57. `create_time` DATETIME NOT NULL,
  58. `update_by` VARCHAR(64) DEFAULT NULL,
  59. `update_time` DATETIME DEFAULT NULL,
  60. `del_flag` SMALLINT NOT NULL DEFAULT 0,
  61. PRIMARY KEY (`id`),
  62. KEY `idx_bx_ri_reimburse` (`tenant_no`,`reimburse_id`,`del_flag`),
  63. KEY `idx_bx_ri_invoice` (`tenant_no`,`invoice_id`,`del_flag`)
  64. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报销关联发票';
  65. -- 4) bx_invoice_wallet_summary 额度缓存
  66. CREATE TABLE IF NOT EXISTS `bx_invoice_wallet_summary` (
  67. `id` VARCHAR(64) NOT NULL,
  68. `owner_user_id` VARCHAR(64) NOT NULL,
  69. `owner_user_name` VARCHAR(64) NOT NULL DEFAULT '',
  70. `total_amount` DECIMAL(14,2) NOT NULL DEFAULT 0,
  71. `used_amount` DECIMAL(14,2) NOT NULL DEFAULT 0,
  72. `balance` DECIMAL(14,2) NOT NULL DEFAULT 0,
  73. `invoice_count` INT NOT NULL DEFAULT 0,
  74. `version` INT NOT NULL DEFAULT 0,
  75. `tenant_no` VARCHAR(64) NOT NULL DEFAULT 'shanxia2.0',
  76. `order_num` INT DEFAULT NULL,
  77. `remark` VARCHAR(512) DEFAULT NULL,
  78. `create_by` VARCHAR(64) DEFAULT NULL,
  79. `create_dept_id` VARCHAR(64) NOT NULL DEFAULT '',
  80. `create_time` DATETIME NOT NULL,
  81. `update_by` VARCHAR(64) DEFAULT NULL,
  82. `update_time` DATETIME NOT NULL,
  83. `del_flag` SMALLINT NOT NULL DEFAULT 0,
  84. PRIMARY KEY (`id`),
  85. UNIQUE KEY `uk_bx_wallet_owner` (`tenant_no`,`owner_user_id`)
  86. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='发票夹额度缓存';
  87. -- 5) 菜单:挂在「报销」分组 BX...00010 下,order_num 4/5
  88. INSERT INTO `sys_menu` (
  89. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`,
  90. `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`,
  91. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  92. )
  93. SELECT
  94. 'BX00000000000000000000000000020', '发票夹管理', 'BX00000000000000000000000000010', 'C',
  95. 'invoice-wallet-admin', '/bx/invoice-wallet/admin/index', 'bx:invoiceWallet:admin',
  96. 1, '1', '1', 'shanxia2.0', 4, '管理员代传/删除发票;全员额度列表',
  97. NULL, '', NOW(), NULL, NOW(), 0
  98. FROM DUAL
  99. WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = 'BX00000000000000000000000000020');
  100. INSERT INTO `sys_menu` (
  101. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`,
  102. `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`,
  103. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  104. )
  105. SELECT
  106. 'BX00000000000000000000000000021', '我的发票夹', 'BX00000000000000000000000000010', 'C',
  107. 'invoice-wallet-mine', '/bx/invoice-wallet/mine/index', 'bx:invoiceWallet:mine',
  108. 1, '1', '1', 'shanxia2.0', 5, '员工自助上传与查看本人发票夹',
  109. NULL, '', NOW(), NULL, NOW(), 0
  110. FROM DUAL
  111. WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = 'BX00000000000000000000000000021');