From 70b13b83608be1fb7c48888e2d04304f409ca57b Mon Sep 17 00:00:00 2001 From: JoySystem_v Date: Mon, 19 Aug 2024 19:43:41 +0300 Subject: [PATCH] =?utf8?q?=D0=BB=D0=BE=D0=B3=D0=B8=D1=80=D0=BE=D0=B2=D0=B0?= =?utf8?q?=D0=BD=D0=B8=D0=B5=20=D0=B8=20=D0=BF=D1=80=D0=B5=D0=BE=D0=B1?= =?utf8?q?=D1=80=D0=B0=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B7?= =?utf8?q?=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20held=20=D0=BA=20boo?= =?utf8?q?l?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/api2/controllers/DataController.php | 36 ++++++++++++++++++----- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/erp24/api2/controllers/DataController.php b/erp24/api2/controllers/DataController.php index 8a8e45b0..b0490a57 100644 --- a/erp24/api2/controllers/DataController.php +++ b/erp24/api2/controllers/DataController.php @@ -44,7 +44,7 @@ class DataController extends BaseController { const OUT_DIR = // __DIR__ . "/../json"; - "/var/www/erp24/api2/json"; + "/www/api2/json"; // "/var/www/www-root/data/www/api.bazacvetov24.ru/data/json"; public function actionRequest() { @@ -808,8 +808,9 @@ class DataController extends BaseController { $matrixProductsIds = SalaryHelper::getMatrixProductsIds(); } - if (!empty($result['checks']) && count($result['checks']) > 1) { + if (!empty($result['checks']) && count($result['checks']) < 300) { foreach ($result["checks"] as $arr) { + $check_id = $arr["id"]; if ($arr["seller_id"] == '00000000-0000-0000-0000-000000000000') { $arr["seller_id"] = "NULL"; @@ -1037,6 +1038,7 @@ class DataController extends BaseController { $dataArrayValues = $this->getSalesDate($result["checks"], $update); foreach ($dataArrayValues as $keyMethodName => $rowValue) { + try { $this->$keyMethodName($rowValue, $update); } catch (Exception $e) { @@ -1183,7 +1185,7 @@ class DataController extends BaseController { 'guid' => $arr2["id"], 'date_up' => date('Y-m-d H:i:s'), 'name' => $arr2["name"], - 'held' => isset($arr2["held"]) ? ($arr2["held"] ? 1 : 0) : 0 + 'held' => isset($arr2["held"]) ? (bool)$arr2["held"] : false ], ['check_id' => $arr2["id"]]); // $createChecks3 = CreateChecks::find()->where(['check_id' => $arr2["id"]])->orderBy(['id' => SORT_DESC])->one(); // if ($createChecks3) { @@ -1404,7 +1406,7 @@ class DataController extends BaseController { 'terminal_id' => $arr["terminal_id"] ?? '', // terminal_id, 'skidka' => $arr["discount"] ?? 0, // skidka 'date_up' => $date_up, // date_up - 'held' => 0, + 'held' => false, ]; } @@ -1589,16 +1591,36 @@ class DataController extends BaseController { private function insertDataSales($values, $tableName, $columns) { $chunkValues = array_chunk($values, 1000); + // Логирование общего количества значений и количества фрагментов + file_put_contents(self::OUT_DIR . '/error_upload.txt', PHP_EOL . "Total values: " . count($values), FILE_APPEND); + file_put_contents(self::OUT_DIR . '/error_upload.txt', PHP_EOL . "Total chunks: " . count($chunkValues), FILE_APPEND); + foreach ($chunkValues as $key => $rows) { + // Преобразование значений в $rows перед вставкой + foreach ($rows as &$row) { + if (isset($row['held'])) { + // Приведение значений к булевому типу + $row['held'] = (bool)$row['held']; + } + } + + + // Логирование текущего фрагмента перед попыткой вставки + $jsonRows = json_encode($rows, JSON_UNESCAPED_UNICODE); + file_put_contents(self::OUT_DIR . '/sales_upload.json', PHP_EOL . "Chunk $key: " . $jsonRows, FILE_APPEND); try { + file_put_contents(self::OUT_DIR . '/sales_upload2.json', PHP_EOL . "Inserting chunk $key", FILE_APPEND); $transaction = \Yii::$app->db->beginTransaction(); Yii::$app->db->createCommand()->batchInsert($tableName, $columns, $rows)->execute(); $transaction->commit(); } catch (Exception $e) { + // $transaction->rollBack(); $errorString = substr($e->getMessage(), 0, 2000); - InfoLogService::setInfoLog(__FILE__, __LINE__, $tableName , 'error_id_25'); - InfoLogService::setInfoLog(__FILE__, __LINE__, $errorString , 'error_id_25_22'); - LogService::apiErrorLog(json_encode(["error_id" => 25, "error" => $errorString], JSON_UNESCAPED_UNICODE)); + // InfoLogService::setInfoLog(__FILE__, __LINE__, $tableName , 'error_id_25'); + // InfoLogService::setInfoLog(__FILE__, __LINE__, $errorString , 'error_id_25_22'); + // LogService::apiErrorLog(json_encode(["error_id" => 25, "error" => $errorString], JSON_UNESCAPED_UNICODE)); + file_put_contents(self::OUT_DIR . '/sales_upload3.json', PHP_EOL . "Error in chunk $key: " . $errorString, FILE_APPEND); + file_put_contents(self::OUT_DIR . '/sales_upload3.json', PHP_EOL . "Failed chunk data: " . $jsonRows, FILE_APPEND); } } } -- 2.39.5