model = new EctMetaProcess(); } public static function new(): BaseRepository { return new self(); } public function getProcessDurations(): array { $result = []; $processes = EctMetaProcess::all(); foreach ($processes as $process) { $processType = $process->process_type ?? ''; $processName = $process->process_name ?? ''; $processDuration = $process->process_duration ?? 0; if (!isset($result[$processType])) $result[$processType] = []; $result[$processType][$processName] = $processDuration; } return $result; } /** * 查询某流程类型下某步骤的时长(秒) * * @param string $processType 流程类型,如"手工洗"、"机洗(晨洗)"等 * @param string $processName 步骤名称,如"清洗"、"消毒"等 * @return int|null 返回 process_duration(秒),未找到返回 null */ public function getDurationByProcessTypeAndName(string $processType, string $processName): ?int { $record = EctMetaProcess::where('process_type', $processType) ->where('process_name', $processName) ->where('status', 1) ->select('process_duration') ->first(); if ($record === null) { return null; } return (int) $record->process_duration; } /** * 查询某流程类型下所有步骤的时长,返回 [步骤名称 => 秒数] 映射 * * @param string $processType 流程类型,如"手工洗"、"机洗(晨洗)"等 * @return array [process_name => process_duration] */ public function getDurationsByProcessType(string $processType): array { $records = EctMetaProcess::where('process_type', $processType) ->where('status', 1) ->select('process_name', 'process_duration') ->get(); $result = []; foreach ($records as $record) { $result[$record->process_name] = (int) $record->process_duration; } return $result; } }