182 lines
6.1 KiB
Python
182 lines
6.1 KiB
Python
# モジュールロード
|
|
import os
|
|
import sys
|
|
from datetime import datetime
|
|
import src.pre as pre # データ取得準備処理
|
|
import src.chk as chk # オブジェクト情報形式チェック処理
|
|
import src.date as date # データ取得期間設定処理
|
|
import src.fetch as fetch # CRMデータ取得処理
|
|
import src.resbk as resbk # CRM電文データバックアップ処理
|
|
import src.conv as conv # CSV変換処理
|
|
import src.csvbk as csvbk # CSVバックアップ処理
|
|
import src.upld as upld # CSVアップロード処理
|
|
import src.upd as upd # 前回取得日時ファイル更新
|
|
import src.end as end # 取得処理実施結果アップロード処理
|
|
|
|
from src.utils.logger import Logger
|
|
import src.utils.data_retention as data_retention
|
|
|
|
|
|
# 変数
|
|
|
|
# logger設定
|
|
logger = Logger().get_logger()
|
|
|
|
|
|
# 処理
|
|
def main() -> None:
|
|
"""コントロール処理
|
|
|
|
各処理を呼び出すコントローラー
|
|
|
|
"""
|
|
|
|
try:
|
|
# ① CRMデータ取得処理開始ログを出力する
|
|
logger.info('I-CTRL-01 CRMデータ取得処理を開始します')
|
|
|
|
# ② データ取得準備処理を呼び出す
|
|
try:
|
|
logger.info('I-CTRL-02 データ取得準備処理呼び出し')
|
|
crm_object_info_var = data_retention.CrmObjectInfoVar()
|
|
crm_object_info_dict, execute_datetime, process_result_per_object = pre(
|
|
crm_object_info_var)
|
|
|
|
except Exception as e:
|
|
logger.error('')
|
|
raise CustomException(e)
|
|
|
|
# ③ object_infoのobjectsキーの値の件数分ループする
|
|
logger.info('I-CTRL-03 取得対象オブジェクトのループ処理開始')
|
|
|
|
for object_info in crm_object_info_dict.get('objects'):
|
|
try:
|
|
|
|
# 1. オブジェクト情報形式チェック処理を呼び出す
|
|
logger.info('I-CTRL-04 オブジェクト情報形式チェック処理呼び出し')
|
|
|
|
try:
|
|
chk()
|
|
|
|
except Exception as e:
|
|
logger.error('')
|
|
|
|
# 2. 処理対象のオブジェクト名をログ出力する
|
|
logger.info('I-CTRL-05 ')
|
|
|
|
# 3. オブジェクト情報.is_skipがTrueの場合、次のオブジェクトの処理に移行する
|
|
logger.info('I-CTRL-06 ')
|
|
|
|
# 4. データ取得期間設定処理を呼び出す
|
|
logger.info('I-CTRL-07 ')
|
|
try:
|
|
|
|
except Exception as e:
|
|
logger.error('')
|
|
|
|
# 5. CRMデータ取得処理を呼び出す
|
|
logger.info('I-CTRL-08 ')
|
|
try:
|
|
|
|
except Exception as e:
|
|
logger.error('')
|
|
|
|
# 6. CRMデータのジェネレータをループする
|
|
# 6-1. 出力ファイル名を生成する
|
|
logger.info('I-CTRL-10 ')
|
|
try:
|
|
|
|
except Exception as e:
|
|
logger.error('')
|
|
|
|
# 6-2. CRM電文データバックアップ処理を呼び出す
|
|
logger.info('I-CTRL-11 ')
|
|
try:
|
|
|
|
except Exception as e:
|
|
logger.error('')
|
|
|
|
# 6-3. CSV変換処理を呼び出す
|
|
logger.info('I-CTRL-12 ')
|
|
try:
|
|
|
|
except Exception as e:
|
|
logger.error('')
|
|
|
|
# 6-4. CSVバックアップ処理を呼び出す
|
|
logger.info('I-CTRL-13 ')
|
|
try:
|
|
|
|
except Exception as e:
|
|
logger.error('')
|
|
|
|
# 6-5. CSVアップロード処理を呼び出す
|
|
logger.info('I-CTRL-14 ')
|
|
try:
|
|
|
|
except Exception as e:
|
|
logger.error('')
|
|
|
|
# 7. 前回取得日時ファイル更新処理を呼びだす
|
|
logger.info('I-CTRL-15 ')
|
|
try:
|
|
|
|
except Exception as e:
|
|
logger.error('')
|
|
|
|
# 8. 1オブジェクトのアップロードが完了した旨をログに出力する
|
|
logger.info('I-CTRL-16 ')
|
|
|
|
except GetObjectException as e:
|
|
logger.error(
|
|
'[取得対象のオブジェクト名] の[処理名]でエラーが発生しました 次のオブジェクトの処理に移行します')
|
|
|
|
except Exception as e:
|
|
logger.error(
|
|
'[取得対象のオブジェクト名] の処理中に予期せぬエラーが発生しました 次のオブジェクトの処理に移行します')
|
|
|
|
# ④ すべてのオブジェクトの処理が完了したことと、オブジェクト毎の処理結果をログに出力する
|
|
try:
|
|
logger.info(f'I-CTRL-17 すべてのオブジェクトの処理が終了しました 実行結果:[{実行結果JSON}]')
|
|
|
|
except Exception as e:
|
|
logger.error('')
|
|
raise CustomException()
|
|
|
|
# ⑤ 取得処理実施結果アップロード処理を呼び出す
|
|
try:
|
|
logger.info('I-CTRL-18 CRM_取得処理実施結果ファイルアップロード処理開始')
|
|
|
|
except Exception as e:
|
|
logger.error('')
|
|
raise CustomException()
|
|
|
|
# ⑥ CRMデータ取得処理終了ログを出力する
|
|
try:
|
|
logger.info('I-CTRL-19 CRMデータ取得処理を終了します')
|
|
|
|
except Exception as e:
|
|
logger.error('')
|
|
raise
|
|
|
|
except CustomException as e:
|
|
logger.error('I-ERR-01 [処理名]でエラーが発生したため、処理を終了します')
|
|
|
|
except Exception as e:
|
|
logger.error('I-ERR-02 予期せぬエラーが発生したため、処理を終了します')
|
|
|
|
|
|
# カスタムExceptionクラス
|
|
class CustomException(Exception, metaclass=ABCMeta):
|
|
def __init__(self, id, arg):
|
|
self.arg = arg
|
|
self.id = id
|
|
|
|
|
|
class GetObjectException(CustomException):
|
|
pass
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|