Files
MrleeAdmin/backend/plugin/produce/resource/database/seeds/ProduceDemoDataSeeder.php
T

631 lines
25 KiB
PHP

<?php
declare(strict_types=1);
namespace plugin\produce\resource\database\seeds;
use core\uuid\Snowflake;
use Illuminate\Database\Seeder;
use plugin\produce\app\model\Process;
use plugin\produce\app\model\ProcessStep;
use plugin\produce\app\model\StatusTransition;
use plugin\produce\app\model\StepRelation;
use plugin\produce\app\model\StepStatus;
class ProduceDemoDataSeeder extends Seeder
{
public function run(): void
{
$now = time();
$adminId = 1;
StatusTransition::withTrashed()->forceDelete();
StepRelation::withTrashed()->forceDelete();
StepStatus::withTrashed()->forceDelete();
ProcessStep::withTrashed()->forceDelete();
Process::withTrashed()->forceDelete();
$processes = [
'production' => Process::create([
'id' => Snowflake::generate(),
'process_code' => 'L1SC',
'process_name' => '生产工序',
'description' => '生产主流程示例数据',
'sort' => 0,
'status' => 1,
'step_count' => 3,
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]),
'addon' => Process::create([
'id' => Snowflake::generate(),
'process_code' => 'L1JZ',
'process_name' => '加装工序',
'description' => '加装分支示例数据',
'sort' => 10,
'status' => 1,
'step_count' => 1,
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]),
'repair' => Process::create([
'id' => Snowflake::generate(),
'process_code' => 'L1WX',
'process_name' => '异常工序',
'description' => '维修/异常处理示例数据',
'sort' => 20,
'status' => 1,
'step_count' => 3,
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]),
];
$steps = [
'panel' => ProcessStep::create([
'id' => Snowflake::generate(),
'process_id' => $processes['production']->id,
'step_code' => 'PB001',
'step_name' => '拼板',
'description' => '生产起始步骤',
'sort' => 0,
'status' => 1,
'prerequisite_steps' => [],
'prerequisite_mode' => 'none',
'prerequisite_require_final' => 1,
'allow_repeat_scan' => 1,
'repeat_scan_statuses' => [],
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]),
'assemble' => ProcessStep::create([
'id' => Snowflake::generate(),
'process_id' => $processes['production']->id,
'step_code' => 'ZZ001',
'step_name' => '组装',
'description' => '生产主流程第二步',
'sort' => 10,
'status' => 1,
'prerequisite_steps' => [],
'prerequisite_mode' => 'all',
'prerequisite_require_final' => 1,
'allow_repeat_scan' => 1,
'repeat_scan_statuses' => [],
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]),
'test' => ProcessStep::create([
'id' => Snowflake::generate(),
'process_id' => $processes['production']->id,
'step_code' => 'CS001',
'step_name' => '测试',
'description' => '生产主流程第三步',
'sort' => 20,
'status' => 1,
'prerequisite_steps' => [],
'prerequisite_mode' => 'any',
'prerequisite_require_final' => 0,
'allow_repeat_scan' => 1,
'repeat_scan_statuses' => [],
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]),
'addon' => ProcessStep::create([
'id' => Snowflake::generate(),
'process_id' => $processes['addon']->id,
'step_code' => 'JZ001',
'step_name' => '加装',
'description' => '加装支线步骤',
'sort' => 0,
'status' => 1,
'prerequisite_steps' => [],
'prerequisite_mode' => 'all',
'prerequisite_require_final' => 1,
'allow_repeat_scan' => 0,
'repeat_scan_statuses' => [],
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]),
'repair' => ProcessStep::create([
'id' => Snowflake::generate(),
'process_id' => $processes['repair']->id,
'step_code' => 'WX001',
'step_name' => '维修',
'description' => '异常维修步骤',
'sort' => 0,
'status' => 1,
'prerequisite_steps' => [],
'prerequisite_mode' => 'all',
'prerequisite_require_final' => 1,
'allow_repeat_scan' => 1,
'repeat_scan_statuses' => [],
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]),
'rework' => ProcessStep::create([
'id' => Snowflake::generate(),
'process_id' => $processes['repair']->id,
'step_code' => 'CP001',
'step_name' => '重配',
'description' => '异常重配步骤',
'sort' => 10,
'status' => 1,
'prerequisite_steps' => [],
'prerequisite_mode' => 'all',
'prerequisite_require_final' => 1,
'allow_repeat_scan' => 0,
'repeat_scan_statuses' => [],
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]),
'cancel' => ProcessStep::create([
'id' => Snowflake::generate(),
'process_id' => $processes['repair']->id,
'step_code' => 'TD001',
'step_name' => '退单',
'description' => '异常退单步骤',
'sort' => 20,
'status' => 1,
'prerequisite_steps' => [],
'prerequisite_mode' => 'all',
'prerequisite_require_final' => 1,
'allow_repeat_scan' => 0,
'repeat_scan_statuses' => [],
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]),
];
$statuses = [
'panel_processing' => StepStatus::create([
'id' => Snowflake::generate(),
'step_id' => $steps['panel']->id,
'status_code' => 'PB_PROCESSING',
'status_name' => '拼板中',
'is_initial' => 1,
'is_final' => 0,
'description' => '拼板初始状态',
'sort' => 0,
'status' => 1,
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]),
'panel_completed' => StepStatus::create([
'id' => Snowflake::generate(),
'step_id' => $steps['panel']->id,
'status_code' => 'PB_COMPLETED',
'status_name' => '拼板完成',
'is_initial' => 0,
'is_final' => 1,
'description' => '拼板完成状态',
'sort' => 10,
'status' => 1,
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]),
'panel_exception' => StepStatus::create([
'id' => Snowflake::generate(),
'step_id' => $steps['panel']->id,
'status_code' => 'PB_EXCEPTION',
'status_name' => '拼板异常',
'is_initial' => 0,
'is_final' => 1,
'description' => '拼板异常状态',
'sort' => 20,
'status' => 1,
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]),
'assemble_processing' => StepStatus::create([
'id' => Snowflake::generate(),
'step_id' => $steps['assemble']->id,
'status_code' => 'ZZ_PROCESSING',
'status_name' => '组装中',
'is_initial' => 1,
'is_final' => 0,
'description' => '组装初始状态',
'sort' => 0,
'status' => 1,
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]),
'assemble_completed' => StepStatus::create([
'id' => Snowflake::generate(),
'step_id' => $steps['assemble']->id,
'status_code' => 'ZZ_COMPLETED',
'status_name' => '组装完成',
'is_initial' => 0,
'is_final' => 1,
'description' => '组装完成状态',
'sort' => 10,
'status' => 1,
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]),
'assemble_exception' => StepStatus::create([
'id' => Snowflake::generate(),
'step_id' => $steps['assemble']->id,
'status_code' => 'ZZ_EXCEPTION',
'status_name' => '组装异常',
'is_initial' => 0,
'is_final' => 1,
'description' => '组装异常状态',
'sort' => 20,
'status' => 1,
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]),
'test_processing' => StepStatus::create([
'id' => Snowflake::generate(),
'step_id' => $steps['test']->id,
'status_code' => 'CS_PROCESSING',
'status_name' => '测试中',
'is_initial' => 1,
'is_final' => 0,
'description' => '测试初始状态',
'sort' => 0,
'status' => 1,
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]),
'test_passed' => StepStatus::create([
'id' => Snowflake::generate(),
'step_id' => $steps['test']->id,
'status_code' => 'CS_PASSED',
'status_name' => '测试通过',
'is_initial' => 0,
'is_final' => 1,
'description' => '测试通过状态',
'sort' => 10,
'status' => 1,
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]),
'test_failed' => StepStatus::create([
'id' => Snowflake::generate(),
'step_id' => $steps['test']->id,
'status_code' => 'CS_FAILED',
'status_name' => '测试不通过',
'is_initial' => 0,
'is_final' => 1,
'description' => '测试失败状态',
'sort' => 20,
'status' => 1,
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]),
'addon_processing' => StepStatus::create([
'id' => Snowflake::generate(),
'step_id' => $steps['addon']->id,
'status_code' => 'JZ_PROCESSING',
'status_name' => '加装中',
'is_initial' => 1,
'is_final' => 0,
'description' => '加装初始状态',
'sort' => 0,
'status' => 1,
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]),
'addon_completed' => StepStatus::create([
'id' => Snowflake::generate(),
'step_id' => $steps['addon']->id,
'status_code' => 'JZ_COMPLETED',
'status_name' => '加装完成',
'is_initial' => 0,
'is_final' => 1,
'description' => '加装完成状态',
'sort' => 10,
'status' => 1,
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]),
'repair_processing' => StepStatus::create([
'id' => Snowflake::generate(),
'step_id' => $steps['repair']->id,
'status_code' => 'WX_PROCESSING',
'status_name' => '维修中',
'is_initial' => 1,
'is_final' => 0,
'description' => '维修初始状态',
'sort' => 0,
'status' => 1,
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]),
'repair_completed' => StepStatus::create([
'id' => Snowflake::generate(),
'step_id' => $steps['repair']->id,
'status_code' => 'WX_COMPLETED',
'status_name' => '维修完成',
'is_initial' => 0,
'is_final' => 1,
'description' => '维修完成状态',
'sort' => 10,
'status' => 1,
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]),
'rework_completed' => StepStatus::create([
'id' => Snowflake::generate(),
'step_id' => $steps['rework']->id,
'status_code' => 'CP_COMPLETED',
'status_name' => '重配完成',
'is_initial' => 1,
'is_final' => 1,
'description' => '重配完成状态',
'sort' => 0,
'status' => 1,
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]),
'cancel_completed' => StepStatus::create([
'id' => Snowflake::generate(),
'step_id' => $steps['cancel']->id,
'status_code' => 'TD_COMPLETED',
'status_name' => '退单完成',
'is_initial' => 1,
'is_final' => 1,
'description' => '退单完成状态',
'sort' => 0,
'status' => 1,
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]),
];
$steps['assemble']->update([
'prerequisite_steps' => [$steps['panel']->id],
'repeat_scan_statuses' => [$statuses['panel_processing']->id],
]);
$steps['test']->update([
'prerequisite_steps' => [$steps['assemble']->id, $steps['addon']->id],
'repeat_scan_statuses' => [$statuses['assemble_processing']->id],
]);
$steps['panel']->update([
'repeat_scan_statuses' => [$statuses['rework_completed']->id, $statuses['cancel_completed']->id],
]);
$relations = [
[
'from_step_id' => $steps['panel']->id,
'to_step_id' => $steps['assemble']->id,
'relation_type' => 'normal',
'flow_condition' => [],
'priority' => 0,
'description' => '拼板完成后进入组装',
'sort' => 0,
],
[
'from_step_id' => $steps['assemble']->id,
'to_step_id' => $steps['test']->id,
'relation_type' => 'normal',
'flow_condition' => [],
'priority' => 0,
'description' => '组装完成后进入测试',
'sort' => 10,
],
[
'from_step_id' => $steps['addon']->id,
'to_step_id' => $steps['test']->id,
'relation_type' => 'normal',
'flow_condition' => [],
'priority' => 0,
'description' => '加装完成后可进入测试',
'sort' => 20,
],
[
'from_step_id' => $steps['test']->id,
'to_step_id' => $steps['assemble']->id,
'relation_type' => 'exception',
'flow_condition' => ['reason' => 'assembly_rework'],
'priority' => 0,
'description' => '测试失败后回流组装',
'sort' => 30,
],
[
'from_step_id' => $steps['assemble']->id,
'to_step_id' => $steps['repair']->id,
'relation_type' => 'exception',
'flow_condition' => ['reason' => 'repair_required'],
'priority' => 0,
'description' => '组装异常进入维修',
'sort' => 40,
],
[
'from_step_id' => $steps['test']->id,
'to_step_id' => $steps['repair']->id,
'relation_type' => 'exception',
'flow_condition' => ['reason' => 'repair_required'],
'priority' => 0,
'description' => '测试异常进入维修',
'sort' => 50,
],
[
'from_step_id' => $steps['panel']->id,
'to_step_id' => $steps['rework']->id,
'relation_type' => 'exception',
'flow_condition' => ['reason' => 'rework_required'],
'priority' => 0,
'description' => '拼板异常进入重配',
'sort' => 60,
],
[
'from_step_id' => $steps['assemble']->id,
'to_step_id' => $steps['cancel']->id,
'relation_type' => 'exception',
'flow_condition' => ['reason' => 'cancel_required'],
'priority' => 0,
'description' => '组装异常进入退单',
'sort' => 70,
],
];
foreach ($relations as $relation) {
StepRelation::create([
'id' => Snowflake::generate(),
'from_step_id' => $relation['from_step_id'],
'to_step_id' => $relation['to_step_id'],
'relation_type' => $relation['relation_type'],
'flow_condition' => $relation['flow_condition'],
'priority' => $relation['priority'],
'description' => $relation['description'],
'sort' => $relation['sort'],
'status' => 1,
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]);
}
$transitions = [
[
'step_id' => $steps['panel']->id,
'from_status_id' => $statuses['panel_processing']->id,
'to_status_id' => $statuses['panel_completed']->id,
'trigger_event' => 'next_step_scan',
'event_config' => null,
'auto_trigger' => 1,
'priority' => 0,
'transition_type' => 'primary',
'side_effect_type' => null,
'side_effect_config' => null,
'description' => '拼板完成后推进下一步',
'sort' => 0,
],
[
'step_id' => $steps['assemble']->id,
'from_status_id' => $statuses['assemble_processing']->id,
'to_status_id' => $statuses['assemble_completed']->id,
'trigger_event' => 'next_step_scan',
'event_config' => null,
'auto_trigger' => 1,
'priority' => 0,
'transition_type' => 'primary',
'side_effect_type' => null,
'side_effect_config' => null,
'description' => '组装完成后推进下一步',
'sort' => 10,
],
[
'step_id' => $steps['assemble']->id,
'from_status_id' => $statuses['assemble_processing']->id,
'to_status_id' => $statuses['assemble_exception']->id,
'trigger_event' => 'exception_trigger',
'event_config' => ['source' => 'manual'],
'auto_trigger' => 1,
'priority' => 5,
'transition_type' => 'primary',
'side_effect_type' => null,
'side_effect_config' => null,
'description' => '组装异常时转异常态',
'sort' => 20,
],
[
'step_id' => $steps['test']->id,
'from_status_id' => $statuses['test_processing']->id,
'to_status_id' => $statuses['test_passed']->id,
'trigger_event' => 'scan_trigger',
'event_config' => null,
'auto_trigger' => 1,
'priority' => 0,
'transition_type' => 'primary',
'side_effect_type' => null,
'side_effect_config' => null,
'description' => '测试通过',
'sort' => 30,
],
[
'step_id' => $steps['test']->id,
'from_status_id' => $statuses['test_processing']->id,
'to_status_id' => $statuses['test_failed']->id,
'trigger_event' => 'exception_trigger',
'event_config' => ['source' => 'manual'],
'auto_trigger' => 1,
'priority' => 5,
'transition_type' => 'primary',
'side_effect_type' => null,
'side_effect_config' => null,
'description' => '测试失败',
'sort' => 40,
],
];
foreach ($transitions as $transition) {
StatusTransition::create([
'id' => Snowflake::generate(),
'step_id' => $transition['step_id'],
'from_status_id' => $transition['from_status_id'],
'to_status_id' => $transition['to_status_id'],
'trigger_event' => $transition['trigger_event'],
'event_config' => $transition['event_config'],
'auto_trigger' => $transition['auto_trigger'],
'priority' => $transition['priority'],
'transition_type' => $transition['transition_type'],
'side_effect_type' => $transition['side_effect_type'],
'side_effect_config' => $transition['side_effect_config'],
'description' => $transition['description'],
'sort' => $transition['sort'],
'status' => 1,
'created_by' => $adminId,
'updated_by' => $adminId,
'created_at' => $now,
'updated_at' => $now,
]);
}
}
}