feat: 实现TCP Server
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
|
||||
namespace app\repository;
|
||||
|
||||
use app\model\EctMetaFacilities;
|
||||
use app\model\EctMetaProcess;
|
||||
use app\model\EctMetaRfidreader;
|
||||
|
||||
/**
|
||||
* 读卡器数据仓库
|
||||
* 封装 ect_meta_rfidreader / ect_meta_facilities / ect_meta_process 的联合查询
|
||||
*/
|
||||
class ReaderRepository extends BaseRepository
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
$this->model = new EctMetaRfidreader();
|
||||
}
|
||||
|
||||
public static function new(): static
|
||||
{
|
||||
return new self();
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过读卡器编号查询读卡器所在步骤信息
|
||||
*
|
||||
* 联合查询路径:
|
||||
* ect_meta_rfidreader.reader_no
|
||||
* → ect_meta_facilities.reader_id
|
||||
* → ect_meta_process.process_id
|
||||
* → process_name(步骤名称)
|
||||
*
|
||||
* @param string $readerNo 读卡器编号(大写)
|
||||
* @return array{readerId: string, readerType: string}|null
|
||||
* readerId = reader_id(读卡器ID)
|
||||
* readerType = process_name(该读卡器所在步骤,如"清洗")
|
||||
*/
|
||||
public function findReaderInfo(string $readerNo): ?array
|
||||
{
|
||||
$readerNo = strtoupper($readerNo);
|
||||
|
||||
$reader = EctMetaRfidreader::where('reader_no', $readerNo)
|
||||
->select('reader_id')
|
||||
->first();
|
||||
|
||||
if ($reader === null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$readerId = (string) $reader->reader_id;
|
||||
|
||||
$facility = EctMetaFacilities::where('reader_id', $readerId)
|
||||
->select('process_id')
|
||||
->first();
|
||||
|
||||
if ($facility === null) {
|
||||
return ['readerId' => $readerId, 'readerType' => ''];
|
||||
}
|
||||
|
||||
$process = EctMetaProcess::where('process_id', $facility->process_id)
|
||||
->select('process_name')
|
||||
->first();
|
||||
|
||||
$readerType = (string)$process?->process_name;
|
||||
|
||||
return ['readerId' => $readerId, 'readerType' => $readerType];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user