匯入學生上課下課紀錄(因應疫情)
對應程式: import_student_clockinout.php
-00.png)
業務功能
因疫情期間學生改為遠端上課,無法實體刷卡打卡,透過此頁面手動為學生批次匯入上課/下課打卡紀錄。也可用於匯入實體上課的打卡紀錄。
頁面操作
- 選擇日期:輸入 8 碼日期(如
20210518),格式驗證後進入匯入表單。 - 選擇上課方式:遠距(room_id=18, room_name=遠端上課)或一般(room_id=17, room_name=AIA 上課地點)。
- 選擇打卡類型:上課(is_bye=1)或下課(is_bye=2)。
- 輸入打卡時間:24 小時制的時與分。
- 貼入學號清單:在 textarea 中輸入學號,每行一筆,所有學號必須為同一班(classprefix 相同)。
- 送出後批次匯入。
處理邏輯
- 所有學號取前 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) |