eden-basic/asset-management/资产管理sql初始化脚本.sql
zhongchangyuyu 4d0ce8cdb6 资产管理
2025-04-25 10:02:24 +08:00

219 lines
10 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.

-- 资产管理模块数据库初始化脚本
-- PostgreSQL 15.6 版本
-- 包含序列、表结构、主键、索引等定义
-- 注意本脚本需在edendb数据库中执行
-- 创建序列
CREATE SEQUENCE IF NOT EXISTS SEQ_TB_ASSET_CLASSIFICATION_1
INCREMENT BY 1
START WITH 1
NO MINVALUE
NO MAXVALUE
CACHE 1
AS BIGINT;
CREATE SEQUENCE IF NOT EXISTS SEQ_TB_ASSET_LOCATION_1
INCREMENT BY 1
START WITH 1
NO MINVALUE
NO MAXVALUE
CACHE 1
AS BIGINT;
CREATE SEQUENCE IF NOT EXISTS SEQ_TB_ASSET_LABEL_1
INCREMENT BY 1
START WITH 1
NO MINVALUE
NO MAXVALUE
CACHE 1
AS BIGINT;
CREATE SEQUENCE IF NOT EXISTS SEQ_TB_ASSET_1
INCREMENT BY 1
START WITH 1
NO MINVALUE
NO MAXVALUE
CACHE 1
AS BIGINT;
-- 创建表结构
-- 1. 资产分类表
CREATE TABLE IF NOT EXISTS TB_ASSET_CLASSIFICATION (
id BIGINT NOT NULL DEFAULT nextval('SEQ_TB_ASSET_CLASSIFICATION_1') CONSTRAINT PK_TB_ASSET_CLASSIFICATION_1 PRIMARY KEY,
classification_code VARCHAR(50) NOT NULL,
classification_name VARCHAR(100) NOT NULL,
parent_id VARCHAR(32),
status VARCHAR(1) NOT NULL,
remark VARCHAR(2000),
create_user_id VARCHAR(50),
create_time TIMESTAMP NOT NULL,
del_flag VARCHAR(1) NOT NULL,
last_mod_user_id VARCHAR(50),
last_mod_time TIMESTAMP,
tenant_id VARCHAR(50)
);
COMMENT ON TABLE TB_ASSET_CLASSIFICATION IS '资产分类表';
COMMENT ON COLUMN TB_ASSET_CLASSIFICATION.classification_code IS '资产分类编码';
COMMENT ON COLUMN TB_ASSET_CLASSIFICATION.classification_name IS '资产分类名称';
COMMENT ON COLUMN TB_ASSET_CLASSIFICATION.parent_id IS '上级资产分类ID';
COMMENT ON COLUMN TB_ASSET_CLASSIFICATION.status IS '状态 1-启用 0-禁用';
COMMENT ON COLUMN TB_ASSET_CLASSIFICATION.remark IS '备注';
COMMENT ON COLUMN TB_ASSET_CLASSIFICATION.create_user_id IS '创建人ID';
COMMENT ON COLUMN TB_ASSET_CLASSIFICATION.create_time IS '创建时间';
COMMENT ON COLUMN TB_ASSET_CLASSIFICATION.del_flag IS '是否删除 0-未删除 1-已删除';
COMMENT ON COLUMN TB_ASSET_CLASSIFICATION.last_mod_user_id IS '最后修改人ID';
COMMENT ON COLUMN TB_ASSET_CLASSIFICATION.last_mod_time IS '最后修改时间';
COMMENT ON COLUMN TB_ASSET_CLASSIFICATION.tenant_id IS '租户ID';
-- 2. 资产位置表
CREATE TABLE IF NOT EXISTS TB_ASSET_LOCATION (
id BIGINT NOT NULL DEFAULT nextval('SEQ_TB_ASSET_LOCATION_1') CONSTRAINT PK_TB_ASSET_LOCATION_1 PRIMARY KEY,
location_code VARCHAR(50) NOT NULL,
location_name VARCHAR(100) NOT NULL,
parent_id VARCHAR(32),
level_code VARCHAR(50),
status VARCHAR(1) NOT NULL,
remark VARCHAR(2000),
create_user_id VARCHAR(50),
create_time TIMESTAMP NOT NULL,
del_flag VARCHAR(1) NOT NULL,
last_mod_user_id VARCHAR(50),
last_mod_time TIMESTAMP,
tenant_id VARCHAR(50)
);
COMMENT ON TABLE TB_ASSET_LOCATION IS '资产位置表';
COMMENT ON COLUMN TB_ASSET_LOCATION.location_code IS '位置编码';
COMMENT ON COLUMN TB_ASSET_LOCATION.location_name IS '位置名称';
COMMENT ON COLUMN TB_ASSET_LOCATION.parent_id IS '上级位置ID';
COMMENT ON COLUMN TB_ASSET_LOCATION.level_code IS '层级';
COMMENT ON COLUMN TB_ASSET_LOCATION.status IS '状态 1-启用 0-禁用';
COMMENT ON COLUMN TB_ASSET_LOCATION.remark IS '备注';
COMMENT ON COLUMN TB_ASSET_LOCATION.create_user_id IS '创建人ID';
COMMENT ON COLUMN TB_ASSET_LOCATION.create_time IS '创建时间';
COMMENT ON COLUMN TB_ASSET_LOCATION.del_flag IS '是否删除 0-未删除 1-已删除';
COMMENT ON COLUMN TB_ASSET_LOCATION.last_mod_user_id IS '最后修改人ID';
COMMENT ON COLUMN TB_ASSET_LOCATION.last_mod_time IS '最后修改时间';
COMMENT ON COLUMN TB_ASSET_LOCATION.tenant_id IS '租户ID';
-- 3. 资产标签表
CREATE TABLE IF NOT EXISTS TB_ASSET_LABEL (
id BIGINT NOT NULL DEFAULT nextval('SEQ_TB_ASSET_LABEL_1') CONSTRAINT PK_TB_ASSET_LABEL_1 PRIMARY KEY,
template_type VARCHAR(1) NOT NULL,
label_items VARCHAR(1000),
paper_type VARCHAR(1) NOT NULL,
label_width VARCHAR(8),
label_height VARCHAR(8),
create_user_id VARCHAR(50),
create_time TIMESTAMP NOT NULL,
del_flag VARCHAR(1) NOT NULL,
last_mod_user_id VARCHAR(50),
last_mod_time TIMESTAMP,
tenant_id VARCHAR(50) NOT NULL,
CONSTRAINT UK_TB_ASSET_LABEL_TENANT UNIQUE (tenant_id, del_flag)
);
COMMENT ON TABLE TB_ASSET_LABEL IS '资产标签表';
COMMENT ON COLUMN TB_ASSET_LABEL.template_type IS '模板类型 1-模板1 2-模板2 3-模板3 4-模板4数值代表最多可选择的标签数量';
COMMENT ON COLUMN TB_ASSET_LABEL.label_items IS '标签集合(以逗号分隔的数字): 1-资产名称,2-资产分类,3-资产编码,4-资产位置,5-品牌,6-型号,7-设备序列号,8-管理员,9-保养到期时间,10-保养说明,11-使用部门';
COMMENT ON COLUMN TB_ASSET_LABEL.paper_type IS '纸张类型 1-标签专用纸 2-A4(2列标签) 3-A4(3列标签)';
COMMENT ON COLUMN TB_ASSET_LABEL.label_width IS '标签宽度(mm),仅当纸张类型为标签专用纸时有效';
COMMENT ON COLUMN TB_ASSET_LABEL.label_height IS '标签高度(mm),仅当纸张类型为标签专用纸时有效';
COMMENT ON COLUMN TB_ASSET_LABEL.create_user_id IS '创建人ID';
COMMENT ON COLUMN TB_ASSET_LABEL.create_time IS '创建时间';
COMMENT ON COLUMN TB_ASSET_LABEL.del_flag IS '是否删除 0-未删除 1-已删除';
COMMENT ON COLUMN TB_ASSET_LABEL.last_mod_user_id IS '最后修改人ID';
COMMENT ON COLUMN TB_ASSET_LABEL.last_mod_time IS '最后修改时间';
COMMENT ON COLUMN TB_ASSET_LABEL.tenant_id IS '租户ID';
-- 4. 资产表
CREATE TABLE IF NOT EXISTS TB_ASSET (
id BIGINT NOT NULL DEFAULT nextval('SEQ_TB_ASSET_1') CONSTRAINT PK_TB_ASSET_1 PRIMARY KEY,
asset_code VARCHAR(100) NOT NULL,
asset_name VARCHAR(200) NOT NULL,
classification_id VARCHAR(32) NOT NULL,
admin_user_id VARCHAR(50),
company_id VARCHAR(50) NOT NULL,
location_id VARCHAR(32) NOT NULL,
purchase_type VARCHAR(20) NOT NULL,
brand VARCHAR(100) NOT NULL,
model VARCHAR(100),
serial_number VARCHAR(100),
purchase_amount DECIMAL(18,2),
expected_useful_life INT,
remark VARCHAR(2000),
purchase_date DATE,
storage_date DATE,
asset_photo VARCHAR(500),
maintenance_due_date DATE,
maintenance_description VARCHAR(2000),
expected_depreciation_period INT,
asset_status VARCHAR(20) NOT NULL,
create_user_id VARCHAR(50),
create_time TIMESTAMP NOT NULL,
del_flag VARCHAR(1) NOT NULL,
last_mod_user_id VARCHAR(50),
last_mod_time TIMESTAMP,
tenant_id VARCHAR(50)
);
COMMENT ON TABLE TB_ASSET IS '资产表';
COMMENT ON COLUMN TB_ASSET.asset_code IS '资产编码';
COMMENT ON COLUMN TB_ASSET.asset_name IS '资产名称';
COMMENT ON COLUMN TB_ASSET.classification_id IS '资产分类ID';
COMMENT ON COLUMN TB_ASSET.admin_user_id IS '管理员ID';
COMMENT ON COLUMN TB_ASSET.company_id IS '所属公司ID';
COMMENT ON COLUMN TB_ASSET.location_id IS '所在位置ID';
COMMENT ON COLUMN TB_ASSET.purchase_type IS '购置方式 采购/租赁';
COMMENT ON COLUMN TB_ASSET.brand IS '品牌';
COMMENT ON COLUMN TB_ASSET.model IS '型号';
COMMENT ON COLUMN TB_ASSET.serial_number IS '设备序列号';
COMMENT ON COLUMN TB_ASSET.purchase_amount IS '购置金额';
COMMENT ON COLUMN TB_ASSET.expected_useful_life IS '预计使用期限(月)';
COMMENT ON COLUMN TB_ASSET.remark IS '备注';
COMMENT ON COLUMN TB_ASSET.purchase_date IS '购置时间';
COMMENT ON COLUMN TB_ASSET.storage_date IS '入库时间';
COMMENT ON COLUMN TB_ASSET.asset_photo IS '资产照片URL';
COMMENT ON COLUMN TB_ASSET.maintenance_due_date IS '保养到期时间';
COMMENT ON COLUMN TB_ASSET.maintenance_description IS '保养说明';
COMMENT ON COLUMN TB_ASSET.expected_depreciation_period IS '预计折旧期限(月)';
COMMENT ON COLUMN TB_ASSET.asset_status IS '资产状态 空闲/在用/借用/派发中/退库中/借出中/归还中/维修中';
COMMENT ON COLUMN TB_ASSET.create_user_id IS '创建人ID';
COMMENT ON COLUMN TB_ASSET.create_time IS '创建时间';
COMMENT ON COLUMN TB_ASSET.del_flag IS '是否删除 0-未删除 1-已删除';
COMMENT ON COLUMN TB_ASSET.last_mod_user_id IS '最后修改人ID';
COMMENT ON COLUMN TB_ASSET.last_mod_time IS '最后修改时间';
COMMENT ON COLUMN TB_ASSET.tenant_id IS '租户ID';
-- 创建索引
-- 1. 资产分类表索引
CREATE INDEX IDX_TB_ASSET_CLASSIFICATION_CODE ON TB_ASSET_CLASSIFICATION (classification_code) WHERE del_flag = '0';
CREATE INDEX IDX_TB_ASSET_CLASSIFICATION_NAME ON TB_ASSET_CLASSIFICATION (classification_name) WHERE del_flag = '0';
CREATE INDEX IDX_TB_ASSET_CLASSIFICATION_PARENT_ID ON TB_ASSET_CLASSIFICATION (parent_id) WHERE del_flag = '0';
CREATE INDEX IDX_TB_ASSET_CLASSIFICATION_STATUS ON TB_ASSET_CLASSIFICATION (status) WHERE del_flag = '0';
-- 2. 资产位置表索引
CREATE INDEX IDX_TB_ASSET_LOCATION_CODE ON TB_ASSET_LOCATION (location_code) WHERE del_flag = '0';
CREATE INDEX IDX_TB_ASSET_LOCATION_NAME ON TB_ASSET_LOCATION (location_name) WHERE del_flag = '0';
CREATE INDEX IDX_TB_ASSET_LOCATION_PARENT_ID ON TB_ASSET_LOCATION (parent_id) WHERE del_flag = '0';
CREATE INDEX IDX_TB_ASSET_LOCATION_STATUS ON TB_ASSET_LOCATION (status) WHERE del_flag = '0';
CREATE INDEX IDX_TB_ASSET_LOCATION_LEVEL_CODE ON TB_ASSET_LOCATION (level_code) WHERE del_flag = '0';
-- 3. 资产标签表索引
CREATE INDEX IDX_TB_ASSET_LABEL_TEMPLATE_TYPE ON TB_ASSET_LABEL (template_type) WHERE del_flag = '0';
CREATE INDEX IDX_TB_ASSET_LABEL_PAPER_TYPE ON TB_ASSET_LABEL (paper_type) WHERE del_flag = '0';
CREATE UNIQUE INDEX IDX_UNI_TB_ASSET_LABEL_TENANT ON TB_ASSET_LABEL (tenant_id) WHERE del_flag = '0';
-- 4. 资产表索引
CREATE UNIQUE INDEX IDX_UNI_TB_ASSET_CODE ON TB_ASSET (asset_code, tenant_id) WHERE del_flag = '0';
CREATE INDEX IDX_TB_ASSET_NAME ON TB_ASSET (asset_name) WHERE del_flag = '0';
CREATE INDEX IDX_TB_ASSET_CLASSIFICATION_ID ON TB_ASSET (classification_id) WHERE del_flag = '0';
CREATE INDEX IDX_TB_ASSET_LOCATION_ID ON TB_ASSET (location_id) WHERE del_flag = '0';
CREATE INDEX IDX_TB_ASSET_ADMIN_USER_ID ON TB_ASSET (admin_user_id) WHERE del_flag = '0';
CREATE INDEX IDX_TB_ASSET_COMPANY_ID ON TB_ASSET (company_id) WHERE del_flag = '0';
CREATE INDEX IDX_TB_ASSET_STATUS ON TB_ASSET (asset_status) WHERE del_flag = '0';
CREATE INDEX IDX_TB_ASSET_BRAND ON TB_ASSET (brand) WHERE del_flag = '0';
CREATE INDEX IDX_TB_ASSET_SERIAL_NUMBER ON TB_ASSET (serial_number) WHERE del_flag = '0';
CREATE INDEX IDX_TB_ASSET_MAINTENANCE_DUE_DATE ON TB_ASSET (maintenance_due_date) WHERE del_flag = '0';