-- VPP专属业务表 DDL -- 来源: 虚拟电厂平台数据库设计文档 V1.0 CREATE TABLE `vpp_customer` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `account_no` VARCHAR(32) NOT NULL COMMENT '电力户号,全局唯一', `customer_name` VARCHAR(200) NOT NULL COMMENT '客户名称', `customer_type` TINYINT NOT NULL COMMENT '1高压 2低压商用 3居民充电桩 4自有资产', `power_company` VARCHAR(50) NOT NULL COMMENT '供电公司简称', `contract_capacity` DECIMAL(12,4) NOT NULL COMMENT '用电容量 kVA/kW', `credit_status` TINYINT NULL COMMENT '1正常 2关注 3不良', `lifecycle_status` TINYINT NOT NULL COMMENT '1待准入 2已准入 3已签约 4履约中 5待续约 6已续约 7已解约', `dr_notify_minutes` INT NULL COMMENT '需求响应提前通知分钟数,默认30', `dr_up_capacity_kw` DECIMAL(12,4) NULL COMMENT '登记上调能力 kW', `dr_down_capacity_kw` DECIMAL(12,4) NULL COMMENT '登记下调能力 kW', `province` VARCHAR(50) NULL COMMENT '省', `city` VARCHAR(50) NULL COMMENT '市', `district` VARCHAR(50) NULL COMMENT '区', `address` VARCHAR(500) NULL COMMENT '详细地址', `business_license_url` VARCHAR(500) NULL COMMENT '营业执照附件', `remark` VARCHAR(500) NULL COMMENT '备注', `tenant_id` INT NULL COMMENT '租户ID', `create_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `update_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', `created_by` VARCHAR(30) NULL COMMENT '创建人', `updated_by` VARCHAR(30) NULL COMMENT '更新人', `delete_flag` INT(1) NOT NULL DEFAULT 0 COMMENT '删除标识 0未删除 1已删除', `deleted_at` DATETIME(3) NULL COMMENT '软删除时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_customer_account_no` (account_no), KEY `idx_customer_name` (customer_name), KEY `idx_customer_lifecycle` (lifecycle_status, deleted_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='客户档案'; CREATE TABLE `vpp_customer_access` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `apply_no` VARCHAR(32) NOT NULL COMMENT '申请编号', `account_no` VARCHAR(32) NOT NULL COMMENT '电力户号', `customer_name` VARCHAR(200) NOT NULL COMMENT '客户名称', `customer_type` TINYINT NOT NULL COMMENT '客户类型', `power_company` VARCHAR(50) NOT NULL COMMENT '供电公司', `contract_capacity` DECIMAL(12,4) NOT NULL COMMENT '用电容量', `business_license_url` VARCHAR(500) NULL COMMENT '营业执照', `credit_status` TINYINT NULL COMMENT '信用状况', `access_status` TINYINT NOT NULL COMMENT '0待审核 1通过 2驳回', `audit_opinion` VARCHAR(500) NULL COMMENT '审核意见', `audit_at` DATETIME(3) NULL COMMENT '审核时间', `customer_id` BIGINT NULL COMMENT '通过后关联客户ID', `apply_at` DATETIME(3) NOT NULL COMMENT '申请时间', `tenant_id` INT NULL COMMENT '租户ID', `create_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `update_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', `created_by` VARCHAR(30) NULL COMMENT '创建人', `updated_by` VARCHAR(30) NULL COMMENT '更新人', `delete_flag` INT(1) NOT NULL DEFAULT 0 COMMENT '删除标识 0未删除 1已删除', `deleted_at` DATETIME(3) NULL COMMENT '软删除时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_access_apply_no` (apply_no), KEY `idx_access_status` (access_status, apply_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='准入申请'; CREATE TABLE `vpp_customer_contact` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `customer_id` BIGINT NOT NULL COMMENT '客户ID', `contact_name` VARCHAR(100) NOT NULL COMMENT '联系人姓名', `contact_phone` VARCHAR(20) NOT NULL COMMENT '联系电话', `contact_email` VARCHAR(100) NULL COMMENT '邮箱', `is_primary` TINYINT NOT NULL COMMENT '是否主联系人 0否 1是', `position` VARCHAR(50) NULL COMMENT '职务', `tenant_id` INT NULL COMMENT '租户ID', `create_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `update_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', `created_by` VARCHAR(30) NULL COMMENT '创建人', `updated_by` VARCHAR(30) NULL COMMENT '更新人', `delete_flag` INT(1) NOT NULL DEFAULT 0 COMMENT '删除标识 0未删除 1已删除', `deleted_at` DATETIME(3) NULL COMMENT '软删除时间', PRIMARY KEY (`id`), KEY `idx_contact_customer` (customer_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='客户联系人'; CREATE TABLE `vpp_contract` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `contract_no` VARCHAR(64) NOT NULL COMMENT '合同编号', `customer_id` BIGINT NOT NULL COMMENT '客户ID', `template_id` BIGINT NULL COMMENT '模板ID', `contract_type` TINYINT NOT NULL COMMENT '1购售电 2需求响应合作 3聚合代理 4服务代理 5居民充电桩 6自有资产', `contract_name` VARCHAR(200) NOT NULL COMMENT '合同名称', `contract_status` TINYINT NOT NULL COMMENT '0草稿 1审核中 2已生效 3已到期 4已终止', `sign_date` DATE NULL COMMENT '签订日期', `effective_date` DATE NULL COMMENT '生效日期', `expire_date` DATE NULL COMMENT '到期日期', `file_url` VARCHAR(500) NULL COMMENT '合同文件URL', `share_ratio` DECIMAL(5,2) NULL COMMENT '分成比例%', `price_json` JSON NULL COMMENT '电价条款JSON', `account_info_json` JSON NULL COMMENT '分成账户信息', `remark` VARCHAR(500) NULL COMMENT '备注', `tenant_id` INT NULL COMMENT '租户ID', `create_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `update_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', `created_by` VARCHAR(30) NULL COMMENT '创建人', `updated_by` VARCHAR(30) NULL COMMENT '更新人', `delete_flag` INT(1) NOT NULL DEFAULT 0 COMMENT '删除标识 0未删除 1已删除', `deleted_at` DATETIME(3) NULL COMMENT '软删除时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_contract_no` (contract_no), KEY `idx_contract_customer` (customer_id), KEY `idx_contract_status` (contract_status, sign_date) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='合同'; CREATE TABLE `vpp_contract_template` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `template_code` VARCHAR(32) NOT NULL COMMENT '模板编码', `template_name` VARCHAR(200) NOT NULL COMMENT '模板名称', `contract_type` TINYINT NOT NULL COMMENT '合同类型', `version` VARCHAR(20) NOT NULL COMMENT '版本号', `file_url` VARCHAR(500) NOT NULL COMMENT '模板文件URL', `variables_json` JSON NULL COMMENT '占位符变量定义', `is_enabled` TINYINT NOT NULL COMMENT '是否启用', `tenant_id` INT NULL COMMENT '租户ID', `create_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `update_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', `created_by` VARCHAR(30) NULL COMMENT '创建人', `updated_by` VARCHAR(30) NULL COMMENT '更新人', `delete_flag` INT(1) NOT NULL DEFAULT 0 COMMENT '删除标识 0未删除 1已删除', `deleted_at` DATETIME(3) NULL COMMENT '软删除时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_template_code` (template_code) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='合同模板'; CREATE TABLE `vpp_contract_audit_log` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `contract_id` BIGINT NOT NULL COMMENT '合同ID', `action` TINYINT NOT NULL COMMENT '1提交 2通过 3驳回 4归档', `opinion` VARCHAR(500) NULL COMMENT '意见', `tenant_id` INT NULL COMMENT '租户ID', `create_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `created_by` VARCHAR(30) NULL COMMENT '创建人', PRIMARY KEY (`id`), KEY `idx_contract_audit_contract` (contract_id, create_time) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='合同审核流水'; CREATE TABLE `vpp_resource_point` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `resource_code` VARCHAR(64) NOT NULL COMMENT '资源编号', `resource_name` VARCHAR(200) NOT NULL COMMENT '资源名称', `customer_id` BIGINT NOT NULL COMMENT '所属客户ID', `resource_type` VARCHAR(16) NOT NULL COMMENT 'PV/ESS/EVCS/IND_LOAD/COM_BLDG', `capacity_kw` DECIMAL(12,4) NOT NULL COMMENT '装机容量 kW', `adjustable_kw` DECIMAL(12,4) NULL COMMENT '可调容量 kW', `province` VARCHAR(50) NULL COMMENT '省', `city` VARCHAR(50) NULL COMMENT '市', `district` VARCHAR(50) NULL COMMENT '区/区域', `address` VARCHAR(500) NULL COMMENT '地址', `longitude` DECIMAL(10,6) NULL COMMENT '经度', `latitude` DECIMAL(10,6) NULL COMMENT '纬度', `owner_name` VARCHAR(200) NULL COMMENT '业主名称', `contact_name` VARCHAR(100) NULL COMMENT '联系人', `contact_phone` VARCHAR(20) NULL COMMENT '联系电话', `run_status` TINYINT NOT NULL COMMENT '0离线 1在线 2故障 3维护', `response_priority` TINYINT NULL COMMENT '响应优先级1-10', `un_resource_id` VARCHAR(64) NULL COMMENT '运管平台分路资源ID', `remark` VARCHAR(500) NULL COMMENT '备注', `tenant_id` INT NULL COMMENT '租户ID', `create_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `update_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', `created_by` VARCHAR(30) NULL COMMENT '创建人', `updated_by` VARCHAR(30) NULL COMMENT '更新人', `delete_flag` INT(1) NOT NULL DEFAULT 0 COMMENT '删除标识 0未删除 1已删除', `deleted_at` DATETIME(3) NULL COMMENT '软删除时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_resource_code` (resource_code), KEY `idx_resource_customer` (customer_id), KEY `idx_resource_type_status` (resource_type, run_status, deleted_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='资源点'; CREATE TABLE `vpp_resource_point_config` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `resource_id` BIGINT NOT NULL COMMENT '资源点ID', `collect_interval_sec` INT NOT NULL COMMENT '采集频率秒 60/300/900', `power_upper_limit` DECIMAL(12,4) NULL COMMENT '功率上限告警', `power_lower_limit` DECIMAL(12,4) NULL COMMENT '功率下限告警', `soc_upper_limit` DECIMAL(5,2) NULL COMMENT 'SOC上限%', `soc_lower_limit` DECIMAL(5,2) NULL COMMENT 'SOC下限%', `offline_timeout_sec` INT NULL COMMENT '离线超时秒', `alarm_rule_json` JSON NULL COMMENT '扩展告警规则', `tenant_id` INT NULL COMMENT '租户ID', `create_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `update_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', `created_by` VARCHAR(30) NULL COMMENT '创建人', `updated_by` VARCHAR(30) NULL COMMENT '更新人', `delete_flag` INT(1) NOT NULL DEFAULT 0 COMMENT '删除标识 0未删除 1已删除', `deleted_at` DATETIME(3) NULL COMMENT '软删除时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_config_resource` (resource_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='资源点运行参数'; CREATE TABLE `vpp_device` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `device_code` VARCHAR(64) NOT NULL COMMENT '设备编号', `device_name` VARCHAR(200) NOT NULL COMMENT '设备名称', `resource_id` BIGINT NOT NULL COMMENT '所属资源点ID', `device_type` VARCHAR(32) NOT NULL COMMENT 'INVERTER/PCS/EVCS/METER/Gateway等', `manufacturer` VARCHAR(100) NULL COMMENT '厂商', `model` VARCHAR(100) NULL COMMENT '型号', `rated_power_kw` DECIMAL(12,4) NULL COMMENT '额定功率', `comm_status` TINYINT NOT NULL COMMENT '0离线 1在线', `run_status` TINYINT NOT NULL COMMENT '0停机 1运行 2故障', `firmware_version` VARCHAR(50) NULL COMMENT '固件版本', `last_online_at` DATETIME(3) NULL COMMENT '最后在线时间', `gateway_id` VARCHAR(64) NULL COMMENT 'IoT网关标识', `remark` VARCHAR(500) NULL COMMENT '备注', `tenant_id` INT NULL COMMENT '租户ID', `create_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `update_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', `created_by` VARCHAR(30) NULL COMMENT '创建人', `updated_by` VARCHAR(30) NULL COMMENT '更新人', `delete_flag` INT(1) NOT NULL DEFAULT 0 COMMENT '删除标识 0未删除 1已删除', `deleted_at` DATETIME(3) NULL COMMENT '软删除时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_device_code` (device_code), KEY `idx_device_resource` (resource_id), KEY `idx_device_comm` (comm_status, run_status) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备'; CREATE TABLE `vpp_device_control_log` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `device_id` BIGINT NOT NULL COMMENT '设备ID', `control_type` VARCHAR(32) NOT NULL COMMENT 'START/STOP/CONFIG/OTA', `control_params` JSON NULL COMMENT '控制参数', `control_result` TINYINT NOT NULL COMMENT '0失败 1成功 2执行中', `result_message` VARCHAR(500) NULL COMMENT '结果说明', `tenant_id` INT NULL COMMENT '租户ID', `create_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `created_by` VARCHAR(30) NULL COMMENT '创建人', PRIMARY KEY (`id`), KEY `idx_control_device` (device_id, create_time) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备远程控制日志'; CREATE TABLE `vpp_energy_reading_monthly` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `customer_id` BIGINT NOT NULL COMMENT '客户ID', `resource_id` BIGINT NULL COMMENT '资源点ID,可空表示户号级', `settle_year` SMALLINT NOT NULL COMMENT '结算年', `settle_month` TINYINT NOT NULL COMMENT '结算月', `total_energy_kwh` DECIMAL(18,4) NOT NULL COMMENT '总用电量 kWh', `peak_energy_kwh` DECIMAL(18,4) NULL COMMENT '峰电量', `flat_energy_kwh` DECIMAL(18,4) NULL COMMENT '平电量', `valley_energy_kwh` DECIMAL(18,4) NULL COMMENT '谷电量', `sharp_energy_kwh` DECIMAL(18,4) NULL COMMENT '尖电量', `gen_energy_kwh` DECIMAL(18,4) NULL COMMENT '发电量 kWh', `calc_status` TINYINT NOT NULL COMMENT '0待核算 1已核算 2异常', `calc_at` DATETIME(3) NULL COMMENT '核算时间', `tenant_id` INT NULL COMMENT '租户ID', `create_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `update_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', `created_by` VARCHAR(30) NULL COMMENT '创建人', `updated_by` VARCHAR(30) NULL COMMENT '更新人', `delete_flag` INT(1) NOT NULL DEFAULT 0 COMMENT '删除标识 0未删除 1已删除', `deleted_at` DATETIME(3) NULL COMMENT '软删除时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_energy_monthly` (customer_id, resource_id, settle_year, settle_month), KEY `idx_energy_period` (settle_year, settle_month) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='月度电量核算'; CREATE TABLE `vpp_energy_summary_daily` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `summary_date` DATE NOT NULL COMMENT '汇总日期', `resource_id` BIGINT NULL COMMENT '资源点ID,NULL表示全站', `resource_type` VARCHAR(16) NULL COMMENT '资源类型', `gen_energy_kwh` DECIMAL(18,4) NULL COMMENT '发电量', `use_energy_kwh` DECIMAL(18,4) NULL COMMENT '用电量', `green_ratio` DECIMAL(5,2) NULL COMMENT '绿电消纳比例%', `max_power_kw` DECIMAL(12,4) NULL COMMENT '日最大有功功率', `avg_power_kw` DECIMAL(12,4) NULL COMMENT '日平均有功功率', `tenant_id` INT NULL COMMENT '租户ID', `create_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `update_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', `created_by` VARCHAR(30) NULL COMMENT '创建人', `updated_by` VARCHAR(30) NULL COMMENT '更新人', `delete_flag` INT(1) NOT NULL DEFAULT 0 COMMENT '删除标识 0未删除 1已删除', `deleted_at` DATETIME(3) NULL COMMENT '软删除时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_summary_daily` (summary_date, resource_id), KEY `idx_summary_date` (summary_date) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='日度能源汇总'; CREATE TABLE `vpp_settlement_bill` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `bill_no` VARCHAR(64) NOT NULL COMMENT '账单编号', `customer_id` BIGINT NOT NULL COMMENT '客户ID', `settle_year` SMALLINT NOT NULL COMMENT '结算年', `settle_month` TINYINT NOT NULL COMMENT '结算月', `total_energy_kwh` DECIMAL(18,4) NOT NULL COMMENT '总用电量', `total_amount` DECIMAL(18,4) NOT NULL COMMENT '应付金额', `paid_amount` DECIMAL(18,4) NOT NULL COMMENT '已付金额,默认0', `payment_status` TINYINT NOT NULL COMMENT '0未缴 1部分 2已缴 3逾期', `due_date` DATE NULL COMMENT '缴费截止日期', `bill_file_url` VARCHAR(500) NULL COMMENT '账单PDF', `generated_at` DATETIME(3) NULL COMMENT '生成时间', `tenant_id` INT NULL COMMENT '租户ID', `create_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `update_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', `created_by` VARCHAR(30) NULL COMMENT '创建人', `updated_by` VARCHAR(30) NULL COMMENT '更新人', `delete_flag` INT(1) NOT NULL DEFAULT 0 COMMENT '删除标识 0未删除 1已删除', `deleted_at` DATETIME(3) NULL COMMENT '软删除时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_bill_no` (bill_no), KEY `idx_bill_customer` (customer_id, settle_year, settle_month), KEY `idx_bill_payment` (payment_status) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='电费账单'; CREATE TABLE `vpp_settlement_bill_detail` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `bill_id` BIGINT NOT NULL COMMENT '账单ID', `time_period` TINYINT NOT NULL COMMENT '1尖 2峰 3平 4谷', `energy_kwh` DECIMAL(18,4) NOT NULL COMMENT '时段电量', `price` DECIMAL(10,4) NOT NULL COMMENT '时段电价', `amount` DECIMAL(18,4) NOT NULL COMMENT '时段金额', `tenant_id` INT NULL COMMENT '租户ID', PRIMARY KEY (`id`), KEY `idx_bill_detail_bill` (bill_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='账单分时明细'; CREATE TABLE `vpp_payment_record` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `bill_id` BIGINT NOT NULL COMMENT '账单ID', `payment_amount` DECIMAL(18,4) NOT NULL COMMENT '缴费金额', `payment_method` TINYINT NOT NULL COMMENT '1线下转账 2电费抵扣 3其他', `payment_date` DATE NOT NULL COMMENT '缴费日期', `voucher_url` VARCHAR(500) NULL COMMENT '缴费凭证', `remark` VARCHAR(500) NULL COMMENT '对账备注', `tenant_id` INT NULL COMMENT '租户ID', `create_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `created_by` VARCHAR(30) NULL COMMENT '创建人', PRIMARY KEY (`id`), KEY `idx_payment_bill` (bill_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='缴费记录'; CREATE TABLE `vpp_report_task` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `task_no` VARCHAR(64) NOT NULL COMMENT '任务编号', `task_name` VARCHAR(200) NOT NULL COMMENT '任务名称', `report_org` TINYINT NOT NULL COMMENT '1交易中心 2能监局 3经信委 4国网上海', `report_cycle` TINYINT NOT NULL COMMENT '1月报 2年报 3临时', `report_type` VARCHAR(64) NOT NULL COMMENT '报表类型编码', `deadline` DATETIME(3) NOT NULL COMMENT '截止日期', `task_status` TINYINT NOT NULL COMMENT '0待填报 1待审核 2报送中 3已完成 4已逾期', `assignee_id` BIGINT NULL COMMENT '填报人', `remind_days` INT NULL COMMENT '提前提醒天数', `site_ids` JSON NULL COMMENT '关联站点ID列表', `tenant_id` INT NULL COMMENT '租户ID', `create_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `update_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', `created_by` VARCHAR(30) NULL COMMENT '创建人', `updated_by` VARCHAR(30) NULL COMMENT '更新人', `delete_flag` INT(1) NOT NULL DEFAULT 0 COMMENT '删除标识 0未删除 1已删除', `deleted_at` DATETIME(3) NULL COMMENT '软删除时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_report_task_no` (task_no), KEY `idx_report_task_status` (task_status, deadline) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='报送任务'; CREATE TABLE `vpp_report_record` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `task_id` BIGINT NOT NULL COMMENT '任务ID', `record_no` VARCHAR(64) NOT NULL COMMENT '报送记录编号', `report_period` VARCHAR(32) NOT NULL COMMENT '报送周期标识 如2026-05', `submit_mode` TINYINT NOT NULL COMMENT '1接口推送 2手动上传', `record_status` TINYINT NOT NULL COMMENT '0草稿 1待审核 2报送中 3成功 4失败', `report_file_url` VARCHAR(500) NULL COMMENT '报送文件', `receipt_file_url` VARCHAR(500) NULL COMMENT '官方回执', `retry_count` TINYINT NOT NULL COMMENT '重试次数,默认0', `submitted_at` DATETIME(3) NULL COMMENT '报送时间', `archived_at` DATETIME(3) NULL COMMENT '归档时间', `tenant_id` INT NULL COMMENT '租户ID', `create_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `update_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', `created_by` VARCHAR(30) NULL COMMENT '创建人', `updated_by` VARCHAR(30) NULL COMMENT '更新人', `delete_flag` INT(1) NOT NULL DEFAULT 0 COMMENT '删除标识 0未删除 1已删除', `deleted_at` DATETIME(3) NULL COMMENT '软删除时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_report_record_no` (record_no), KEY `idx_report_record_task` (task_id), KEY `idx_report_record_period` (report_period) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='报送记录'; CREATE TABLE `vpp_report_data` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `record_id` BIGINT NOT NULL COMMENT '报送记录ID', `form_data` JSON NOT NULL COMMENT '填报表单JSON', `validation_errors` JSON NULL COMMENT '校验异常项', `is_draft` TINYINT NOT NULL COMMENT '是否草稿', `tenant_id` INT NULL COMMENT '租户ID', `create_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `update_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', `created_by` VARCHAR(30) NULL COMMENT '创建人', `updated_by` VARCHAR(30) NULL COMMENT '更新人', `delete_flag` INT(1) NOT NULL DEFAULT 0 COMMENT '删除标识 0未删除 1已删除', `deleted_at` DATETIME(3) NULL COMMENT '软删除时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_report_data_record` (record_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='报送填报数据'; CREATE TABLE `vpp_report_audit_log` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `record_id` BIGINT NOT NULL COMMENT '报送记录ID', `audit_level` TINYINT NOT NULL COMMENT '1填报 2复核 3审批', `action` TINYINT NOT NULL COMMENT '1提交 2通过 3驳回', `opinion` VARCHAR(500) NULL COMMENT '意见', `operator_ip` VARCHAR(64) NULL COMMENT '操作IP', `tenant_id` INT NULL COMMENT '租户ID', `create_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `created_by` VARCHAR(30) NULL COMMENT '创建人', PRIMARY KEY (`id`), KEY `idx_report_audit_record` (record_id, create_time) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='报送审核流水'; CREATE TABLE `vpp_dr_event` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `event_id` VARCHAR(64) NOT NULL COMMENT '运管平台事件ID', `event_name` VARCHAR(200) NULL COMMENT '事件名称', `response_type` TINYINT NOT NULL COMMENT '1日前 2日内 3秒级', `event_type` TINYINT NULL COMMENT '1削峰 2填谷', `start_time` DATETIME(3) NOT NULL COMMENT '响应开始', `end_time` DATETIME(3) NOT NULL COMMENT '响应结束', `target_capacity_kw` DECIMAL(12,4) NOT NULL COMMENT '目标容量 kW', `cleared_capacity_kw` DECIMAL(12,4) NULL COMMENT '出清容量 kW', `subsidy_price` DECIMAL(10,4) NULL COMMENT '补贴标准 元/kWh', `event_status` TINYINT NOT NULL COMMENT '0待参与 1已申报 2执行中 3已结束 4已取消', `raw_payload` JSON NULL COMMENT '原始邀约报文', `tenant_id` INT NULL COMMENT '租户ID', `create_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `update_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', `created_by` VARCHAR(30) NULL COMMENT '创建人', `updated_by` VARCHAR(30) NULL COMMENT '更新人', `delete_flag` INT(1) NOT NULL DEFAULT 0 COMMENT '删除标识 0未删除 1已删除', `deleted_at` DATETIME(3) NULL COMMENT '软删除时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_dr_event_id` (event_id), KEY `idx_dr_event_time` (start_time, event_status) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='需求响应事件'; CREATE TABLE `vpp_dr_participation` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `event_id` BIGINT NOT NULL COMMENT '事件ID', `customer_id` BIGINT NOT NULL COMMENT '客户ID', `resource_id` BIGINT NULL COMMENT '资源点ID', `participate_status` TINYINT NOT NULL COMMENT '0待确认 1参与 2拒绝', `declared_capacity_kw` DECIMAL(12,4) NULL COMMENT '申报容量', `cleared_capacity_kw` DECIMAL(12,4) NULL COMMENT '出清容量', `declared_at` DATETIME(3) NULL COMMENT '申报时间', `tenant_id` INT NULL COMMENT '租户ID', `create_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `update_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', `created_by` VARCHAR(30) NULL COMMENT '创建人', `updated_by` VARCHAR(30) NULL COMMENT '更新人', `delete_flag` INT(1) NOT NULL DEFAULT 0 COMMENT '删除标识 0未删除 1已删除', `deleted_at` DATETIME(3) NULL COMMENT '软删除时间', PRIMARY KEY (`id`), KEY `idx_dr_part_event` (event_id), UNIQUE KEY `uk_dr_part` (event_id, customer_id, resource_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='事件参与记录'; CREATE TABLE `vpp_dr_invitation` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `invitation_no` VARCHAR(32) NOT NULL COMMENT '邀约编号', `dr_event_id` BIGINT NOT NULL COMMENT '需求响应事件ID', `customer_id` BIGINT NOT NULL COMMENT '客户ID', `execute_start_date` DATE NOT NULL COMMENT '执行开始日期', `execute_end_date` DATE NOT NULL COMMENT '执行结束日期', `reply_deadline` DATETIME(3) NOT NULL COMMENT '邀约回复截止日期', `issue_time` DATETIME(3) NOT NULL COMMENT '下发时间', `transaction_type` TINYINT NULL COMMENT '交易类型 1削峰 2填谷', `response_type` TINYINT NOT NULL COMMENT '1日前 2日内 3秒级', `demand_capacity_kw` DECIMAL(12,4) NOT NULL COMMENT '需求容量 kW', `declared_capacity_kw` DECIMAL(12,4) NULL COMMENT '已申报容量 kW', `reply_status` TINYINT NOT NULL COMMENT '0待回复 1参与 2拒绝 3超时', `response_status` TINYINT NOT NULL COMMENT '0待响应 1已申报 2执行中 3已结束 4已取消', `sms_notify_status` TINYINT NOT NULL DEFAULT 0 COMMENT '0未发送 1已发送 2发送失败', `sms_notify_at` DATETIME(3) NULL COMMENT '短信通知时间', `sms_contact_id` BIGINT NULL COMMENT '通知联系人ID', `participation_id` BIGINT NULL COMMENT '关联参与记录ID', `remark` VARCHAR(500) NULL COMMENT '备注', `tenant_id` INT NULL COMMENT '租户ID', `create_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `update_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', `created_by` VARCHAR(30) NULL COMMENT '创建人', `updated_by` VARCHAR(30) NULL COMMENT '更新人', `delete_flag` INT(1) NOT NULL DEFAULT 0 COMMENT '删除标识 0未删除 1已删除', `deleted_at` DATETIME(3) NULL COMMENT '软删除时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_dr_invitation_no` (invitation_no), UNIQUE KEY `uk_dr_invitation_event_customer` (dr_event_id, customer_id), KEY `idx_dr_invitation_customer` (customer_id, reply_status), KEY `idx_dr_invitation_issue` (issue_time, response_type) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='需求响应企业邀约'; CREATE TABLE `vpp_dr_strategy` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `strategy_code` VARCHAR(64) NOT NULL COMMENT '策略编码', `strategy_name` VARCHAR(200) NOT NULL COMMENT '策略名称', `response_type` TINYINT NOT NULL COMMENT '适用响应类型', `adjust_step_kw` DECIMAL(12,4) NULL COMMENT '调节步长 kW', `execute_mode` TINYINT NOT NULL COMMENT '1并行 2串行', `strategy_config` JSON NULL COMMENT '策略扩展配置', `is_default` TINYINT NOT NULL COMMENT '是否默认策略', `is_enabled` TINYINT NOT NULL COMMENT '是否启用', `tenant_id` INT NULL COMMENT '租户ID', `create_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `update_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', `created_by` VARCHAR(30) NULL COMMENT '创建人', `updated_by` VARCHAR(30) NULL COMMENT '更新人', `delete_flag` INT(1) NOT NULL DEFAULT 0 COMMENT '删除标识 0未删除 1已删除', `deleted_at` DATETIME(3) NULL COMMENT '软删除时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_dr_strategy_code` (strategy_code) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='响应策略'; CREATE TABLE `vpp_dr_strategy_resource` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `strategy_id` BIGINT NOT NULL COMMENT '策略ID', `resource_id` BIGINT NOT NULL COMMENT '资源点ID', `priority` TINYINT NOT NULL COMMENT '优先级序号', `max_adjust_kw` DECIMAL(12,4) NULL COMMENT '最大调节量', `tenant_id` INT NULL COMMENT '租户ID', PRIMARY KEY (`id`), UNIQUE KEY `uk_strategy_resource` (strategy_id, resource_id), KEY `idx_strategy_resource_priority` (strategy_id, priority) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='策略-资源关联'; CREATE TABLE `vpp_dr_execution` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `event_id` BIGINT NOT NULL COMMENT '事件ID', `resource_id` BIGINT NOT NULL COMMENT '资源点ID', `target_kw` DECIMAL(12,4) NOT NULL COMMENT '目标调节量', `actual_kw` DECIMAL(12,4) NULL COMMENT '实际调节量', `execute_status` TINYINT NOT NULL COMMENT '0待执行 1执行中 2完成 3异常', `started_at` DATETIME(3) NULL COMMENT '开始时间', `finished_at` DATETIME(3) NULL COMMENT '结束时间', `tenant_id` INT NULL COMMENT '租户ID', `create_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `update_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', `created_by` VARCHAR(30) NULL COMMENT '创建人', `updated_by` VARCHAR(30) NULL COMMENT '更新人', `delete_flag` INT(1) NOT NULL DEFAULT 0 COMMENT '删除标识 0未删除 1已删除', `deleted_at` DATETIME(3) NULL COMMENT '软删除时间', PRIMARY KEY (`id`), KEY `idx_dr_exec_event` (event_id), KEY `idx_dr_exec_resource` (resource_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='响应执行明细'; CREATE TABLE `vpp_dr_evaluation` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `event_id` BIGINT NOT NULL COMMENT '事件ID', `actual_capacity_kw` DECIMAL(12,4) NULL COMMENT '实际响应容量', `response_duration_min` INT NULL COMMENT '响应时长分钟', `subsidy_amount` DECIMAL(18,4) NULL COMMENT '补贴金额', `qualified_rate` DECIMAL(5,2) NULL COMMENT '执行合格率%', `report_file_url` VARCHAR(500) NULL COMMENT '评估报告URL', `evaluated_at` DATETIME(3) NULL COMMENT '评估时间', `tenant_id` INT NULL COMMENT '租户ID', `create_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `update_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', `created_by` VARCHAR(30) NULL COMMENT '创建人', `updated_by` VARCHAR(30) NULL COMMENT '更新人', `delete_flag` INT(1) NOT NULL DEFAULT 0 COMMENT '删除标识 0未删除 1已删除', `deleted_at` DATETIME(3) NULL COMMENT '软删除时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_dr_eval_event` (event_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='响应效果评估'; CREATE TABLE `vpp_registration` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `dn_id` VARCHAR(64) NOT NULL COMMENT '虚拟电厂运营商ID', `registration_id` VARCHAR(128) NOT NULL COMMENT '运管平台registrationID', `reg_status` TINYINT NOT NULL COMMENT '0未注册 1已注册 2需重新注册', `registered_at` DATETIME(3) NULL COMMENT '注册时间', `meta_report_id` VARCHAR(128) NULL COMMENT '元数据报告ID', `tenant_id` INT NULL COMMENT '租户ID', `create_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `update_time` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', `created_by` VARCHAR(30) NULL COMMENT '创建人', `updated_by` VARCHAR(30) NULL COMMENT '更新人', `delete_flag` INT(1) NOT NULL DEFAULT 0 COMMENT '删除标识 0未删除 1已删除', `deleted_at` DATETIME(3) NULL COMMENT '软删除时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_vpp_dn_id` (dn_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='运管平台注册信息'; CREATE TABLE `vpp_report_log` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `report_type` VARCHAR(64) NOT NULL COMMENT 'MomentData/IntervalData/RegisterReport等', `request_id` VARCHAR(64) NULL COMMENT '请求ID', `report_status` TINYINT NOT NULL COMMENT '0失败 1成功', `response_code` INT NULL COMMENT '响应码', `error_message` VARCHAR(500) NULL COMMENT '错误信息', `payload_size` INT NULL COMMENT '报文大小字节', `reported_at` DATETIME(3) NOT NULL COMMENT '上报时间', `tenant_id` INT NULL COMMENT '租户ID', PRIMARY KEY (`id`), KEY `idx_vpp_report_type_time` (report_type, reported_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='数据上报日志'; CREATE TABLE vpp_file_archive ( id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', file_name VARCHAR(255) NOT NULL COMMENT '原始文件名', file_url VARCHAR(500) NOT NULL COMMENT '存储路径', file_type VARCHAR(32) NOT NULL COMMENT '文件类型', file_size BIGINT NULL COMMENT '文件大小字节', biz_type VARCHAR(32) NOT NULL COMMENT '业务类型', biz_id BIGINT NOT NULL COMMENT '业务主键', remark VARCHAR(500) NULL COMMENT '备注', tenant_id INT NULL COMMENT '租户ID', create_time DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', update_time DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', created_by VARCHAR(30) NULL COMMENT '上传人', updated_by VARCHAR(30) NULL COMMENT '更新人', delete_flag INT(1) NOT NULL DEFAULT 0 COMMENT '删除标识 0未删除 1已删除', deleted_at DATETIME(3) NULL COMMENT '软删除时间', PRIMARY KEY (id), KEY idx_file_archive_biz (biz_type, biz_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='电子档案';