新增收付款模块

This commit is contained in:
2026-08-22 17:25:26 +08:00
parent 7683ad804a
commit 3e265fc71e
96 changed files with 8527 additions and 0 deletions
@@ -0,0 +1,113 @@
-- 首付款管理 / 汇票台账
CREATE TABLE IF NOT EXISTS `blade_bill_ledger` (
`id` bigint(20) NOT NULL,
`tenant_id` varchar(12) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '000000',
`create_user` bigint(20) DEFAULT NULL,
`create_dept` bigint(20) DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
`update_user` bigint(20) DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
`status` int(11) DEFAULT '1',
`is_deleted` int(11) DEFAULT '0',
`bill_no` varchar(32) COLLATE utf8mb4_general_ci NOT NULL COMMENT '票据号码',
`issuer_id` bigint(20) NOT NULL COMMENT '出票单位客商ID',
`issuer_name` varchar(100) COLLATE utf8mb4_general_ci NOT NULL COMMENT '出票单位',
`receiver_id` bigint(20) DEFAULT NULL COMMENT '收票单位ID',
`receiver_name` varchar(100) COLLATE utf8mb4_general_ci NOT NULL COMMENT '收票单位',
`bill_type` varchar(30) COLLATE utf8mb4_general_ci NOT NULL COMMENT '汇票类型:issued开票、received收票',
`face_amount` decimal(18,2) NOT NULL COMMENT '票面金额',
`available_balance` decimal(18,2) NOT NULL COMMENT '可用余额',
`issue_date` date NOT NULL COMMENT '出票日期',
`maturity_date` date NOT NULL COMMENT '到期日期',
`available_dept_ids_json` longtext COLLATE utf8mb4_general_ci NOT NULL COMMENT '可用部门ID列表',
`available_dept_names` varchar(500) COLLATE utf8mb4_general_ci NOT NULL COMMENT '可用部门名称',
`fee_bearer_id` bigint(20) NOT NULL COMMENT '费用承担方客商ID',
`fee_bearer_name` varchar(100) COLLATE utf8mb4_general_ci NOT NULL COMMENT '费用承担方',
`confirmed_discount_rate` decimal(8,4) DEFAULT NULL COMMENT '双方确认贴现率(%)',
`issuing_bank` varchar(100) COLLATE utf8mb4_general_ci NOT NULL COMMENT '出票行',
`bank_discount_reference_rate` decimal(8,4) DEFAULT NULL COMMENT '银行贴现参考率(%)',
`estimated_discount_fee` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '预计贴现费用',
`attachments_json` longtext COLLATE utf8mb4_general_ci COMMENT '附件JSON',
`remark` varchar(200) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_bill_ledger_no` (`tenant_id`,`bill_no`),
KEY `idx_bill_ledger_maturity` (`tenant_id`,`maturity_date`),
KEY `idx_bill_ledger_parties` (`tenant_id`,`issuer_name`,`receiver_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='汇票台账';
CREATE TABLE IF NOT EXISTS `blade_bill_ledger_usage` (
`id` bigint(20) NOT NULL,
`tenant_id` varchar(12) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '000000',
`create_user` bigint(20) DEFAULT NULL,
`create_dept` bigint(20) DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
`update_user` bigint(20) DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
`status` int(11) DEFAULT '1',
`is_deleted` int(11) DEFAULT '0',
`bill_ledger_id` bigint(20) NOT NULL COMMENT '汇票台账ID',
`payment_application_id` bigint(20) NOT NULL COMMENT '付款申请ID',
`application_no` varchar(100) COLLATE utf8mb4_general_ci NOT NULL COMMENT '申请单号',
`used_amount` decimal(18,2) NOT NULL COMMENT '使用金额',
`use_dept_id` bigint(20) DEFAULT NULL COMMENT '使用部门ID',
`use_dept_name` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '使用部门',
`usage_status` varchar(30) COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'approved' COMMENT '状态:approved已使用、released已释放',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_bill_ledger_usage_payment` (`tenant_id`,`payment_application_id`),
KEY `idx_bill_ledger_usage_ledger` (`tenant_id`,`bill_ledger_id`,`usage_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='汇票使用记录';
-- 以下结构升级支持重复执行,兼容前一次已执行 DDL、仅菜单插入失败的场景
SET @ddl_sql = (
SELECT IF(COUNT(*) = 0,
'ALTER TABLE `blade_payment_application` ADD COLUMN `bill_ledger_id` bigint(20) DEFAULT NULL COMMENT ''汇票台账ID'' AFTER `payment_method`',
'SELECT 1')
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'blade_payment_application'
AND COLUMN_NAME = 'bill_ledger_id'
);
PREPARE ddl_stmt FROM @ddl_sql;
EXECUTE ddl_stmt;
DEALLOCATE PREPARE ddl_stmt;
SET @ddl_sql = (
SELECT IF(COUNT(*) = 0,
'ALTER TABLE `blade_payment_application` ADD COLUMN `bill_no` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''票据号码'' AFTER `bill_ledger_id`',
'SELECT 1')
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'blade_payment_application'
AND COLUMN_NAME = 'bill_no'
);
PREPARE ddl_stmt FROM @ddl_sql;
EXECUTE ddl_stmt;
DEALLOCATE PREPARE ddl_stmt;
SET @ddl_sql = (
SELECT IF(COUNT(*) = 0,
'ALTER TABLE `blade_payment_application` ADD KEY `idx_payment_application_bill_ledger` (`bill_ledger_id`)',
'SELECT 1')
FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'blade_payment_application'
AND INDEX_NAME = 'idx_payment_application_bill_ledger'
);
PREPARE ddl_stmt FROM @ddl_sql;
EXECUTE ddl_stmt;
DEALLOCATE PREPARE ddl_stmt;
INSERT INTO `blade_menu`
(`id`,`parent_id`,`code`,`name`,`alias`,`path`,`source`,`sort`,`category`,`action`,`is_open`,`component`,`remark`,`is_deleted`)
VALUES
(2090000000000001200,0,'first_payment_management','首付款管理','first_payment_management','/payment','iconfont icon-caidanguanli',6,1,0,1,NULL,'',0),
(2090000000000001280,2090000000000001200,'bill_ledger','汇票台账','bill_ledger','/payment/bill-ledger','',6,1,0,1,NULL,'',0),
(2090000000000001281,2090000000000001280,'bill_ledger_view','查看','bill_ledger_view','','',1,2,0,1,NULL,'',0),
(2090000000000001282,2090000000000001280,'bill_ledger_add','新增','bill_ledger_add','','',2,2,0,1,NULL,'',0),
(2090000000000001283,2090000000000001280,'bill_ledger_edit','编辑','bill_ledger_edit','','',3,2,0,1,NULL,'',0),
(2090000000000001284,2090000000000001280,'bill_ledger_delete','删除','bill_ledger_delete','','',4,2,0,1,NULL,'',0)
ON DUPLICATE KEY UPDATE
`name`=VALUES(`name`),
`path`=VALUES(`path`),
`component`=VALUES(`component`),
`is_deleted`=0;