command->info('开始创建SOP模板数据...'); // 获取或创建一个用户作为创建者 $user = User::first(); if (!$user) { $this->command->warn('未找到用户,跳过SOP模板创建'); return; } // 1. 光束线开机流程 $this->command->info('创建光束线开机流程...'); $template1 = SopTemplate::create([ 'name' => '光束线标准开机流程', 'description' => '本流程规定了光束线开机前的检查项目、开机步骤和注意事项,确保光束线安全、正常启动。', 'category' => '光束线操作', 'tags' => ['标准作业', '开机流程', '安全'], 'version' => '1.0.0', 'status' => 'published', 'applicable_departments' => ['BL02U1', 'BL07U', 'BL08U', 'BL13HB', 'BL13U', 'BL14B', 'BL14W', 'BL15U', 'BL16B', 'BL16U1'], 'applicable_positions' => ['操作员', '值班员'], 'published_at' => now()->subMonths(2), 'created_by' => $user->id, ]); $steps1 = [ [ 'step_number' => 1, 'title' => '开机前安全检查', 'content' => '

检查光束线周围环境,确保无障碍物和安全隐患。

', 'sort_order' => 1, 'is_required' => true, ], [ 'step_number' => 2, 'title' => '真空系统检查', 'content' => '

检查真空系统状态。

', 'sort_order' => 2, 'is_required' => true, ], [ 'step_number' => 3, 'title' => '冷却水系统检查', 'content' => '

检查冷却水系统。

', 'sort_order' => 3, 'is_required' => true, ], [ 'step_number' => 4, 'title' => '启动光束线', 'content' => '

按照正确顺序启动光束线。

  1. 打开控制系统
  2. 等待系统自检完成
  3. 启动束流
  4. 观察束流参数
', 'sort_order' => 4, 'is_required' => true, ], [ 'step_number' => 5, 'title' => '运行状态确认', 'content' => '

确认光束线正常运行。

', 'sort_order' => 5, 'is_required' => true, ], ]; foreach ($steps1 as $stepData) { $step = SopStep::create(array_merge($stepData, ['sop_template_id' => $template1->id])); // 为第1步添加确认任务 if ($stepData['step_number'] == 1) { SopInteractiveTask::create([ 'sop_step_id' => $step->id, 'task_type' => 'confirm', 'task_config' => [ 'title' => '安全检查确认', 'message' => '我已完成所有安全检查项目,确认无安全隐患', ], 'validation_rules' => [], 'timeout_seconds' => 300, 'is_required' => true, ]); } // 为第4步添加拍照任务 if ($stepData['step_number'] == 4) { SopInteractiveTask::create([ 'sop_step_id' => $step->id, 'task_type' => 'photo', 'task_config' => [ 'title' => '拍摄控制系统状态', 'message' => '请拍摄控制系统界面照片', 'min_photos' => 1, 'max_photos' => 3, ], 'validation_rules' => [], 'timeout_seconds' => 180, 'is_required' => true, ]); } } // 2. 用户实验准备流程 $this->command->info('创建用户实验准备流程...'); $template2 = SopTemplate::create([ 'name' => '用户实验准备标准流程', 'description' => '本流程规定了用户实验前的准备工作、样品安装和参数设置步骤。', 'category' => '实验操作', 'tags' => ['用户实验', '标准作业', '样品准备'], 'version' => '1.0.0', 'status' => 'published', 'applicable_departments' => ['BL02U1', 'BL07U', 'BL08U', 'BL13HB', 'BL13U', 'BL14B', 'BL14W', 'BL15U', 'BL16B', 'BL16U1'], 'applicable_positions' => ['操作员', '实验员'], 'published_at' => now()->subMonth(), 'created_by' => $user->id, ]); $steps2 = [ [ 'step_number' => 1, 'title' => '扫描用户机时单', 'content' => '

使用扫码枪扫描用户机时单二维码,获取实验信息。

', 'sort_order' => 1, 'is_required' => true, ], [ 'step_number' => 2, 'title' => '样品安全检查', 'content' => '

检查样品安全性。

', 'sort_order' => 2, 'is_required' => true, ], [ 'step_number' => 3, 'title' => '样品安装', 'content' => '

将样品安装到样品台。

', 'sort_order' => 3, 'is_required' => true, ], [ 'step_number' => 4, 'title' => '实验参数设置', 'content' => '

在控制系统中设置实验参数。

', 'sort_order' => 4, 'is_required' => true, ], ]; foreach ($steps2 as $stepData) { $step = SopStep::create(array_merge($stepData, ['sop_template_id' => $template2->id])); // 为第1步添加扫码任务 if ($stepData['step_number'] == 1) { SopInteractiveTask::create([ 'sop_step_id' => $step->id, 'task_type' => 'scan', 'task_config' => [ 'title' => '扫描机时单二维码', 'scan_type' => 'qrcode', ], 'validation_rules' => [ 'pattern' => '^[A-Z0-9]{10,20}$', ], 'timeout_seconds' => 60, 'is_required' => true, ]); } // 为第2步添加选择任务 if ($stepData['step_number'] == 2) { SopInteractiveTask::create([ 'sop_step_id' => $step->id, 'task_type' => 'select', 'task_config' => [ 'title' => '样品安全检查结果', 'options' => ['通过', '不通过'], ], 'validation_rules' => [], 'timeout_seconds' => 120, 'is_required' => true, ]); } // 为第3步添加拍照任务 if ($stepData['step_number'] == 3) { SopInteractiveTask::create([ 'sop_step_id' => $step->id, 'task_type' => 'photo', 'task_config' => [ 'title' => '拍摄样品安装照片', 'message' => '请拍摄样品安装完成后的照片', 'min_photos' => 1, 'max_photos' => 2, ], 'validation_rules' => [], 'timeout_seconds' => 180, 'is_required' => true, ]); } } // 3. 创建一个草稿模板 $this->command->info('创建草稿模板...'); SopTemplate::create([ 'name' => '光束线日常维护流程(草稿)', 'description' => '光束线日常维护保养操作流程,包括清洁、检查、记录等内容。', 'category' => '设备维护', 'tags' => ['维护', '保养'], 'version' => '0.1.0', 'status' => 'draft', 'applicable_departments' => ['BL02U1', 'BL07U', 'BL08U'], 'applicable_positions' => ['维修工', '技术员'], 'published_at' => null, 'created_by' => $user->id, ]); $this->command->info('SOP模板数据创建完成!'); $this->command->newLine(); $this->command->info('=== 生成的SOP模板摘要 ==='); $this->command->info('总模板数量: ' . SopTemplate::count()); $this->command->info(' - 已发布: ' . SopTemplate::where('status', 'published')->count()); $this->command->info(' - 草稿: ' . SopTemplate::where('status', 'draft')->count()); $this->command->info(' - 已归档: ' . SopTemplate::where('status', 'archived')->count()); $this->command->info('总步骤数量: ' . SopStep::count()); $this->command->info('总交互任务数量: ' . SopInteractiveTask::count()); } }