Merge remote-tracking branch 'origin/feature/20261019-bfi-all' into feature/hcs-api-p0
# Conflicts: # blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/PaymentApplicationServiceImpl.java
This commit is contained in:
@@ -305,6 +305,7 @@ CREATE TABLE `blade_dept` (
|
||||
`dept_code` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组织编码',
|
||||
`kingdee_dept_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '金蝶部门代码',
|
||||
`contract_code_prefix` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '合同编码前缀',
|
||||
`contract_initial_serial` int NULL DEFAULT NULL COMMENT '合同初始流水号',
|
||||
`short_name` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组织简称',
|
||||
`pinyin_mnemonic` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '拼音助记码',
|
||||
`mnemonic_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '助记码',
|
||||
@@ -1324,7 +1325,9 @@ CREATE TABLE `blade_user_dept` (
|
||||
`oa_id` varchar(64) NULL DEFAULT NULL COMMENT 'OA人员ID',
|
||||
`oa_login_id` varchar(128) NULL DEFAULT NULL COMMENT 'OA登录账号',
|
||||
`sync_time` datetime NULL DEFAULT NULL COMMENT '同步时间',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_blade_user_dept_user` (`user_id`, `is_deleted`, `status`) USING BTREE,
|
||||
INDEX `idx_blade_user_dept_dept` (`dept_id`, `is_deleted`, `status`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户部门表';
|
||||
|
||||
-- ----------------------------
|
||||
|
||||
@@ -9,8 +9,16 @@ ALTER TABLE `blade_customer_archive`
|
||||
|
||||
CREATE INDEX idx_kingdee_status ON blade_customer_archive (kingdee_status);
|
||||
|
||||
-- 列表「同步金蝶」按钮权限(审批通过后推送失败的重推入口;parent_id 通过菜单 code 关联,避免写死 id)
|
||||
-- 列表「同步金蝶」按钮权限(审批通过且未推送/推送失败时可点;parent_id 通过菜单 code 关联)
|
||||
INSERT INTO blade_menu (id, parent_id, code, name, alias, path, source, sort, category, action, is_open, component, remark, is_deleted)
|
||||
SELECT 2075431800000000001, m.id, 'customer_archive_sync', '同步金蝶', 'customer_archive_sync', '', '', 1, 2, 0, 1, '', '', 0
|
||||
SELECT 2077600000000000011, m.id, 'customer_archive_sync', '同步金蝶', 'customer_archive_sync', '', '', 10, 2, 0, 1, NULL, '', 0
|
||||
FROM blade_menu m
|
||||
WHERE m.code = 'customer_archive' AND m.is_deleted = 0;
|
||||
WHERE m.code = 'customer_archive' AND m.is_deleted = 0
|
||||
LIMIT 1
|
||||
ON DUPLICATE KEY UPDATE
|
||||
parent_id = VALUES(parent_id),
|
||||
name = VALUES(name),
|
||||
alias = VALUES(alias),
|
||||
sort = VALUES(sort),
|
||||
category = VALUES(category),
|
||||
is_deleted = 0;
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
-- 修复「同步金蝶」按钮菜单:按 code 幂等补齐/纠正,避免权限勾了但不生效
|
||||
-- 执行后需:角色重新勾选「同步金蝶」→ 用户重新登录
|
||||
|
||||
INSERT INTO blade_menu (id, parent_id, code, name, alias, path, source, sort, category, action, is_open, component, remark, is_deleted)
|
||||
SELECT 2077600000000000011, m.id, 'customer_archive_sync', '同步金蝶', 'customer_archive_sync', '', '', 10, 2, 0, 1, NULL, '', 0
|
||||
FROM blade_menu m
|
||||
WHERE m.code = 'customer_archive' AND m.is_deleted = 0
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM blade_menu x WHERE x.code = 'customer_archive_sync' AND x.is_deleted = 0
|
||||
)
|
||||
LIMIT 1;
|
||||
|
||||
UPDATE blade_menu child
|
||||
INNER JOIN blade_menu parent ON parent.code = 'customer_archive' AND parent.is_deleted = 0
|
||||
SET
|
||||
child.parent_id = parent.id,
|
||||
child.name = '同步金蝶',
|
||||
child.alias = 'customer_archive_sync',
|
||||
child.category = 2,
|
||||
child.sort = 10,
|
||||
child.is_deleted = 0
|
||||
WHERE child.code = 'customer_archive_sync';
|
||||
@@ -0,0 +1,3 @@
|
||||
-- 组织机构新增合同初始流水号:该部门当年首个合同从此流水号起编,后续递增
|
||||
ALTER TABLE `blade_dept`
|
||||
ADD COLUMN `contract_initial_serial` int(11) DEFAULT NULL COMMENT '合同初始流水号' AFTER `contract_code_prefix`;
|
||||
@@ -44,7 +44,9 @@ CREATE TABLE IF NOT EXISTS `blade_formal_settlement_change_record` (
|
||||
`update_user` bigint(20) DEFAULT NULL, `update_time` datetime DEFAULT NULL, `status` int(11) DEFAULT '1', `is_deleted` int(11) DEFAULT '0',
|
||||
`formal_settlement_id` bigint(20) NOT NULL COMMENT '正式结算单ID', `change_type` varchar(50) NOT NULL COMMENT '变更类型',
|
||||
`line_no` int(11) DEFAULT NULL COMMENT '行号', `operation_type` varchar(30) NOT NULL COMMENT '操作类型',
|
||||
`change_content` text NOT NULL COMMENT '变更内容', `change_reason` varchar(200) DEFAULT NULL COMMENT '变更原因',
|
||||
`change_content` text NOT NULL COMMENT '变更内容',
|
||||
`before_data` longtext COMMENT '变更前数据JSON', `after_data` longtext COMMENT '变更后数据JSON',
|
||||
`change_reason` varchar(200) DEFAULT NULL COMMENT '变更原因',
|
||||
`operator_name` varchar(100) DEFAULT NULL COMMENT '操作人', `change_time` datetime NOT NULL COMMENT '变更时间',
|
||||
PRIMARY KEY (`id`), KEY `idx_formal_settlement_change_bill` (`formal_settlement_id`),
|
||||
KEY `idx_formal_settlement_change_time` (`change_time`)
|
||||
@@ -123,17 +125,29 @@ CREATE TABLE IF NOT EXISTS `blade_formal_settlement_payment` (
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='正式结算付款申请';
|
||||
|
||||
INSERT INTO `blade_menu` (`id`,`parent_id`,`code`,`name`,`alias`,`path`,`source`,`sort`,`category`,`action`,`is_open`,`component`,`remark`,`is_deleted`) VALUES
|
||||
(2090000000000001040,2090000000000001000,'formal_settlement','正式结算单','formal_settlement','/settlement/formal-settlement','iconfont icon-caidanguanli',4,1,0,1,NULL,'',0),
|
||||
(2090000000000001041,2090000000000001040,'formal_settlement_view','查看','formal_settlement_view','','',1,2,0,1,NULL,'',0),
|
||||
(2090000000000001042,2090000000000001040,'formal_settlement_add','新增','formal_settlement_add','','',2,2,0,1,NULL,'',0),
|
||||
(2090000000000001043,2090000000000001040,'formal_settlement_edit','编辑','formal_settlement_edit','','',3,2,0,1,NULL,'',0),
|
||||
(2090000000000001044,2090000000000001040,'formal_settlement_delete','删除','formal_settlement_delete','','',4,2,0,1,NULL,'',0),
|
||||
(2090000000000001045,2090000000000001040,'formal_settlement_submit','提交审批','formal_settlement_submit','','',5,2,0,1,NULL,'',0),
|
||||
(2090000000000001046,2090000000000001040,'formal_settlement_approve','审批','formal_settlement_approve','','',6,2,0,1,NULL,'',0),
|
||||
(2090000000000001047,2090000000000001040,'formal_settlement_sync','同步金蝶','formal_settlement_sync','','',7,2,0,1,NULL,'',0),
|
||||
(2090000000000001048,2090000000000001040,'formal_settlement_print','打印','formal_settlement_print','','',8,2,0,1,NULL,'',0),
|
||||
(2090000000000001049,2090000000000001040,'formal_settlement_export','导出','formal_settlement_export','','',9,2,0,1,NULL,'',0),
|
||||
(2090000000000001050,2090000000000001040,'formal_settlement_void','作废','formal_settlement_void','','',10,2,0,1,NULL,'',0),
|
||||
(2090000000000001051,2090000000000001040,'formal_settlement_adjust','明细调整','formal_settlement_adjust','','',11,2,0,1,NULL,'',0),
|
||||
(2090000000000001052,2090000000000001040,'formal_settlement_payment','付款申请','formal_settlement_payment','','',12,2,0,1,NULL,'',0)
|
||||
(2090000000000001040,2090000000000001000,'payment_settlement','付款结算单','payment_settlement','/settlement/payment-settlement','iconfont icon-caidanguanli',4,1,0,1,NULL,'',0),
|
||||
(2090000000000001041,2090000000000001040,'payment_settlement_view','查看','payment_settlement_view','','',1,2,0,1,NULL,'',0),
|
||||
(2090000000000001042,2090000000000001040,'payment_settlement_add','新增','payment_settlement_add','','',2,2,0,1,NULL,'',0),
|
||||
(2090000000000001043,2090000000000001040,'payment_settlement_edit','编辑','payment_settlement_edit','','',3,2,0,1,NULL,'',0),
|
||||
(2090000000000001044,2090000000000001040,'payment_settlement_delete','删除','payment_settlement_delete','','',4,2,0,1,NULL,'',0),
|
||||
(2090000000000001045,2090000000000001040,'payment_settlement_submit','提交审批','payment_settlement_submit','','',5,2,0,1,NULL,'',0),
|
||||
(2090000000000001046,2090000000000001040,'payment_settlement_approve','审批','payment_settlement_approve','','',6,2,0,1,NULL,'',0),
|
||||
(2090000000000001047,2090000000000001040,'payment_settlement_sync','同步金蝶','payment_settlement_sync','','',7,2,0,1,NULL,'',0),
|
||||
(2090000000000001048,2090000000000001040,'payment_settlement_print','打印','payment_settlement_print','','',8,2,0,1,NULL,'',0),
|
||||
(2090000000000001049,2090000000000001040,'payment_settlement_export','导出','payment_settlement_export','','',9,2,0,1,NULL,'',0),
|
||||
(2090000000000001050,2090000000000001040,'payment_settlement_void','作废','payment_settlement_void','','',10,2,0,1,NULL,'',0),
|
||||
(2090000000000001051,2090000000000001040,'payment_settlement_adjust','明细调整','payment_settlement_adjust','','',11,2,0,1,NULL,'',0),
|
||||
(2090000000000001052,2090000000000001040,'payment_settlement_payment','付款申请','payment_settlement_payment','','',12,2,0,1,NULL,'',0),
|
||||
(2090000000000002100,2090000000000001000,'receipt_settlement','收款结算单','receipt_settlement','/settlement/receipt-settlement','iconfont icon-caidanguanli',5,1,0,1,NULL,'',0),
|
||||
(2090000000000002101,2090000000000002100,'receipt_settlement_view','查看','receipt_settlement_view','','',1,2,0,1,NULL,'',0),
|
||||
(2090000000000002102,2090000000000002100,'receipt_settlement_add','新增','receipt_settlement_add','','',2,2,0,1,NULL,'',0),
|
||||
(2090000000000002103,2090000000000002100,'receipt_settlement_edit','编辑','receipt_settlement_edit','','',3,2,0,1,NULL,'',0),
|
||||
(2090000000000002104,2090000000000002100,'receipt_settlement_delete','删除','receipt_settlement_delete','','',4,2,0,1,NULL,'',0),
|
||||
(2090000000000002105,2090000000000002100,'receipt_settlement_submit','提交审批','receipt_settlement_submit','','',5,2,0,1,NULL,'',0),
|
||||
(2090000000000002106,2090000000000002100,'receipt_settlement_approve','审批','receipt_settlement_approve','','',6,2,0,1,NULL,'',0),
|
||||
(2090000000000002107,2090000000000002100,'receipt_settlement_sync','同步金蝶','receipt_settlement_sync','','',7,2,0,1,NULL,'',0),
|
||||
(2090000000000002108,2090000000000002100,'receipt_settlement_print','打印','receipt_settlement_print','','',8,2,0,1,NULL,'',0),
|
||||
(2090000000000002109,2090000000000002100,'receipt_settlement_export','导出','receipt_settlement_export','','',9,2,0,1,NULL,'',0),
|
||||
(2090000000000002110,2090000000000002100,'receipt_settlement_void','作废','receipt_settlement_void','','',10,2,0,1,NULL,'',0),
|
||||
(2090000000000002111,2090000000000002100,'receipt_settlement_adjust','明细调整','receipt_settlement_adjust','','',11,2,0,1,NULL,'',0)
|
||||
ON DUPLICATE KEY UPDATE `name`=VALUES(`name`),`path`=VALUES(`path`),`is_deleted`=0;
|
||||
|
||||
@@ -14,6 +14,8 @@ CREATE TABLE IF NOT EXISTS `blade_formal_settlement_change_record` (
|
||||
`line_no` int(11) DEFAULT NULL COMMENT '行号',
|
||||
`operation_type` varchar(30) COLLATE utf8mb4_general_ci NOT NULL COMMENT '操作类型',
|
||||
`change_content` text COLLATE utf8mb4_general_ci NOT NULL COMMENT '变更内容',
|
||||
`before_data` longtext COLLATE utf8mb4_general_ci COMMENT '变更前数据JSON',
|
||||
`after_data` longtext COLLATE utf8mb4_general_ci COMMENT '变更后数据JSON',
|
||||
`change_reason` varchar(200) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '变更原因',
|
||||
`operator_name` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '操作人',
|
||||
`change_time` datetime NOT NULL COMMENT '变更时间',
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
-- 正式结算变更记录补充前后值明细,与预结算变更记录口径一致。
|
||||
SET @before_data_exists := (
|
||||
SELECT COUNT(1) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'blade_formal_settlement_change_record'
|
||||
AND COLUMN_NAME = 'before_data'
|
||||
);
|
||||
SET @before_data_sql := IF(
|
||||
@before_data_exists = 0,
|
||||
'ALTER TABLE `blade_formal_settlement_change_record` ADD COLUMN `before_data` longtext COLLATE utf8mb4_general_ci COMMENT ''变更前数据JSON'' AFTER `change_content`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE before_data_stmt FROM @before_data_sql;
|
||||
EXECUTE before_data_stmt;
|
||||
DEALLOCATE PREPARE before_data_stmt;
|
||||
|
||||
SET @after_data_exists := (
|
||||
SELECT COUNT(1) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'blade_formal_settlement_change_record'
|
||||
AND COLUMN_NAME = 'after_data'
|
||||
);
|
||||
SET @after_data_sql := IF(
|
||||
@after_data_exists = 0,
|
||||
'ALTER TABLE `blade_formal_settlement_change_record` ADD COLUMN `after_data` longtext COLLATE utf8mb4_general_ci COMMENT ''变更后数据JSON'' AFTER `before_data`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE after_data_stmt FROM @after_data_sql;
|
||||
EXECUTE after_data_stmt;
|
||||
DEALLOCATE PREPARE after_data_stmt;
|
||||
@@ -0,0 +1,30 @@
|
||||
-- 收票登记:删除冗余的 kingdee_bill_no / kingdee_status 两列
|
||||
-- 这两列由收票登记旧版金蝶同步链路写入,同步功能已下线,代码中已无任何读写。
|
||||
-- 收票登记的金蝶状态以 kingdee_push_status 为唯一状态源(未推送/已保存收票单/已指定应付/推送失败);
|
||||
-- 金蝶单据号可经 kingdee_invoice_pool_id 关联 blade_kingdee_invoice_pool 取 serial_no,
|
||||
-- 两列的取值集合也与新模型对不上(旧值 pushed / assigned 在新模型里不存在),故不搬运数据。
|
||||
-- 基线建表脚本 blade_invoice_receipt_20260821.sql 仍声明这两列,
|
||||
-- 而 CREATE TABLE IF NOT EXISTS 对已存在的表是空操作,存量库只能靠 ALTER 收敛。
|
||||
-- 以下语句可重复执行。
|
||||
SET @ddl_sql = (
|
||||
SELECT IF(COUNT(*) > 0,
|
||||
'ALTER TABLE `blade_invoice_receipt` DROP COLUMN `kingdee_bill_no`',
|
||||
'SELECT 1')
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'blade_invoice_receipt' AND COLUMN_NAME = 'kingdee_bill_no'
|
||||
);
|
||||
PREPARE ddl_stmt FROM @ddl_sql;
|
||||
EXECUTE ddl_stmt;
|
||||
DEALLOCATE PREPARE ddl_stmt;
|
||||
|
||||
-- 索引 idx_invoice_receipt_kingdee 建在 kingdee_status 上,随该列一并删除,无需单独 DROP INDEX
|
||||
SET @ddl_sql = (
|
||||
SELECT IF(COUNT(*) > 0,
|
||||
'ALTER TABLE `blade_invoice_receipt` DROP COLUMN `kingdee_status`',
|
||||
'SELECT 1')
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'blade_invoice_receipt' AND COLUMN_NAME = 'kingdee_status'
|
||||
);
|
||||
PREPARE ddl_stmt FROM @ddl_sql;
|
||||
EXECUTE ddl_stmt;
|
||||
DEALLOCATE PREPARE ddl_stmt;
|
||||
@@ -0,0 +1,82 @@
|
||||
-- 付款申请可关联多张预结算单:关联表补充预结算字段,正式结算字段改为可空
|
||||
|
||||
SET @ddl_sql = (
|
||||
SELECT IF(COUNT(*) > 0,
|
||||
'ALTER TABLE `blade_payment_application_settlement` MODIFY COLUMN `formal_settlement_id` bigint(20) NULL COMMENT ''正式结算单ID''',
|
||||
'SELECT 1')
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'blade_payment_application_settlement'
|
||||
AND COLUMN_NAME = 'formal_settlement_id'
|
||||
AND IS_NULLABLE = '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_settlement` MODIFY COLUMN `formal_settlement_no` varchar(100) COLLATE utf8mb4_general_ci NULL COMMENT ''正式结算单号''',
|
||||
'SELECT 1')
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'blade_payment_application_settlement'
|
||||
AND COLUMN_NAME = 'formal_settlement_no'
|
||||
AND IS_NULLABLE = '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_settlement` ADD COLUMN `pre_settlement_id` bigint(20) DEFAULT NULL COMMENT ''预结算单ID'' AFTER `formal_settlement_no`',
|
||||
'SELECT 1')
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'blade_payment_application_settlement'
|
||||
AND COLUMN_NAME = 'pre_settlement_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_settlement` ADD COLUMN `pre_settlement_no` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''预结算单号'' AFTER `pre_settlement_id`',
|
||||
'SELECT 1')
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'blade_payment_application_settlement'
|
||||
AND COLUMN_NAME = 'pre_settlement_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_settlement` ADD KEY `idx_payment_settlement_pre` (`pre_settlement_id`)',
|
||||
'SELECT 1')
|
||||
FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'blade_payment_application_settlement'
|
||||
AND INDEX_NAME = 'idx_payment_settlement_pre'
|
||||
);
|
||||
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` MODIFY COLUMN `pre_settlement_no` varchar(500) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''预结算单号''',
|
||||
'SELECT 1')
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'blade_payment_application'
|
||||
AND COLUMN_NAME = 'pre_settlement_no'
|
||||
AND CHARACTER_MAXIMUM_LENGTH < 500
|
||||
);
|
||||
PREPARE ddl_stmt FROM @ddl_sql;
|
||||
EXECUTE ddl_stmt;
|
||||
DEALLOCATE PREPARE ddl_stmt;
|
||||
@@ -200,7 +200,7 @@ CREATE TABLE IF NOT EXISTS `blade_pre_settlement_change_record` (
|
||||
INSERT INTO `blade_menu`
|
||||
(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `component`, `remark`, `is_deleted`)
|
||||
VALUES
|
||||
(2090000000000001020, 2090000000000001000, 'pre_settlement', '预结算', 'pre_settlement', '/settlement/pre-settlement', 'iconfont icon-caidanguanli', 3, 1, 0, 1, NULL, '', 0),
|
||||
(2090000000000001020, 2090000000000001000, 'pre_settlement', '预付结算单', 'pre_settlement', '/settlement/pre-settlement', 'iconfont icon-caidanguanli', 3, 1, 0, 1, NULL, '', 0),
|
||||
(2090000000000001021, 2090000000000001020, 'pre_settlement_view', '查看', 'pre_settlement_view', '', '', 1, 2, 0, 1, NULL, '', 0),
|
||||
(2090000000000001022, 2090000000000001020, 'pre_settlement_add', '新增', 'pre_settlement_add', '', '', 2, 2, 0, 1, NULL, '', 0),
|
||||
(2090000000000001023, 2090000000000001020, 'pre_settlement_edit', '编辑', 'pre_settlement_edit', '', '', 3, 2, 0, 1, NULL, '', 0),
|
||||
|
||||
@@ -1,4 +1,64 @@
|
||||
-- 平台公司支持多选:ID 逗号分隔,名称顿号分隔
|
||||
ALTER TABLE `blade_project_apply`
|
||||
MODIFY COLUMN `undertake_dept_id` varchar(500) DEFAULT NULL COMMENT '平台公司ID,多个逗号分隔',
|
||||
MODIFY COLUMN `undertake_dept_name` varchar(500) DEFAULT NULL COMMENT '平台公司,多个顿号分隔';
|
||||
-- 项目立项平台公司多选:ID 逗号分隔,名称顿号分隔
|
||||
-- 原字段:undertake_dept_id bigint、undertake_dept_name varchar(100)
|
||||
-- 选择 2 个及以上平台公司时,若未扩容会报 Incorrect integer value / Data truncation
|
||||
-- 整列索引挂在 varchar(500) 上可能因键长超限导致 ALTER 失败,故先删索引再改前缀索引
|
||||
|
||||
DELIMITER $$
|
||||
|
||||
DROP PROCEDURE IF EXISTS `upgrade_project_apply_undertake_dept_multi_20261014`$$
|
||||
CREATE PROCEDURE `upgrade_project_apply_undertake_dept_multi_20261014`()
|
||||
BEGIN
|
||||
DECLARE db_name varchar(128);
|
||||
DECLARE need_modify tinyint DEFAULT 0;
|
||||
SET db_name = DATABASE();
|
||||
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema = db_name
|
||||
AND table_name = 'blade_project_apply'
|
||||
AND column_name = 'undertake_dept_id'
|
||||
AND (
|
||||
data_type IN ('bigint', 'int', 'integer')
|
||||
OR (data_type IN ('varchar', 'char') AND IFNULL(character_maximum_length, 0) < 500)
|
||||
)
|
||||
) OR EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema = db_name
|
||||
AND table_name = 'blade_project_apply'
|
||||
AND column_name = 'undertake_dept_name'
|
||||
AND data_type IN ('varchar', 'char')
|
||||
AND IFNULL(character_maximum_length, 0) < 500
|
||||
) THEN
|
||||
SET need_modify = 1;
|
||||
END IF;
|
||||
|
||||
IF need_modify = 1 THEN
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM information_schema.statistics
|
||||
WHERE table_schema = db_name
|
||||
AND table_name = 'blade_project_apply'
|
||||
AND index_name = 'idx_project_apply_dept'
|
||||
) THEN
|
||||
ALTER TABLE `blade_project_apply` DROP INDEX `idx_project_apply_dept`;
|
||||
END IF;
|
||||
|
||||
ALTER TABLE `blade_project_apply`
|
||||
MODIFY COLUMN `undertake_dept_id` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '平台公司ID,多个逗号分隔',
|
||||
MODIFY COLUMN `undertake_dept_name` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '平台公司,多个顿号分隔';
|
||||
END IF;
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.statistics
|
||||
WHERE table_schema = db_name
|
||||
AND table_name = 'blade_project_apply'
|
||||
AND index_name = 'idx_project_apply_dept'
|
||||
) THEN
|
||||
ALTER TABLE `blade_project_apply`
|
||||
ADD INDEX `idx_project_apply_dept` (`undertake_dept_id`(191)) USING BTREE;
|
||||
END IF;
|
||||
END$$
|
||||
|
||||
CALL `upgrade_project_apply_undertake_dept_multi_20261014`()$$
|
||||
DROP PROCEDURE `upgrade_project_apply_undertake_dept_multi_20261014`$$
|
||||
|
||||
DELIMITER ;
|
||||
|
||||
@@ -60,7 +60,7 @@ CREATE TABLE `blade_project_apply` (
|
||||
`void_reason` varchar(500) DEFAULT NULL COMMENT '作废原因',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_project_apply_name` (`project_name`, `is_deleted`) USING BTREE,
|
||||
KEY `idx_project_apply_dept` (`undertake_dept_id`) USING BTREE,
|
||||
KEY `idx_project_apply_dept` (`undertake_dept_id`(191)) USING BTREE,
|
||||
KEY `idx_project_apply_status` (`approval_status`) USING BTREE,
|
||||
KEY `idx_project_apply_create_time` (`create_time`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目立项';
|
||||
@@ -80,8 +80,8 @@ CREATE TABLE `blade_temporary_credit_limit` (
|
||||
`project_id` bigint(20) DEFAULT NULL COMMENT '项目ID',
|
||||
`project_code` varchar(100) DEFAULT NULL COMMENT '项目编号',
|
||||
`project_name` varchar(100) DEFAULT NULL COMMENT '项目名称',
|
||||
`undertake_dept_id` varchar(500) DEFAULT NULL COMMENT '平台公司ID,多个逗号分隔',
|
||||
`undertake_dept_name` varchar(500) DEFAULT NULL COMMENT '平台公司,多个顿号分隔',
|
||||
`undertake_dept_id` bigint(20) DEFAULT NULL COMMENT '承办部门ID',
|
||||
`undertake_dept_name` varchar(100) DEFAULT NULL COMMENT '承办部门',
|
||||
`project_fund_limit` decimal(18,2) DEFAULT NULL COMMENT '项目资金使用额度(万元)',
|
||||
`used_fund_limit` decimal(18,2) DEFAULT NULL COMMENT '已使用项目资金额度(万元)',
|
||||
`remaining_fund_limit` decimal(18,2) DEFAULT NULL COMMENT '剩余项目资金使用额度(万元)',
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
-- 结算调整单接入金蝶(未推送自动推 · 已推送手工冲销后重推新单)
|
||||
-- 整理日期:2026-10-16
|
||||
|
||||
-- 结算调整单:落金蝶单据号(未推送场景回填原单金蝶单号;已推送重推场景回填新单金蝶单号)
|
||||
SET @ddl_sql = (
|
||||
SELECT IF(COUNT(*) = 0,
|
||||
'ALTER TABLE `blade_settlement_adjustment` ADD COLUMN `kingdee_bill_no` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''金蝶单据号'' AFTER `kingdee_sync_status`',
|
||||
'SELECT 1')
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'blade_settlement_adjustment'
|
||||
AND COLUMN_NAME = 'kingdee_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_formal_settlement` ADD COLUMN `origin_formal_settlement_no` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''来源原正式结算单号(结算调整重推生成)''',
|
||||
'SELECT 1')
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'blade_formal_settlement'
|
||||
AND COLUMN_NAME = 'origin_formal_settlement_no'
|
||||
);
|
||||
PREPARE ddl_stmt FROM @ddl_sql;
|
||||
EXECUTE ddl_stmt;
|
||||
DEALLOCATE PREPARE ddl_stmt;
|
||||
|
||||
-- 正式结算单:调整标记(被调整的原单)
|
||||
SET @ddl_sql = (
|
||||
SELECT IF(COUNT(*) = 0,
|
||||
'ALTER TABLE `blade_formal_settlement` ADD COLUMN `adjust_status` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''调整状态:adjusted=已被结算调整'' AFTER `origin_formal_settlement_no`',
|
||||
'SELECT 1')
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'blade_formal_settlement'
|
||||
AND COLUMN_NAME = 'adjust_status'
|
||||
);
|
||||
PREPARE ddl_stmt FROM @ddl_sql;
|
||||
EXECUTE ddl_stmt;
|
||||
DEALLOCATE PREPARE ddl_stmt;
|
||||
|
||||
-- 正式结算单:来源原单号索引(重推幂等按来源原单号查已克隆新单)
|
||||
SET @ddl_sql = (
|
||||
SELECT IF(COUNT(*) = 0,
|
||||
'ALTER TABLE `blade_formal_settlement` ADD KEY `idx_formal_origin_no` (`origin_formal_settlement_no`)',
|
||||
'SELECT 1')
|
||||
FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'blade_formal_settlement'
|
||||
AND INDEX_NAME = 'idx_formal_origin_no'
|
||||
);
|
||||
PREPARE ddl_stmt FROM @ddl_sql;
|
||||
EXECUTE ddl_stmt;
|
||||
DEALLOCATE PREPARE ddl_stmt;
|
||||
|
||||
-- 推送金蝶 / 重新推送已合并为单一按钮(按金蝶状态自动分流),复用既有菜单 settlement_adjustment_repush,
|
||||
-- 菜单已在 blade_settlement_adjustment_20260818.sql 初始化,本脚本无需新增菜单。
|
||||
@@ -0,0 +1,68 @@
|
||||
-- 导入结算单批次表 + 菜单
|
||||
CREATE TABLE IF NOT EXISTS `blade_settlement_import_batch` (
|
||||
`id` bigint NOT NULL COMMENT '主键',
|
||||
`tenant_id` varchar(12) NOT NULL DEFAULT '000000' COMMENT '租户ID',
|
||||
`batch_no` varchar(64) NOT NULL COMMENT '批次号 DJS+yyyyMMdd+序号',
|
||||
`project_id` bigint DEFAULT NULL COMMENT '项目ID',
|
||||
`project_name` varchar(200) DEFAULT NULL COMMENT '项目名称',
|
||||
`settlement_type` varchar(30) NOT NULL COMMENT 'receivable/payable',
|
||||
`settlement_bill_type` varchar(20) NOT NULL DEFAULT 'formal' COMMENT '结算单类型 formal/pre',
|
||||
`customer_contract_id` bigint DEFAULT NULL COMMENT '客户合同ID',
|
||||
`customer_contract_name` varchar(200) DEFAULT NULL COMMENT '客户合同名称',
|
||||
`customer_name` varchar(200) DEFAULT NULL COMMENT '客户名称',
|
||||
`carrier_contract_id` bigint DEFAULT NULL COMMENT '承运商合同ID',
|
||||
`carrier_contract_name` varchar(200) DEFAULT NULL COMMENT '承运商合同名称',
|
||||
`carrier_name` varchar(200) DEFAULT NULL COMMENT '承运商名称',
|
||||
`waybill_mode` varchar(20) DEFAULT 'new' COMMENT '运单模式 new/history',
|
||||
`import_status` varchar(32) NOT NULL COMMENT 'draft/completed/voided',
|
||||
`waybill_count` int DEFAULT 0 COMMENT '运单数量',
|
||||
`detail_count` int DEFAULT 0 COMMENT '明细数量',
|
||||
`formal_settlement_id` bigint DEFAULT NULL COMMENT '正式结算单ID',
|
||||
`formal_settlement_no` varchar(100) DEFAULT NULL COMMENT '正式结算单号',
|
||||
`pre_settlement_id` bigint DEFAULT NULL COMMENT '预结算单ID',
|
||||
`pre_settlement_no` varchar(100) DEFAULT NULL COMMENT '预结算单号',
|
||||
`fee_item_names_json` longtext COMMENT '动态费用列名JSON数组',
|
||||
`rows_json` longtext COMMENT '导入明细行JSON数组',
|
||||
`remark` varchar(200) DEFAULT NULL COMMENT '备注',
|
||||
`waybill_import_batch_id` bigint DEFAULT NULL COMMENT '关联底层运单导入批次,可空',
|
||||
`create_user` bigint DEFAULT NULL COMMENT '创建人',
|
||||
`create_dept` bigint DEFAULT NULL COMMENT '创建部门',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_user` bigint DEFAULT NULL COMMENT '更新人',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`status` int DEFAULT 1 COMMENT '业务状态',
|
||||
`is_deleted` int DEFAULT 0 COMMENT '是否已删除',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_settlement_import_batch_no` (`tenant_id`,`batch_no`),
|
||||
KEY `idx_settlement_import_project` (`project_id`),
|
||||
KEY `idx_settlement_import_formal` (`formal_settlement_id`),
|
||||
KEY `idx_settlement_import_pre` (`pre_settlement_id`),
|
||||
KEY `idx_settlement_import_waybill_batch` (`waybill_import_batch_id`),
|
||||
KEY `idx_settlement_import_create_time` (`create_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='导入结算单批次';
|
||||
|
||||
-- 已建表环境增量字段(列已存在可忽略报错)
|
||||
ALTER TABLE `blade_settlement_import_batch` ADD COLUMN `settlement_bill_type` varchar(20) NOT NULL DEFAULT 'formal' COMMENT '结算单类型 formal/pre' AFTER `settlement_type`;
|
||||
ALTER TABLE `blade_settlement_import_batch` ADD COLUMN `pre_settlement_id` bigint DEFAULT NULL COMMENT '预结算单ID' AFTER `formal_settlement_no`;
|
||||
ALTER TABLE `blade_settlement_import_batch` ADD COLUMN `pre_settlement_no` varchar(100) DEFAULT NULL COMMENT '预结算单号' AFTER `pre_settlement_id`;
|
||||
ALTER TABLE `blade_settlement_import_batch` ADD KEY `idx_settlement_import_pre` (`pre_settlement_id`);
|
||||
ALTER TABLE `blade_settlement_import_batch` ADD COLUMN `rows_json` longtext COMMENT '导入明细行JSON数组' AFTER `fee_item_names_json`;
|
||||
|
||||
-- 运单关联导入结算批次(可选,若列已存在可忽略报错)
|
||||
ALTER TABLE `blade_waybill` ADD COLUMN `settlement_import_batch_id` bigint DEFAULT NULL COMMENT '导入结算单批次ID';
|
||||
ALTER TABLE `blade_waybill` ADD KEY `idx_waybill_settlement_import_batch_id` (`settlement_import_batch_id`);
|
||||
|
||||
INSERT INTO `blade_menu` (`id`,`parent_id`,`code`,`name`,`alias`,`path`,`source`,`sort`,`category`,`action`,`is_open`,`component`,`remark`,`is_deleted`) VALUES
|
||||
(2090000000000002080,2090000000000001000,'settlement_import','导入结算单','settlement_import','/settlement/settlement-import','iconfont icon-caidanguanli',6,1,0,1,NULL,'',0),
|
||||
(2090000000000002081,2090000000000002080,'settlement_import_view','查看','settlement_import_view','','',1,2,0,1,NULL,'',0),
|
||||
(2090000000000002082,2090000000000002080,'settlement_import_add','新增','settlement_import_add','','',2,2,0,1,NULL,'',0),
|
||||
(2090000000000002083,2090000000000002080,'settlement_import_detail','详情','settlement_import_detail','','',3,2,0,1,NULL,'',0),
|
||||
(2090000000000002084,2090000000000002080,'settlement_import_void','作废','settlement_import_void','','',4,2,0,1,NULL,'',0),
|
||||
(2090000000000002085,2090000000000002080,'settlement_import_template','下载模板','settlement_import_template','','',5,2,0,1,NULL,'',0),
|
||||
(2090000000000002086,2090000000000002080,'settlement_import_delete','删除','settlement_import_delete','','',6,2,0,1,NULL,'',0)
|
||||
ON DUPLICATE KEY UPDATE `name`=VALUES(`name`),`path`=VALUES(`path`),`is_deleted`=0;
|
||||
|
||||
-- 已建表环境增量菜单(已存在可忽略)
|
||||
INSERT INTO `blade_menu` (`id`,`parent_id`,`code`,`name`,`alias`,`path`,`source`,`sort`,`category`,`action`,`is_open`,`component`,`remark`,`is_deleted`) VALUES
|
||||
(2090000000000002086,2090000000000002080,'settlement_import_delete','删除','settlement_import_delete','','',6,2,0,1,NULL,'',0)
|
||||
ON DUPLICATE KEY UPDATE `name`=VALUES(`name`),`path`=VALUES(`path`),`is_deleted`=0;
|
||||
@@ -0,0 +1,7 @@
|
||||
-- 导入结算单:草稿明细落库 + 删除菜单
|
||||
ALTER TABLE `blade_settlement_import_batch`
|
||||
ADD COLUMN `rows_json` longtext COMMENT '导入明细行JSON数组' AFTER `fee_item_names_json`;
|
||||
|
||||
INSERT INTO `blade_menu` (`id`,`parent_id`,`code`,`name`,`alias`,`path`,`source`,`sort`,`category`,`action`,`is_open`,`component`,`remark`,`is_deleted`) VALUES
|
||||
(2090000000000002086,2090000000000002080,'settlement_import_delete','删除','settlement_import_delete','','',6,2,0,1,NULL,'',0)
|
||||
ON DUPLICATE KEY UPDATE `name`=VALUES(`name`),`path`=VALUES(`path`),`is_deleted`=0;
|
||||
@@ -0,0 +1,163 @@
|
||||
-- 结算菜单调整:
|
||||
-- 1)预结算 → 预付结算单
|
||||
-- 2)正式结算单拆分为:付款结算单(应付)、收款结算单(应收)
|
||||
-- 执行后需重新登录;已授权「正式结算单/付款结算单」的角色会同步授权「收款结算单」。
|
||||
|
||||
-- ① 预结算改名
|
||||
UPDATE `blade_menu`
|
||||
SET `name` = '预付结算单'
|
||||
WHERE `code` = 'pre_settlement'
|
||||
AND `is_deleted` = 0;
|
||||
|
||||
-- ② 原正式结算单菜单改为「付款结算单」(保留原菜单 id,角色授权不丢)
|
||||
UPDATE `blade_menu`
|
||||
SET `code` = 'payment_settlement',
|
||||
`name` = '付款结算单',
|
||||
`alias` = 'payment_settlement',
|
||||
`path` = '/settlement/payment-settlement',
|
||||
`is_deleted` = 0
|
||||
WHERE `code` IN ('formal_settlement', 'payment_settlement')
|
||||
AND `category` = 1
|
||||
AND `is_deleted` = 0;
|
||||
|
||||
-- 付款结算单按钮权限码:formal_settlement_* → payment_settlement_*
|
||||
UPDATE `blade_menu` child
|
||||
INNER JOIN `blade_menu` parent
|
||||
ON parent.`id` = child.`parent_id`
|
||||
AND parent.`code` = 'payment_settlement'
|
||||
AND parent.`is_deleted` = 0
|
||||
SET child.`code` = REPLACE(child.`code`, 'formal_settlement_', 'payment_settlement_'),
|
||||
child.`alias` = REPLACE(IFNULL(child.`alias`, child.`code`), 'formal_settlement_', 'payment_settlement_'),
|
||||
child.`is_deleted` = 0
|
||||
WHERE child.`category` = 2
|
||||
AND child.`code` LIKE 'formal_settlement_%';
|
||||
|
||||
-- ③ 新增「收款结算单」菜单
|
||||
INSERT INTO `blade_menu`
|
||||
(`id`,`parent_id`,`code`,`name`,`alias`,`path`,`source`,`sort`,`category`,`action`,`is_open`,`component`,`remark`,`is_deleted`)
|
||||
SELECT
|
||||
2090000000000002100,
|
||||
parent.`parent_id`,
|
||||
'receipt_settlement',
|
||||
'收款结算单',
|
||||
'receipt_settlement',
|
||||
'/settlement/receipt-settlement',
|
||||
IFNULL(parent.`source`, 'iconfont icon-caidanguanli'),
|
||||
IFNULL(parent.`sort`, 4) + 1,
|
||||
1, 0, 1, NULL, '', 0
|
||||
FROM `blade_menu` parent
|
||||
WHERE parent.`code` = 'payment_settlement'
|
||||
AND parent.`is_deleted` = 0
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM `blade_menu` x WHERE x.`code` = 'receipt_settlement' AND x.`is_deleted` = 0
|
||||
)
|
||||
LIMIT 1;
|
||||
|
||||
INSERT INTO `blade_menu`
|
||||
(`id`,`parent_id`,`code`,`name`,`alias`,`path`,`source`,`sort`,`category`,`action`,`is_open`,`component`,`remark`,`is_deleted`)
|
||||
SELECT 2090000000000002101, p.id, 'receipt_settlement_view', '查看', 'receipt_settlement_view', '', '', 1, 2, 0, 1, NULL, '', 0
|
||||
FROM `blade_menu` p WHERE p.code = 'receipt_settlement' AND p.is_deleted = 0
|
||||
AND NOT EXISTS (SELECT 1 FROM `blade_menu` x WHERE x.code = 'receipt_settlement_view' AND x.is_deleted = 0)
|
||||
LIMIT 1;
|
||||
INSERT INTO `blade_menu`
|
||||
(`id`,`parent_id`,`code`,`name`,`alias`,`path`,`source`,`sort`,`category`,`action`,`is_open`,`component`,`remark`,`is_deleted`)
|
||||
SELECT 2090000000000002102, p.id, 'receipt_settlement_add', '新增', 'receipt_settlement_add', '', '', 2, 2, 0, 1, NULL, '', 0
|
||||
FROM `blade_menu` p WHERE p.code = 'receipt_settlement' AND p.is_deleted = 0
|
||||
AND NOT EXISTS (SELECT 1 FROM `blade_menu` x WHERE x.code = 'receipt_settlement_add' AND x.is_deleted = 0)
|
||||
LIMIT 1;
|
||||
INSERT INTO `blade_menu`
|
||||
(`id`,`parent_id`,`code`,`name`,`alias`,`path`,`source`,`sort`,`category`,`action`,`is_open`,`component`,`remark`,`is_deleted`)
|
||||
SELECT 2090000000000002103, p.id, 'receipt_settlement_edit', '编辑', 'receipt_settlement_edit', '', '', 3, 2, 0, 1, NULL, '', 0
|
||||
FROM `blade_menu` p WHERE p.code = 'receipt_settlement' AND p.is_deleted = 0
|
||||
AND NOT EXISTS (SELECT 1 FROM `blade_menu` x WHERE x.code = 'receipt_settlement_edit' AND x.is_deleted = 0)
|
||||
LIMIT 1;
|
||||
INSERT INTO `blade_menu`
|
||||
(`id`,`parent_id`,`code`,`name`,`alias`,`path`,`source`,`sort`,`category`,`action`,`is_open`,`component`,`remark`,`is_deleted`)
|
||||
SELECT 2090000000000002104, p.id, 'receipt_settlement_delete', '删除', 'receipt_settlement_delete', '', '', 4, 2, 0, 1, NULL, '', 0
|
||||
FROM `blade_menu` p WHERE p.code = 'receipt_settlement' AND p.is_deleted = 0
|
||||
AND NOT EXISTS (SELECT 1 FROM `blade_menu` x WHERE x.code = 'receipt_settlement_delete' AND x.is_deleted = 0)
|
||||
LIMIT 1;
|
||||
INSERT INTO `blade_menu`
|
||||
(`id`,`parent_id`,`code`,`name`,`alias`,`path`,`source`,`sort`,`category`,`action`,`is_open`,`component`,`remark`,`is_deleted`)
|
||||
SELECT 2090000000000002105, p.id, 'receipt_settlement_submit', '提交审批', 'receipt_settlement_submit', '', '', 5, 2, 0, 1, NULL, '', 0
|
||||
FROM `blade_menu` p WHERE p.code = 'receipt_settlement' AND p.is_deleted = 0
|
||||
AND NOT EXISTS (SELECT 1 FROM `blade_menu` x WHERE x.code = 'receipt_settlement_submit' AND x.is_deleted = 0)
|
||||
LIMIT 1;
|
||||
INSERT INTO `blade_menu`
|
||||
(`id`,`parent_id`,`code`,`name`,`alias`,`path`,`source`,`sort`,`category`,`action`,`is_open`,`component`,`remark`,`is_deleted`)
|
||||
SELECT 2090000000000002106, p.id, 'receipt_settlement_approve', '审批', 'receipt_settlement_approve', '', '', 6, 2, 0, 1, NULL, '', 0
|
||||
FROM `blade_menu` p WHERE p.code = 'receipt_settlement' AND p.is_deleted = 0
|
||||
AND NOT EXISTS (SELECT 1 FROM `blade_menu` x WHERE x.code = 'receipt_settlement_approve' AND x.is_deleted = 0)
|
||||
LIMIT 1;
|
||||
INSERT INTO `blade_menu`
|
||||
(`id`,`parent_id`,`code`,`name`,`alias`,`path`,`source`,`sort`,`category`,`action`,`is_open`,`component`,`remark`,`is_deleted`)
|
||||
SELECT 2090000000000002107, p.id, 'receipt_settlement_sync', '同步金蝶', 'receipt_settlement_sync', '', '', 7, 2, 0, 1, NULL, '', 0
|
||||
FROM `blade_menu` p WHERE p.code = 'receipt_settlement' AND p.is_deleted = 0
|
||||
AND NOT EXISTS (SELECT 1 FROM `blade_menu` x WHERE x.code = 'receipt_settlement_sync' AND x.is_deleted = 0)
|
||||
LIMIT 1;
|
||||
INSERT INTO `blade_menu`
|
||||
(`id`,`parent_id`,`code`,`name`,`alias`,`path`,`source`,`sort`,`category`,`action`,`is_open`,`component`,`remark`,`is_deleted`)
|
||||
SELECT 2090000000000002108, p.id, 'receipt_settlement_print', '打印', 'receipt_settlement_print', '', '', 8, 2, 0, 1, NULL, '', 0
|
||||
FROM `blade_menu` p WHERE p.code = 'receipt_settlement' AND p.is_deleted = 0
|
||||
AND NOT EXISTS (SELECT 1 FROM `blade_menu` x WHERE x.code = 'receipt_settlement_print' AND x.is_deleted = 0)
|
||||
LIMIT 1;
|
||||
INSERT INTO `blade_menu`
|
||||
(`id`,`parent_id`,`code`,`name`,`alias`,`path`,`source`,`sort`,`category`,`action`,`is_open`,`component`,`remark`,`is_deleted`)
|
||||
SELECT 2090000000000002109, p.id, 'receipt_settlement_export', '导出', 'receipt_settlement_export', '', '', 9, 2, 0, 1, NULL, '', 0
|
||||
FROM `blade_menu` p WHERE p.code = 'receipt_settlement' AND p.is_deleted = 0
|
||||
AND NOT EXISTS (SELECT 1 FROM `blade_menu` x WHERE x.code = 'receipt_settlement_export' AND x.is_deleted = 0)
|
||||
LIMIT 1;
|
||||
INSERT INTO `blade_menu`
|
||||
(`id`,`parent_id`,`code`,`name`,`alias`,`path`,`source`,`sort`,`category`,`action`,`is_open`,`component`,`remark`,`is_deleted`)
|
||||
SELECT 2090000000000002110, p.id, 'receipt_settlement_void', '作废', 'receipt_settlement_void', '', '', 10, 2, 0, 1, NULL, '', 0
|
||||
FROM `blade_menu` p WHERE p.code = 'receipt_settlement' AND p.is_deleted = 0
|
||||
AND NOT EXISTS (SELECT 1 FROM `blade_menu` x WHERE x.code = 'receipt_settlement_void' AND x.is_deleted = 0)
|
||||
LIMIT 1;
|
||||
INSERT INTO `blade_menu`
|
||||
(`id`,`parent_id`,`code`,`name`,`alias`,`path`,`source`,`sort`,`category`,`action`,`is_open`,`component`,`remark`,`is_deleted`)
|
||||
SELECT 2090000000000002111, p.id, 'receipt_settlement_adjust', '明细调整', 'receipt_settlement_adjust', '', '', 11, 2, 0, 1, NULL, '', 0
|
||||
FROM `blade_menu` p WHERE p.code = 'receipt_settlement' AND p.is_deleted = 0
|
||||
AND NOT EXISTS (SELECT 1 FROM `blade_menu` x WHERE x.code = 'receipt_settlement_adjust' AND x.is_deleted = 0)
|
||||
LIMIT 1;
|
||||
|
||||
-- ④ 角色授权:持有付款结算单的角色同步收款结算单(含按钮)
|
||||
INSERT INTO `blade_role_menu` (`id`, `menu_id`, `role_id`)
|
||||
SELECT
|
||||
2091200000000000000 + CAST(rm.`role_id` AS UNSIGNED) % 100000,
|
||||
receipt.`id`,
|
||||
rm.`role_id`
|
||||
FROM `blade_role_menu` rm
|
||||
JOIN `blade_menu` payment ON payment.`id` = rm.`menu_id`
|
||||
AND payment.`code` = 'payment_settlement'
|
||||
AND payment.`is_deleted` = 0
|
||||
JOIN `blade_menu` receipt ON receipt.`code` = 'receipt_settlement'
|
||||
AND receipt.`is_deleted` = 0
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `blade_role_menu` x
|
||||
WHERE x.`menu_id` = receipt.`id` AND x.`role_id` = rm.`role_id`
|
||||
);
|
||||
|
||||
INSERT INTO `blade_role_menu` (`id`, `menu_id`, `role_id`)
|
||||
SELECT
|
||||
2091300000000000000
|
||||
+ (CAST(rm.`role_id` AS UNSIGNED) % 100000) * 20
|
||||
+ (CAST(receipt_btn.`id` AS UNSIGNED) % 20),
|
||||
receipt_btn.`id`,
|
||||
rm.`role_id`
|
||||
FROM `blade_role_menu` rm
|
||||
JOIN `blade_menu` payment_btn ON payment_btn.`id` = rm.`menu_id`
|
||||
AND payment_btn.`code` LIKE 'payment_settlement_%'
|
||||
AND payment_btn.`is_deleted` = 0
|
||||
JOIN `blade_menu` receipt_btn
|
||||
ON receipt_btn.`code` = REPLACE(payment_btn.`code`, 'payment_settlement_', 'receipt_settlement_')
|
||||
AND receipt_btn.`is_deleted` = 0
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `blade_role_menu` x
|
||||
WHERE x.`menu_id` = receipt_btn.`id` AND x.`role_id` = rm.`role_id`
|
||||
);
|
||||
|
||||
-- ⑤ 残留旧正式结算菜单隐藏
|
||||
UPDATE `blade_menu`
|
||||
SET `is_deleted` = 1
|
||||
WHERE `code` = 'formal_settlement'
|
||||
AND `category` = 1;
|
||||
@@ -0,0 +1,23 @@
|
||||
-- 结算单项目预付核销明细
|
||||
CREATE TABLE IF NOT EXISTS `blade_settlement_project_advance_write_off` (
|
||||
`id` bigint NOT NULL COMMENT '主键',
|
||||
`tenant_id` varchar(12) NOT NULL DEFAULT '000000' COMMENT '租户ID',
|
||||
`settlement_type` varchar(20) NOT NULL COMMENT '结算单类型 pre/formal',
|
||||
`settlement_id` bigint NOT NULL COMMENT '预结算/正式结算单ID',
|
||||
`payment_application_id` bigint NOT NULL COMMENT '项目预付付款申请ID',
|
||||
`payment_no` varchar(64) DEFAULT NULL COMMENT '预付单号',
|
||||
`project_advance_amount` decimal(18,2) DEFAULT 0.00 COMMENT '项目预付金额',
|
||||
`write_off_amount` decimal(18,2) NOT NULL DEFAULT 0.00 COMMENT '本次核销金额',
|
||||
`kingdee_bill_no` varchar(100) DEFAULT NULL COMMENT '金蝶预付单号',
|
||||
`create_user` bigint DEFAULT NULL COMMENT '创建人',
|
||||
`create_dept` bigint DEFAULT NULL COMMENT '创建部门',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_user` bigint DEFAULT NULL COMMENT '更新人',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`status` int DEFAULT 1 COMMENT '业务状态',
|
||||
`is_deleted` int DEFAULT 0 COMMENT '是否已删除',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_spa_write_off_settlement` (`settlement_type`,`settlement_id`),
|
||||
KEY `idx_spa_write_off_payment` (`payment_application_id`),
|
||||
KEY `idx_spa_write_off_create_time` (`create_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='结算单项目预付核销';
|
||||
@@ -0,0 +1,6 @@
|
||||
-- 用户部门关联表索引:加速人员列表按组织树过滤
|
||||
-- 部署时在业务库执行本脚本
|
||||
|
||||
ALTER TABLE `blade_user_dept`
|
||||
ADD INDEX `idx_blade_user_dept_user` (`user_id`, `is_deleted`, `status`) USING BTREE,
|
||||
ADD INDEX `idx_blade_user_dept_dept` (`dept_id`, `is_deleted`, `status`) USING BTREE;
|
||||
@@ -0,0 +1,18 @@
|
||||
-- 用户表:新增 OA 登录名,支持用户管理后台维护
|
||||
-- 排序规则 utf8mb4_general_ci
|
||||
|
||||
ALTER TABLE `blade_user`
|
||||
ADD COLUMN `oa_login_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'OA登录名' AFTER `is_oa`;
|
||||
|
||||
-- 从用户部门关联表回填已有 OA 登录账号
|
||||
UPDATE `blade_user` bu
|
||||
INNER JOIN (
|
||||
SELECT `user_id`, MAX(`oa_login_id`) AS `oa_login_id`
|
||||
FROM `blade_user_dept`
|
||||
WHERE `is_deleted` = 0
|
||||
AND `oa_login_id` IS NOT NULL
|
||||
AND `oa_login_id` <> ''
|
||||
GROUP BY `user_id`
|
||||
) bud ON bud.`user_id` = bu.`id`
|
||||
SET bu.`oa_login_id` = bud.`oa_login_id`
|
||||
WHERE bu.`oa_login_id` IS NULL OR bu.`oa_login_id` = '';
|
||||
@@ -0,0 +1,61 @@
|
||||
-- ----------------------------
|
||||
-- 调度端运单列表按组织过滤:dept_id 缺失的存量运单订正回它所属的组织
|
||||
-- 写业务数据。执行前必须先建备份表(第 0 节),执行后必须跑第 2 节校验。可重复执行。
|
||||
-- ----------------------------
|
||||
--
|
||||
-- 为什么要订正:
|
||||
-- 调度端(小程序管理端)运单列表的可见范围是「本组织」,超管看全租户。
|
||||
-- dept_id 为 NULL 或 -1 的运单不属于任何组织,普通用户再也看不到它们。
|
||||
-- 本机库实测 42 张:34 张的 dept_id = -1、8 张为 NULL,全部是 2026-10-15 / 10-16
|
||||
-- 由 admin 在 1123598813738675201 下建的(-1 是客户端把「未选组织」当 -1 传上来的哨兵值,
|
||||
-- 服务端写入前的兜底只判空、拦不住负数)。
|
||||
--
|
||||
-- 处置口径:取该运单的 create_dept(创建人所属组织)作为它的组织。
|
||||
-- 42 张的 create_dept 都是 1123598813738675201,与它们的业务归属一致;
|
||||
-- 按 create_dept 取而不是写死这个 id,其它环境执行时同样成立。
|
||||
-- dept_name 取组织表当前的名字:新建运单写的就是这个名字,不跟随存量行里的历史短名
|
||||
-- (「桂物物流集团」这类短名是历史写法,本次只补缺失值,不复位已存在的值)。
|
||||
-- 只动 dept_id 为空或非正数的行,且要求 create_dept 为正数:重复执行不再改动任何行。
|
||||
-- update_time 不在 SET 里,保留原值。
|
||||
-- ----------------------------
|
||||
-- 0. 备份(必须在订正之前执行,仅首次需要)
|
||||
-- ----------------------------
|
||||
-- CREATE TABLE blade_waybill_dept_bak AS
|
||||
-- SELECT id, waybill_no, dept_id, dept_name, create_dept, update_time
|
||||
-- FROM blade_waybill
|
||||
-- WHERE is_deleted = 0 AND (dept_id IS NULL OR dept_id <= 0);
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
-- ----------------------------
|
||||
-- 1. 订正组织
|
||||
-- ----------------------------
|
||||
UPDATE `blade_waybill`
|
||||
SET `dept_id` = `create_dept`,
|
||||
`dept_name` = (SELECT `dept_name` FROM `blade_dept` WHERE `id` = `blade_waybill`.`create_dept` LIMIT 1)
|
||||
WHERE `is_deleted` = 0
|
||||
AND (`dept_id` IS NULL OR `dept_id` <= 0)
|
||||
AND `create_dept` IS NOT NULL
|
||||
AND `create_dept` > 0;
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- ----------------------------
|
||||
-- 2. 校验(执行后必看,两个都必须返回 0)
|
||||
-- ----------------------------
|
||||
-- -- 仍不属于任何组织的可见运单
|
||||
-- SELECT COUNT(*) FROM blade_waybill
|
||||
-- WHERE is_deleted = 0 AND (dept_id IS NULL OR dept_id <= 0) AND create_dept > 0;
|
||||
--
|
||||
-- -- 本次订正过的行,组织 ID 与组织名都必须跟组织表一致
|
||||
-- SELECT COUNT(*) FROM blade_waybill w
|
||||
-- JOIN blade_waybill_dept_bak b ON b.id = w.id
|
||||
-- JOIN blade_dept d ON d.id = w.dept_id
|
||||
-- WHERE w.dept_id <> w.create_dept OR w.dept_name <> d.dept_name;
|
||||
|
||||
-- ----------------------------
|
||||
-- 3. 回退(订正后发现问题时执行)
|
||||
-- ----------------------------
|
||||
-- UPDATE blade_waybill w
|
||||
-- JOIN blade_waybill_dept_bak b ON b.id = w.id
|
||||
-- SET w.dept_id = b.dept_id, w.dept_name = b.dept_name;
|
||||
@@ -5487,7 +5487,9 @@ CREATE TABLE `blade_user_dept` (
|
||||
`oa_id` varchar(64) DEFAULT NULL COMMENT 'OA人员ID',
|
||||
`oa_login_id` varchar(128) DEFAULT NULL COMMENT 'OA登录账号',
|
||||
`sync_time` datetime DEFAULT NULL COMMENT '同步时间',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_blade_user_dept_user` (`user_id`, `is_deleted`, `status`) USING BTREE,
|
||||
INDEX `idx_blade_user_dept_dept` (`dept_id`, `is_deleted`, `status`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户部门表';
|
||||
|
||||
-- ----------------------------
|
||||
|
||||
Reference in New Issue
Block a user