- 删除旧事件:BillApprovedEvent, BillCreatedEvent, DeductionCompletedEvent, DetailAuditedEvent, DetailCreatedEvent, RecordMatchedEvent - 新增事件:BillAuditPassedEvent, DetailAuditPassedEvent - 保留事件:RecordImportedEvent - 更新监听器:AccountEventListener, BillEventListener, DetailEventListener - 清理代码中的旧事件引用和注释 优化原则:前端简单,后端健壮 事件流程:导入→匹配→生成明细→审核→扣款→生成账单→结算
210 lines
9.1 KiB
SQL
210 lines
9.1 KiB
SQL
-- ==================== 数据库更新脚本汇总 ====================
|
||
-- 执行日期: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;
|