新增凭证管理

This commit is contained in:
2026-08-12 12:42:07 +08:00
parent 7f31952bff
commit 4ad3108c4d
28 changed files with 732 additions and 2 deletions
@@ -117,6 +117,7 @@ CREATE TABLE `blade_customer_invoice_info` (
`tenant_id` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '000000' COMMENT '租户ID',
`customer_id` bigint NOT NULL COMMENT '客商ID',
`invoice_title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '受票方名称',
`invoice_type` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '发票类型',
`tax_no` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '纳税人识别号',
`bank_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '开户行名称',
`registered_phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '注册电话',
@@ -0,0 +1,4 @@
-- 客商发票信息:新增发票类型
ALTER TABLE `blade_customer_invoice_info`
ADD COLUMN `invoice_type` varchar(30) DEFAULT NULL COMMENT '发票类型' AFTER `invoice_title`;
@@ -0,0 +1,42 @@
CREATE TABLE IF NOT EXISTS `blade_voucher_manage` (
`id` bigint NOT NULL,
`tenant_id` varchar(12) NOT NULL DEFAULT '000000',
`project_id` bigint NOT NULL COMMENT '项目ID',
`project_name` varchar(200) NOT NULL COMMENT '项目名称',
`voucher_batch_no` varchar(30) NOT NULL COMMENT '凭证批次号',
`waybill_batch_no` varchar(1000) DEFAULT NULL COMMENT '关联运单批次号',
`file_name` varchar(100) NOT NULL COMMENT '凭证压缩包文件名',
`file_url` varchar(1000) NOT NULL COMMENT '凭证压缩包地址',
`file_task_id` bigint DEFAULT NULL COMMENT '分片上传任务ID',
`upload_source` varchar(20) NOT NULL DEFAULT '内部' COMMENT '上传来源:内部、承运商',
`carrier_name` varchar(50) DEFAULT NULL COMMENT '承运商名称',
`process_status` varchar(20) NOT NULL DEFAULT '上传中' COMMENT '上传中、处理中、处理完成',
`voucher_count` int NOT NULL DEFAULT 0 COMMENT '凭证数量',
`related_waybill_count` int NOT NULL DEFAULT 0 COMMENT '已关联运单数',
`un_related_waybill_count` int NOT NULL DEFAULT 0 COMMENT '未关联运单数',
`audit_status` varchar(20) NOT NULL DEFAULT '-' COMMENT '待审核、审核通过、审核驳回',
`create_user` bigint DEFAULT NULL, `create_dept` bigint DEFAULT NULL,
`create_time` datetime DEFAULT NULL, `update_user` bigint DEFAULT NULL, `update_time` datetime DEFAULT NULL,
`status` tinyint NOT NULL DEFAULT 1, `is_deleted` tinyint NOT NULL DEFAULT 0,
PRIMARY KEY (`id`), UNIQUE KEY `uk_voucher_manage_no` (`tenant_id`, `voucher_batch_no`),
KEY `idx_voucher_manage_create_time` (`create_time`), KEY `idx_voucher_manage_process_status` (`process_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='凭证管理';
CREATE TABLE IF NOT EXISTS `blade_voucher_waybill_batch` (
`id` bigint NOT NULL, `tenant_id` varchar(12) NOT NULL DEFAULT '000000',
`voucher_id` bigint NOT NULL COMMENT '凭证批次ID', `waybill_import_batch_id` bigint NOT NULL COMMENT '运单导入批次ID',
`waybill_batch_no` varchar(64) NOT NULL COMMENT '运单批次号', `waybill_count` int NOT NULL DEFAULT 0 COMMENT '运单数',
`create_user` bigint DEFAULT NULL, `create_dept` bigint DEFAULT NULL, `create_time` datetime DEFAULT NULL,
`update_user` bigint DEFAULT NULL, `update_time` datetime DEFAULT NULL, `status` tinyint NOT NULL DEFAULT 1, `is_deleted` tinyint NOT NULL DEFAULT 0,
PRIMARY KEY (`id`), UNIQUE KEY `uk_voucher_waybill_batch` (`voucher_id`, `waybill_import_batch_id`),
KEY `idx_voucher_waybill_batch_voucher` (`voucher_id`), KEY `idx_voucher_waybill_batch_waybill` (`waybill_import_batch_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='凭证关联运单批次';
INSERT INTO `blade_menu` (`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `component`, `remark`, `is_deleted`)
VALUES
(2090000000000000900, 2090000000000000000, 'voucher_manage', '凭证管理', 'voucher_manage', '/business/voucher-manage', 'iconfont icon-caidanguanli', 90, 1, 0, 1, NULL, '', 0),
(2090000000000000901, 2090000000000000900, 'voucher_manage_view', '查看', 'voucher_manage_view', '', '', 1, 2, 0, 1, NULL, '', 0),
(2090000000000000902, 2090000000000000900, 'voucher_manage_add', '批量导入凭证', 'voucher_manage_add', '', '', 2, 2, 0, 1, NULL, '', 0),
(2090000000000000903, 2090000000000000900, 'voucher_manage_edit', '更换运单批次', 'voucher_manage_edit', '', '', 3, 2, 0, 1, NULL, '', 0),
(2090000000000000904, 2090000000000000900, 'voucher_manage_delete', '删除', 'voucher_manage_delete', '', '', 4, 2, 0, 1, NULL, '', 0)
ON DUPLICATE KEY UPDATE `name` = VALUES(`name`), `path` = VALUES(`path`), `is_deleted` = 0;
@@ -0,0 +1,93 @@
-- MySQL 5.7+ 兼容:为已存在的 blade_voucher_manage 旧表补齐字段和索引。
-- 请在 transport 数据库执行。本脚本使用 information_schema 判断,不依赖 IF NOT EXISTS 语法。
DELIMITER $$
DROP PROCEDURE IF EXISTS `upgrade_blade_voucher_manage_20260812`$$
CREATE PROCEDURE `upgrade_blade_voucher_manage_20260812`()
BEGIN
DECLARE db_name varchar(128);
SET db_name = DATABASE();
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_voucher_manage' AND column_name = 'tenant_id') THEN
ALTER TABLE `blade_voucher_manage` ADD COLUMN `tenant_id` varchar(12) NOT NULL DEFAULT '000000' COMMENT '租户ID' AFTER `id`;
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_voucher_manage' AND column_name = 'project_id') THEN
ALTER TABLE `blade_voucher_manage` ADD COLUMN `project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目ID';
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_voucher_manage' AND column_name = 'project_name') THEN
ALTER TABLE `blade_voucher_manage` ADD COLUMN `project_name` varchar(200) NOT NULL DEFAULT '' COMMENT '项目名称';
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_voucher_manage' AND column_name = 'voucher_batch_no') THEN
ALTER TABLE `blade_voucher_manage` ADD COLUMN `voucher_batch_no` varchar(30) NOT NULL DEFAULT '' COMMENT '凭证批次号';
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_voucher_manage' AND column_name = 'waybill_batch_no') THEN
ALTER TABLE `blade_voucher_manage` ADD COLUMN `waybill_batch_no` varchar(1000) DEFAULT NULL COMMENT '关联运单批次号';
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_voucher_manage' AND column_name = 'file_name') THEN
ALTER TABLE `blade_voucher_manage` ADD COLUMN `file_name` varchar(100) NOT NULL DEFAULT '' COMMENT '凭证压缩包文件名';
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_voucher_manage' AND column_name = 'file_url') THEN
ALTER TABLE `blade_voucher_manage` ADD COLUMN `file_url` varchar(1000) NOT NULL DEFAULT '' COMMENT '凭证压缩包地址';
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_voucher_manage' AND column_name = 'file_task_id') THEN
ALTER TABLE `blade_voucher_manage` ADD COLUMN `file_task_id` bigint DEFAULT NULL COMMENT '分片上传任务ID';
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_voucher_manage' AND column_name = 'upload_source') THEN
ALTER TABLE `blade_voucher_manage` ADD COLUMN `upload_source` varchar(20) NOT NULL DEFAULT '内部' COMMENT '上传来源:内部、承运商';
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_voucher_manage' AND column_name = 'carrier_name') THEN
ALTER TABLE `blade_voucher_manage` ADD COLUMN `carrier_name` varchar(50) DEFAULT NULL COMMENT '承运商名称';
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_voucher_manage' AND column_name = 'process_status') THEN
ALTER TABLE `blade_voucher_manage` ADD COLUMN `process_status` varchar(20) NOT NULL DEFAULT '上传中' COMMENT '上传中、处理中、处理完成';
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_voucher_manage' AND column_name = 'voucher_count') THEN
ALTER TABLE `blade_voucher_manage` ADD COLUMN `voucher_count` int NOT NULL DEFAULT 0 COMMENT '凭证数量';
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_voucher_manage' AND column_name = 'related_waybill_count') THEN
ALTER TABLE `blade_voucher_manage` ADD COLUMN `related_waybill_count` int NOT NULL DEFAULT 0 COMMENT '已关联运单数';
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_voucher_manage' AND column_name = 'un_related_waybill_count') THEN
ALTER TABLE `blade_voucher_manage` ADD COLUMN `un_related_waybill_count` int NOT NULL DEFAULT 0 COMMENT '未关联运单数';
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_voucher_manage' AND column_name = 'audit_status') THEN
ALTER TABLE `blade_voucher_manage` ADD COLUMN `audit_status` varchar(20) NOT NULL DEFAULT '-' COMMENT '待审核、审核通过、审核驳回';
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_voucher_manage' AND column_name = 'create_user') THEN
ALTER TABLE `blade_voucher_manage` ADD COLUMN `create_user` bigint DEFAULT NULL COMMENT '创建人';
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_voucher_manage' AND column_name = 'create_dept') THEN
ALTER TABLE `blade_voucher_manage` ADD COLUMN `create_dept` bigint DEFAULT NULL COMMENT '创建部门';
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_voucher_manage' AND column_name = 'create_time') THEN
ALTER TABLE `blade_voucher_manage` ADD COLUMN `create_time` datetime DEFAULT NULL COMMENT '创建时间';
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_voucher_manage' AND column_name = 'update_user') THEN
ALTER TABLE `blade_voucher_manage` ADD COLUMN `update_user` bigint DEFAULT NULL COMMENT '更新人';
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_voucher_manage' AND column_name = 'update_time') THEN
ALTER TABLE `blade_voucher_manage` ADD COLUMN `update_time` datetime DEFAULT NULL COMMENT '更新时间';
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_voucher_manage' AND column_name = 'status') THEN
ALTER TABLE `blade_voucher_manage` ADD COLUMN `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态';
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = db_name AND table_name = 'blade_voucher_manage' AND column_name = 'is_deleted') THEN
ALTER TABLE `blade_voucher_manage` ADD COLUMN `is_deleted` tinyint NOT NULL DEFAULT 0 COMMENT '是否删除';
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.statistics WHERE table_schema = db_name AND table_name = 'blade_voucher_manage' AND index_name = 'idx_voucher_manage_create_time') THEN
CREATE INDEX `idx_voucher_manage_create_time` ON `blade_voucher_manage` (`create_time`);
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.statistics WHERE table_schema = db_name AND table_name = 'blade_voucher_manage' AND index_name = 'idx_voucher_manage_process_status') THEN
CREATE INDEX `idx_voucher_manage_process_status` ON `blade_voucher_manage` (`process_status`);
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.statistics WHERE table_schema = db_name AND table_name = 'blade_voucher_manage' AND index_name = 'idx_voucher_manage_tenant_batch_no') THEN
CREATE INDEX `idx_voucher_manage_tenant_batch_no` ON `blade_voucher_manage` (`tenant_id`, `voucher_batch_no`);
END IF;
END$$
CALL `upgrade_blade_voucher_manage_20260812`()$$
DROP PROCEDURE `upgrade_blade_voucher_manage_20260812`$$
DELIMITER ;