Files
tcpserver-flow/app/repository/ProcessDurationRepository.php
T
2026-03-08 22:58:56 +08:00

78 lines
2.3 KiB
PHP

<?php
namespace app\repository;
use app\model\EctMetaProcess;
class ProcessDurationRepository extends BaseRepository
{
public function __construct()
{
$this->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<string, int> [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;
}
}