2 changed files with 3 additions and 99 deletions
@ -1,96 +0,0 @@ |
|||||
-- ======================== |
|
||||
-- 数据库结构增强脚本(MySQL) |
|
||||
-- ======================== |
|
||||
|
|
||||
-- 1. 会计期间有效性校验 |
|
||||
ALTER TABLE financial_accounting_periods |
|
||||
ADD COLUMN status ENUM('active', 'closed', 'locked') DEFAULT 'active' COMMENT '期间状态', |
|
||||
ADD COLUMN validation_date DATE COMMENT '最后验证日期'; |
|
||||
|
|
||||
-- 2. 预算表(支持多版本) |
|
||||
CREATE TABLE financial_budgets ( |
|
||||
budget_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '预算ID', |
|
||||
company_id INT NOT NULL COMMENT '公司ID', |
|
||||
period_id INT NOT NULL COMMENT '会计期间ID', |
|
||||
account_id INT NOT NULL COMMENT '科目ID', |
|
||||
budget_version INT DEFAULT 1 COMMENT '版本号', |
|
||||
planned_amount DECIMAL(18,2) COMMENT '计划金额', |
|
||||
approved_date DATE COMMENT '审批日期', |
|
||||
FOREIGN KEY (company_id) REFERENCES financial_companies(company_id), |
|
||||
FOREIGN KEY (period_id) REFERENCES financial_accounting_periods(period_id), |
|
||||
FOREIGN KEY (account_id) REFERENCES financial_chart_of_accounts(account_id) |
|
||||
) COMMENT='财务预算表'; |
|
||||
|
|
||||
-- 3. 科目层级管理增强 |
|
||||
ALTER TABLE financial_chart_of_accounts |
|
||||
ADD COLUMN path VARCHAR(255) COMMENT '层级路径(如0/1001/)', |
|
||||
ADD COLUMN level INT COMMENT '层级深度'; |
|
||||
|
|
||||
-- 4. 数据血缘追踪表 |
|
||||
CREATE TABLE financial_data_trace ( |
|
||||
trace_id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '追踪记录ID', |
|
||||
source_table VARCHAR(50) NOT NULL COMMENT '源表名', |
|
||||
source_id BIGINT NOT NULL COMMENT '源记录ID', |
|
||||
target_table VARCHAR(50) NOT NULL COMMENT '目标表名', |
|
||||
target_id BIGINT NOT NULL COMMENT '目标记录ID', |
|
||||
operation_type ENUM('insert','update','delete') NOT NULL COMMENT '操作类型', |
|
||||
operator VARCHAR(50) COMMENT '操作人', |
|
||||
operation_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间' |
|
||||
) COMMENT='数据操作追踪表'; |
|
||||
|
|
||||
-- 5. 会计期间重叠检查触发器 |
|
||||
DELIMITER // |
|
||||
CREATE TRIGGER trg_check_period_overlap |
|
||||
BEFORE INSERT ON financial_accounting_periods |
|
||||
FOR EACH ROW |
|
||||
BEGIN |
|
||||
IF EXISTS ( |
|
||||
SELECT 1 FROM financial_accounting_periods |
|
||||
WHERE company_id = NEW.company_id |
|
||||
AND period_id != NEW.period_id |
|
||||
AND ( |
|
||||
(NEW.start_date BETWEEN start_date AND end_date) |
|
||||
OR (NEW.end_date BETWEEN start_date AND end_date) |
|
||||
OR (start_date BETWEEN NEW.start_date AND NEW.end_date) |
|
||||
) |
|
||||
) THEN |
|
||||
SIGNAL SQLSTATE '45000' |
|
||||
SET MESSAGE_TEXT = '会计期间时间重叠'; |
|
||||
END IF; |
|
||||
END// |
|
||||
DELIMITER ; |
|
||||
|
|
||||
-- 6. 初始化会计期间状态 |
|
||||
UPDATE financial_accounting_periods |
|
||||
SET status = CASE |
|
||||
WHEN end_date >= CURDATE() THEN 'active' |
|
||||
WHEN end_date < CURDATE() AND start_date > CURDATE() THEN 'locked' |
|
||||
ELSE 'closed' |
|
||||
END; |
|
||||
|
|
||||
-- 7. 创建科目层级维护存储过程 |
|
||||
DELIMITER // |
|
||||
CREATE PROCEDURE sp_refresh_account_hierarchy() |
|
||||
BEGIN |
|
||||
UPDATE financial_chart_of_accounts c |
|
||||
LEFT JOIN ( |
|
||||
SELECT |
|
||||
a.account_id, |
|
||||
CONCAT( |
|
||||
IFNULL((SELECT CONCAT(path, parent_id, '/') FROM financial_chart_of_accounts |
|
||||
WHERE account_id = a.parent_id), '0/'), |
|
||||
a.account_id, '/' |
|
||||
) AS new_path, |
|
||||
(LENGTH(IFNULL((SELECT path FROM financial_chart_of_accounts |
|
||||
WHERE account_id = a.parent_id), '0/')) - LENGTH(REPLACE(IFNULL( |
|
||||
(SELECT path FROM financial_chart_of_accounts |
|
||||
WHERE account_id = a.parent_id), '0/'), '/', ''))) + 1 |
|
||||
AS new_level |
|
||||
FROM financial_chart_of_accounts a |
|
||||
) AS sub ON c.account_id = sub.account_id |
|
||||
SET |
|
||||
c.path = sub.new_path, |
|
||||
c.level = sub.new_level |
|
||||
WHERE c.is_active = TRUE; |
|
||||
END// |
|
||||
DELIMITER ; |
|
||||
Loading…
Reference in new issue