Files
oneos-backend/sql/execute-all-updates.sql
kkfluous 2f38a703f9 refactor(energy): 简化事件驱动系统(7个→3个)
- 删除旧事件:BillApprovedEvent, BillCreatedEvent, DeductionCompletedEvent, DetailAuditedEvent, DetailCreatedEvent, RecordMatchedEvent
- 新增事件:BillAuditPassedEvent, DetailAuditPassedEvent
- 保留事件:RecordImportedEvent
- 更新监听器:AccountEventListener, BillEventListener, DetailEventListener
- 清理代码中的旧事件引用和注释

优化原则:前端简单,后端健壮
事件流程:导入→匹配→生成明细→审核→扣款→生成账单→结算
2026-03-16 12:53:14 +08:00

210 lines
9.1 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- ==================== 数据库更新脚本汇总 ====================
-- 执行日期2026-03-12
-- 说明:包含 parking、vehiclemodel、customer、vehicleregistration 模块的所有更新
--
-- 执行顺序:
-- 1. 车型参数表字段补全asset 库)
-- 2. 车辆类型字典数据system 库)
-- 3. 车辆上牌记录表创建asset 库)
-- 4. 菜单和权限配置system 库)
-- ==================== 使用说明 ====================
-- 各个模块是分库的,请按照以下顺序执行:
--
-- 1. 连接到 asset 库,执行第一部分和第三部分
-- 2. 连接到 system 库(或主库),执行第二部分和第四部分
-- ==================== 第一部分车型参数表字段补全asset 库)====================
USE `asset`;
-- 检查字段是否已存在
SELECT 'Checking asset_vehicle_model table...' AS status;
-- 添加车型字段
ALTER TABLE `asset_vehicle_model`
ADD COLUMN IF NOT EXISTS `vehicle_type` int DEFAULT NULL COMMENT '车辆类型(字典)' AFTER `model`,
ADD COLUMN IF NOT EXISTS `plate_color` varchar(50) DEFAULT NULL COMMENT '车牌颜色(如:绿牌、蓝牌、黄牌)' AFTER `notice_model`,
ADD COLUMN IF NOT EXISTS `battery_type` varchar(100) DEFAULT NULL COMMENT '电池类型(如:磷酸铁锂、三元锂)' AFTER `battery_factory`,
ADD COLUMN IF NOT EXISTS `hydrogen_factory` varchar(200) DEFAULT NULL COMMENT '供氢系统厂家' AFTER `refrigerator_factory`;
-- 添加索引(如果不存在)
ALTER TABLE `asset_vehicle_model`
ADD INDEX IF NOT EXISTS `idx_vehicle_type` (`vehicle_type`) COMMENT '车辆类型查询',
ADD INDEX IF NOT EXISTS `idx_brand_model` (`brand`, `model`) COMMENT '品牌型号组合查询';
SELECT 'Vehicle model fields updated successfully!' AS status;
-- ==================== 第二部分车辆类型字典数据system 库或主库)====================
-- 注意:如果 system_dict_type 和 system_dict_data 在主库,请切换到主库
-- USE `ruoyi-vue-pro`; -- 或者你的主库名称
-- 检查字典类型是否已存在
SELECT 'Checking vehicle type dictionary...' AS status;
-- 创建车辆类型字典类型(如果不存在)
INSERT INTO `system_dict_type` (
`name`,
`type`,
`status`,
`remark`,
`creator`,
`create_time`,
`updater`,
`update_time`,
`deleted`,
`deleted_time`
)
SELECT
'车辆类型',
'asset_vehicle_type',
0,
'车辆资产管理-车辆类型分类',
'admin',
NOW(),
'admin',
NOW(),
0,
NULL
FROM DUAL
WHERE NOT EXISTS (
SELECT 1 FROM `system_dict_type` WHERE `type` = 'asset_vehicle_type'
);
-- 创建车辆类型字典数据(如果不存在)
INSERT INTO `system_dict_data` (
`sort`,
`label`,
`value`,
`dict_type`,
`status`,
`color_type`,
`css_class`,
`remark`,
`creator`,
`create_time`,
`updater`,
`update_time`,
`deleted`
)
SELECT * FROM (
SELECT 1 AS sort, '小型轿车' AS label, '1' AS value, 'asset_vehicle_type' AS dict_type, 0 AS status, 'primary' AS color_type, '' AS css_class, '5座以下的小型乘用车' AS remark, 'admin' AS creator, NOW() AS create_time, 'admin' AS updater, NOW() AS update_time, 0 AS deleted UNION ALL
SELECT 2, 'SUV', '2', 'asset_vehicle_type', 0, 'success', '', '运动型多用途车', 'admin', NOW(), 'admin', NOW(), 0 UNION ALL
SELECT 3, '厢式货车', '3', 'asset_vehicle_type', 0, 'info', '', '封闭式货运车辆', 'admin', NOW(), 'admin', NOW(), 0 UNION ALL
SELECT 4, '18吨双飞翼货车', '4', 'asset_vehicle_type', 0, 'warning', '', '大型货运车辆', 'admin', NOW(), 'admin', NOW(), 0 UNION ALL
SELECT 5, '轻型货车', '5', 'asset_vehicle_type', 0, 'default', '', '4.5吨以下货车', 'admin', NOW(), 'admin', NOW(), 0 UNION ALL
SELECT 6, '中型货车', '6', 'asset_vehicle_type', 0, 'default', '', '4.5-12吨货车', 'admin', NOW(), 'admin', NOW(), 0 UNION ALL
SELECT 7, '重型货车', '7', 'asset_vehicle_type', 0, 'danger', '', '12吨以上货车', 'admin', NOW(), 'admin', NOW(), 0 UNION ALL
SELECT 8, '客车', '8', 'asset_vehicle_type', 0, 'primary', '', '大中型客运车辆', 'admin', NOW(), 'admin', NOW(), 0 UNION ALL
SELECT 9, '专用车', '9', 'asset_vehicle_type', 0, 'info', '', '特种用途车辆', 'admin', NOW(), 'admin', NOW(), 0
) AS tmp
WHERE NOT EXISTS (
SELECT 1 FROM `system_dict_data` WHERE `dict_type` = 'asset_vehicle_type' AND `value` = tmp.value
);
SELECT 'Vehicle type dictionary created successfully!' AS status;
-- ==================== 第三部分车辆上牌记录表创建asset 库)====================
USE `asset`;
-- 创建车辆上牌记录表
CREATE TABLE IF NOT EXISTS `asset_vehicle_registration` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`vehicle_id` BIGINT NOT NULL COMMENT '车辆ID',
`vin` VARCHAR(50) NOT NULL COMMENT '车辆识别代号VIN',
`plate_no` VARCHAR(20) NOT NULL COMMENT '车牌号',
`plate_date` DATE NOT NULL COMMENT '上牌日期',
`operator` VARCHAR(50) COMMENT '操作员',
-- OCR 识别信息
`recognized_brand` VARCHAR(100) COMMENT 'OCR识别的品牌型号',
`recognized_model` VARCHAR(100) COMMENT 'OCR识别的车型',
`vehicle_type` VARCHAR(50) COMMENT '车辆类型',
`owner` VARCHAR(100) COMMENT '所有人',
`use_character` VARCHAR(50) COMMENT '使用性质',
`engine_no` VARCHAR(50) COMMENT '发动机号码',
`register_date` DATE COMMENT '注册日期',
`issue_date` DATE COMMENT '发证日期',
`inspection_record` VARCHAR(50) COMMENT '检验记录',
`scrap_date` DATE COMMENT '强制报废期止',
`curb_weight` VARCHAR(20) COMMENT '整备质量kg',
`total_mass` VARCHAR(20) COMMENT '总质量kg',
`approved_passenger_capacity` VARCHAR(20) COMMENT '核定载人数',
-- 匹配信息
`vehicle_model_id` BIGINT COMMENT '匹配的车型ID',
`match_confidence` DECIMAL(5,2) COMMENT '匹配置信度0-100',
`match_method` VARCHAR(20) COMMENT '匹配方式exact/fuzzy/manual',
-- 照片信息
`photo_url` VARCHAR(500) COMMENT '行驶证照片URL',
`photo_size` INT COMMENT '照片大小(字节)',
-- OCR 信息
`ocr_provider` VARCHAR(50) COMMENT 'OCR厂商',
`ocr_cost_time` INT COMMENT 'OCR识别耗时毫秒',
`ocr_raw_result` TEXT COMMENT 'OCR原始结果JSON',
-- 状态信息
`status` TINYINT NOT NULL DEFAULT 0 COMMENT '状态0-待确认 1-已确认 2-已作废)',
`remark` VARCHAR(500) COMMENT '备注',
-- 审计字段
`creator` VARCHAR(64) DEFAULT '' COMMENT '创建者',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` VARCHAR(64) DEFAULT '' COMMENT '更新者',
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` BIGINT NOT NULL DEFAULT 0 COMMENT '租户编号',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_vehicle_plate` (`vehicle_id`, `plate_no`, `deleted`),
INDEX `idx_vin` (`vin`),
INDEX `idx_plate_no` (`plate_no`),
INDEX `idx_plate_date` (`plate_date`),
INDEX `idx_status` (`status`),
INDEX `idx_create_time` (`create_time`),
INDEX `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='车辆上牌记录表';
SELECT 'Vehicle registration table created successfully!' AS status;
-- ==================== 第四部分菜单和权限配置system 库或主库)====================
-- 注意:需要先找到"车辆管理"或"资产管理"的父菜单ID
-- 如果没有父菜单,请先创建或手动指定 parent_id
-- 查询可能的父菜单
SELECT id, name, parent_id, path
FROM system_menu
WHERE name LIKE '%车辆%' OR name LIKE '%资产%' OR path LIKE '%vehicle%' OR path LIKE '%asset%'
ORDER BY id;
-- 手动执行:将下面的 @parent_id 替换为实际的父菜单ID
-- SET @parent_id = YOUR_PARENT_MENU_ID;
-- 插入上牌管理菜单(请手动替换 @parent_id
-- INSERT INTO system_menu(
-- name, permission, type, sort, parent_id,
-- path, icon, component, status, component_name
-- )
-- VALUES (
-- '上牌管理', '', 2, 3, @parent_id,
-- 'registration', 'form', 'asset/vehicle/registration/index', 0, 'VehicleRegistration'
-- );
-- 获取刚插入的菜单ID
-- SET @menuId = LAST_INSERT_ID();
-- 上牌管理按钮权限
-- INSERT INTO system_menu(name, permission, type, sort, parent_id, path, icon, component, status)
-- VALUES
-- ('上牌记录查询', 'asset:vehicle-registration:query', 3, 1, @menuId, '', '', '', 0),
-- ('上牌记录创建', 'asset:vehicle-registration:create', 3, 2, @menuId, '', '', '', 0),
-- ('上牌记录更新', 'asset:vehicle-registration:update', 3, 3, @menuId, '', '', '', 0),
-- ('上牌记录删除', 'asset:vehicle-registration:delete', 3, 4, @menuId, '', '', '', 0),
-- ('行驶证识别', 'asset:vehicle-registration:recognize', 3, 5, @menuId, '', '', '', 0);
SELECT '========================================' AS '';
SELECT 'All updates completed!' AS status;
SELECT '========================================' AS '';
SELECT '注意菜单部分需要手动执行请先查询父菜单ID' AS note;