技能実習生ステータス更新バッチ


{success} KIZUNA-SYSTEM側のリポジトリに記述しているバッチです。

技能実習生 基本情報の「技能実習の期間及び時間数(期間)終了年月日」trainees.intern_period_untilを過ぎた実習生のステータスを [2:実習中] から [3:満了] へ更新します。


概要

バッチ実行前に技能実習生ステータスが「2:実習中」(trainees.status = 2) かつ trainees.intern_period_untilを過ぎた実習生のステータスを「3:満了」へ更新します。

ジョブログテーブルに(job_logs)ステータス更新した技能実習生 基本情報のレコード数を記録しています。

毎日午前4:00に実行されます。


条件

traineesテーブル

物理名 論理名 条件値 備考
status 実習生ステータス 2 : 実習中 enum : TraineeStatus
intern_period_until 技能実習の期間及び時間数(期間)終了年月日 本日より前の年月日
deleted_at 削除日時 null
SELECT *
  FROM trainees
 WHERE status = 2                    -- 技能実習生ステータス:実習中
   AND intern_period_until < today() -- 「技能実習の期間及び時間数(期間)終了年月日」が本日よりも前の日付
   AND deleted_at is null

更新内容

traineesテーブル

物理名 論理名 更新値 備考
status 実習生ステータス 3 : 満了 enum : TraineeStatus

job_logsテーブル

バッチ開始時にジョブ名と開始日時を記録し、対象の技能実習生ステータス更新が終わった後に終了日時や処理にかかった時間、更新した技能実習生の人数等記録しています。

物理名 論理名 更新値 備考
job_name ジョブ名 実習生ステータス更新(UpdateTraineeStatus) ※固定値
start_at ジョブ 開始日時 対象の技能実習生ステータス更新する前の日時
end_at ジョブ 終了日時 対象の技能実習生ステータス更新した後の日時
time_required ジョブ 処理時間(秒) start_atnow()の差分の秒数
job_detail ジョブ 処理内容 実習生ステータス更新件数 {$targetTraineeCount}

対象クラスファイル

App\Console\Kernelの設定値

$schedule->command('batch:daily')->dailyAt('4:00');

日次バッチ

実習生ステータス更新ジョブApp\Jobs\UpdateTraineeStatusを実行します。

App\Console\Commands\DailyBatch


実習生ステータス更新ジョブ

技能実習生 基本情報traineesの実習生ステータス更新と、ジョブログの記録を行います。

App\Jobs\UpdateTraineeStatus