学習113日目:勤怠管理機能の実装完了。

今日の学習時間。

  • Day:113
  • Today:6h
  • Total:730h

学習内容について。

  • 日報管理システム
    • 勤怠管理機能の実装
  • オリジナルアプリ
    • Spring Bootへの移植

出勤時間と退勤時間の差を求める。

つまり勤務時間のことです。ただ引き算をすれば良いという訳ではなく、ちょっとややこしかったのでメモしておきます。

  1. Timestamp型の出勤時刻をLocalDateTime型に変換
    • ChronoUnitを使うため
  2. LocalDateTimeで現在時刻を取得
  3. ChronoUnit.MINUTES.between()で現在時刻と出勤時刻の差を分で求める
  4. 分をHH:mmの形式に変換
  5. 変換した値をTime型に変換
    • SQLで使うため
  6. 変換した値をセットして完了

下記は参考にしたサイト。

打刻忘れを求める。

もし退勤ボタンを押し忘れて次の日になってしまった場合の対策を考えます。そのままにしておけば勤務時間との無矛盾性がとれなくなってしまうためです。今回、退勤ボタンを押し忘れた際は日付が変わると退勤時間と勤務時間を未登録として表示するようにします。下記が手順。

  1. JPQLでattendance_flagが1(勤務中)の時とattendance_dateDate型)が共に一致しない勤怠レコードを抽出するクエリを作成
  2. トップページのIndexサーブレットにtry-catch文を用意
    • トップページにすることでメソッドを必ず作動させる
    • レコードが存在しない場合もあるのでtry-catch
  3. ①のクエリでリストを作成
  4. 拡張for文で③のリストを回す
  5. ④内で打刻忘れのattendance_flagとして2を挿入
  6. トランザクション処理を行う
    • getTransaction().begin()
    • getTransaction().commit()

今日の反省と明日の目標。

今日もあっという間でした。機能実装で今まで使ったことのないクラスを使ったりもしましたが、色々と挙動を確かめることで理解できました。なんとなくでTimestampばかり使っていたので別の時間関係クラスを試せたのは良かったです。ネットに散見するサーブレット関連の記事は古いものばかりで調べるのも大変ですが今回はたくさんの文献があって助かりました。

明日はオリジナルアプリの開発を進めていきます。そろそろ職務経歴書や履歴書も書いていかなければ。。

閉じる