id = $condition->id; $dto->taskId = $condition->task_id; $dto->conditionId = $condition->condition_id; $dto->conditionType = $condition->condition_type; $dto->conditionParams = $condition->condition_params ?? []; $dto->targetValue = $condition->target_value; $dto->isRequired = (bool)$condition->is_required; $dto->sortOrder = $condition->sort_order ?? 0; // 加载条件信息 if ($condition->relationLoaded('condition')) { $baseCondition = $condition->condition; $dto->conditionCode = $baseCondition->code; $dto->conditionName = $baseCondition->name; $dto->conditionDescription = $baseCondition->description; } return $dto; } /** * 转换为模型数据数组 * * @return array */ public function toModelArray(): array { return [ 'id' => $this->id ?? null, 'task_id' => $this->taskId, 'condition_id' => $this->conditionId, 'condition_type' => $this->conditionType, 'condition_params' => $this->conditionParams, 'target_value' => $this->targetValue, 'is_required' => $this->isRequired, 'sort_order' => $this->sortOrder, ]; } /** * 设置进度信息 * * @param int $currentValue 当前值 * @return self */ public function setProgress(int $currentValue): self { $this->currentValue = $currentValue; $this->progressPercent = $this->targetValue > 0 ? min(100, round(($currentValue / $this->targetValue) * 100)) : 0; return $this; } }