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); } } 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; } } 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; } }