-- 创建检验项目配置表
CREATE TABLE IF NOT EXISTS inspection_config (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    position INTEGER NOT NULL,        -- 位置序号 (1-6)
    name VARCHAR(50) NOT NULL,        -- 检验项目名称
    display_name VARCHAR(50) NOT NULL, -- 显示名称
    enabled BOOLEAN DEFAULT TRUE,     -- 是否启用
    required BOOLEAN DEFAULT FALSE,   -- 是否必填
    data_type VARCHAR(20) DEFAULT 'text', -- 数据类型: text, number, enum
    min_value FLOAT,                  -- 最小值 (用于number类型)
    max_value FLOAT,                  -- 最大值 (用于number类型)
    enum_values TEXT,                 -- 枚举值 (用于enum类型, JSON格式存储)
    unit VARCHAR(20),                 -- 单位
    sort_order INTEGER NOT NULL,      -- 排序顺序
    create_time TIMESTAMP NOT NULL,
    create_by VARCHAR(50) NOT NULL,
    update_time TIMESTAMP,
    update_by VARCHAR(50),
    is_deleted BOOLEAN DEFAULT FALSE,
    UNIQUE(position, is_deleted) -- 确保同一位置只有一个激活的配置
);

-- 创建检验数据记录表
CREATE TABLE IF NOT EXISTS inspection_data (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    order_id VARCHAR(50) NOT NULL,    -- 关联的工程号
    position INTEGER NOT NULL,        -- 位置序号
    config_id INTEGER NOT NULL,       -- 关联的配置ID
    value TEXT NOT NULL,              -- 检验值 (所有类型都用TEXT存储)
    status VARCHAR(20) DEFAULT 'pass', -- 状态: pass, fail, warning
    remark TEXT,                      -- 备注
    create_time TIMESTAMP NOT NULL,
    create_by VARCHAR(50) NOT NULL,
    update_time TIMESTAMP,
    update_by VARCHAR(50),
    is_deleted BOOLEAN DEFAULT FALSE,
    FOREIGN KEY(config_id) REFERENCES inspection_config(id)
);

-- 创建默认检验项目数据
INSERT OR IGNORE INTO inspection_config (
    position, name, display_name, enabled, required, data_type, 
    min_value, max_value, unit, sort_order, create_time, create_by
) VALUES 
    (1, 'mdz', '米电阻', 1, 1, 'number', 10.0, 50.0, 'Ω/m', 1, datetime('now'), 'system'),
    (2, 'xj', '线径', 1, 1, 'number', 0.1, 10.0, 'mm', 2, datetime('now'), 'system'),
    (3, 'sxl', '收线量', 1, 0, 'number', 0.0, 1000.0, 'm', 3, datetime('now'), 'system'),
    (4, 'xpg', '线盘高', 1, 0, 'number', 0.0, 1000.0, 'mm', 4, datetime('now'), 'system'),
    (5, 'fzd', '放置点', 1, 0, 'enum', NULL, NULL, NULL, 5, datetime('now'), 'system'),
    (6, 'bz', '备注', 0, 0, 'text', NULL, NULL, NULL, 6, datetime('now'), 'system');

-- 为放置点检验项设置枚举值
UPDATE inspection_config 
SET enum_values = '["A区", "B区", "C区", "D区"]'
WHERE name = 'fzd' AND is_deleted = FALSE;

-- 包装记录表
drop table if exists wsbz_inspection_pack_data;
create table if not exists wsbz_inspection_pack_data
(
    --订单号
    order_id        VARCHAR(50),
    --材质
    material        VARCHAR(50),
    --规格
    spec            VARCHAR(50),
    --包装号
    tray_id         VARCHAR(50),
    --轴包装号
    axis_package_id VARCHAR(50),
    create_time     TIMESTAMP   NOT NULL,
    create_by       VARCHAR(50) NOT NULL,
    update_time     TIMESTAMP,
    update_by       VARCHAR(50),
    is_deleted      BOOLEAN
);

-- 创建托盘类型配置表
CREATE TABLE IF NOT EXISTS pallet_types (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    type_name VARCHAR(50) NOT NULL,      -- 托盘类型名称
    operation_type VARCHAR(20) NOT NULL, -- 操作类型: input(上料), output(下料)
    description TEXT,                    -- 描述
    enabled BOOLEAN DEFAULT TRUE,        -- 是否启用
    sort_order INTEGER NOT NULL,         -- 排序顺序
    create_time TIMESTAMP NOT NULL,
    create_by VARCHAR(50) NOT NULL,
    update_time TIMESTAMP,
    update_by VARCHAR(50),
    is_deleted BOOLEAN DEFAULT FALSE
);

-- 插入默认托盘类型数据
INSERT OR IGNORE INTO pallet_types (
    type_name, operation_type, description, enabled, sort_order, create_time, create_by
) VALUES 
('标准托盘', 'input', '标准上料托盘', TRUE, 1, CURRENT_TIMESTAMP, 'system'),
('小型托盘', 'input', '小型上料托盘', TRUE, 2, CURRENT_TIMESTAMP, 'system'),
('大型托盘', 'input', '大型上料托盘', TRUE, 3, CURRENT_TIMESTAMP, 'system'),
('标准托盘', 'output', '标准下料托盘', TRUE, 4, CURRENT_TIMESTAMP, 'system'),
('小型托盘', 'output', '小型下料托盘', TRUE, 5, CURRENT_TIMESTAMP, 'system'),
('大型托盘', 'output', '大型下料托盘', TRUE, 6, CURRENT_TIMESTAMP, 'system');


-- 创建托盘档案
create table if not exists pallet_archives (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    pallet_id VARCHAR(50) ,
    type_id VARCHAR(50),
    create_time TIMESTAMP ,
    create_by VARCHAR(50) ,
    update_time TIMESTAMP,
    update_by VARCHAR(50)
)

-- 创建托盘类型表
CREATE TABLE IF NOT EXISTS pallet_type (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name VARCHAR(50) NOT NULL,        -- 托盘类型名称
    code VARCHAR(20) NOT NULL,        -- 托盘类型编码
    description TEXT,                 -- 托盘类型描述
    create_time TIMESTAMP NOT NULL,
    create_by VARCHAR(50) NOT NULL,
    update_time TIMESTAMP,
    update_by VARCHAR(50),
    is_deleted BOOLEAN DEFAULT FALSE,
    UNIQUE(code, is_deleted)          -- 确保编码唯一
);

-- 创建默认托盘类型
INSERT OR IGNORE INTO pallet_type (
    name, code, description, create_time, create_by
) VALUES 
    ('A型托盘', 'A', 'A型标准托盘', datetime('now'), 'system'),
    ('B型托盘', 'B', 'B型标准托盘', datetime('now'), 'system'),
    ('C型托盘', 'C', 'C型标准托盘', datetime('now'), 'system');

-- 创建订单托盘关联表
CREATE TABLE IF NOT EXISTS order_tray (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    order_id VARCHAR(50) NOT NULL,    -- 订单号
    tray_id VARCHAR(50) NOT NULL,     -- 托盘号
    status VARCHAR(20) DEFAULT 'active', -- 状态: active, completed, deleted
    create_time TIMESTAMP NOT NULL,
    create_by VARCHAR(50) NOT NULL,
    update_time TIMESTAMP,
    update_by VARCHAR(50),
    UNIQUE(order_id, tray_id)         -- 确保订单与托盘关联唯一
);

-- 创建包装记录表
CREATE TABLE IF NOT EXISTS packaging_record (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    order_id VARCHAR(50) NOT NULL,    -- 关联的工程号
    tray_id VARCHAR(50) NOT NULL,     -- 关联的托盘号
    product_name VARCHAR(100),        -- 产品名称
    spec VARCHAR(100),                -- 规格
    package_no VARCHAR(50),           -- 轴包装号
    weight FLOAT,                     -- 重量
    remark TEXT,                      -- 备注
    status VARCHAR(20) DEFAULT 'active', -- 状态: active, completed, deleted
    create_time TIMESTAMP NOT NULL,
    create_by VARCHAR(50) NOT NULL,
    update_time TIMESTAMP,
    update_by VARCHAR(50)
);