匯入學生上課下課紀錄(因應疫情)

對應程式: import_student_clockinout.php

業務功能

因疫情期間學生改為遠端上課,無法實體刷卡打卡,透過此頁面手動為學生批次匯入上課/下課打卡紀錄。也可用於匯入實體上課的打卡紀錄。

頁面操作

  1. 選擇日期:輸入 8 碼日期(如 20210518),格式驗證後進入匯入表單。
  2. 選擇上課方式:遠距(room_id=18, room_name=遠端上課)或一般(room_id=17, room_name=AIA 上課地點)。
  3. 選擇打卡類型:上課(is_bye=1)或下課(is_bye=2)。
  4. 輸入打卡時間:24 小時制的時與分。
  5. 貼入學號清單:在 textarea 中輸入學號,每行一筆,所有學號必須為同一班(classprefix 相同)。
  6. 送出後批次匯入。

處理邏輯

  • 所有學號取前 5 碼驗證必須為同一班,若發現不同 classprefix 則中止。
  • 以 classprefix 查詢 enter_cards 表,建立學號 → 卡片資料的字典。
  • 逐筆組裝打卡紀錄寫入 TBL_ENTER_LOGS,包含:card_id、username、room_id、room_name、log_datetime、log_weekday、is_bye、encodehash、encodehash2。
  • 每筆插入間隔 sleep(0.2) 秒。
  • 匯入完成後導向 dashboard 學員後台查看。

備註

  • 此功能最初因疫情遠距教學需求而開發,但後續也用於補登一般上課紀錄。
  • is_bye 欄位的值:1 代表上課(簽到)、2 代表下課(簽退)。
  • 匯入前不會檢查是否已有同日同學號的打卡紀錄,重複匯入會產生重複資料,操作時需注意。

使用的 Functions

Function定義於
get_datetime_weekday($date)wp-config.php
$wpdb->get_results()WordPress core(查詢 enter_cards 表建 dict)
$wpdb->insert()WordPress core(寫入 enter_logs)