ASTERIA Warpと電子錠Sesameの履歴取得WebAPIを連携ーVersion2

今回はASTERIA Warpを使って、電子錠Sesameから開閉履歴を取得し、毎月の入退室管理を作成してみました。

フローの流れ

・毎月実行設定で1日の深夜にフローを定期的に実行する

・セサミの履歴取得WebAPIから開閉履歴を取得した後、先月の各日付で最初と最後の開閉履歴のみをExcelファイルで出力する

フローの詳細説明(先頭から順番に解説します)

RESTコンポーネント

 セサミの履歴取得WebAPIを使用して開閉履歴を取得する

「基本」設定
 コネクションを使用:いいえ
 URLhttps://app.candyhouse.co/api/sesame2/sesamiUUID/history?page=0&lg=「取得したいログの件数」
  HTTPメソッド:GET

「送信ヘッダー」設定
 ヘッダー名:x-api-key  データ型:String  値:「sesamiのAPIKEY」

下図では「lg=300」でログを300件取得する設定にしています。

RESTコンポーネント設定

・Mapper1番目)

RESTコンポーネントからの出力ストリームをマッピング

UnixTimeToDatetimeStampの値をDateTime型の日付データに変換

先月の1日、今月の1日の日付を作成し、フロー変数に代入

Mapper設定(1番目)

・Mapper2番目)条件付き

取得した開閉履歴から先月分のデータだけを取得

先月分データの中からtype1011履歴を除外する

条件式:($record.timeStamp>=$flow.先月の頭) && ($record.timeStamp <$flow.先月の月末)&&($record.type!=10)&&($record.type!=11)

Mapper設定(2番目)

・RecordGroup

各日付ごとにレコードをグループ分けし、グループごとにループで出力する

「基本」設定
 モード:オンメモリ
 フィールド名:日付Group化するため
 ソート順:昇順

RecordGroup設定

・RecordSort(右:退室に関する操作、左:入室に関する操作)

RecordSortで各日付のレコードをソートする

右側RecordSort:ソートキー

キー名:timeStamp  ソート順:降順

左側RecordSort:ソートキー

キー名:timeStamp  ソート順:昇順

RecordSort設定

・Mapper3番目)条件付き(右:退室に関する操作、左:入室に関する操作)

条件付きレイヤーでhistoryTag(ユーザID)の値を確認し、RDBSQLパラメーターに値を代入する

historyTag(ユーザーID)が空の場合、ユーザーID123を代入

条件付きレイヤー1:$record.historyTag!=""&&$stream.RecordNo=1

条件付きレイヤー2:$record.historyTag=""&&$stream.RecordNo=1

Mapper設定(3番目)

・RDBGet(右:退室に関する操作、左:入室に関する操作)

USERIDテーブルからSQLパラメーターに代入した値を元に、ユーザー名を取得する

SQL文:SELECT NAME FROM USERID WHERE ID = ?ID2? 右

SQL文:SELECT NAME FROM USERID WHERE ID = ?ID? 左

RDBGet設定

・Mapper4番名)(右:退室に関する操作、左:入室に関する操作)

退室時間、ユーザー名、日付をマッピングする 

入室時間、ユーザー名、日付をマッピングする

Mapper設定(4番目)

・RecordJoin

入力キーに日付を設定し、レコードをJoinして取得する

RecordJoin設定

・Mapper(5番目)

日付データを元にフォルダ名、ファイル名を自動で作成するため、フロー変数に値を代入する

各日付の曜日を取得する

入室時間、名前1、退室時間、名前2、曜日をマッピングする

Mapper設定(5番目)

・LoopEnd

ループを終了し、複数回入力されるストリームをまとめて出力する

「基本」設定
 ループ開始コンポーネント:RecordGroup
 出力形態:ストリームをまとめる

・Mapper6番目)

入室時間、名前1、退室時間、名前、曜日データをExcelOutputコンポーネントへマッピングする

Mapper設定(6番目)

・ExcelOutput

Excelビルダーを起動し、Excelテンプレートを読み込んでレコード追加し、登録を行う

追加したレコードにより、フィールド名が定義される

ExcelOutput設定

・FilePut

入退室管理Excelファイルを出力

「基本」設定
 ファイルパス: ${flow.get("")}/${flow.get("当月")}/${flow.get("当月")}sesami入退室管理.xlsx
 書き込み処理:新規
 上書きを許可:はい

■実行結果

毎月1日の000000秒に以下のファイルが作成される

例:2024111日 000000

2024/2024-10/2024-10sesami入退室管理.xlsx