ikinci temizlik tamamlandı

This commit is contained in:
Ümit Tunç
2026-04-28 21:15:09 +03:00
parent f80443aec0
commit 37e7296527
8313 changed files with 2400677 additions and 0 deletions
@@ -0,0 +1,177 @@
<?php
// resources/views/admin-ajax/test-package/iso-base-interactive.blade.php
use App\Models\TestPackage;
use App\Models\TestPackBaseStatus;
header('Content-Type: application/json');
// Step 1: test_pack_base_statuses ve test_packages tablolarını join ederek veri çekelim
$query = db('test_pack_base_statuses')
->leftJoin('test_packages', function($join) {
$join->on('test_pack_base_statuses.test_package_no', '=', 'test_packages.test_package_number');
})
->select([
'test_pack_base_statuses.id',
'test_pack_base_statuses.drawing_no as iso_number',
'test_pack_base_statuses.test_package_no',
'test_pack_base_statuses.subcontractor',
'test_pack_base_statuses.responsible_person',
'test_pack_base_statuses.iso_qty',
'test_pack_base_statuses.priority',
'test_pack_base_statuses.priority_info',
'test_pack_base_statuses.target_test_date',
'test_pack_base_statuses.test_medium',
'test_pack_base_statuses.test_pressure_mpa',
'test_pack_base_statuses.tp_status',
'test_pack_base_statuses.total_iso_quantity',
'test_pack_base_statuses.welding_status',
'test_pack_base_statuses.remaining_wdi',
'test_pack_base_statuses.total_wdi',
'test_pack_base_statuses.total_complated_wdi',
'test_pack_base_statuses.pipe_progress',
'test_pack_base_statuses.total_joint_qty',
'test_pack_base_statuses.total_welded_joint_qty',
'test_pack_base_statuses.support_progress',
'test_pack_base_statuses.support_remaining',
'test_pack_base_statuses.welded_support_quantity',
'test_pack_base_statuses.repair_qty',
'test_pack_base_statuses.repair_completed',
'test_pack_base_statuses.repair_remaining',
'test_pack_base_statuses.punch_status',
'test_pack_base_statuses.punch_a_quantity',
'test_pack_base_statuses.punch_b_quantity',
'test_pack_base_statuses.punch_c_quantity',
'test_pack_base_statuses.vt_backlog',
'test_pack_base_statuses.rt_backlog',
'test_pack_base_statuses.ut_backlog',
'test_pack_base_statuses.mt_backlog',
'test_pack_base_statuses.pmi_backlog',
'test_pack_base_statuses.pt_backlog',
'test_pack_base_statuses.ferrit_backlog',
'test_pack_base_statuses.pwht_backlog',
'test_pack_base_statuses.area',
'test_pack_base_statuses.discipline',
'test_pack_base_statuses.test_type',
'test_packages.welding_progress',
'test_packages.test_date',
'test_packages.status',
'test_packages.reinstatement_status',
'test_packages.cleaning_blowing_drying_status'
]);
// Sıralama
$query->orderBy('area', 'ASC')
->orderBy('test_package_no', 'ASC')
->orderBy('drawing_no', 'ASC');
// Tüm veriyi getir
$data = $query->get();
// Test progress hesaplama - test_package_no bazında test_date dolu olanları say
$testPackageTestCounts = [];
$testPackageTotalCounts = [];
foreach ($data as $row) {
$testPackageNo = $row->test_package_no;
if (!isset($testPackageTotalCounts[$testPackageNo])) {
$testPackageTotalCounts[$testPackageNo] = 0;
$testPackageTestCounts[$testPackageNo] = 0;
}
$testPackageTotalCounts[$testPackageNo]++;
if (!empty($row->test_date)) {
$testPackageTestCounts[$testPackageNo]++;
}
}
// Hesaplanmış alanları ekle
foreach ($data as $row) {
// NULL değerleri 0 yap
$row->total_wdi = (float)($row->total_wdi ?? 0);
$row->total_complated_wdi = (float)($row->total_complated_wdi ?? 0);
$row->pipe_progress = (float)($row->pipe_progress ?? 0);
$row->support_progress = (float)($row->support_progress ?? 0);
$row->repair_qty = (int)($row->repair_qty ?? 0);
$row->repair_completed = (int)($row->repair_completed ?? 0);
// Completion oranları
$row->wdi_completion_percentage = $row->total_wdi > 0 ?
round(($row->total_complated_wdi / $row->total_wdi) * 100, 2) : 0;
$row->pipe_progress_percentage = round($row->pipe_progress, 2);
$row->support_progress_percentage = round($row->support_progress, 2);
// Repair completion oranı
$row->repair_completion_percentage = $row->repair_qty > 0 ?
round(($row->repair_completed / $row->repair_qty) * 100, 2) : 0;
// NDT toplam backlog
$row->total_ndt_backlog = (int)($row->vt_backlog ?? 0) + (int)($row->rt_backlog ?? 0) +
(int)($row->ut_backlog ?? 0) + (int)($row->mt_backlog ?? 0) +
(int)($row->pt_backlog ?? 0) + (int)($row->pmi_backlog ?? 0) +
(int)($row->ferrit_backlog ?? 0) + (int)($row->pwht_backlog ?? 0);
// Punch toplam
$row->total_punch_qty = (int)($row->punch_a_quantity ?? 0) + (int)($row->punch_b_quantity ?? 0) +
(int)($row->punch_c_quantity ?? 0);
// Welding completion oranı - basit hesaplama
$row->welding_completion_percentage = $row->wdi_completion_percentage;
$row->total_welds = 1; // dummy value
$row->completed_welds = $row->wdi_completion_percentage >= 100 ? 1 : 0;
// Weld Progress - welding_progress alanından veya hesaplanmış değerden
$row->weld_progress = $row->welding_progress ?? $row->wdi_completion_percentage;
// Test Progress - test_package_no bazında hesaplanmış değerleri ekle
$testPackageNo = $row->test_package_no;
$row->tested_count = $testPackageTestCounts[$testPackageNo] ?? 0;
$row->total_test_count = $testPackageTotalCounts[$testPackageNo] ?? 0;
$row->test_progress = $row->tested_count . '/' . $row->total_test_count;
// Status analizi
$row->overall_status = 'In Progress';
if ($row->tp_status == 'Completed' || $row->welding_status == 'Completed') {
$row->overall_status = 'Completed';
} elseif ($row->wdi_completion_percentage >= 100 && $row->total_ndt_backlog == 0) {
$row->overall_status = 'Ready for Test';
} elseif ($row->total_ndt_backlog > 0) {
$row->overall_status = 'NDT Pending';
} elseif ($row->total_punch_qty > 0) {
$row->overall_status = 'Punch List Open';
}
// General status mapping
$row->tp_general_status = $row->tp_status ?? $row->welding_status ?? 'Unknown';
// Renk kodlama için priority level
$row->priority_level = 'normal';
if (stripos($row->priority ?? '', 'high') !== false || stripos($row->priority ?? '', 'urgent') !== false) {
$row->priority_level = 'high';
} elseif (stripos($row->priority ?? '', 'low') !== false) {
$row->priority_level = 'low';
}
// Tarih formatları
$row->target_test_date_formatted = $row->target_test_date ?
date('d.m.Y', strtotime($row->target_test_date)) : '';
// Progress bar değerleri
$row->wdi_progress_color = $row->wdi_completion_percentage >= 90 ? 'success' :
($row->wdi_completion_percentage >= 70 ? 'warning' : 'danger');
$row->ndt_status_color = $row->total_ndt_backlog == 0 ? 'success' : 'danger';
}
// Laravel Collection'ı array'e çevir ve JSON response
$dataArray = $data->map(function($item) {
return (array) $item;
})->toArray();
// Veri kontrolü - eğer boşsa boş array döndür
if (empty($dataArray)) {
echo json_encode_tr([]);
exit;
}
// DevExtreme DataGrid için JSON response - json_encode_tr kullan (Türkçe karakter desteği için)
echo json_encode_tr($dataArray);