Files
EdgeManager/app/EDataCapture/EDataCapture.php

113 lines
3.8 KiB
PHP
Raw Normal View History

<?php
namespace EdgeManager\EDataCapture;
class EDataCapture {
function __construct(
protected $dbconn,
protected $post = NULL,
protected $get = NULL,
public $check_res = NULL,
protected $working_subclass = NULL,
protected $code_type = [],
protected $data = []
) {
if (!is_null($this -> post)) {
if (!in_array(
$this -> post -> param -> working_subclass,
ENodeConfigure::get_working_subclasses($this -> dbconn)
)) {
$this -> check_res = 'WRONG_WORKING_SUBCLASS';
return;
} else {
$this -> working_subclass = $this -> post -> param -> working_subclass;
}
$res = pg_fetch_all(pg_query($this -> dbconn,
"SELECT code, type
FROM hf_mes_scada_data_capture_node_configure"
));
$code_type = &$this -> code_type;
array_walk($res, function(&$v, $k) use (&$code_type) {
$code_type[$v['code']] = $v['type'];
});
foreach ($this -> post -> param -> data as $row) {
$check_func = 'is_' . $code_type[$row -> code];
if (!$check_func($row -> value)) {
$this -> check_res = 'MISMATCH_TYPE';
return;
} else {
$this -> data[$row -> code][] = [
'value' => $row -> value,
'device_code' => $row -> device_code ?? NULL,
'batch' => $row -> batch ?? NULL
];
}
}
unset($row);
}
}
2022-07-10 03:36:18 +08:00
function set_node_data() {
pg_query($this -> dbconn, "BEGIN");
foreach ($this -> data as $code => $value) {
foreach (array_chunk($value, 6710885, true) as $chunk) {
$sql_head = sprintf(
"INSERT INTO hf_mes_scada_data_capture_node_data_%s (code, v_%s, device_code, batch)
VALUES",
$this -> working_subclass,
$this -> code_type[$code]
);
foreach ($chunk as $row) {
$sql_values[] = sprintf(
"('%s', '%s', %s, %s)",
$code,
$row['value'],
$row['device_code'] ?? 'DEFAULT',
$row['batch'] ?? 'DEFAULT'
);
}
$res[] = pg_query($this -> dbconn, $sql_head . implode(',', $sql_values));
unset($row, $sql_values);
}
unset($chunk);
}
unset($code, $value);
if (in_array(false, $res)) {
pg_query($this -> dbconn, "ROLLBACK");
return false;
} else {
pg_query($this -> dbconn, "COMMIT");
return true;
}
}
2022-07-10 03:36:18 +08:00
function get_node_data() {
$name_type = pg_fetch_assoc(pg_query($this -> dbconn, sprintf(
"SELECT name, type
FROM hf_mes_scada_data_capture_node_configure
WHERE working_subclass = '%s'
AND code = '%s'",
$this -> get['working_subclass'],
$this -> get['code']
)));
$res = pg_fetch_all(pg_query($this -> dbconn, sprintf(
"SELECT id, v_%s AS value, device_code, batch, capture_time
FROM hf_mes_scada_data_capture_node_data_%s
WHERE code = '%s'",
$name_type['type'],
$this -> get['working_subclass'],
$this -> get['code']
)));
array_walk($res, function(&$v, $k) use ($name_type) {
$v['name'] = $name_type['name'];
});
return $res;
}
}