refactor(asset): 优化保养项目设计,使用折中方案
变更内容: 1. 删除 maintainItemId 字段(冗余,无实际作用) 2. 保留 maintainItem 字段(直接存储项目名称) 3. 新增接口:获取已使用的保养项目列表(去重) 4. 前端可使用该接口提供下拉提示,提升用户体验 5. 添加 maintainItem 字段的非空校验 设计思路: - 不引入保养项目字典表(避免过度设计) - 通过 DISTINCT 查询提供已使用项目列表 - 用户可以输入新项目,也可以从已有项目中选择 - 后续如需规范化,可平滑升级到字典表方案
This commit is contained in:
15
sql/update-2026-03-12-remove-maintain-item-id.sql
Normal file
15
sql/update-2026-03-12-remove-maintain-item-id.sql
Normal file
@@ -0,0 +1,15 @@
|
||||
-- 删除冗余的 maintain_item_id 字段
|
||||
-- 使用折中方案:直接存储保养项目名称,前端提供已使用项目的下拉提示
|
||||
|
||||
USE oneos_asset;
|
||||
|
||||
-- 删除 maintain_item_id 字段
|
||||
ALTER TABLE asset_vehicle_model_maintain_item
|
||||
DROP COLUMN maintain_item_id;
|
||||
|
||||
-- 为 maintain_item 字段添加非空约束
|
||||
ALTER TABLE asset_vehicle_model_maintain_item
|
||||
MODIFY COLUMN maintain_item VARCHAR(100) NOT NULL COMMENT '保养项目名称';
|
||||
|
||||
-- 添加索引,优化查询性能
|
||||
CREATE INDEX idx_maintain_item ON asset_vehicle_model_maintain_item(maintain_item);
|
||||
85
sql/update-2026-03-12-停车场和车型参数模块-fixed.sql
Normal file
85
sql/update-2026-03-12-停车场和车型参数模块-fixed.sql
Normal file
@@ -0,0 +1,85 @@
|
||||
-- =============================================
|
||||
-- 资产管理系统 - 停车场和车型参数模块
|
||||
-- 创建时间: 2026-03-12
|
||||
-- =============================================
|
||||
|
||||
-- 1. 创建停车场表(如果不存在)
|
||||
CREATE TABLE IF NOT EXISTS `asset_parking` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
`name` varchar(100) NOT NULL COMMENT '停车场名称',
|
||||
`address` varchar(255) DEFAULT NULL COMMENT '地址',
|
||||
`capacity` int DEFAULT 0 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`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='停车场表';
|
||||
|
||||
-- 2. 完善停车场表结构(添加新字段)
|
||||
ALTER TABLE `asset_parking`
|
||||
ADD COLUMN IF NOT EXISTS `principal` varchar(50) DEFAULT NULL COMMENT '公司负责人' AFTER `name`,
|
||||
ADD COLUMN IF NOT EXISTS `contact_name` varchar(50) DEFAULT NULL COMMENT '联系人' AFTER `principal`,
|
||||
ADD COLUMN IF NOT EXISTS `contact_phone` varchar(20) DEFAULT NULL COMMENT '联系电话' AFTER `contact_name`,
|
||||
ADD COLUMN IF NOT EXISTS `parked_amount` int DEFAULT 0 COMMENT '已停车辆数' AFTER `capacity`,
|
||||
ADD COLUMN IF NOT EXISTS `stock_area` int DEFAULT NULL COMMENT '库存区域(字典)' AFTER `address`,
|
||||
ADD COLUMN IF NOT EXISTS `unusual_action_city` int DEFAULT NULL COMMENT '异动城市(字典)' AFTER `stock_area`,
|
||||
ADD COLUMN IF NOT EXISTS `longitude` varchar(50) DEFAULT NULL COMMENT '经度' AFTER `address`,
|
||||
ADD COLUMN IF NOT EXISTS `latitude` varchar(50) DEFAULT NULL COMMENT '纬度' AFTER `longitude`,
|
||||
ADD COLUMN IF NOT EXISTS `remark` varchar(500) DEFAULT NULL COMMENT '备注' AFTER `latitude`;
|
||||
|
||||
-- 3. 创建车型参数表
|
||||
CREATE TABLE IF NOT EXISTS `asset_vehicle_model` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
`brand` int NOT NULL COMMENT '品牌(字典)',
|
||||
`model` int NOT NULL COMMENT '车型(字典)',
|
||||
`model_code` varchar(50) DEFAULT NULL COMMENT '车型编号',
|
||||
`model_name` varchar(100) NOT NULL COMMENT '车型名称',
|
||||
`notice_model` varchar(100) DEFAULT NULL COMMENT '车辆公告型号',
|
||||
`hydrogen_unit` int DEFAULT NULL COMMENT '仪表盘氢气单位(字典)',
|
||||
`hydrogen_capacity` int DEFAULT NULL COMMENT '氢瓶容量(L)',
|
||||
`electricity_mileage` int DEFAULT NULL COMMENT '电池公告可行驶里程(KM)',
|
||||
`reserve_electricity` decimal(10,2) DEFAULT NULL COMMENT '储电量(kwh)',
|
||||
`hydrogen_mileage` int DEFAULT NULL COMMENT '氢气公告可行驶里程(KM)',
|
||||
`fuel_type` int DEFAULT NULL COMMENT '燃料种类(字典)',
|
||||
`tire_size` varchar(50) DEFAULT NULL COMMENT '轮胎尺寸',
|
||||
`tire_number` int DEFAULT NULL COMMENT '轮胎数量',
|
||||
`truck_size` varchar(100) DEFAULT NULL COMMENT '车辆尺寸',
|
||||
`online_spread_enterprise` varchar(100) DEFAULT NULL COMMENT '电堆厂家',
|
||||
`battery_factory` varchar(100) DEFAULT NULL COMMENT '电池厂家',
|
||||
`refrigerator_factory` varchar(100) DEFAULT NULL 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`),
|
||||
KEY `idx_brand` (`brand`),
|
||||
KEY `idx_model` (`model`),
|
||||
KEY `idx_model_name` (`model_name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='车型参数表';
|
||||
|
||||
-- 4. 创建车型维保项目关联表
|
||||
CREATE TABLE IF NOT EXISTS `asset_vehicle_model_maintain_item` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
`vehicle_model_id` bigint NOT NULL COMMENT '车型ID',
|
||||
`maintain_item_id` bigint NOT NULL COMMENT '维保项目ID',
|
||||
`maintain_item` varchar(100) DEFAULT NULL COMMENT '保养项目',
|
||||
`maintain_content` varchar(500) DEFAULT NULL COMMENT '保养内容',
|
||||
`materials_expenses` decimal(10,2) DEFAULT NULL COMMENT '材料费',
|
||||
`hour_fee` decimal(10,2) DEFAULT NULL COMMENT '工时费',
|
||||
`kilometer_cycle` int DEFAULT NULL COMMENT '保养公里周期(KM)',
|
||||
`time_cycle` int DEFAULT NULL 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`),
|
||||
KEY `idx_vehicle_model_id` (`vehicle_model_id`),
|
||||
KEY `idx_maintain_item_id` (`maintain_item_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='车型维保项目关联表';
|
||||
73
sql/update-2026-03-12-停车场和车型参数模块.sql
Normal file
73
sql/update-2026-03-12-停车场和车型参数模块.sql
Normal file
@@ -0,0 +1,73 @@
|
||||
-- =============================================
|
||||
-- 资产管理系统 - 停车场和车型参数模块
|
||||
-- 创建时间: 2026-03-12
|
||||
-- =============================================
|
||||
|
||||
-- 1. 完善停车场表结构
|
||||
ALTER TABLE `asset_parking`
|
||||
ADD COLUMN `principal` varchar(50) DEFAULT NULL COMMENT '公司负责人' AFTER `name`,
|
||||
ADD COLUMN `contact_name` varchar(50) DEFAULT NULL COMMENT '联系人' AFTER `principal`,
|
||||
ADD COLUMN `contact_phone` varchar(20) DEFAULT NULL COMMENT '联系电话' AFTER `contact_name`,
|
||||
ADD COLUMN `parked_amount` int DEFAULT 0 COMMENT '已停车辆数' AFTER `capacity`,
|
||||
ADD COLUMN `stock_area` int DEFAULT NULL COMMENT '库存区域(字典)' AFTER `address`,
|
||||
ADD COLUMN `unusual_action_city` int DEFAULT NULL COMMENT '异动城市(字典)' AFTER `stock_area`,
|
||||
ADD COLUMN `longitude` varchar(50) DEFAULT NULL COMMENT '经度' AFTER `address`,
|
||||
ADD COLUMN `latitude` varchar(50) DEFAULT NULL COMMENT '纬度' AFTER `longitude`,
|
||||
ADD COLUMN `remark` varchar(500) DEFAULT NULL COMMENT '备注' AFTER `latitude`;
|
||||
|
||||
-- 2. 创建车型参数表
|
||||
CREATE TABLE `asset_vehicle_model` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
`brand` int NOT NULL COMMENT '品牌(字典)',
|
||||
`model` int NOT NULL COMMENT '车型(字典)',
|
||||
`model_code` varchar(50) DEFAULT NULL COMMENT '车型编号',
|
||||
`model_name` varchar(100) NOT NULL COMMENT '车型名称',
|
||||
`notice_model` varchar(100) DEFAULT NULL COMMENT '车辆公告型号',
|
||||
`hydrogen_unit` int DEFAULT NULL COMMENT '仪表盘氢气单位(字典)',
|
||||
`hydrogen_capacity` int DEFAULT NULL COMMENT '氢瓶容量(L)',
|
||||
`electricity_mileage` int DEFAULT NULL COMMENT '电池公告可行驶里程(KM)',
|
||||
`reserve_electricity` decimal(10,2) DEFAULT NULL COMMENT '储电量(kwh)',
|
||||
`hydrogen_mileage` int DEFAULT NULL COMMENT '氢气公告可行驶里程(KM)',
|
||||
`fuel_type` int DEFAULT NULL COMMENT '燃料种类(字典)',
|
||||
`tire_size` varchar(50) DEFAULT NULL COMMENT '轮胎尺寸',
|
||||
`tire_number` int DEFAULT NULL COMMENT '轮胎数量',
|
||||
`truck_size` varchar(100) DEFAULT NULL COMMENT '车辆尺寸',
|
||||
`online_spread_enterprise` varchar(100) DEFAULT NULL COMMENT '电堆厂家',
|
||||
`battery_factory` varchar(100) DEFAULT NULL COMMENT '电池厂家',
|
||||
`refrigerator_factory` varchar(100) DEFAULT NULL 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`),
|
||||
KEY `idx_brand` (`brand`),
|
||||
KEY `idx_model` (`model`),
|
||||
KEY `idx_model_name` (`model_name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='车型参数表';
|
||||
|
||||
-- 3. 创建车型维保项目关联表
|
||||
CREATE TABLE `asset_vehicle_model_maintain_item` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
`vehicle_model_id` bigint NOT NULL COMMENT '车型ID',
|
||||
`maintain_item_id` bigint NOT NULL COMMENT '维保项目ID',
|
||||
`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`),
|
||||
KEY `idx_vehicle_model_id` (`vehicle_model_id`),
|
||||
KEY `idx_maintain_item_id` (`maintain_item_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='车型维保项目关联表';
|
||||
|
||||
-- 4. 更新车型维保项目关联表(添加保养详情字段)
|
||||
ALTER TABLE `asset_vehicle_model_maintain_item`
|
||||
ADD COLUMN `maintain_item` varchar(100) DEFAULT NULL COMMENT '保养项目' AFTER `maintain_item_id`,
|
||||
ADD COLUMN `maintain_content` varchar(500) DEFAULT NULL COMMENT '保养内容' AFTER `maintain_item`,
|
||||
ADD COLUMN `materials_expenses` decimal(10,2) DEFAULT NULL COMMENT '材料费' AFTER `maintain_content`,
|
||||
ADD COLUMN `hour_fee` decimal(10,2) DEFAULT NULL COMMENT '工时费' AFTER `materials_expenses`,
|
||||
ADD COLUMN `kilometer_cycle` int DEFAULT NULL COMMENT '保养公里周期(KM)' AFTER `hour_fee`,
|
||||
ADD COLUMN `time_cycle` int DEFAULT NULL COMMENT '保养时间周期(月)' AFTER `kilometer_cycle`;
|
||||
Reference in New Issue
Block a user