<?php
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Domain\Asset\Register\UseCase\CreateAsset;
require_once __DIR__ . '/../../../../api/v1/vendor/autoload.php';
require_once __DIR__ . '/../../../../functions/nestedset_assets.php';
$log = new Logger('log');
$month = date('Y-m');
$log->pushHandler(new StreamHandler(__DIR__ . '/log/22152log' . $month . '.log', Logger::DEBUG));
$post = @file_get_contents('php://input'); //获取请求体,@的作用为屏蔽警告,可去除。
$post = json_decode($post, true);
$data = $post[0];
$log->info("asset_code的值" . $data['asset_code'] . ";" . "asset_service_start_date 得值:" . $data['asset_service_start_date']);
if (empty($data['asset_code'])) {
Flight::json(['message' => 'asset_code is empty'], 401);
exit();
}
if (empty($data['asset_service_start_date'])) {
Flight::json(['message' => 'asset_service_start_date is empty'], 401);
exit();
}
if (!isset($data['criticality_code'])) {
$data['criticality_code'] = 0;
}
if (!isset($data['function_code'])) {
$data['function_code'] = 0;
}
if (!isset($data['asset_ff_1'])) {
$data['asset_ff_1'] = '';
}
if (!isset($data['asset_ff_2'])) {
$data['asset_ff_2'] = '';
}
if (!isset($data['asset_acquisition_price'])) {
$data['asset_acquisition_price'] = '';
}
if (!isset($data['asset_model'])) {
$data['asset_model'] = '';
}
if (!isset($data['asset_description'])) {
$data['asset_description'] = '';
}
if (!isset($data['asset_serial_number'])) {
$data['asset_serial_number'] = '';
}
if (!isset($data['asset_manufacture_date'])) {
$data['asset_manufacture_date'] = '';
}
if (!isset($data['asset_installation_date'])) {
$data['asset_installation_date'] = '';
}
if (!isset($data['asset_warranty_date'])) {
$data['asset_warranty_date'] = '';
}
if (!isset($data['supplier_code'])) {
$data['supplier_code'] = '';
}
if (!isset($data['manufacturer_code'])) {
$data['manufacturer_code'] = '';
}
//criticality_code 换取id
$criticality_query = $DB->prepare("
SELECT criticality_id
FROM mic_criticality
WHERE criticality_code = :criticality_code
");
$criticality_query->bindvalue(':criticality_code', $data['criticality_code']);
if (!$criticality_query->execute()) {
Flight::error(new Exception(errorInfo($criticality_query)));
}
$criticality_line = $criticality_query->fetch(PDO::FETCH_OBJ);
$criticality_id = $criticality_line->criticality_id;
//function_code 换取id
$function_query = $DB->prepare("
SELECT function_id
FROM mic_function
WHERE function_code = :function_code
");
$function_query->bindvalue(':function_code', $data['function_code']);
if (!$function_query->execute()) {
Flight::error(new Exception(errorInfo($function_query)));
}
$function_line = $function_query->fetch(PDO::FETCH_OBJ);
$function_id = $function_line->function_id;
// 用location_code 换取id,
$location_query = $DB->prepare("
SELECT location_id
FROM asset_location
WHERE location_code = :location_code
");
$location_query->bindvalue(':location_code', $data['location_code']);
if (!$location_query->execute()) {
Flight::error(new Exception(errorInfo($location_query)));
}
$location_line = $location_query->fetch(PDO::FETCH_OBJ);
$location_id = $location_line->location_id;
// 大类code换去大类id
$category_query = $DB->prepare("
SELECT asset_category_id
FROM mic_asset_category
WHERE asset_category_code = :asset_category_code
");
$category_query->bindvalue(':asset_category_code', $data['asset_category_code']);
if (!$category_query->execute()) {
Flight::error(new Exception(errorInfo($category_query)));
}
$category_line = $category_query->fetch(PDO::FETCH_OBJ);
$asset_category_id = $category_line->asset_category_id;
// 根据供应商code 获取供应商ID
$pur_supplier_query = $DB->prepare("
SELECT supplier_id
FROM pur_supplier
WHERE supplier_code = :supplier_code
");
$pur_supplier_query->bindvalue(':supplier_code', $data['supplier_code']);
if (!$pur_supplier_query->execute()) {
Flight::error(new Exception(errorInfo($pur_supplier_query)));
}elseif ($pur_supplier_query->rowCount() == 0) {
$supplier_id =0;
} else {
$pur_line = $pur_supplier_query->fetch(PDO::FETCH_OBJ);
$supplier_id = $pur_line->supplier_id;
}
// 制造商code,获取制造商ID
$manufacturer_query = $DB->prepare("
SELECT supplier_id
FROM pur_supplier
WHERE supplier_code = :manufacturer_code
");
$manufacturer_query->bindvalue(':manufacturer_code', $data['manufacturer_code']);
if (!$manufacturer_query->execute()) {
Flight::error(new Exception(errorInfo($manufacturer_query)));
} elseif ($manufacturer_query->rowCount() == 0) {
$manufacturer_id = 0;
} else {
$manufacturer_line = $manufacturer_query->fetch(PDO::FETCH_OBJ);
$manufacturer_id=$manufacturer_line->supplier_id;
}
// 中类code换取中类ID
$asset_class_query = $DB->prepare("
SELECT asset_class_id
FROM mic_asset_class
WHERE asset_class_code = :asset_class_code
");
$asset_class_query->bindvalue(':asset_class_code', $data['asset_class_code']);
if (!$asset_class_query->execute()) {
Flight::error(new Exception(errorInfo($asset_class_query)));
}
$asset_class_line = $asset_class_query->fetch(PDO::FETCH_OBJ);
$asset_class_id = $asset_class_line->asset_class_id;
$object = new CreateAsset($DB);
$params =
[
'asset_name' => $data['asset_name'],
'asset_code' => $data['asset_code'],
'asset_nature' => $data['asset_nature'],
'location_id' => $location_id,
'asset_status' => $data['asset_status'],
'asset_model' => $data['asset_model'],
'asset_category_id' => $asset_category_id,
'supplier_id' => $supplier_id,
'asset_description' => $data['asset_description'],
'asset_acquisition_price' => $data['asset_acquisition_price'],
'asset_service_start_date' => $data['asset_service_start_date'],
'asset_ff_1' => $data['asset_ff_1'],
'asset_ff_2' => $data['asset_ff_2'],
'function_id' => $function_id,
'criticality_id' => $criticality_id,
'asset_primary_code' => $data['asset_primary_code'],
'asset_serial_number' => $data['asset_serial_number'],
'asset_class_id' => $asset_class_id,
"manufacturer_id"=>$manufacturer_line->supplier_id
];
$result_son = $object->execute($params);
//进行更改时间 asset_service_start_date
$set_var = $DB->query("SET @eamic_user = 'Automatic';");
$query = $DB->prepare("
UPDATE asset_list
SET asset_service_start_date = :date,
asset_manufacture_date=:asset_manufacture_date,
asset_installation_date=:asset_installation_date,
asset_warranty_date=:asset_warranty_date,
asset_primary_code= :asset_primary_code
WHERE asset_id = :asset_id
;");
$query->bindvalue(':date', $data['asset_service_start_date']);
$query->bindvalue(':asset_manufacture_date', $data['asset_manufacture_date']);
$query->bindvalue(':asset_installation_date', $data['asset_installation_date']);
$query->bindvalue(':asset_warranty_date', $data['asset_warranty_date']);
$query->bindvalue(':asset_primary_code', $data['asset_primary_code']);
$query->bindvalue(':asset_id', $result_son['asset_id']);
if (!$query->execute()) {
Flight::error(new Exception(errorInfo($query)));
} elseif ($query->rowCount() > 0) {
Flight::json(['message' => '父级asset_service_start_date 修改成功'], 401);
$log->info('子级修改成功' . 'asset_id:' . $result_son['asset_id'] . '成功的更新了' . $query->rowCount() . '条记录');
}
// 找父
$parent_query = $DB->prepare("
SELECT asset_id
FROM asset_list
WHERE asset_primary_code = :asset_primary_code
");
$parent_query->bindvalue(':asset_primary_code', $data['asset_primary_code']);
if (!$parent_query->execute()) {
Flight::error(new Exception(errorInfo($parent_query)));
} elseif ($parent_query->rowcount() == 0) {
Flight::json(['message' => '父编码 is empty'], 401);
}
$parent_query_line = $parent_query->fetch(PDO::FETCH_OBJ);
// 找见父ID
if (!isset($parent_query_line->asset_id)) {
Flight::json(['message' => 'asset_primary_code is empty'], 401);
exit();
}
// 进行父子级同步
$treeModel = new NestedSet($DB);
$move_result = $treeModel->addChild($result_son['asset_id'], $parent_query_line->asset_id);
$result = [
'asset_id' => $result_son['asset_id'],
'parent_id' => $parent_query_line->asset_id,
'details' => '父子级关系'
];
update_log($result);