238 lines
9.8 KiB
SQL
238 lines
9.8 KiB
SQL
-- ============================================
|
|
-- Warehouse Material Management System (WMMS)
|
|
-- Database Initialization Script
|
|
-- MySQL 5.7+
|
|
-- ============================================
|
|
|
|
-- Create database
|
|
CREATE DATABASE IF NOT EXISTS wmms;
|
|
USE wmms;
|
|
|
|
-- ============================================
|
|
-- Table: materials
|
|
-- ============================================
|
|
CREATE TABLE IF NOT EXISTS materials (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
material_code VARCHAR(50) NOT NULL UNIQUE,
|
|
name VARCHAR(200) NOT NULL,
|
|
material_image VARCHAR(500),
|
|
spec VARCHAR(200),
|
|
category VARCHAR(100),
|
|
unit VARCHAR(20),
|
|
warning_stock INT DEFAULT 0,
|
|
current_stock INT DEFAULT 0,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
INDEX idx_material_code (material_code),
|
|
INDEX idx_category (category)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- ============================================
|
|
-- Table: tags
|
|
-- ============================================
|
|
CREATE TABLE IF NOT EXISTS tags (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
material_id BIGINT NOT NULL,
|
|
tag_code VARCHAR(100) NOT NULL UNIQUE,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_material_id (material_id),
|
|
INDEX idx_tag_code (tag_code),
|
|
CONSTRAINT fk_tags_material FOREIGN KEY (material_id) REFERENCES materials(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- ============================================
|
|
-- Table: apply_orders
|
|
-- ============================================
|
|
CREATE TABLE IF NOT EXISTS apply_orders (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
applicant VARCHAR(100) NOT NULL,
|
|
apply_date DATE NOT NULL,
|
|
status ENUM('draft', 'pending', 'approved', 'rejected') DEFAULT 'draft',
|
|
approval_comment TEXT,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
INDEX idx_applicant (applicant),
|
|
INDEX idx_status (status),
|
|
INDEX idx_apply_date (apply_date)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- ============================================
|
|
-- Table: apply_items
|
|
-- ============================================
|
|
CREATE TABLE IF NOT EXISTS apply_items (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
apply_order_id BIGINT NOT NULL,
|
|
material_id BIGINT NOT NULL,
|
|
quantity INT NOT NULL,
|
|
purpose TEXT,
|
|
INDEX idx_apply_order_id (apply_order_id),
|
|
INDEX idx_material_id (material_id),
|
|
CONSTRAINT fk_apply_items_order FOREIGN KEY (apply_order_id) REFERENCES apply_orders(id) ON DELETE CASCADE,
|
|
CONSTRAINT fk_apply_items_material FOREIGN KEY (material_id) REFERENCES materials(id) ON DELETE RESTRICT
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- ============================================
|
|
-- Table: inbound_orders
|
|
-- ============================================
|
|
CREATE TABLE IF NOT EXISTS inbound_orders (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
inbound_date DATETIME NOT NULL,
|
|
handler VARCHAR(100) NOT NULL,
|
|
supplier VARCHAR(200),
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
INDEX idx_inbound_date (inbound_date),
|
|
INDEX idx_handler (handler)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- ============================================
|
|
-- Table: inbound_items
|
|
-- ============================================
|
|
CREATE TABLE IF NOT EXISTS inbound_items (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
inbound_order_id BIGINT NOT NULL,
|
|
material_id BIGINT NOT NULL,
|
|
quantity INT NOT NULL,
|
|
INDEX idx_inbound_order_id (inbound_order_id),
|
|
INDEX idx_material_id (material_id),
|
|
CONSTRAINT fk_inbound_items_order FOREIGN KEY (inbound_order_id) REFERENCES inbound_orders(id) ON DELETE CASCADE,
|
|
CONSTRAINT fk_inbound_items_material FOREIGN KEY (material_id) REFERENCES materials(id) ON DELETE RESTRICT
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- ============================================
|
|
-- Table: outbound_orders
|
|
-- ============================================
|
|
CREATE TABLE IF NOT EXISTS outbound_orders (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
outbound_date DATETIME NOT NULL,
|
|
handler VARCHAR(100) NOT NULL,
|
|
receiver VARCHAR(100) NOT NULL,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
INDEX idx_outbound_date (outbound_date),
|
|
INDEX idx_handler (handler),
|
|
INDEX idx_receiver (receiver)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- ============================================
|
|
-- Table: outbound_items
|
|
-- ============================================
|
|
CREATE TABLE IF NOT EXISTS outbound_items (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
outbound_order_id BIGINT NOT NULL,
|
|
material_id BIGINT NOT NULL,
|
|
quantity INT NOT NULL,
|
|
INDEX idx_outbound_order_id (outbound_order_id),
|
|
INDEX idx_material_id (material_id),
|
|
CONSTRAINT fk_outbound_items_order FOREIGN KEY (outbound_order_id) REFERENCES outbound_orders(id) ON DELETE CASCADE,
|
|
CONSTRAINT fk_outbound_items_material FOREIGN KEY (material_id) REFERENCES materials(id) ON DELETE RESTRICT
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- ============================================
|
|
-- Table: material_logs
|
|
-- ============================================
|
|
CREATE TABLE IF NOT EXISTS material_logs (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
operation_type VARCHAR(50) NOT NULL,
|
|
material_id BIGINT NOT NULL,
|
|
old_value TEXT,
|
|
new_value TEXT,
|
|
operator VARCHAR(100),
|
|
description TEXT,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_operation_type (operation_type),
|
|
INDEX idx_material_id (material_id),
|
|
INDEX idx_created_at (created_at),
|
|
CONSTRAINT fk_material_logs_material FOREIGN KEY (material_id) REFERENCES materials(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- ============================================
|
|
-- Table: stock_logs
|
|
-- ============================================
|
|
CREATE TABLE IF NOT EXISTS stock_logs (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
material_id BIGINT NOT NULL,
|
|
type ENUM('in', 'out') NOT NULL,
|
|
quantity INT NOT NULL,
|
|
related_order_type VARCHAR(50) NOT NULL,
|
|
related_order_id BIGINT NOT NULL,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_material_id (material_id),
|
|
INDEX idx_type (type),
|
|
INDEX idx_related_order (related_order_type, related_order_id),
|
|
CONSTRAINT fk_stock_logs_material FOREIGN KEY (material_id) REFERENCES materials(id) ON DELETE RESTRICT
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- ============================================
|
|
-- Table: users
|
|
-- ============================================
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
username VARCHAR(50) NOT NULL UNIQUE,
|
|
password VARCHAR(255) NOT NULL,
|
|
role ENUM('admin','user') NOT NULL DEFAULT 'user',
|
|
description VARCHAR(500) DEFAULT '',
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- ============================================
|
|
-- Category Code Reference
|
|
-- A01-A07: 标准件, 成品件, 简易加工件, 精密加工件, 钣金件, 塑胶件, 其他
|
|
-- B01-B07: 成品件, 简易加工件, PCB硬板, FPC软板, 线束, 组装组件, 其他
|
|
-- C01-C03: 连接耗材, 密封耗材, 其他
|
|
-- D01-D04: 自研程序固件, 外购软件授权, 授权介质, 其他
|
|
-- E01-E02: 成品, 半成品
|
|
-- F01-F05: 资料文档, 标识标牌, 包装物料, 随机工具配件, 其他
|
|
-- ============================================
|
|
|
|
-- ============================================
|
|
-- Table: materials_category (reference table)
|
|
-- ============================================
|
|
CREATE TABLE IF NOT EXISTS materials_category (
|
|
category_code VARCHAR(10) PRIMARY KEY,
|
|
category_name VARCHAR(100) NOT NULL,
|
|
parent_category VARCHAR(10),
|
|
description VARCHAR(200)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- Insert category reference data
|
|
INSERT INTO materials_category (category_code, category_name, description) VALUES
|
|
('A01', '标准件', 'Standard parts'),
|
|
('A02', '成品件', 'Finished parts'),
|
|
('A03', '简易加工件', 'Simple machined parts'),
|
|
('A04', '精密加工件', 'Precision machined parts'),
|
|
('A05', '钣金件', 'Sheet metal parts'),
|
|
('A06', '塑胶件', 'Plastic parts'),
|
|
('A07', '其他', 'Other (A series)'),
|
|
('B01', '成品件', 'Finished parts'),
|
|
('B02', '简易加工件', 'Simple machined parts'),
|
|
('B03', 'PCB硬板', 'PCB hard board'),
|
|
('B04', 'FPC软板', 'FPC flexible board'),
|
|
('B05', '线束', 'Wire harness'),
|
|
('B06', '组装组件', 'Assembly component'),
|
|
('B07', '其他', 'Other (B series)'),
|
|
('C01', '连接耗材', 'Connection consumable'),
|
|
('C02', '密封耗材', 'Sealing consumable'),
|
|
('C03', '其他', 'Other (C series)'),
|
|
('D01', '自研程序固件', 'In-house firmware'),
|
|
('D02', '外购软件授权', 'Purchased software license'),
|
|
('D03', '授权介质', 'License media'),
|
|
('D04', '其他', 'Other (D series)'),
|
|
('E01', '成品', 'Finished product'),
|
|
('E02', '半成品', 'Semi-finished product'),
|
|
('F01', '资料文档', 'Documentation'),
|
|
('F02', '标识标牌', 'Label/signage'),
|
|
('F03', '包装物料', 'Packaging material'),
|
|
('F04', '随机工具配件', 'Bundled tools/accessories'),
|
|
('F05', '其他', 'Other (F series)');
|
|
|
|
-- ============================================
|
|
-- Test Data: 5 Materials (using category codes)
|
|
-- ============================================
|
|
INSERT INTO materials (material_code, name, spec, category, unit, warning_stock, current_stock) VALUES
|
|
('MAT-001', 'Steel Plate', '1000x2000x5mm', 'A01', 'Sheet', 50, 200),
|
|
('MAT-002', 'Aluminum Rod', 'D20x1000mm', 'A01', 'Piece', 100, 500),
|
|
('MAT-003', 'Hex Bolt M10', 'M10x30mm SS304', 'A01', 'Box', 20, 80),
|
|
('MAT-004', 'Hydraulic Oil', 'ISO VG 46', 'C01', 'Barrel', 10, 25),
|
|
('MAT-005', 'Bearing 6205', '6205-2RS Deep Groove', 'A02', 'Piece', 30, 120);
|