From fbd3bdb5907f29a48ccf69aaa0319a945d19ef2c Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Thu, 15 May 2025 19:11:40 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=85=B1=E9=80=9A=E5=87=A6=E7=90=86?= =?UTF-8?q?=E5=AE=9F=E8=A3=85=E3=80=82can=5Frun=5Fprocess=E3=81=AF?= =?UTF-8?q?=E3=81=93=E3=82=8C=E3=81=8B=E3=82=89=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/manager/jskult_hdke_tbl_manager.py | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 ecs/jskult-transfer-receive-file/src/manager/jskult_hdke_tbl_manager.py diff --git a/ecs/jskult-transfer-receive-file/src/manager/jskult_hdke_tbl_manager.py b/ecs/jskult-transfer-receive-file/src/manager/jskult_hdke_tbl_manager.py new file mode 100644 index 00000000..006ea1cc --- /dev/null +++ b/ecs/jskult-transfer-receive-file/src/manager/jskult_hdke_tbl_manager.py @@ -0,0 +1,101 @@ +import datetime + +from src.db.database import Database +from src.error.exceptions import BatchOperationException, DBException +from src.system_var import constants + + +class JskultHdkeTblManager: + _db: Database + + def __init__(self): + self._db = Database.get_instance() + + def get_batch_statuses(self) -> tuple[str, str, str]: + """日付テーブルから、以下を取得して返す。 + - 日次バッチ処理中フラグ + - dump取得状況区分 + - 処理日(YYYY/MM/DD) + + Raises: + BatchOperationException: 日付テーブルが取得できないとき、何らかのエラーが発生したとき + + Returns: + tuple[str, str]: [0]日次バッチ処理中フラグ、dump取得状況区分 + """ + sql = 'SELECT bch_actf, dump_sts_kbn, src07.get_syor_date() AS syor_date FROM src07.hdke_tbl' + try: + self._db.connect() + hdke_tbl_result = self._db.execute_select(sql) + except DBException as e: + raise BatchOperationException(e) + finally: + self._db.disconnect() + + if len(hdke_tbl_result) == 0: + raise BatchOperationException('日付テーブルが取得できませんでした') + + # 必ず1件取れる + hdke_tbl_record = hdke_tbl_result[0] + batch_processing_flag = hdke_tbl_record['bch_actf'] + dump_status_kbn = hdke_tbl_record['dump_sts_kbn'] + syor_date = hdke_tbl_record['syor_date'] + # 処理日を文字列に変換する + syor_date_str = datetime.strftime(syor_date, '%Y/%m/%d') + + return batch_processing_flag, dump_status_kbn, syor_date_str + + def update_batch_process_start(self): + """バッチ処理中フラグを処理中に更新する + + Raises: + BatchOperationException: DB操作の何らかのエラー + """ + sql = """\ + UPDATE src07.hdke_tbl + SET + bch_actf = :in_processing, + updater = CURRENT_USER(), + update_date = NOW() + """ + try: + self._db.connect() + self._db.to_jst() + self._db.execute( + sql, {'in_processing': constants.BATCH_ACTF_BATCH_IN_PROCESSING}) + except DBException as e: + raise BatchOperationException(e) + finally: + self._db.disconnect() + + return + + def update_batch_process_complete(self): + """バッチ処理を完了とし、処理日、バッチ処理中フラグ、dump処理状態区分を更新する + + Raises: + BatchOperationException: DB操作の何らかのエラー + """ + sql = """\ + UPDATE src07.hdke_tbl + SET + bch_actf = :batch_complete, + dump_sts_kbn = :dump_unprocessed, + syor_date = DATE_FORMAT((src07.get_syor_date() + interval 1 day), '%Y%m%d'), -- +1日 + updater = CURRENT_USER(), + update_date = NOW() + """ + try: + self._db.connect() + self._db.to_jst() + self._db.execute(sql, { + 'batch_complete': constants.BATCH_ACTF_BATCH_UNPROCESSED, + 'dump_unprocessed': constants.DUMP_STATUS_KBN_UNPROCESSED + }) + except DBException as e: + raise BatchOperationException(e) + finally: + self._db.disconnect() + + def can_run_process(self): + pass