{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_atとnow()の差分の秒数 |
|
| job_detail | ジョブ 処理内容 | 実習生ステータス更新件数 {$targetTraineeCount} 件 |
App\Console\Kernelの設定値$schedule->command('batch:daily')->dailyAt('4:00');
実習生ステータス更新ジョブApp\Jobs\UpdateTraineeStatusを実行します。
App\Console\Commands\DailyBatch
技能実習生 基本情報traineesの実習生ステータス更新と、ジョブログの記録を行います。
App\Jobs\UpdateTraineeStatus