feat: レビュー指摘対応

This commit is contained in:
高木要 2023-05-11 17:50:11 +09:00
parent 2be8461f5a
commit 300420031c
2 changed files with 37 additions and 36 deletions

View File

@ -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

View File

@ -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