78 lines
2.3 KiB
PHP
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;
|
|
}
|
|
} |