集計

勤怠管理システムの自作-日次バッチ処理

バッチ処理の概要

1日に1回、深夜0:00頃に動きます。

当システムでは有休の見込み付与を行います。出勤率が足りず、本来なら有休が付与されないユーザーでも一時的に有休を使える状態になる場合があります。
有休の剥奪処理が走るまでの時間で有休の申請→月報の作成が行われてしまうとデータの不整合が発生するため、なるべく0:00頃にバッチを起動させるようにしています。

バッチ処理が途中で失敗した場合、何も考えずに再実行しても大丈夫なようにしています。処理ごとに別々のトランザクションとして、処理済みかどうかのフラグはDBに持たせます。

処理内容

実動時間の計算

最大で1か月前まで遡って、日々の実動時間や超過労働時間を計算し、計算結果をDBに格納します。
月報集計画面では、ここで計算した結果の集計値を表示します。
実働時間の計算は複雑で負荷が大きいので、事前に計算した値をDBに保存しておく方式にしました。

バッチ処理が動いた時点で終了打刻が行われていない場合、バッチ起動時刻に終了打刻をしたものとして労働時間を計算します。

有休チケットの繰越

中途半端に残った有休の権利ポイントを回復させる処理です。有休付与と同じタイミングで動きます。

時間休を使った場合、有休の権利ポイントが少しだけ(1時間未満)残る場合があります。
時間休が使える場合は、残ったポイントを繰り上げて使えますが、時間休が使えない事業場や契約に移った場合、残った有休はポイント不足で使えなくなってしまいます。

対策として、有休・半休として使えるようになるまで権利ポイントを回復させます。

繰越処理時点で各ユーザーに紐付いている契約の時間休取得可否に応じて、ポイントを回復させる量が変化します。

・時間休を取得できる場合
 最小利用単位(60pt)までポイントを回復させます。

・時間休を取得できない場合
 ポイント残量が半分を下回る場合は半分まで
 ポイント残量が半分を上回る場合は全回復させます。

有休権利チケットの剥奪

当システムでは、有休付与日の3か月前の時点で有休を付与します。
有休の権利を付与する時点では正確な出勤率が分からないため、見込みで付与しています。

有休付与日当日になってから正式な出勤率計算を行い、出勤率が80%に満たない場合は既に付与済みの有休を消滅させます。

有休を消滅させた場合、対象のユーザー宛てに通知データを作成します。

有休権利チケットの付与

有休付与処理」を参照。

有休付与実績データを更新

有休チケットの繰越、有休権利チケットの付与処理が完了しているユーザーを対象に、次回の有休付与予定日を設定します。

  • 出勤率計算の起算日に今回の有休付与日をセット
  • 次回の有休付与予定日に今回の有休付与日の1年後の日付をセット

労働時間の監視通知

労働時間のアラート機能を実現するための処理です。

監視設定画面で登録されたデータをもとに、実働時間や超過労働時間の集計値をチェックし、閾値を超えた場合は通知データを作成します。

1つのネタに対して1回だけ通知を行います。
例えば、実働時間(1年間)の監視設定で閾値を超えた場合は、1人につき1年に1回だけ
超過労働時間(当月)の監視設定で閾値を超えた場合は、1人につき1か月に1回だけ
という感じで、「毎日同じ内容の通知メールが来る」という問題が起きないようにしています。

タイトルとURLをコピーしました