@Contents
今日の学習時間。
- Day:113
- Today:6h
- Total:730h
学習内容について。
- 日報管理システム
- 勤怠管理機能の実装
- オリジナルアプリ
- Spring Bootへの移植
出勤時間と退勤時間の差を求める。
つまり勤務時間のことです。ただ引き算をすれば良いという訳ではなく、ちょっとややこしかったのでメモしておきます。
Timestamp
型の出勤時刻をLocalDateTime
型に変換ChronoUnit
を使うため
LocalDateTime
で現在時刻を取得ChronoUnit.MINUTES.between()
で現在時刻と出勤時刻の差を分で求める- 分をHH:mmの形式に変換
- 変換した値を
Time
型に変換- SQLで使うため
- 変換した値をセットして完了
下記は参考にしたサイト。
打刻忘れを求める。
もし退勤ボタンを押し忘れて次の日になってしまった場合の対策を考えます。そのままにしておけば勤務時間との無矛盾性がとれなくなってしまうためです。今回、退勤ボタンを押し忘れた際は日付が変わると退勤時間と勤務時間を未登録として表示するようにします。下記が手順。
- JPQLで
attendance_flag
が1(勤務中)の時とattendance_date
(Date
型)が共に一致しない勤怠レコードを抽出するクエリを作成 - トップページのIndexサーブレットに
try-catch
文を用意- トップページにすることでメソッドを必ず作動させる
- レコードが存在しない場合もあるので
try-catch
文
- ①のクエリでリストを作成
- 拡張for文で③のリストを回す
- ④内で打刻忘れの
attendance_flag
として2を挿入 - トランザクション処理を行う
getTransaction().begin()
getTransaction().commit()
今日の反省と明日の目標。
今日もあっという間でした。機能実装で今まで使ったことのないクラスを使ったりもしましたが、色々と挙動を確かめることで理解できました。なんとなくでTimestampばかり使っていたので別の時間関係クラスを試せたのは良かったです。ネットに散見するサーブレット関連の記事は古いものばかりで調べるのも大変ですが今回はたくさんの文献があって助かりました。
明日はオリジナルアプリの開発を進めていきます。そろそろ職務経歴書や履歴書も書いていかなければ。。