diff --git a/ecs/jskult-batch-daily/src/batch/dcf_inst_merge/create_dcf_inst_merge.py b/ecs/jskult-batch-daily/src/batch/dcf_inst_merge/create_dcf_inst_merge.py index de00baea..c7f10b9f 100644 --- a/ecs/jskult-batch-daily/src/batch/dcf_inst_merge/create_dcf_inst_merge.py +++ b/ecs/jskult-batch-daily/src/batch/dcf_inst_merge/create_dcf_inst_merge.py @@ -22,10 +22,11 @@ def exec(): db.begin() logger.debug('DCF施設統合マスタ作成処理開始') # COM施設からDCF施設統合マスタに登録 - (is_add_dcf_inst, result) = _insert_dcf_inst_merge_from_com_ci(db) - # DCF施設統合マスタの追加のログを出力する - if is_add_dcf_inst: - _output_add_dcf_inst_log(result) + (is_add_dcf_inst_merge, duplication_inst_records) = _insert_dcf_inst_merge_from_com_inst(db) + # DCF施設統合マスタ追加のログを出力する + if is_add_dcf_inst_merge: + logger.info('[NOTICE]DCF施設統合マスタが追加されました。') + _output_add_dcf_inst_merge_log(duplication_inst_records) logger.debug('DCF施設統合マスタ作成処理終了') except Exception as e: db.rollback() @@ -34,8 +35,8 @@ def exec(): db.disconnect() -def _insert_dcf_inst_merge_from_com_ci(db: Database) -> tuple[bool, list[dict]]: - # com_ciからdcf_inst_mergeにinsert +def _insert_dcf_inst_merge_from_com_inst(db: Database) -> tuple[bool, list[dict]]: + # com_instからdcf_inst_mergeにinsert # 重複コードがあるデータを取得する(処理日~システム日付を対象) try: sql = """ @@ -51,14 +52,14 @@ def _insert_dcf_inst_merge_from_com_ci(db: Database) -> tuple[bool, list[dict]]: WHERE dupci.dcf_dsf_inst_cd = ci.dup_opp_cd ) AS dup_inst_name_kanji, - DATE_FORMAT(DATE_ADD((SELECT syor_date FROM src05.hdke_tbl),INTERVAL 1 MONTH),'%Y%m') AS sys_update_date + DATE_FORMAT((src05.get_syor_date() + INTERVAL 1 MONTH), '%Y%m') AS sys_update_date FROM src05.com_inst AS ci WHERE CHAR_LENGTH(ci.dup_opp_cd) > 0 AND ci.delete_sche_reason_cd = 'D' AND ci.abolish_ymd IS NULL - AND DATE_FORMAT(ci.sys_update_date, '%Y%m%d') BETWEEN (SELECT syor_date FROM src05.hdke_tbl) AND DATE_FORMAT(SYSDATE(), '%Y%m%d') + AND ci.sys_update_date BETWEEN src05.get_syor_date() AND SYSDATE() AND NOT EXISTS ( SELECT dim.dcf_inst_cd @@ -86,31 +87,29 @@ def _insert_dcf_inst_merge_from_com_ci(db: Database) -> tuple[bool, list[dict]]: ) ) """ - result = db.execute_select(sql) + duplication_inst_records = db.execute_select(sql) logging_sql(logger, sql) logger.info('重複コードがあるデータの取得に成功') except Exception as e: logger.debug('重複コードがあるデータの取得に失敗') raise e - if len(result) == 0: + if len(duplication_inst_records) == 0: logger.info('重複コードがあるデータはありません') - return False, None + return (False, None) # DCF施設統合マスタ追加 values_clauses = [] params = {} - clauses_no = 1 - for row in result: - dcfInstCdArr = f'dcfInstCd{clauses_no}' - dupOppCdArr = f'dupOppCd{clauses_no}' - tekiyoMonthArr = f'tekiyoMonth{clauses_no}' - placeholders = f'(:{dcfInstCdArr}, :{dupOppCdArr}, :{tekiyoMonthArr}, "Y", CURRENT_USER(), SYSDATE(), CURRENT_USER(), SYSDATE())' - values_clauses.append(placeholders) - params[dcfInstCdArr] = row['dcf_dsf_inst_cd'] - params[dupOppCdArr] = row['dup_opp_cd'] - params[tekiyoMonthArr] = row['sys_update_date'] - clauses_no += 1 + for clauses_no, row in enumerate(duplication_inst_records, start=1): + dcf_inst_cd_arr = f'dcf_inst_cd{clauses_no}' + dup_opp_cd_arr = f'dup_opp_cd{clauses_no}' + tekiyo_month_arr = f'tekiyo_month{clauses_no}' + values_clause = f'(:{dcf_inst_cd_arr}, :{dup_opp_cd_arr}, :{tekiyo_month_arr}, "Y", CURRENT_USER(), SYSDATE(), CURRENT_USER(), SYSDATE())' + values_clauses.append(values_clause) + params[dcf_inst_cd_arr] = row['dcf_dsf_inst_cd'] + params[dup_opp_cd_arr] = row['dup_opp_cd'] + params[tekiyo_month_arr] = row['sys_update_date'] insert_sql = f""" INSERT INTO @@ -137,29 +136,30 @@ def _insert_dcf_inst_merge_from_com_ci(db: Database) -> tuple[bool, list[dict]]: logger.debug('COM施設からDCF施設統合マスタの登録に失敗') raise e - return (True, result) + return (True, duplication_inst_records) -def _output_add_dcf_inst_log(result: list[dict]): - sys_update_date = result[0]['sys_update_date'] - setYearMonth = '{set_year}年{set_month}月'.format( +def _output_add_dcf_inst_merge_log(duplication_inst_records: list[dict]): + sys_update_date = duplication_inst_records[0]['sys_update_date'] + set_year_month = '{set_year}年{set_month}月'.format( set_year=sys_update_date[0:4], set_month=sys_update_date[-2:] ) - add_dct_inst = 'DCF施設コード {dcf_dsf_inst_cd} {form_inst_name_kanji},  重複時相手先コード {dup_opp_cd} {dup_inst_name_kanji}' - add_dct_inst_list = [] - for row in result: - add_dct_inst_list.append(add_dct_inst.format(**row)) - add_dct_inst_list = '\n'.join(add_dct_inst_list) + add_dct_inst_merge = 'DCF施設コード {dcf_dsf_inst_cd} {form_inst_name_kanji},  重複時相手先コード {dup_opp_cd} {dup_inst_name_kanji}' + add_dct_inst_merge_list = [] + for row in duplication_inst_records: + add_dct_inst_merge_list.append(add_dct_inst_merge.format(**row)) + add_dct_inst_merge_list = '\n'.join(add_dct_inst_merge_list) + # 顧客報告用にログ出力 logger.info( - f"""[NOTICE]DCF施設統合マスタが追加されました。 + f"""DCF施設統合マスタが追加されました。 ********************************************************** -適用月度 {setYearMonth} +適用月度 {set_year_month} ********************************************************** -{add_dct_inst_list} +{add_dct_inst_merge_list} ********************************************************** -合計 {len(result)}件""" +合計 {len(duplication_inst_records)}件""" ) return diff --git a/ecs/jskult-batch-daily/src/jobctrl_daily.py b/ecs/jskult-batch-daily/src/jobctrl_daily.py index 370f2179..cb1cf9e1 100644 --- a/ecs/jskult-batch-daily/src/jobctrl_daily.py +++ b/ecs/jskult-batch-daily/src/jobctrl_daily.py @@ -7,7 +7,8 @@ from src.batch.batch_functions import ( update_batch_processing_flag_in_processing) from src.batch.common.batch_context import BatchContext from src.batch.common.calendar_file import CalendarFile -from src.batch.laundering import create_dcf_inst_merge, create_mst_inst +from src.batch.dcf_inst_merge import create_dcf_inst_merge +from src.batch.laundering import create_mst_inst from src.batch.ultmarc import ultmarc_process from src.error.exceptions import BatchOperationException from src.logging.get_logger import get_logger