79 lines
2.9 KiB
PHP
79 lines
2.9 KiB
PHP
<?php
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
$results = DB::table('weld_logs')
|
|
->select([
|
|
'ste_subcontractor',
|
|
|
|
// RT Shop
|
|
DB::raw('SUM(CASE WHEN type_of_joint = "S" AND rt_result IS NOT NULL AND rt_result != "" THEN 1 ELSE 0 END) as rt_shop_total'),
|
|
DB::raw('SUM(CASE WHEN type_of_joint = "S" AND rt_result NOT IN ("", "Accept / Годен") THEN 1 ELSE 0 END) as rt_shop_repair'),
|
|
|
|
// RT Field
|
|
DB::raw('SUM(CASE WHEN type_of_joint = "F" AND rt_result IS NOT NULL AND rt_result != "" THEN 1 ELSE 0 END) as rt_field_total'),
|
|
DB::raw('SUM(CASE WHEN type_of_joint = "F" AND rt_result NOT IN ("", "Accept / Годен") THEN 1 ELSE 0 END) as rt_field_repair'),
|
|
|
|
// UT Shop
|
|
DB::raw('SUM(CASE WHEN type_of_joint = "S" AND ut_result IS NOT NULL AND ut_result != "" THEN 1 ELSE 0 END) as ut_shop_total'),
|
|
DB::raw('SUM(CASE WHEN type_of_joint = "S" AND ut_result NOT IN ("", "Accept / Годен") THEN 1 ELSE 0 END) as ut_shop_repair'),
|
|
|
|
// UT Field
|
|
DB::raw('SUM(CASE WHEN type_of_joint = "F" AND ut_result IS NOT NULL AND ut_result != "" THEN 1 ELSE 0 END) as ut_field_total'),
|
|
DB::raw('SUM(CASE WHEN type_of_joint = "F" AND ut_result NOT IN ("", "Accept / Годен") THEN 1 ELSE 0 END) as ut_field_repair'),
|
|
])
|
|
->whereNotNull('ste_subcontractor')
|
|
->where('ste_subcontractor', '!=', '')
|
|
->groupBy('ste_subcontractor')
|
|
->orderBy('ste_subcontractor')
|
|
->get();
|
|
|
|
$formattedResults = [];
|
|
|
|
foreach ($results as $r) {
|
|
// Calculate RT Shop Rate
|
|
$rtShopRate = 0;
|
|
if ($r->rt_shop_total > 0) {
|
|
$rtShopRate = round(($r->rt_shop_repair * 100.0) / $r->rt_shop_total, 2);
|
|
}
|
|
|
|
// Calculate RT Field Rate
|
|
$rtFieldRate = 0;
|
|
if ($r->rt_field_total > 0) {
|
|
$rtFieldRate = round(($r->rt_field_repair * 100.0) / $r->rt_field_total, 2);
|
|
}
|
|
|
|
// Calculate UT Shop Rate
|
|
$utShopRate = 0;
|
|
if ($r->ut_shop_total > 0) {
|
|
$utShopRate = round(($r->ut_shop_repair * 100.0) / $r->ut_shop_total, 2);
|
|
}
|
|
|
|
// Calculate UT Field Rate
|
|
$utFieldRate = 0;
|
|
if ($r->ut_field_total > 0) {
|
|
$utFieldRate = round(($r->ut_field_repair * 100.0) / $r->ut_field_total, 2);
|
|
}
|
|
|
|
// Calculate General Rate
|
|
$totalRepair = $r->rt_shop_repair + $r->rt_field_repair + $r->ut_shop_repair + $r->ut_field_repair;
|
|
$totalExamined = $r->rt_shop_total + $r->rt_field_total + $r->ut_shop_total + $r->ut_field_total;
|
|
|
|
$generalRate = 0;
|
|
if ($totalExamined > 0) {
|
|
$generalRate = round(($totalRepair * 100.0) / $totalExamined, 2);
|
|
}
|
|
|
|
$formattedResults[] = [
|
|
'Subcontractor' => $r->ste_subcontractor,
|
|
'RT Shop' => $rtShopRate,
|
|
'RT Field' => $rtFieldRate,
|
|
'UT Shop' => $utShopRate,
|
|
'UT Field' => $utFieldRate,
|
|
'General Rate %' => $generalRate
|
|
];
|
|
}
|
|
|
|
echo json_encode($formattedResults, JSON_PRETTY_PRINT);
|
|
?>
|
|
|