Files
citrus-cms/app/Services/WeldLogTriggers/Triggers/TestPackageOperationsTrigger.php
T
2026-04-28 21:14:25 +03:00

614 lines
28 KiB
PHP

<?php
namespace App\Services\WeldLogTriggers\Triggers;
use App\Services\WeldLogTriggers\Base\BaseTrigger;
use App\Models\TestPackage;
use App\Models\PunchList;
use App\Models\TestPackBaseStatus;
use App\Helpers\TransactionHelper;
use Illuminate\Support\Facades\Log;
/**
* Test Package Operations Trigger
*
* Comprehensive test package management including:
* - Supports updates
* - Punch list tracking
* - WDI calculations
* - Golden joints tracking
* - NDT calculations
* - Test package status updates
*/
class TestPackageOperationsTrigger extends BaseTrigger
{
public function getName(): string
{
return 'Test Package Operations';
}
public function getOrder(): int
{
return 7;
}
public function getDependentFields(): array
{
return [
'test_package_no',
'iso_number',
'nps_1',
'nps_2',
'outside_diameter_1',
'outside_diameter_2',
'line_number',
'project',
'design_area',
'piping_type',
'circuit_number',
'p_id',
'type_of_test',
'test_pressure',
'quantity_of_iso',
'welding_date',
'rt_test_date',
'ut_test_date',
'mt_test_date',
'pt_test_date',
'vt_test_date',
'pwht_test_date',
'pmi_test_date',
'ferrite_test_date',
'no_of_the_joint_as_per_as_built_survey'
];
}
protected function process($data, $beforeData, array $context): array
{
$weldLogs = db("weld_logs")->orderBy("test_package_no", "DESC")
->where("iso_number", $data->iso_number)
->where("test_package_no", $data->test_package_no)
->get();
$repairLogs = db("repair_logs")
->where("iso_number", $data->iso_number)
->where("test_package_no", $data->test_package_no)
->get();
$supports = db("supports")
->where("line_number", $data->line_number)
->get();
// Update supports weld_or_assembled_date when welding_date is available
if (!empty($data->welding_date) && !empty($data->line_number)) {
db("supports")
->where("line_number", $data->line_number)
->where(function($query) use ($data) {
$query->where("support_code", $data->element_code_1)
->orWhere("support_code", $data->element_code_2);
})
->update([
"weld_or_assembled_date" => $data->welding_date
]);
}
$punchLists = PunchList::where("line_isometric_no", $data->line_number)
->where("test_package", $data->test_package_no)
->get();
$logTypes = array_keys(log_test_types());
$testTypeToMedium = [
'PNEUMATIC' => 'Air',
'HYDRAULIC' => 'Water',
'VISUAL' => '-',
'ACUISTIC' => '-',
];
// Delete empty test packages
TestPackage::orWhere("test_package_number", "")->orWhereNull("test_package_number")->delete();
TestPackBaseStatus::orWhere("test_package_no", "")->orWhereNull("test_package_no")->delete();
$weldLogTestPackCount = 0;
// Calculate support statistics
$supportStats = $this->calculateSupportStats($supports);
// Calculate punch list statistics
$punchListStats = $this->calculatePunchListStats($punchLists);
// Calculate weld log statistics
$weldLogStats = $this->calculateWeldLogStats($weldLogs, $logTypes);
// Get NDT calculations
// Temporarily set $_GET['type'] for the view's getEsit() helper
$originalGetType = $_GET['type'] ?? null;
$_GET['type'] = 'test_packs';
try {
$ndtCalculation = j(view('admin-ajax.ndt-calculation-no-cache', [
'test_package_no' => $data->test_package_no,
'iso_number2' => $data->iso_number,
'type' => 'test_packs',
])->render());
} finally {
// Restore original $_GET['type']
if ($originalGetType !== null) {
$_GET['type'] = $originalGetType;
} else {
unset($_GET['type']);
}
}
$tpStats = $ndtCalculation['tpStats'] ?? [];
$tpIsoStats = $ndtCalculation['tpISOStats'] ?? [];
// Process Test Package data in chunks
$this->processTestPackageData(
$weldLogs,
$punchListStats,
$weldLogStats,
$tpStats,
$tpIsoStats,
$supportStats,
$testTypeToMedium,
$weldLogTestPackCount
);
// Sync weld logs to test packages for this specific test package
try {
if(isset($data->test_package_no) && $data->test_package_no != "") {
$syncParams = [
'test_package_no' => $data->test_package_no
];
$syncResult = view('cron.weld_logs-sync-from-weldlog-to-test-pack', $syncParams)->render();
Log::debug("Weld logs sync completed for test package: " . $data->test_package_no);
}
} catch (\Throwable $th) {
Log::error("Weld logs sync failed for test package: " . $data->test_package_no . " - " . $th->getMessage());
}
return [
'success' => true,
'processed_records' => $weldLogTestPackCount
];
}
/**
* Calculate support statistics
*/
protected function calculateSupportStats($supports): array
{
$supportStats = [];
$supportStatsTP = [];
$isoToTP = [];
foreach($supports AS $support) {
$tpNo = @$isoToTP[$support->line_number];
if(!isset($supportStatsTP[$tpNo]['support_remaining'])) {
$supportStatsTP[$tpNo]['support_remaining'] = 0;
$supportStatsTP[$tpNo]['welded_support_quantity'] = 0;
$supportStatsTP[$tpNo]['support_progress'] = 0;
}
if(!isset($supportStats[$support->line_number]['support_remaining']))
$supportStats[$support->line_number]['support_remaining'] = 0;
if(!isset($supportStats[$support->line_number]['welded_support_quantity']))
$supportStats[$support->line_number]['welded_support_quantity'] = 0;
if(!isset($supportStats[$support->line_number]['support_progress']))
$supportStats[$support->line_number]['support_progress'] = 0;
if(!rejected_date($support->weld_or_assembled_date) && $support->erection_type == "Weld") {
$supportStats[$support->line_number]['welded_support_quantity']+= $support->quantity;
$supportStatsTP[$tpNo]['welded_support_quantity']+= $support->quantity;
} else {
$supportStats[$support->line_number]['support_remaining']+= $support->quantity;
$supportStatsTP[$tpNo]['support_remaining']+= $support->quantity;
}
if($supportStats[$support->line_number]['welded_support_quantity'] > 0) {
$supportStats[$support->line_number]['support_progress'] =
100 - ($supportStats[$support->line_number]['support_remaining'] * 100) /
($supportStats[$support->line_number]['welded_support_quantity'] + $supportStats[$support->line_number]['support_remaining']);
} else {
$supportStats[$support->line_number]['support_progress'] = 0;
}
if($supportStatsTP[$tpNo]['welded_support_quantity'] > 0) {
$supportStatsTP[$tpNo]['support_progress'] =
100 - ($supportStatsTP[$tpNo]['support_remaining'] * 100) /
($supportStatsTP[$tpNo]['welded_support_quantity'] + $supportStatsTP[$tpNo]['support_remaining']);
} else {
$supportStatsTP[$tpNo]['support_progress'] = 0;
}
}
return ['supportStats' => $supportStats, 'supportStatsTP' => $supportStatsTP];
}
/**
* Calculate punch list statistics
*/
protected function calculatePunchListStats($punchLists): array
{
$stats = [];
$punchListNumbers = [];
foreach($punchLists AS $punchList) {
$drawingNo = $punchList->line_isometric_no;
if(!isset($stats[$drawingNo][$punchList->test_package]['punch_a_quantity']))
$stats[$drawingNo][$punchList->test_package]['punch_a_quantity'] = 0;
if(!isset($stats[$drawingNo][$punchList->test_package]['punch_b_quantity']))
$stats[$drawingNo][$punchList->test_package]['punch_b_quantity'] = 0;
if(!isset($stats[$drawingNo][$punchList->test_package]['punch_c_quantity']))
$stats[$drawingNo][$punchList->test_package]['punch_c_quantity'] = 0;
if(!isset($punchListNumbers[$punchList->test_package]))
$punchListNumbers[$punchList->test_package] = [];
if(!in_array($punchList->punch_list_no, $punchListNumbers[$punchList->test_package]))
$punchListNumbers[$punchList->test_package][] = $punchList->punch_list_no;
if(!isset($stats[$punchList->test_package]['punch_a_open_quantity']))
$stats[$punchList->test_package]['punch_a_open_quantity'] = 0;
if(!isset($stats[$punchList->test_package]['punch_b_open_quantity']))
$stats[$punchList->test_package]['punch_b_open_quantity'] = 0;
if(!isset($stats[$punchList->test_package]['punch_c_open_quantity']))
$stats[$punchList->test_package]['punch_c_open_quantity'] = 0;
if($punchList->category == "A") {
if($punchList->status == "Open") {
$stats[$punchList->test_package]['punch_a_open_quantity']++;
}
$stats[$drawingNo][$punchList->test_package]['punch_a_quantity']++;
}
if($punchList->category == "B") {
if($punchList->status == "Open") {
$stats[$punchList->test_package]['punch_b_open_quantity']++;
}
$stats[$drawingNo][$punchList->test_package]['punch_b_quantity']++;
}
if($punchList->category == "C") {
if($punchList->status == "Open") {
$stats[$punchList->test_package]['punch_c_open_quantity']++;
}
$stats[$drawingNo][$punchList->test_package]['punch_c_quantity']++;
}
$stats[$punchList->test_package]['found_date'] = $punchList->found_date;
$stats[$punchList->test_package]['punch_list'] = $punchList->punch_list;
}
return ['stats' => $stats, 'punchListNumbers' => $punchListNumbers];
}
/**
* Calculate weld log statistics including golden joints, WDI, and backlogs
*/
protected function calculateWeldLogStats($weldLogs, $logTypes): array
{
$stats = [];
$quantity_of_iso = [];
$addedSheet = [];
foreach($weldLogs AS $weldLog) {
$jointNo = $weldLog->no_of_the_joint_as_per_as_built_survey;
if(!isset($stats[$weldLog->iso_number][$weldLog->test_package_no]['goldenJoints']))
$stats[$weldLog->iso_number][$weldLog->test_package_no]['goldenJoints'] = 0;
if(!isset($quantity_of_iso[$weldLog->test_package_no]['total_qty']))
$quantity_of_iso[$weldLog->test_package_no]['total_qty'] = 0;
if(!isset($addedSheet[$weldLog->test_package_no]))
$addedSheet[$weldLog->test_package_no] = [];
if(!in_array($weldLog->quantity_of_iso, $addedSheet[$weldLog->test_package_no])) {
$quantity_of_iso[$weldLog->test_package_no]['total_qty']++;
$addedSheet[$weldLog->test_package_no][] = $weldLog->quantity_of_iso;
}
if(!isset($quantity_of_iso[$weldLog->iso_number][$weldLog->test_package_no]['total_qty']))
$quantity_of_iso[$weldLog->iso_number][$weldLog->test_package_no]['total_qty'] = 0;
if(!isset($addedSheet[$weldLog->iso_number][$weldLog->test_package_no]))
$addedSheet[$weldLog->iso_number][$weldLog->test_package_no] = [];
if(!in_array($weldLog->quantity_of_iso, $addedSheet[$weldLog->iso_number][$weldLog->test_package_no])) {
$quantity_of_iso[$weldLog->iso_number][$weldLog->test_package_no]['total_qty']++;
$addedSheet[$weldLog->iso_number][$weldLog->test_package_no][] = $weldLog->quantity_of_iso;
}
if(!isset($stats[$weldLog->test_package_no]['goldenJoints']))
$stats[$weldLog->test_package_no]['goldenJoints'] = 0;
if(strpos(strtoupper($jointNo), "GJ") !== false) {
$stats[$weldLog->iso_number][$weldLog->test_package_no]['goldenJoints']++;
$stats[$weldLog->test_package_no]['goldenJoints']++;
}
if(!isset($quantity_of_iso[$weldLog->iso_number][$weldLog->test_package_no]['total_iso_quantity']))
$quantity_of_iso[$weldLog->iso_number][$weldLog->test_package_no]['total_iso_quantity'] = 0;
if(!isset($stats[$weldLog->iso_number][$weldLog->test_package_no]['rt_ut_status']))
$stats[$weldLog->iso_number][$weldLog->test_package_no]['rt_ut_status'] = 0;
$backlogs = [
'rt_backlog', 'ut_backlog', 'mt_backlog', 'pmi_backlog',
'vt_backlog', 'pt_backlog', 'ferrit_backlog', 'pwht_backlog', 'total_backlog',
];
foreach($backlogs AS $backlog) {
if(!isset($stats[$weldLog->iso_number][$weldLog->test_package_no][$backlog]))
$stats[$weldLog->iso_number][$weldLog->test_package_no][$backlog] = 0;
if(!isset($stats[$weldLog->test_package_no][$backlog]))
$stats[$weldLog->test_package_no][$backlog] = 0;
}
if(!isset($stats[$weldLog->test_package_no]['total_backlog']))
$stats[$weldLog->test_package_no]['total_backlog'] = 0;
if(!isset($stats[$weldLog->iso_number][$weldLog->test_package_no]['rt_ut_done']))
$stats[$weldLog->iso_number][$weldLog->test_package_no]['rt_ut_done'] = 0;
if(!isset($stats[$weldLog->iso_number][$weldLog->test_package_no]['mt_pt_backlog']))
$stats[$weldLog->iso_number][$weldLog->test_package_no]['mt_pt_backlog'] = 0;
if(!isset($stats[$weldLog->iso_number][$weldLog->test_package_no]['mt_pt_done']))
$stats[$weldLog->iso_number][$weldLog->test_package_no]['mt_pt_done'] = 0;
if(!isset($stats[$weldLog->iso_number][$weldLog->test_package_no]['remaining_wdi']))
$stats[$weldLog->iso_number][$weldLog->test_package_no]['remaining_wdi'] = 0;
if(!isset($stats[$weldLog->iso_number][$weldLog->test_package_no]['total_wdi']))
$stats[$weldLog->iso_number][$weldLog->test_package_no]['total_wdi'] = 0;
if(!isset($stats[$weldLog->iso_number][$weldLog->test_package_no]['total_complated_wdi']))
$stats[$weldLog->iso_number][$weldLog->test_package_no]['total_complated_wdi'] = 0;
if(!isset($stats[$weldLog->iso_number][$weldLog->test_package_no]['total_joint_qty']))
$stats[$weldLog->iso_number][$weldLog->test_package_no]['total_joint_qty'] = 0;
if(!isset($stats[$weldLog->iso_number][$weldLog->test_package_no]['total_welded_joint_qty']))
$stats[$weldLog->iso_number][$weldLog->test_package_no]['total_welded_joint_qty'] = 0;
if(!isset($stats[$weldLog->iso_number][$weldLog->test_package_no]['welded_support_quantity']))
$stats[$weldLog->iso_number][$weldLog->test_package_no]['welded_support_quantity'] = 0;
foreach($logTypes AS $logType) {
$weldLogArray = (Array) $weldLog;
$stats[$weldLog->test_package_no]['total_backlog'] += (float) $weldLogArray[$logType . "_scope"];
}
if(!isset($addedSheet[$weldLog->iso_number][$weldLog->test_package_no]['total_iso']))
$addedSheet[$weldLog->iso_number][$weldLog->test_package_no]['total_iso'] = [];
if(!in_array($weldLog->quantity_of_iso, $addedSheet[$weldLog->iso_number][$weldLog->test_package_no]['total_iso'])) {
$quantity_of_iso[$weldLog->iso_number][$weldLog->test_package_no]['total_iso_quantity']++;
$addedSheet[$weldLog->iso_number][$weldLog->test_package_no]['total_iso'][] = $weldLog->quantity_of_iso;
}
if(rejected_date($weldLog->welding_date)) {
$stats[$weldLog->iso_number][$weldLog->test_package_no]['remaining_wdi'] += (float) $weldLog->nps_1;
}
// Backlog calculations for each test type
if(rejected_date($weldLog->rt_test_date)) {
$stats[$weldLog->iso_number][$weldLog->test_package_no]['rt_backlog']++;
$stats[$weldLog->test_package_no]['rt_backlog']++;
}
if(rejected_date($weldLog->ut_test_date)) {
$stats[$weldLog->iso_number][$weldLog->test_package_no]['ut_backlog']++;
$stats[$weldLog->test_package_no]['ut_backlog']++;
}
if(rejected_date($weldLog->pwht_test_date)) {
$stats[$weldLog->iso_number][$weldLog->test_package_no]['pwht_backlog']++;
$stats[$weldLog->test_package_no]['pwht_backlog']++;
}
if(rejected_date($weldLog->pmi_test_date)) {
$stats[$weldLog->iso_number][$weldLog->test_package_no]['pmi_backlog']++;
$stats[$weldLog->test_package_no]['pmi_backlog']++;
}
if(rejected_date($weldLog->ferrite_test_date)) {
$stats[$weldLog->iso_number][$weldLog->test_package_no]['ferrit_backlog']++;
$stats[$weldLog->test_package_no]['ferrit_backlog']++;
}
if(rejected_date($weldLog->pt_test_date)) {
$stats[$weldLog->iso_number][$weldLog->test_package_no]['pt_backlog']++;
$stats[$weldLog->test_package_no]['pt_backlog']++;
}
if(rejected_date($weldLog->mt_test_date)) {
$stats[$weldLog->iso_number][$weldLog->test_package_no]['mt_backlog']++;
$stats[$weldLog->test_package_no]['mt_backlog']++;
}
if(rejected_date($weldLog->vt_test_date)) {
$stats[$weldLog->iso_number][$weldLog->test_package_no]['vt_backlog']++;
$stats[$weldLog->test_package_no]['vt_backlog']++;
}
if(!rejected_date($weldLog->welding_date)) {
$stats[$weldLog->iso_number][$weldLog->test_package_no]['total_complated_wdi'] += (float) $weldLog->nps_1;
$stats[$weldLog->iso_number][$weldLog->test_package_no]['total_welded_joint_qty']++;
}
$stats[$weldLog->iso_number][$weldLog->test_package_no]['total_wdi'] += (float) $weldLog->nps_1;
// Welding progress calculation - ISO based stats
$totalWdi = $stats[$weldLog->iso_number][$weldLog->test_package_no]['total_wdi'];
$totalComplatedWdi = $stats[$weldLog->iso_number][$weldLog->test_package_no]['total_complated_wdi'];
if ($totalWdi > 0) {
$stats[$weldLog->iso_number][$weldLog->test_package_no]['welding_progress'] =
round(($totalComplatedWdi * 100) / $totalWdi, 2);
} else {
$stats[$weldLog->iso_number][$weldLog->test_package_no]['welding_progress'] = 0;
}
$stats[$weldLog->iso_number][$weldLog->test_package_no]['total_joint_qty']++;
}
return ['stats' => $stats, 'quantity_of_iso' => $quantity_of_iso];
}
/**
* Process and update test package data
*/
protected function processTestPackageData(
$weldLogs,
$punchListStats,
$weldLogStats,
$tpStats,
$tpIsoStats,
$supportStats,
$testTypeToMedium,
&$weldLogTestPackCount
) {
$punchListNumbers = $punchListStats['punchListNumbers'];
$stats = array_merge_recursive($punchListStats['stats'], $weldLogStats['stats']);
$quantity_of_iso = $weldLogStats['quantity_of_iso'];
$supportStatsData = $supportStats['supportStats'];
$supportStatsTP = $supportStats['supportStatsTP'];
// Process Test Package in chunks with TransactionHelper
TransactionHelper::chunkTransaction(
$weldLogs,
function ($weldLogChunk) use ($punchListNumbers, $stats, $tpStats, $tpIsoStats, $supportStatsTP, $quantity_of_iso, $testTypeToMedium, $supportStatsData, &$weldLogTestPackCount) {
foreach($weldLogChunk as $weldLog) {
try {
$punchListData = implode(",", $punchListNumbers[$weldLog->test_package_no] ?? []);
} catch (\Throwable $th) {
$punchListData = "";
}
$thisStats = @$stats[$weldLog->test_package_no];
$thisTpStats = @$tpStats[$weldLog->test_package_no];
$thisTpISOStats = @$tpIsoStats[$weldLog->test_package_no][$weldLog->iso_number];
$thisSupportStats = @$supportStatsTP[$weldLog->test_package_no];
$thisTotalBacklog =
(@$thisTpStats['vt'] ?? 0) +
(@$thisTpStats['ut'] ?? 0) +
(@$thisTpStats['mt'] ?? 0) +
(@$thisTpStats['pmi'] ?? 0) +
(@$thisTpStats['pt'] ?? 0) +
(@$thisTpStats['rt'] ?? 0) +
(@$thisTpStats['pwht'] ?? 0) +
(@$thisTpStats['ferrite'] ?? 0);
$testPackageData = [
'unit' => $weldLog->design_area,
'test_package_number' => $weldLog->test_package_no,
'discipline' => $weldLog->piping_type,
'circuit_number' => $weldLog->circuit_number,
'p_id' => $weldLog->p_id,
'iso_quantity' => $quantity_of_iso[$weldLog->test_package_no]['total_qty'],
'test_type' => $weldLog->type_of_test,
'test_medium' => @$testTypeToMedium[strtoupper($weldLog->type_of_test)],
'test_pressure' => $weldLog->test_pressure,
'golden_joints' => @$stats[$weldLog->iso_number][$weldLog->test_package_no]['goldenJoints'],
'walkdown_date' => @$stats[$weldLog->iso_number][$weldLog->test_package_no]['found_date'],
'punch_list' => $punchListData,
'welded_support_quantity' => @$thisSupportStats['welded_support_quantity'],
'support_remaining' => @$thisSupportStats['support_remaining'],
'support_progress' => @$thisSupportStats['support_progress'],
'a_punch_point_open' => @$stats[$weldLog->iso_number][$weldLog->test_package_no]['punch_a_open_quantity'],
'b_punch_point_open' => @$stats[$weldLog->iso_number][$weldLog->test_package_no]['punch_b_open_quantity'],
'c_punch_point_open' => @$stats[$weldLog->iso_number][$weldLog->test_package_no]['punch_c_open_quantity'],
'vt_backlog' => @$thisTpStats['vt'],
'ut_backlog' => @$thisTpStats['ut'],
'mt_backlog' => @$thisTpStats['mt'],
'pmi_backlog' => @$thisTpStats['pmi'],
'pt_backlog' => @$thisTpStats['pt'],
'rt_backlog' => @$thisTpStats['rt'],
'pwht_backlog' => @$thisTpStats['pwht'],
'ferrit_backlog' => @$thisTpStats['ferrite'],
'ndt_status' => @$thisTotalBacklog == 0 ? "Completed" : "Not Completed",
'welding_progress' => @$stats[$weldLog->iso_number][$weldLog->test_package_no]['welding_progress'],
];
$thisStats = @$stats[$weldLog->iso_number][$weldLog->test_package_no];
$thisSupportStats = @$supportStatsData[$weldLog->iso_number];
try {
$pipeProgress = round($thisStats['total_complated_wdi'] * 100 / $thisStats['total_wdi'], 2);
} catch (\Throwable $th) {
$pipeProgress = 0;
}
$testPackBaseStatusData = [
'area' => $weldLog->project,
'drawing_no' => $weldLog->iso_number,
'test_package_no' => $weldLog->test_package_no,
'discipline' => $weldLog->piping_type,
'iso_qty' => $quantity_of_iso[$weldLog->iso_number][$weldLog->test_package_no]['total_qty'],
'test_type' => $weldLog->type_of_test,
'test_medium' => @$testTypeToMedium[strtoupper($weldLog->type_of_test)],
'test_pressure_mpa' => $weldLog->test_pressure,
'tp_status' => '', // Will be filled from test pack base stat
'total_iso_quantity' => $quantity_of_iso[$weldLog->iso_number][$weldLog->test_package_no]['total_iso_quantity'],
'remaining_wdi' => $thisStats['remaining_wdi'],
'total_wdi' => $thisStats['total_wdi'],
'total_complated_wdi' => $thisStats['total_complated_wdi'],
'pipe_progress' => $pipeProgress,
'total_joint_qty' => $thisStats['total_joint_qty'],
'total_welded_joint_qty' => $thisStats['total_welded_joint_qty'],
'welded_support_quantity' => @$thisSupportStats['welded_support_quantity'],
'support_remaining' => @$thisSupportStats['support_remaining'],
'support_progress' => @$thisSupportStats['support_progress'],
'punch_a_quantity' => @$thisStats['punch_a_quantity'],
'punch_b_quantity' => @$thisStats['punch_b_quantity'],
'punch_c_quantity' => @$thisStats['punch_c_quantity'],
'rt_ut_status' => $thisStats['rt_ut_status'],
'rt_backlog' => @$thisTpISOStats['rt'],
'ut_backlog' => @$thisTpISOStats['ut'],
'mt_backlog' => @$thisTpISOStats['mt'],
'pmi_backlog' => @$thisTpISOStats['pmi'],
'vt_backlog' => @$thisTpISOStats['vt'],
'pt_backlog' => @$thisTpISOStats['pt'],
'pwht_backlog' => @$thisTpISOStats['pwht'],
'ferrit_backlog' => @$thisTpISOStats['ferrite'],
];
$testPackWhereData = [
'test_package_number' => $weldLog->test_package_no
];
$testPackBaseStatusWhereData = [
'test_package_no' => $weldLog->test_package_no,
'drawing_no' => $weldLog->iso_number,
];
if($weldLog->test_package_no != "" && !is_null($weldLog->test_package_no)) {
$testPackResult = TestPackage::updateOrCreate($testPackWhereData, $testPackageData);
$testPackBaseResult = TestPackBaseStatus::updateOrCreate($testPackBaseStatusWhereData, $testPackBaseStatusData);
$weldLogTestPackCount++;
}
}
return $weldLogChunk->count();
},
50, // Chunk size
1000 // 1ms delay
);
}
}