fundplatform/doc/sql/fund_exp_init.sql
zhangjf bd5f8ab468 fix: 数据库脚本与实体类一致性修复 + fund-admin Nginx子路径部署支持
1. 数据库脚本修复:
   - fund_sys_init.sql: sys_config表添加group_code/group_name/sort_order/remark字段
   - fund_proj_init.sql: 添加requirement表(需求工单)
   - fund_exp_init.sql: 添加fund_expense表缺失字段
   - 删除重复的doc/requirement.sql

2. fund-admin Nginx子路径部署支持:
   - 新增.env.development/.env.production环境配置
   - vite.config.ts支持VITE_BASE动态base路径
   - router使用import.meta.env.BASE_URL
   - API baseURL使用环境变量
   - deploy-frontend-nginx.sh支持/fadmin部署前缀

3. 架构文档更新:
   - 数据库设计文档新增4.4实体类与SQL脚本同步规范
   - 新增4.5自动化检查机制
2026-02-23 00:12:39 +08:00

115 lines
5.5 KiB
SQL

-- =============================================
-- 资金服务平台 - 支出管理数据库初始化脚本
-- Database: fund_exp
-- Version: 1.0
-- Created: 2026-02-22
-- =============================================
CREATE DATABASE IF NOT EXISTS fund_exp DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE fund_exp;
-- =============================================
-- 1. 支出类型表 (expense_type)
-- =============================================
CREATE TABLE IF NOT EXISTS expense_type (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '支出类型ID',
tenant_id BIGINT NOT NULL DEFAULT 0 COMMENT '租户ID',
type_code VARCHAR(64) COMMENT '支出类型编码',
type_name VARCHAR(128) NOT NULL COMMENT '支出类型名称',
parent_id BIGINT NOT NULL DEFAULT 0 COMMENT '父类型ID, 0表示一级类型',
type_level INT NOT NULL DEFAULT 1 COMMENT '类型层级',
sort_order INT DEFAULT 0 COMMENT '排序号',
description VARCHAR(500) COMMENT '类型描述',
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态: 0-禁用, 1-启用',
remark VARCHAR(500) COMMENT '备注',
created_by BIGINT COMMENT '创建人',
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_by BIGINT COMMENT '更新人',
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
deleted TINYINT NOT NULL DEFAULT 0 COMMENT '删除标记: 0-未删除, 1-已删除',
PRIMARY KEY (id),
UNIQUE KEY uk_tenant_code (tenant_id, type_code, deleted),
KEY idx_tenant_id (tenant_id),
KEY idx_parent_id (parent_id),
KEY idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='支出类型表';
-- =============================================
-- 2. 支出表 (fund_expense)
-- =============================================
CREATE TABLE IF NOT EXISTS fund_expense (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '支出ID',
tenant_id BIGINT NOT NULL DEFAULT 0 COMMENT '租户ID',
expense_no VARCHAR(64) NOT NULL COMMENT '支出单号',
title VARCHAR(200) COMMENT '支出标题',
amount DECIMAL(18,2) NOT NULL COMMENT '支出金额',
currency VARCHAR(16) DEFAULT 'CNY' COMMENT '币种',
expense_type BIGINT COMMENT '支出类型ID',
payee_name VARCHAR(128) COMMENT '收款单位',
payee_bank VARCHAR(128) COMMENT '收款银行',
payee_account VARCHAR(64) COMMENT '收款账号',
expense_date DATETIME COMMENT '支出日期',
purpose VARCHAR(500) COMMENT '用途说明',
request_id BIGINT COMMENT '关联用款申请ID',
project_id BIGINT COMMENT '所属项目ID',
customer_id BIGINT COMMENT '客户ID',
pay_status INT DEFAULT 0 COMMENT '支付状态: 0-待支付, 1-已支付, 2-支付失败',
pay_time DATETIME COMMENT '支付时间',
pay_channel VARCHAR(32) COMMENT '支付渠道',
pay_voucher VARCHAR(255) COMMENT '支付凭证',
approval_status INT DEFAULT 0 COMMENT '审批状态',
approver_id BIGINT COMMENT '审批人ID',
approval_time DATETIME COMMENT '审批时间',
approval_comment VARCHAR(500) COMMENT '审批意见',
attachments VARCHAR(1000) COMMENT '附件URL',
remark VARCHAR(500) COMMENT '备注',
created_by BIGINT COMMENT '创建人',
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_by BIGINT COMMENT '更新人',
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
deleted TINYINT NOT NULL DEFAULT 0 COMMENT '删除标记: 0-未删除, 1-已删除',
PRIMARY KEY (id),
UNIQUE KEY uk_tenant_no (tenant_id, expense_no, deleted),
KEY idx_tenant_id (tenant_id),
KEY idx_expense_type_id (expense_type),
KEY idx_project_id (project_id),
KEY idx_customer_id (customer_id),
KEY idx_request_id (request_id),
KEY idx_pay_status (pay_status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='支出表';
-- =============================================
-- 初始化支出类型数据(租户ID=1)
-- =============================================
-- 一级支出类型
INSERT INTO expense_type (id, tenant_id, type_code, type_name, parent_id, type_level, sort_order, status, created_by, created_time)
VALUES
(1, 1, 'LABOR', '人力成本', 0, 1, 1, 1, 1, NOW()),
(2, 1, 'OFFICE', '办公费用', 0, 1, 2, 1, 1, NOW()),
(3, 1, 'TRAVEL', '差旅费用', 0, 1, 3, 1, 1, NOW()),
(4, 1, 'PURCHASE', '采购费用', 0, 1, 4, 1, 1, NOW()),
(5, 1, 'OTHER', '其他费用', 0, 1, 5, 1, 1, NOW())
ON DUPLICATE KEY UPDATE type_code=type_code;
-- 二级支出类型
INSERT INTO expense_type (id, tenant_id, type_code, type_name, parent_id, type_level, sort_order, status, created_by, created_time)
VALUES
(11, 1, 'SALARY', '工资', 1, 2, 1, 1, 1, NOW()),
(12, 1, 'BONUS', '奖金', 1, 2, 2, 1, 1, NOW()),
(13, 1, 'SOCIAL_INSURANCE', '社保', 1, 2, 3, 1, 1, NOW()),
(21, 1, 'RENT', '房租', 2, 2, 1, 1, 1, NOW()),
(22, 1, 'UTILITIES', '水电费', 2, 2, 2, 1, 1, NOW()),
(23, 1, 'SUPPLIES', '办公用品', 2, 2, 3, 1, 1, NOW()),
(31, 1, 'TRANSPORT', '交通费', 3, 2, 1, 1, 1, NOW()),
(32, 1, 'ACCOMMODATION', '住宿费', 3, 2, 2, 1, 1, NOW()),
(33, 1, 'MEALS', '餐饮费', 3, 2, 3, 1, 1, NOW()),
(41, 1, 'EQUIPMENT', '设备采购', 4, 2, 1, 1, 1, NOW()),
(42, 1, 'SOFTWARE', '软件采购', 4, 2, 2, 1, 1, NOW()),
(43, 1, 'SERVICE', '服务采购', 4, 2, 3, 1, 1, NOW())
ON DUPLICATE KEY UPDATE type_code=type_code;
-- =============================================
-- 脚本执行完成
-- =============================================