This commit is contained in:
2025-11-16 10:45:41 +03:30
parent 068b6037c7
commit 6c41296f22
9 changed files with 105 additions and 32 deletions

View File

@@ -4,10 +4,11 @@ namespace App\Console\Commands;
use App\Enums\ActivityMachineType;
use App\Models\Mission;
use App\Models\AssignmentFails;
use App\Models\MissionViolation;
use App\Services\CMMS\DailyMovingMachinesService;
use Exception;
use Illuminate\Console\Command;
use Illuminate\Support\Carbon;
class DailyMovingMachineCommand extends Command
{
@@ -34,7 +35,7 @@ class DailyMovingMachineCommand extends Command
$vehiclesInfo = $dailyMovingMachines->run();
$response = collect($vehiclesInfo['vehiclesInfo']);
$date = now()->toDateString();
$date = Carbon::yesterday()->toDateString();
$cmms = $response->pluck('machineCode');
@@ -46,27 +47,27 @@ class DailyMovingMachineCommand extends Command
$missionOnly = $mission->diff($cmms);
foreach ($cmmsOnly as $code) {
$cmm = $response->firstWhere('machineCode', $code);
$cmm = $response->firstWhere('machineCode', '=', $code);
AssignmentFails::query()->create([
MissionViolation::query()->create([
'machine_code' => $code,
'type' => ActivityMachineType::KHOROJ_BEDONE_MOGAVEZ->label(),
'type' => ActivityMachineType::KHOROJ_BEDONE_MOGAVEZ->value,
'request_date' => $date,
'mileage' => $cmm['mileageKM'],
'exit_time' => $cmm['exit_time'],
'enter_time' => $cmm['enter_time'],
// 'exit_time' => $cmm['exit_time'],
// 'enter_time' => $cmm['enter_time'],
]);
}
foreach ($missionOnly as $code) {
$missionId = Mission::query()->where('machine_code', $code)
->whereDate('start_time', today())
->whereDate('start_time', $date)
->value('id');
AssignmentFails::query()->create([
MissionViolation::query()->create([
'machine_code' => $code,
'mission_id' => $missionId,
'type' => ActivityMachineType::ADAM_TAHAROK->label(),
'type' => ActivityMachineType::ADAM_TAHAROK->value,
'request_date' => $date,
]);
}

View File

@@ -50,7 +50,7 @@ class Kernel extends ConsoleKernel
->appendOutputTo(storage_path('logs/telescope.log'));
$schedule->command('daily_moving_machine')
->dailyAt('23:59')->appendOutputTo(storage_path('logs/dailymovingmachine.log'));
->dailyAt('02:00')->appendOutputTo(storage_path('logs/dailymovingmachine.log'));
}

View File

@@ -5,9 +5,7 @@ namespace App\Http\Controllers\V3\Dashboard\Mission;
use App\Http\Controllers\Controller;
use App\Http\Traits\ApiResponse;
use App\Models\Mission;
use App\Services\Cartables\Mission\DailyMoveMachineService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class DetailController extends Controller
{
@@ -15,7 +13,7 @@ class DetailController extends Controller
public function machines(Mission $mission): JsonResponse
{
return $this->successResponse($mission->machine()->get(['cmms_machines.id', 'cmms_machines.machine_code', 'cmms_machines.car_name', 'cmms_machines.plak_number']));
return $this->successResponse($mission->machines()->get(['cmms_machines.id', 'cmms_machines.machine_code', 'cmms_machines.car_name', 'cmms_machines.plak_number']));
}
public function rahdaran(Mission $mission): JsonResponse
@@ -33,11 +31,4 @@ class DetailController extends Controller
return $this->successResponse($rahdaran);
}
public function index(Request $request, DailyMoveMachineService $dailyMoveMachineService): JsonResponse
{
$data = $dailyMoveMachineService->dataTable($request);
return response()->json($data);
}
}

View File

@@ -0,0 +1,79 @@
<?php
namespace App\Http\Controllers\V3\Dashboard\Mission;
use App\Enums\MissionCategory;
use App\Enums\MissionStates;
use App\Enums\MissionTypes;
use App\Enums\MissionZones;
use App\Http\Controllers\Controller;
use App\Http\Controllers\V3\Dashboard\RoadPatrol\OperatorController;
use App\Http\Requests\V3\Mission\RequestPortal\NoProcessRequest;
use App\Http\Traits\ApiResponse;
use App\Models\Mission;
use App\Services\Cartables\Mission\DailyMoveMachineService;
use Carbon\Carbon;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class ViolationManagementController extends Controller
{
use ApiResponse;
public function index(Request $request, DailyMoveMachineService $dailyMoveMachineService): JsonResponse
{
$data = $dailyMoveMachineService->dataTable($request);
return response()->json($data);
}
public function noProcess(NoProcessRequest $request): JsonResponse
{
DB::transaction(function () use ($request) {
$start = Carbon::parse($request->start_date);
$end = Carbon::parse($request->end_date);
$type = $start->diffInMinutes($end) > 480 ? MissionTypes::NO_PROCESS_ROZANE->value : MissionTypes::NO_PROCESS_SAATY->value;
$user = auth()->user();
$zone = $request->zone;
$state = MissionStates::END_MISSION->value;
$mission = Mission::query()->create([
'user_id' => $user->id,
'username' => $user->username,
'province_id' => $user->province_id,
'province_name' => $user->province_fa,
'edare_shahri_id' => $user->edarate_shahri_id ?? null,
'edare_shahri_name' => $user->edarate_shahri_name ?? null,
'zone' => $zone,
'zone_fa' => MissionZones::name($zone),
'type' => $type,
'type_fa' => MissionTypes::name($type),
'start_date' => $request->start_date,
'end_date' => $request->end_date,
'end_point' => $request->end_point,
'area' => json_encode($request->area),
'category_id' => $request->category_id,
'category_name' => MissionCategory::name($request->category_id),
'start_time' => $request->start_date,
'finish_time' => $request->end_date,
'state_id' => $state,
'state_name' => MissionStates::name($state),
'explanation' => $request->explanation,
'request_date' => now(),
]);
$mission->rahdaran()->sync($request->rahdaran);
$mission->machines()->attach($request->machines);
$mission->rahdaran()->attach($request->driver, ['is_driver' => true]);
if ($mission->category_id == 2) {
$rpc = new OperatorController;
$rpc->store($mission);
}
});
return $this->successResponse();
}
}

View File

@@ -5,7 +5,7 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class AssignmentFails extends Model
class MissionViolation extends Model
{
use HasFactory;
protected $guarded =[];

View File

@@ -3,7 +3,7 @@
namespace App\Services\CMMS;
use Exception;
use Illuminate\Support\Collection;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
@@ -54,10 +54,12 @@ class DailyMovingMachinesService
private function makeInputParameters(): string
{
$day = Carbon::yesterday()->toDateString();
return json_encode([
"username" => $this->username,
"password" => $this->password,
"day" => today(),
"day" => $day,
"minMileage" => 10,
]);
}

View File

@@ -3,7 +3,7 @@
namespace App\Services\Cartables\Mission;
use App\Facades\DataTable\DataTableFacade;
use App\Models\AssignmentFails;
use App\Models\MissionViolation;
use Illuminate\Http\Request;
class DailyMoveMachineService
@@ -11,7 +11,7 @@ class DailyMoveMachineService
public function dataTable(Request $request)
{
return DataTableFacade::run(
AssignmentFails::query(),
MissionViolation::query(),
$request,
allowedFilters: ['*'],
allowedSortings: ['*'],

View File

@@ -2,12 +2,12 @@
namespace Database\Factories;
use App\Models\AssignmentFails;
use App\Models\MissionViolation;
use Illuminate\Database\Eloquent\Factories\Factory;
class AssignmentFailsFactory extends Factory
{
protected $model = AssignmentFails::class;
protected $model = MissionViolation::class;
public function definition(): array
{

View File

@@ -11,12 +11,12 @@ return new class extends Migration
*/
public function up(): void
{
Schema::create('assignment_fails', function (Blueprint $table) {
Schema::create('mission_violations', function (Blueprint $table) {
$table->id();
$table->foreignId('mission_id')->constrained('missions')->nullable();
$table->foreignId('mission_id')->nullable()->constrained('missions');
$table->string('machine_code')->nullable();
$table->date('request_date')->nullable();
$table->string('type')->nullable();
$table->tinyInteger('type')->nullable();
$table->bigInteger('mileage')->nullable();
$table->dateTime('exit_time')->nullable();
$table->dateTime('enter_time')->nullable();
@@ -30,6 +30,6 @@ return new class extends Migration
*/
public function down(): void
{
Schema::dropIfExists('assignment_fails');
Schema::dropIfExists('mission_violations');
}
};