make reports datatable

This commit is contained in:
amirghasempoor
2026-07-14 14:38:17 +03:30
parent d58ca6b685
commit 961e4c40c9
4 changed files with 28 additions and 38 deletions

View File

@@ -23,7 +23,7 @@ class ReportMachineController extends Controller
public function machineDetailsReport(Request $request, ReportMachineService $reportMachineService,int $machine_id): JsonResponse
{
$data = $reportMachineService->dataTableMachinesActivity($request,$machine_id);
$data = $reportMachineService->machineDetailActivity($request,$machine_id);
return response()->json($data);
}
@@ -34,7 +34,7 @@ class ReportMachineController extends Controller
*/
public function machineDetailsReportExcel(Request $request, int $machine_id, ReportMachineService $reportMachineService): BinaryFileResponse
{
$data = $reportMachineService->dataTableMachinesActivity($request,$machine_id);
$data = $reportMachineService->machineDetailActivity($request,$machine_id);
$name = 'گزارش عملکرد ماشین آلات'.verta()->now()->format('Y-m-d H-i').'.xlsx';
return Excel::download(new machineDetailsReport($data['data']), $name);
@@ -42,10 +42,7 @@ class ReportMachineController extends Controller
public function machinesActivity(Request $request, ReportMachineService $reportMachineService): JsonResponse
{
return $this->successResponse([
'activities' => $reportMachineService->machinesActivity($request),
// 'provinces' => Province::all(['id', 'name_fa']),
]);
return response()->json($reportMachineService->machinesActivity($request));
}
/**
@@ -62,9 +59,9 @@ class ReportMachineController extends Controller
}
public function machineTypeDetailsReport(Request $request, ReportMachineService $reportMachineService,int $car_type): JsonResponse
public function machineTypeDetailsReport(Request $request, ReportMachineService $reportMachineService): JsonResponse
{
$data = $reportMachineService->dataTableMachineTypesActivity($request,$car_type);
$data = $reportMachineService->machineTypeDetailActivity($request);
return response()->json($data);
}
@@ -73,9 +70,9 @@ class ReportMachineController extends Controller
* @throws Exception
* @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
*/
public function machineTypeDetailsReportExcel(Request $request, ReportMachineService $reportMachineService,int $car_type): BinaryFileResponse
public function machineTypeDetailsReportExcel(Request $request, ReportMachineService $reportMachineService): BinaryFileResponse
{
$data = $reportMachineService->dataTableMachineTypesActivity($request,$car_type);
$data = $reportMachineService->machineTypeDetailActivity($request);
$name = 'گزارش عملکردیک نوع ماشین'.verta()->now()->format('Y-m-d H-i').'.xlsx';
return Excel::download(new machineTypeDetailsReport($data['data']), $name);
@@ -83,10 +80,7 @@ class ReportMachineController extends Controller
public function machineTypesActivity(Request $request, ReportMachineService $reportMachineService): JsonResponse
{
return $this->successResponse([
'activities' => $reportMachineService->machineTypesActivity($request),
// 'provinces' => Province::all(['id', 'name_fa']),
]);
return response()->json($reportMachineService->machineTypesActivity($request));
}
/**
@@ -101,9 +95,9 @@ class ReportMachineController extends Controller
return Excel::download(new machineTypeReport($data), $name);
}
public function machineDriverDetailsReport(Request $request, int $driver_id, ReportMachineService $reportMachineService): JsonResponse
public function machineDriverDetailsReport(Request $request, ReportMachineService $reportMachineService): JsonResponse
{
$data = $reportMachineService->dataTableMachineDriversActivity($request,$driver_id);
$data = $reportMachineService->machineDriverDetailActivity($request);
return response()->json($data);
}
@@ -112,9 +106,9 @@ class ReportMachineController extends Controller
* @throws Exception
* @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
*/
public function machineDriverDetailsReportExcel(Request $request, int $driver_id, ReportMachineService $reportMachineService): BinaryFileResponse
public function machineDriverDetailsReportExcel(Request $request, ReportMachineService $reportMachineService): BinaryFileResponse
{
$data = $reportMachineService->dataTableMachineDriversActivity($request,$driver_id);
$data = $reportMachineService->machineDriverDetailActivity($request);
$name = 'گزارش عملکرد راننده'.verta()->now()->format('Y-m-d H-i').'.xlsx';
return Excel::download(
@@ -123,10 +117,7 @@ class ReportMachineController extends Controller
public function machineDriversActivity(Request $request, ReportMachineService $reportMachineService): JsonResponse
{
return $this->successResponse([
'activities' => $reportMachineService->machineDriversActivity($request),
// 'provinces' => Province::all(['id', 'name_fa']),
]);
return response()->json($reportMachineService->machineDriversActivity($request));
}
/**

View File

@@ -9,7 +9,7 @@ use Illuminate\Http\Request;
class ReportMachineService
{
public function dataTableMachinesActivity(Request $request, int $machine_id): array
public function machineDetailActivity(Request $request, int $machine_id): array
{
return DataTableFacade::run(
Mission::query()->where('machine_id', '=', $machine_id),
@@ -38,10 +38,9 @@ class ReportMachineService
COUNT(*) as missions,
SUM(missions.end_km - missions.km) as func'
)
->groupBy('missions.machine_id')
->orderByRaw('COUNT(*) DESC');
->groupBy('missions.machine_id');
$fields = ['machine_code','machine_id','cm.car_name','missions', 'func'];
$fields = ['machine_code','machine_id','cm.car_name','missions', 'func', 'start_time', 'finish_time', 'province_id'];
return DataTableFacade::run(
$query,
$request,
@@ -50,9 +49,9 @@ class ReportMachineService
);
}
public function dataTableMachineTypesActivity(Request $request,int $car_type): array
public function machineTypeDetailActivity(Request $request): array
{
$machineIds = CMMSMachine::query()->where('car_type', '=', $car_type)->pluck('machine_id');
$machineIds = CMMSMachine::query()->where('car_type', '=', $request->query('car_type'))->pluck('id');
return DataTableFacade::run(
Mission::query()->whereIn('machine_id', $machineIds),
$request,
@@ -81,7 +80,7 @@ class ReportMachineService
->groupBy('cm.car_type')
->orderByRaw('COUNT(*) DESC');
$fields = ['car_type','missions', 'func'];
$fields = ['car_type','missions', 'func', 'start_time', 'finish_time', 'province_id'];
return DataTableFacade::run(
$query,
@@ -91,10 +90,10 @@ class ReportMachineService
);
}
public function dataTableMachineDriversActivity(Request $request,int $driver_id): array
public function machineDriverDetailActivity(Request $request): array
{
return DataTableFacade::run(
Mission::query()->where('driver_id', '=', $driver_id),
Mission::query()->where('driver_id', '=', $request->query('driver_id')),
$request,
allowedFilters: ['*'],
allowedSortings: ['*'],
@@ -121,7 +120,7 @@ class ReportMachineService
->groupBy('driver_id')
->orderByRaw('COUNT(*) DESC');
$fields = ['driver_id','driver_name','missions', 'func'];
$fields = ['driver_id','driver_name','missions', 'func', 'start_time', 'finish_time', 'province_id'];
return DataTableFacade::run(
$query,

View File

@@ -12,7 +12,7 @@ return new class extends Migration
public function up(): void
{
Schema::table('cmms_machines', function (Blueprint $table) {
$table->integer('distance_mission')->nullable();
$table->integer('max_mission_duration')->nullable();
});
}
@@ -22,7 +22,7 @@ return new class extends Migration
public function down(): void
{
Schema::table('cmms_machines', function (Blueprint $table) {
$table->dropColumn('distance_mission');
$table->dropColumn('max_mission_duration');
});
}
};

View File

@@ -575,10 +575,10 @@ Route::prefix('missions')
Route::get('/machine_drivers_activity_excel', 'machineDriversActivityExcel')->name('machineDriversActivityExcel');
Route::get('/machine_details_report/{machine_id}', 'machineDetailsReport')->name('machineDetailsReport');
Route::get('/machine_details_report_excel/{machine_id}', 'machineDetailsReportExcel')->name('machineDetailsReportExcel');
Route::get('/machine_type_details_report/{car_type}', 'machineTypeDetailsReport')->name('machineTypeDetailsReport');
Route::get('/machine_type_details_report_excel/{car_type}', 'machineTypeDetailsReportExcel')->name('machineTypeDetailsReportExcel');
Route::get('/machine_driver_details_report/{driver_id}', 'machineDriverDetailsReport')->name('machineDriverDetailsReport');
Route::get('/machine_driver_details_report_excel/{driver_id}', 'machineDriverDetailsReportExcel')->name('machineDriverDetailsReportExcel');
Route::get('/machine_type_details_report', 'machineTypeDetailsReport')->name('machineTypeDetailsReport');
Route::get('/machine_type_details_report_excel', 'machineTypeDetailsReportExcel')->name('machineTypeDetailsReportExcel');
Route::get('/machine_driver_details_report', 'machineDriverDetailsReport')->name('machineDriverDetailsReport');
Route::get('/machine_driver_details_report_excel', 'machineDriverDetailsReportExcel')->name('machineDriverDetailsReportExcel');
});
});