ikinci temizlik tamamlandı
This commit is contained in:
@@ -0,0 +1,146 @@
|
||||
<?php
|
||||
// Supports tablosunu çek
|
||||
$supportsQuery = db("supports")
|
||||
->select("status", "total_weight", "quantity", "zone", "drawing_no", "line_number")
|
||||
->whereNotNull('status')
|
||||
->orderBy("zone");
|
||||
|
||||
$supports = method_exists($supportsQuery, 'cursor') ? $supportsQuery->cursor() : $supportsQuery->get();
|
||||
|
||||
// Weld_logs'tan project ve design_area mapping'i oluştur (performans için)
|
||||
$weldLogsMap = [];
|
||||
if (count($supports) > 0) {
|
||||
$drawingNos = [];
|
||||
$lineNumbers = [];
|
||||
foreach ($supports as $sup) {
|
||||
if (!empty($sup->drawing_no)) {
|
||||
$drawingNos[] = $sup->drawing_no;
|
||||
}
|
||||
if (!empty($sup->line_number)) {
|
||||
$lineNumbers[] = $sup->line_number;
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($drawingNos) || !empty($lineNumbers)) {
|
||||
$weldLogsQuery = db("weld_logs")
|
||||
->select("iso_number", "line_number", "project", "design_area");
|
||||
|
||||
if (!empty($drawingNos)) {
|
||||
$weldLogsQuery->whereIn("iso_number", array_unique($drawingNos));
|
||||
}
|
||||
if (!empty($lineNumbers)) {
|
||||
$weldLogsQuery->whereIn("line_number", array_unique($lineNumbers));
|
||||
}
|
||||
|
||||
$weldLogs = $weldLogsQuery->get();
|
||||
|
||||
foreach ($weldLogs as $wl) {
|
||||
$key = ($wl->iso_number ?? '') . '|' . ($wl->line_number ?? '');
|
||||
if (!empty($key) && $key !== '|') {
|
||||
$weldLogsMap[$key] = [
|
||||
'project' => $wl->project ?? null,
|
||||
'design_area' => $wl->design_area ?? null
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$results = [];
|
||||
$projectAreaStats = []; // Project+Area bazında istatistikler için
|
||||
|
||||
foreach ($supports as $row) {
|
||||
$row = (array) $row;
|
||||
|
||||
$status = $row['status'] ?? '';
|
||||
$zone = $row['zone'] ?? '';
|
||||
$drawingNo = $row['drawing_no'] ?? '';
|
||||
$lineNumber = $row['line_number'] ?? '';
|
||||
|
||||
// Weld_logs mapping'den project ve design_area'yı al
|
||||
$key = $drawingNo . '|' . $lineNumber;
|
||||
$weldLogData = $weldLogsMap[$key] ?? null;
|
||||
|
||||
// Project: weld_logs.project varsa onu kullan, yoksa zone'u kullan
|
||||
$project = !empty($weldLogData['project']) ? strtoupper($weldLogData['project']) : strtoupper($zone);
|
||||
|
||||
// Area: weld_logs.design_area varsa onu kullan, yoksa zone'u kullan
|
||||
$area = !empty($weldLogData['design_area']) ? strtoupper($weldLogData['design_area']) : strtoupper($zone);
|
||||
|
||||
// Determine status category
|
||||
// Gerçek status değerleri: "", "0K", "OK"
|
||||
$statusCategory = 'Other';
|
||||
$statusTrimmed = trim($status);
|
||||
|
||||
// OK = Installed/Complete Support
|
||||
if (strtoupper($statusTrimmed) === 'OK') {
|
||||
$statusCategory = 'Installed Support';
|
||||
}
|
||||
// 0K veya boş = Incomplete (henüz tamamlanmamış)
|
||||
elseif (strtoupper($statusTrimmed) === '0K' || empty($statusTrimmed)) {
|
||||
$statusCategory = 'Incomplete Support Installation';
|
||||
}
|
||||
// Eski mantık (eğer gelecekte farklı status değerleri eklenirse)
|
||||
else {
|
||||
$statusLower = strtolower($statusTrimmed);
|
||||
|
||||
// Önce incomplete kontrolü (daha spesifik)
|
||||
if (stripos($statusLower, 'incomplete') !== false) {
|
||||
if (stripos($statusLower, 'weld') !== false) {
|
||||
$statusCategory = 'Weld-Incomplete Support';
|
||||
} else {
|
||||
$statusCategory = 'Incomplete Support Installation';
|
||||
}
|
||||
}
|
||||
// Sonra complete kontrolü (weld ile birlikte)
|
||||
elseif (stripos($statusLower, 'weld') !== false && stripos($statusLower, 'complete') !== false) {
|
||||
$statusCategory = 'Weld-Complete Support';
|
||||
}
|
||||
// Son olarak installed veya complete (genel)
|
||||
elseif (stripos($statusLower, 'installed') !== false || stripos($statusLower, 'complete') !== false) {
|
||||
$statusCategory = 'Installed Support';
|
||||
}
|
||||
}
|
||||
|
||||
$key = $project . '|' . $area;
|
||||
if (!isset($projectAreaStats[$key])) {
|
||||
$projectAreaStats[$key] = [
|
||||
'total' => 0,
|
||||
'installed' => 0
|
||||
];
|
||||
}
|
||||
|
||||
$quantity = (int) ($row['quantity'] ?? 0);
|
||||
$projectAreaStats[$key]['total'] += $quantity;
|
||||
|
||||
// Installed sayısını hesapla - Installed Support veya Weld-Complete Support
|
||||
if ($statusCategory === 'Installed Support' || $statusCategory === 'Weld-Complete Support') {
|
||||
$projectAreaStats[$key]['installed'] += $quantity;
|
||||
}
|
||||
|
||||
$results[] = [
|
||||
'Project' => $project,
|
||||
'Area' => $area,
|
||||
'Status' => $statusCategory,
|
||||
'Weight' => (double) ($row['total_weight'] ?? 0), // kg bazında
|
||||
'Quantity' => (int) $quantity, // adet bazında
|
||||
'Original Status' => $status
|
||||
];
|
||||
}
|
||||
|
||||
// Progress hesapla ve ekle
|
||||
foreach ($results as &$result) {
|
||||
$key = $result['Project'] . '|' . $result['Area'];
|
||||
$total = $projectAreaStats[$key]['total'] ?? 0;
|
||||
$installed = $projectAreaStats[$key]['installed'] ?? 0;
|
||||
|
||||
$progress = 0;
|
||||
if ($total > 0) {
|
||||
$progress = round(($installed / $total) * 100, 2);
|
||||
}
|
||||
|
||||
$result['Progress'] = $progress;
|
||||
}
|
||||
|
||||
echo json_encode_tr($results);
|
||||
?>
|
||||
Reference in New Issue
Block a user