Files
bj_power/bj_power_mes/doc/data.sql
T

288 lines
10 KiB
SQL
Raw Normal View History

-- ============================================================================
-- 种子数据 SQL (PostgreSQL)
-- 用法: psql -U postgres -d back_cover -f doc/data.sql
-- 执行前需先启动一次应用创建表结构,或手动执行 migrate 后再运行此脚本。
-- ============================================================================
-- ============================================================================
-- 1. 用户 & 角色 & 部门
-- ============================================================================
DELETE
FROM "user";
DELETE
FROM department;
DELETE
FROM role;
INSERT INTO role (id, name, created_at, updated_at)
VALUES (1, 'Admin', NOW(), NOW());
INSERT INTO department (id, name, created_at, updated_at)
VALUES (1, '默认', NOW(), NOW());
-- 密码为 "123456" 的 bcrypt 哈希(值由 auth.HashPassword 生成,此处为占位)
-- 实际运行时应替换为以下 Go 代码的输出:
-- hash, _ := auth.HashPassword("123456")
INSERT INTO "user" (id, name, mobile, username, password, role_id, dept_id, gender, status, created_at, updated_at)
VALUES (1, 'Admin', '13900000001', 'admin', '$2a$10$Kyu/a8pCQ1XKGj/g/Pt19OFPV.TfyDwn.BY4hhYOD2jVwCYBPaobS', 1, 1, 1, 1,
NOW(), NOW());
-- ============================================================================
-- 2. 设备类型 (equipment_type)
-- ============================================================================
DELETE
FROM equipment_type;
ALTER sequence equipment_type_id_seq restart with 1;
INSERT INTO equipment_type (code, name)
VALUES ('ROBOT', '工业机器人'),
('TEMP_STORE', '随行暂存台'),
('CNC', 'CNC加工中心'),
('WASHER_HP', '高压清洗机'),
('INSPECTION', '内窥镜检测线'),
('DEBURR', '热能去毛刺机'),
('CLEANING_LINE', '除锈清洗线'),
('MARKING', '激光打标台'),
('SAMPLING', '抽检台');
-- ============================================================================
-- 3. 设备 (equipment)
-- ============================================================================
DELETE
FROM equipment;
ALTER sequence equipment_id_seq restart with 1;
INSERT INTO equipment (name, equipment_type_id, slot_count, exchange, batch, ip_address, location, done_signal_name,
ng_signal_name)
VALUES ('CNC-1', 3, 2, true, false, '192.168.1.160', 'A区', 'CNCDone1', ''),
('CNC-2', 3, 2, true, false, '192.168.1.161', 'A区', 'CNCDone2', ''),
('CNC-3', 3, 2, true, false, '192.168.1.162', 'A区', 'CNCDone3', ''),
('CNC-4', 3, 2, true, false, '192.168.1.163', 'A区', 'CNCDone4', ''),
('高压清洗机', 4, 2, true, true, '', 'A区', 'WasherDone', ''),
('内窥镜检测线', 5, 2, false, false, '', 'A区', 'MeasureOK', 'MeasureNG'),
('热能去毛刺机', 6, 1, false, false, '', 'A区', 'DeburrDone', ''),
('除锈清洗线', 7, 8, true, false, '192.168.1.151', 'A区', 'CleaningDone', ''),
('抽检台', 9, 1, false, false, '', 'A区', 'SamplingOK', 'SamplingNG');
-- ============================================================================
-- 4. 设备槽位 (equipment_slot) — 固定 ID,真幂等
-- ============================================================================
DELETE
FROM equipment_slot;
ALTER sequence equipment_slot_id_seq restart with 1;
INSERT INTO equipment_slot (equipment_id, slot_no, status)
VALUES
-- CNC 1-4 (各 1 槽位)
(1, 1, 'EMPTY'),
(2, 1, 'EMPTY'),
(3, 1, 'EMPTY'),
(4, 1, 'EMPTY'),
-- 高压清洗机 (2 槽位)
(5, 1, 'EMPTY'),
(5, 2, 'EMPTY'),
-- 内窥镜检测线 (3 槽位: 上料检测位/出口位)
(6, 1, 'EMPTY'),
(6, 2, 'EMPTY'),
-- 热能去毛刺机 (1 槽位)
(7, 1, 'EMPTY'),
-- 除锈清洗线 (8 槽位)
(8, 1, 'EMPTY'),
(8, 2, 'EMPTY'),
(8, 3, 'EMPTY'),
(8, 4, 'EMPTY'),
(8, 5, 'EMPTY'),
(8, 6, 'EMPTY'),
(8, 7, 'EMPTY'),
(8, 8, 'EMPTY'),
-- 抽检台 (1 槽位)
(9, 1, 'EMPTY');
-- ============================================================================
-- 5. 产品类型 (product_type)
-- ============================================================================
DELETE
FROM product_type;
ALTER sequence product_type_id_seq restart with 1;
INSERT INTO product_type (name, code, category, recipe_id, cnc_machine_ids, temp_slot_quota, is_active)
VALUES ('A6VM107-B99414', 'B99414', 'A6VM107', 1, '[3,4]'::jsonb, 3, true),
('A6VM107-B99487', 'B99487', 'A6VM107', 1, '[3,4]'::jsonb, 3, true),
('A6VM160-B99464', 'B99464', 'A6VM160', 1, '[1,2]'::jsonb, 3, true),
('A6VM160-B99488', 'B99488', 'A6VM160', 1, '[1,2]'::jsonb, 3, true),
('A6VM200-B99259', 'B99259', 'A6VM200', 1, '[1]'::jsonb, 2, true);
-- ============================================================================
-- 5.1 零件号 (part_no) — 高压清洗机按零件号分9组程序,组号即 FANUC 宏变量 #666/#888 的值
-- ============================================================================
DELETE
FROM part_no;
ALTER sequence part_no_id_seq restart with 1;
INSERT INTO part_no (code, product_type_id, washer_group_no, remark, created_at)
VALUES ('B02858', 1, 1, '', NOW()),
('B20044', 1, 1, '', NOW()),
('B20223', 1, 1, '', NOW()),
('B20480', 1, 1, '', NOW()),
('B20177', 1, 2, '', NOW()),
('B20248', 1, 2, '', NOW()),
('B20538', 1, 2, '', NOW()),
('B20227', 2, 3, '', NOW()),
('B20257', 2, 3, '', NOW()),
('B20141', 3, 4, '', NOW()),
('B20061', 3, 5, '', NOW()),
('B20235', 3, 5, '', NOW()),
('B02943', 3, 6, '', NOW()),
('B20149', 3, 7, '', NOW()),
('B20240', 4, 8, '', NOW()),
('B02533', 5, 9, '', NOW()),
('B02681', 5, 9, '', NOW()),
('B20102', 5, 9, '', NOW()),
('B20144', 5, 9, '', NOW());
-- ============================================================================
-- 6. 接驳台槽位 (dock_slot) — 各 9 槽位
-- ============================================================================
DELETE
FROM dock_slot;
ALTER sequence dock_slot_id_seq restart with 1;
INSERT INTO dock_slot (dock_no, slot_no, updated_at)
VALUES (1, 1, NOW()),
(1, 2, NOW()),
(1, 3, NOW()),
(1, 4, NOW()),
(1, 5, NOW()),
(1, 6, NOW()),
(1, 7, NOW()),
(1, 8, NOW()),
(1, 9, NOW()),
(2, 1, NOW()),
(2, 2, NOW()),
(2, 3, NOW()),
(2, 4, NOW()),
(2, 5, NOW()),
(2, 6, NOW()),
(2, 7, NOW()),
(2, 8, NOW()),
(2, 9, NOW()),
(3, 1, NOW()),
(3, 2, NOW()),
(3, 3, NOW()),
(3, 4, NOW()),
(3, 5, NOW()),
(3, 6, NOW()),
(3, 7, NOW()),
(3, 8, NOW()),
(3, 9, NOW()),
(4, 1, NOW()),
(4, 2, NOW()),
(4, 3, NOW()),
(4, 4, NOW()),
(4, 5, NOW()),
(4, 6, NOW()),
(4, 7, NOW()),
(4, 8, NOW()),
(4, 9, NOW()),
(5, 1, NOW()),
(5, 2, NOW()),
(5, 3, NOW()),
(5, 4, NOW()),
(5, 5, NOW()),
(5, 6, NOW()),
(5, 7, NOW()),
(5, 8, NOW()),
(5, 9, NOW()),
(6, 1, NOW()),
(6, 2, NOW()),
(6, 3, NOW()),
(6, 4, NOW()),
(6, 5, NOW()),
(6, 6, NOW()),
(6, 7, NOW()),
(6, 8, NOW()),
(6, 9, NOW()),
(7, 1, NOW()),
(7, 2, NOW()),
(7, 3, NOW()),
(7, 4, NOW()),
(7, 5, NOW()),
(7, 6, NOW()),
(7, 7, NOW()),
(7, 8, NOW()),
(7, 9, NOW()),
(8, 1, NOW()),
(8, 2, NOW()),
(8, 3, NOW()),
(8, 4, NOW()),
(8, 5, NOW()),
(8, 6, NOW()),
(8, 7, NOW()),
(8, 8, NOW()),
(8, 9, NOW()),
(9, 1, NOW()),
(9, 2, NOW()),
(9, 3, NOW()),
(9, 4, NOW()),
(9, 5, NOW()),
(9, 6, NOW()),
(9, 7, NOW()),
(9, 8, NOW()),
(9, 9, NOW()),
(10, 1, NOW()),
(10, 2, NOW()),
(10, 3, NOW()),
(10, 4, NOW()),
(10, 5, NOW()),
(10, 6, NOW()),
(10, 7, NOW()),
(10, 8, NOW()),
(10, 9, NOW());
DELETE
FROM recipe;
ALTER sequence recipe_id_seq restart with 1;
INSERT INTO recipe ("name", "code", "version", "desc", "total_steps", "is_active")
VALUES ('标准12步工艺路线', 'STD-12STEP', 1, 'CNC加工→高压清洗→内窥镜检测→去毛刺→除锈清洗→终检扫码→打标→抽检→下线', 12,
't');
DELETE
FROM recipe_step;
ALTER sequence recipe_step_id_seq restart with 1;
INSERT INTO recipe_step ("step_id", "step_name", "step_index", "step_type", "resource_type", "tool_type",
"allowed_resources", "processing_params", "next_step_default", "next_step_branches",
"restore_step", "desc", "recipe_id")
VALUES ('OP10', 'CNC加工', 1, 'OPERATION', 'CNC', '', NULL, '{}', 'OP20', '{}', 0, '', 1),
('OP20', '高压清洗', 2, 'OPERATION', 'WASHER_HP', '', NULL, '{}', 'OP30', '{}', 0, '', 1),
('OP30', '内窥镜检测', 3, 'OPERATION', 'INSPECTION', '', NULL, '{}', 'OP40', '{}', 0, '', 1),
('OP40', '检测判断', 4, 'JUDGE', '', '', NULL,
'{"setKey": "MEASURE_NG", "inputKey": "inspectionPass", "decisionType": "negate_bool"}', 'OP50',
'{"MEASURE_NG": "OP120"}', -1, '', 1),
('OP50', '热能去毛刺', 5, 'OPERATION', 'DEBURR', '', NULL, '{}', 'OP60', '{}', 0, '', 1),
('OP60', '除锈清洗', 6, 'OPERATION', 'CLEANING_LINE', '', NULL, '{}', 'OP70', '{}', 0, '', 1),
('OP70', '二次扫码', 7, 'FINAL_SCAN', '', 'SCANNER', NULL, '{}', 'OP80', '{}', 0, '', 1),
('OP80', '打标判断', 8, 'DECISION', '', '', NULL, '{"setKey": "NEED_MARKING", "decisionType": "scan_mismatch"}',
'OP100', '{"NEED_MARKING": "OP90"}', 0, '', 1),
('OP90', '激光打标', 9, 'LASER_MARK', '', 'LASER', NULL, '{}', 'OP100', '{}', 0, '', 1),
('OP100', '抽检判断', 10, 'DECISION', '', '', NULL,
'{"setKey": "NEED_SAMPLING", "signalName": "SamplingRequest", "decisionType": "signal_true"}', 'OP120',
'{"NEED_SAMPLING": "OP110"}', 0, '', 1),
('OP110', '抽检', 11, 'OPERATION', 'SAMPLING', '', NULL, '{}', 'OP120', '{}', 0, '', 1),
('OP120', '下线', 12, 'UNLOAD_DOCK', 'DOCK', '', NULL, '{}', '', '{}', 0, '', 1);