-- 财务管理模块建表脚本(固定资产/无形资产/凭证/科目账) -- 说明: -- 1) 总账科目继续复用已有表 account_subject,不重复创建 fin_account_subject。 -- 2) 金额字段统一 decimal(18,2)。 CREATE TABLE IF NOT EXISTS `fin_fixed_asset` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', `asset_code` varchar(64) NOT NULL COMMENT '资产编号', `asset_name` varchar(128) NOT NULL COMMENT '资产名称', `category` varchar(64) NOT NULL COMMENT '资产类别', `specification` varchar(255) DEFAULT NULL COMMENT '规格型号', `purchase_date` date NOT NULL COMMENT '购置日期', `original_value` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '资产原值', `useful_life` int NOT NULL DEFAULT '1' COMMENT '使用年限(年)', `residual_rate` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '残值率(%)', `accumulated_depreciation` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '累计折旧', `net_value` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '净值', `location` varchar(255) DEFAULT NULL COMMENT '存放地点', `department` varchar(128) DEFAULT NULL COMMENT '使用部门', `keeper` varchar(64) DEFAULT NULL COMMENT '保管人', `status` varchar(32) NOT NULL DEFAULT 'in_use' COMMENT '状态: in_use/idle/repair/scrapped', `remark` varchar(500) DEFAULT NULL COMMENT '备注', `create_user` varchar(64) DEFAULT NULL COMMENT '创建人', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_user` varchar(64) DEFAULT NULL COMMENT '修改人', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', `dept_id` bigint DEFAULT NULL COMMENT '部门ID', PRIMARY KEY (`id`), UNIQUE KEY `uk_fin_fixed_asset_code` (`asset_code`), KEY `idx_fin_fixed_asset_status` (`status`), KEY `idx_fin_fixed_asset_category` (`category`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='固定资产'; CREATE TABLE IF NOT EXISTS `fin_intangible_asset` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', `asset_code` varchar(64) NOT NULL COMMENT '资产编号', `asset_name` varchar(128) NOT NULL COMMENT '资产名称', `category` varchar(64) NOT NULL COMMENT '资产类别', `certificate_no` varchar(128) DEFAULT NULL COMMENT '证书编号', `acquisition_date` date NOT NULL COMMENT '取得日期', `original_value` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '资产原值', `amortization_period` int NOT NULL DEFAULT '1' COMMENT '摊销年限(年)', `residual_rate` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '残值率(%)', `accumulated_amortization` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '累计摊销', `net_value` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '净值', `validity_date` date DEFAULT NULL COMMENT '有效期至', `status` varchar(32) NOT NULL DEFAULT 'in_use' COMMENT '状态: in_use/expired/amortized', `description` varchar(1000) DEFAULT NULL COMMENT '资产描述', `remark` varchar(500) DEFAULT NULL COMMENT '备注', `create_user` varchar(64) DEFAULT NULL COMMENT '创建人', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_user` varchar(64) DEFAULT NULL COMMENT '修改人', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', `dept_id` bigint DEFAULT NULL COMMENT '部门ID', PRIMARY KEY (`id`), UNIQUE KEY `uk_fin_intangible_asset_code` (`asset_code`), KEY `idx_fin_intangible_asset_status` (`status`), KEY `idx_fin_intangible_asset_category` (`category`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='无形资产'; CREATE TABLE IF NOT EXISTS `fin_voucher` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', `voucher_no` varchar(64) NOT NULL COMMENT '凭证字号', `voucher_date` date NOT NULL COMMENT '凭证日期', `summary` varchar(500) DEFAULT NULL COMMENT '摘要', `debit` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '借方合计', `credit` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '贷方合计', `creator` varchar(64) DEFAULT NULL COMMENT '制单人', `status` varchar(32) NOT NULL DEFAULT 'unposted' COMMENT '状态: unposted/posted/cancelled', `attachment_count` int NOT NULL DEFAULT '0' COMMENT '附件张数', `remark` varchar(500) DEFAULT NULL COMMENT '备注', `create_user` varchar(64) DEFAULT NULL COMMENT '创建人', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_user` varchar(64) DEFAULT NULL COMMENT '修改人', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', `dept_id` bigint DEFAULT NULL COMMENT '部门ID', PRIMARY KEY (`id`), UNIQUE KEY `uk_fin_voucher_no` (`voucher_no`), KEY `idx_fin_voucher_date` (`voucher_date`), KEY `idx_fin_voucher_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='凭证主表'; CREATE TABLE IF NOT EXISTS `fin_voucher_entry` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', `voucher_id` bigint NOT NULL COMMENT '凭证ID', `row_no` int NOT NULL DEFAULT '1' COMMENT '行号', `subject_code` varchar(64) NOT NULL COMMENT '科目编码', `subject_name` varchar(128) DEFAULT NULL COMMENT '科目名称', `summary` varchar(500) DEFAULT NULL COMMENT '摘要', `debit` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '借方金额', `credit` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '贷方金额', `auxiliary_type` varchar(32) DEFAULT NULL COMMENT '辅助核算类型', `auxiliary_id` varchar(64) DEFAULT NULL COMMENT '辅助核算对象ID', `auxiliary_name` varchar(128) DEFAULT NULL COMMENT '辅助核算对象名称', `create_user` varchar(64) DEFAULT NULL COMMENT '创建人', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_user` varchar(64) DEFAULT NULL COMMENT '修改人', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', `dept_id` bigint DEFAULT NULL COMMENT '部门ID', PRIMARY KEY (`id`), KEY `idx_fin_voucher_entry_voucher` (`voucher_id`), KEY `idx_fin_voucher_entry_subject` (`subject_code`), KEY `idx_fin_voucher_entry_aux` (`auxiliary_type`, `auxiliary_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='凭证分录';