From e912c5a080139b52d8e265f193455892826086de Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Fri, 30 May 2025 18:02:38 +0900 Subject: [PATCH] =?UTF-8?q?ix:=20=E5=8B=95=E3=81=8F=E3=82=88=E3=81=86?= =?UTF-8?q?=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecs/jskult-batch/src/aws/s3.py | 6 +- .../src/batch/dcf_inst_merge_io.py | 60 ++++++++++--------- .../dcf_inst_merge_io_task_settings.env | 1 - 3 files changed, 35 insertions(+), 32 deletions(-) diff --git a/ecs/jskult-batch/src/aws/s3.py b/ecs/jskult-batch/src/aws/s3.py index 6e5755be..6150c617 100644 --- a/ecs/jskult-batch/src/aws/s3.py +++ b/ecs/jskult-batch/src/aws/s3.py @@ -100,7 +100,7 @@ class JskUltBackupBucket(S3Bucket): class JskBackupBucket(JskUltBackupBucket): - _folder = environment.JSKULT_BACKUP_BUCKET + _folder = environment.JSK_BACKUP_FOLDER class JskTransferListBucket(JskUltBackupBucket): @@ -133,8 +133,8 @@ class JskSendBucket(S3Bucket): def backup_dcf_inst_merge_csv_file(self, dat_file_key: str, datetime_key: str): # バックアップバケットにコピー - jskult_backup_bucket = JskUltBackupBucket() + jskult_backup_bucket = JskBackupBucket() dat_key = f'{self._send_folder}/{dat_file_key}' - backup_key = f'{jskult_backup_bucket._folder}/{self._send_folder}/{datetime_key}/{dat_file_key.replace(f"{self._send_folder}/", "")}' + backup_key = f'{jskult_backup_bucket._folder}/{datetime_key}/{dat_file_key.replace(f"{self._send_folder}/", "")}' self._s3_client.copy(self._bucket_name, dat_key, jskult_backup_bucket._bucket_name, backup_key) diff --git a/ecs/jskult-batch/src/batch/dcf_inst_merge_io.py b/ecs/jskult-batch/src/batch/dcf_inst_merge_io.py index 5f4b6dd7..d2fc61bf 100644 --- a/ecs/jskult-batch/src/batch/dcf_inst_merge_io.py +++ b/ecs/jskult-batch/src/batch/dcf_inst_merge_io.py @@ -38,7 +38,9 @@ class DcfInstMergeIO(JskultBatchEntrypoint): jskult_hdke_tbl_manager = JskultHdkeTblManager() jskult_batch_run_manager = JskultBatchRunManager( + self.environment.BATCH_MANAGE_DYNAMODB_TABLE_NAME, self.environment.BATCH_EXECUTION_ID) + if not jskult_hdke_tbl_manager.can_run_process(): logger.error( '日次バッチ処理中またはdump取得が正常終了していないため、DCF削除新規マスタ作成を終了します。') @@ -73,12 +75,6 @@ class DcfInstMergeIO(JskultBatchEntrypoint): receive_file_count ) try: - # DCF削除新規マスタ作成、出力用にDB接続を開始。 - # トランザクションも開始。 - db = Database.get_instance() - db.connect() - db.to_jst() - jskult_batch_status_manager.set_process_status( constants.PROCESS_STATUS_START) try: @@ -90,13 +86,19 @@ class DcfInstMergeIO(JskultBatchEntrypoint): # バッチ実行管理テーブルに「retry」で登録 jskult_batch_run_manager.batch_retry() - + logger.info("起動条件を満たしていないため、DCF削除新規マスタ作成処理を終了します。") return except MaxRunCountReachedException: logger.info('最大起動回数に到達したため、DCF削除新規マスタ作成処理を実行します。') jskult_batch_status_manager.set_process_status( constants.PROCESS_STATUS_DOING) + + # DCF削除新規マスタ作成、出力用にDB接続を開始。 + # トランザクションも開始。 + db = Database.get_instance() + db.connect() + db.to_jst() # アルトマーク取込が実行されていた場合にDCF施設削除新規マスタの作成処理を実行 if jskult_batch_status_manager.is_done_ultmarc_import(): db.begin() @@ -116,7 +118,7 @@ class DcfInstMergeIO(JskultBatchEntrypoint): # CSVをS3にアップロード self._upload_dcf_inst_merge_csv_file( - file_path, process_date, self.environment.DCF_INST_MERGE_SEND_FILE_NAME) + self.environment.DCF_INST_MERGE_SEND_FILE_NAME, process_date, file_path) # 処理が全て正常終了した際に、バッチ実行管理テーブルに「success」で登録 logger.info("DCF削除新規マスタ作成処理を正常終了します。") @@ -154,49 +156,51 @@ class DcfInstMergeIO(JskultBatchEntrypoint): AND ci.delete_sche_reason_cd = 'D' AND - ci.delete_data IS NULL + ci.abolish_ymd IS NULL AND ci.sys_update_date BETWEEN src07.get_syor_date() AND NOW() AND NOT EXISTS ( SELECT - dim.dcf_inst_cd + 1 FROM src07.dcf_inst_merge AS dim WHERE dim.dcf_inst_cd = ci.dcf_dsf_inst_cd ) - AND - - (ci.dcf_dsf_inst_cd EXISTS( + AND( + EXISTS( SELECT - mia.inst_cd + 1 FROM src07.mst_inst_assn as mia WHERE mia.inst_cd = ci.dcf_dsf_inst_cd ) - ) - OR ci.dcf_dsf_inst_cd EXISTS( + OR EXISTS( SELECT - ap.prsb_inst_cd + 1 FROM src07.atc_pharm AS ap WHERE ap.prsb_inst_cd = ci.dcf_dsf_inst_cd - ) - OR ci.dcf_dsf_inst_cd EXISTS( - SELECT - vtsr.inst_cd - FROM - src07.vw_tebra_sales_refreshed AS vtsr - WHERE - vtsr.inst_cd = ci.dcf_dsf_inst_cd - ) ) - ; + OR EXISTS( + SELECT + 1 + FROM + view07.vw_tebra_sales_refreshed AS vtsr + WHERE + vtsr.cnvs_inst_cd = ci.dcf_dsf_inst_cd + ) + ); """ duplication_inst_records = db.execute_select(sql) + + if len(duplication_inst_records) == 0: + logger.info('施設統合対象データはありません') + return (False, None) + # DCF削除新規マスタ取り込み values_clauses = [] params = {} @@ -279,7 +283,7 @@ class DcfInstMergeIO(JskultBatchEntrypoint): except Exception as e: raise BatchOperationException(e) - def _make_csv_data(csv_file_name: str, record_inst: list): + def _make_csv_data(self, csv_file_name: str, record_inst: list): temporary_dir = tempfile.mkdtemp() csv_file_path = path.join(temporary_dir, csv_file_name) head_str = ['DCF_INST_CD', 'DUP_OPP_CD', 'START_MONTH', diff --git a/s3/config/jskult/task_settings/dcf_inst_merge_io_task_settings.env b/s3/config/jskult/task_settings/dcf_inst_merge_io_task_settings.env index 8469e66f..09723686 100644 --- a/s3/config/jskult/task_settings/dcf_inst_merge_io_task_settings.env +++ b/s3/config/jskult/task_settings/dcf_inst_merge_io_task_settings.env @@ -6,7 +6,6 @@ JSK_BACKUP_FOLDER=jsk/send TRANSFER_RESULT_FOLDER=transfer_result TRANSFER_RESULT_FILE_NAME=transfer_result.json DCF_INST_MERGE_SEND_FILE_NAME=dcf_inst_merge.csv -JSKULT_CONFIG_BUCKET=mbj-newdwh2021-staging-config DB_CONNECTION_MAX_RETRY_ATTEMPT=1 DB_CONNECTION_RETRY_INTERVAL_INIT=1 DB_CONNECTION_RETRY_INTERVAL_MIN_SECONDS=1