feat: DCF施設統合マスタ日次更新バッチ

This commit is contained in:
高木要 2023-05-19 16:37:03 +09:00
parent 94016f513d
commit 75db3d2251

View File

@ -7,8 +7,8 @@ from src.error.exceptions import BatchOperationException
from src.logging.get_logger import get_logger
from src.time.elapsed_time import ElapsedTime
logger = get_logger('DCF施設統合マスタ日次更新バッチ')
batch_context = BatchContext.get_instance()
logger = get_logger('DCF施設統合マスタ日次更新バッチ')
def exec():
@ -16,19 +16,17 @@ def exec():
try:
db.connect()
db.begin()
#
enabled_dst_inst_merge_records = _laundering_enabled_dct_inst_merge(db)
#
_laundering_disabled_dct_inst_merge(db)
#
logger.debug('DCF施設統合マスタ日次更新バッチ処理開始')
# DCF施設統合マスタ移行先コードのセット(無効フラグが『0(有効)』)
enabled_dst_inst_merge_records = _set_enabled_dct_inst_merge(db)
# DCF施設統合マスタ移行先コードのセット(無効フラグが『1(無効)』)
_set_disabled_dct_inst_merge(db)
# DCF施設統合マスタに無効フラグが『0(有効)』データが存在する場合
if len(enabled_dst_inst_merge_records) > 0:
logger.info('')
_add_emp_chg_inst(db, enabled_dst_inst_merge_records)
logger.info('')
_add_ult_ident_presc(db, enabled_dst_inst_merge_records)
db.commit()
#
logger.info('')
logger.info('DCF施設統合マスタ日次更新バッチ処理終了')
except Exception as e:
db.rollback()
raise BatchOperationException(e)
@ -36,68 +34,101 @@ def exec():
db.disconnect()
def _laundering_enabled_dct_inst_merge(db: Database) -> list[dict]:
def _set_enabled_dct_inst_merge(db: Database) -> list[dict]:
# データ取得無効フラグが『0(有効)』)
valid_dst_inst_merge_records = _select_dct_inst_merge(db, 0, True)
enabled_dst_inst_merge_records = _select_dct_inst_merge(db, 0)
# 移行先DCF施設コードの更新無効フラグが『0(有効)』)
_update_dcf_inst_merge(db, 0)
# DCF施設統合マスタの過去分の洗い替え
if len(valid_dst_inst_merge_records) == 0:
return
for row in valid_dst_inst_merge_records:
_update_dcf_inst_cd_new(db, row['dup_opp_cd'], row['dcf_inst_cd'])
if _update_dcf_inst_merge(db, 0) > 0:
# DCF施設統合マスタの過去分の洗い替え
for row in enabled_dst_inst_merge_records:
_update_dcf_inst_cd_new(db, row['dup_opp_cd'], row['dcf_inst_cd'])
return valid_dst_inst_merge_records
return enabled_dst_inst_merge_records
def _laundering_disabled_dct_inst_merge(db: Database):
def _set_disabled_dct_inst_merge(db: Database):
# データ取得無効フラグが『1(無効)』)
disabled_dst_inst_merge_records = _select_dct_inst_merge(db, 1, False)
disabled_dst_inst_merge_records = _select_dct_inst_merge(db, 1)
# 移行先DCF施設コードの更新無効フラグが『1(無効)』)
_update_dcf_inst_merge(db, 1)
# DCF施設統合マスタの過去分の洗い替え
if len(disabled_dst_inst_merge_records) == 0:
return
for row in disabled_dst_inst_merge_records:
_update_dcf_inst_cd_new(db, row['dcf_inst_cd'], row['dup_opp_cd'])
if _update_dcf_inst_merge(db, 1) > 0:
# DCF施設統合マスタの過去分の洗い替え
for row in disabled_dst_inst_merge_records:
_update_dcf_inst_cd_new(db, row['dcf_inst_cd'], row['dup_opp_cd'])
def _add_ult_ident_presc(db: Database, valid_dst_inst_merge_records: list[dict]):
#
for data_inst_cnt, row in enumerate(valid_dst_inst_merge_records, start=1):
def _add_ult_ident_presc(db: Database, enabled_dst_inst_merge_records: list[dict]):
# 納入先処方元マスタの追加
logger.info('納入先処方元マスタの登録 開始')
for data_inst_cnt, row in enumerate(enabled_dst_inst_merge_records, start=1):
tekiyo_month_first_day = _get_first_day_of_month(row['tekiyo_month'])
ult_ident_presc_records = _select_ult_ident_presc(db, row['dcf_inst_cd'], row['dup_opp_cd'])
for data_cnt, ult_row in enumerate(ult_ident_presc_records, start=1):
for data_cnt, ult_ident_presc_row in enumerate(ult_ident_presc_records, start=1):
logger.info(f'{data_inst_cnt}件目の移行施設の{data_cnt}レコード目処理 開始')
# 処方元コード=重複時相手先コードが発生した場合
if ult_row['opp_count'] > 0:
if ult_ident_presc_row['opp_count'] > 0:
break
start_date = _str_to_date_time(ult_row['start_date'])
start_date = _str_to_date_time(ult_ident_presc_row['start_date'])
set_start_date = start_date \
if start_date > tekiyo_month_first_day else tekiyo_month_first_day
set_start_date = _date_time_to_str(set_start_date)
is_delete_duplicate_key = False
if _count_duplicate_ult_ident_presc(db, set_start_date, ult_row):
_delete_ult_ident_presc(db, set_start_date, ult_row)
is_delete_duplicate_key = True
is_exists_duplicate_key = False
if _count_duplicate_ult_ident_presc(db, set_start_date, ult_ident_presc_row) > 0:
_delete_ult_ident_presc(db, set_start_date, ult_ident_presc_row,
'納入先処方元マスタの重複予定データの削除')
is_exists_duplicate_key = True
else:
logger.info('納入先処方元マスタの重複予定データなし')
_insert_ult_ident_presc(db, set_start_date, row['dup_opp_cd'], ult_row)
_insert_ult_ident_presc(db, set_start_date, row['dup_opp_cd'], ult_ident_presc_row)
if _str_to_date_time(ult_row['end_date']) < start_date:
_delete_ult_ident_presc(db, ult_row['start_date'], ult_row)
if _str_to_date_time(ult_ident_presc_row['end_date']) < start_date:
_delete_ult_ident_presc(db, ult_ident_presc_row['start_date'], ult_ident_presc_row,
'開始月>適用開始日のため物理削除')
continue
if not is_delete_duplicate_key:
if not is_exists_duplicate_key:
last_end_date = tekiyo_month_first_day - timedelta(days=1)
_update_ult_ident_presc_end_date(db, _date_time_to_str(last_end_date), ult_row)
if start_date > last_end_date:
_delete_ult_ident_presc(db, ult_row['start_date'], ult_row)
_update_ult_ident_presc_end_date(db, _date_time_to_str(last_end_date), ult_ident_presc_row)
if start_date > last_end_date:
_delete_ult_ident_presc(db, ult_ident_presc_row['start_date'], ult_ident_presc_row,
'適用終了日更新後 開始日>終了日のため物理削除')
logger.info('納入先処方元マスタの登録 終了')
def _delete_ult_ident_presc(db: Database, start_date: str, ult_row: CursorResult):
#
def _add_emp_chg_inst(db: Database, enabled_dst_inst_merge_records: list[dict]):
# 従業員担当施設マスタの登録
logger.info('従業員担当施設マスタの登録 開始')
for row in enabled_dst_inst_merge_records:
tekiyo_month_first_day = _get_first_day_of_month(row['tekiyo_month'])
emp_chg_inst_records = _select_emp_chg_inst(db, row['dcf_inst_cd'], row['dup_opp_cd'])
for emp_chg_inst_row in emp_chg_inst_records:
# 重複時相手先コードが存在したかのチェック
if emp_chg_inst_row['opp_count'] > 0:
break
start_date = _str_to_date_time(emp_chg_inst_row['start_date'])
set_start_date = start_date \
if start_date > tekiyo_month_first_day else tekiyo_month_first_day
_insert_emp_chg_inst(db, row['dup_opp_cd'], _date_time_to_str(set_start_date),
emp_chg_inst_row)
if start_date < tekiyo_month_first_day:
last_end_date = tekiyo_month_first_day - timedelta(days=1)
_update_emp_chg_inst_end_date(db, row['dcf_inst_cd'], _date_time_to_str(last_end_date),
emp_chg_inst_row)
if start_date <= last_end_date:
continue
_update_emp_chg_inst_enabled_flg(db, row['dcf_inst_cd'], emp_chg_inst_row['ta_cd'],
emp_chg_inst_row['start_date'])
logger.info('従業員担当施設マスタの登録 終了')
def _delete_ult_ident_presc(db: Database, start_date: str, ult_ident_presc_row: CursorResult,
log_message: str):
# ult_ident_prescのDelete
try:
elapsed_time = ElapsedTime()
sql = """
@ -107,56 +138,24 @@ def _delete_ult_ident_presc(db: Database, start_date: str, ult_row: CursorResult
ta_cd = :ta_cd
AND ult_ident_cd = :ult_ident_cd
AND ratio = :ratio
AND start_date = :set_start_date
AND start_date = :start_date
"""
params = {
'ta_cd': ult_row['ta_cd'],
'ult_ident_cd': ult_row['ult_ident_cd'],
'ratio': ult_row['ratio'],
'ta_cd': ult_ident_presc_row['ta_cd'],
'ult_ident_cd': ult_ident_presc_row['ult_ident_cd'],
'ratio': ult_ident_presc_row['ratio'],
'start_date': start_date
}
res = db.execute(sql, params)
logging_sql(logger, sql)
logger.info('')
logger.info(f'{log_message} 成功, {res.rowcount} 行更新 ({elapsed_time.of})')
except Exception as e:
logger.debug('')
logger.debug(f'{log_message} 失敗')
raise e
def _add_emp_chg_inst(db: Database, valid_dst_inst_merge_records: list[dict]):
#
for row in valid_dst_inst_merge_records:
tekiyo_month_first_day = _get_first_day_of_month(row['tekiyo_month'])
emp_chg_inst_records = _select_emp_chg_inst(db, row['dcf_inst_cd'], row['dup_opp_cd'])
for emp_row in emp_chg_inst_records:
# 重複時相手先コードが存在したかのチェック
if emp_row['opp_count'] > 0:
break
start_date = _str_to_date_time(emp_row['start_date'])
set_start_date = start_date \
if start_date > tekiyo_month_first_day else tekiyo_month_first_day
_insert_emp_chg_inst(db, row['dup_opp_cd'], _date_time_to_str(set_start_date), emp_row)
if start_date < tekiyo_month_first_day:
last_end_date = tekiyo_month_first_day - timedelta(days=1)
_update_emp_chg_inst_end_date(db, row['dcf_inst_cd'], _date_time_to_str(last_end_date), emp_row)
if start_date <= last_end_date:
continue
_update_emp_chg_inst_enabled_flg(db, row['dcf_inst_cd'], emp_row['ta_cd'], emp_row['start_date'])
# if start_date >= tekiyo_month_first_day:
# _update_emp_chg_inst_enabled_flg(db, row['dcf_inst_cd'], emp_row['ta_cd'], start_date)
# continue
# last_end_date = tekiyo_month_first_day - timedelta(days=1)
# _update_emp_chg_inst_end_date(db, row['dcf_inst_cd'], last_end_date, emp_row)
# if start_date > last_end_date:
# _update_emp_chg_inst_enabled_flg(db, row['dcf_inst_cd'], emp_row['ta_cd'], start_date)
def _update_emp_chg_inst_enabled_flg(db: Database, dcf_inst_cd: str, ta_cd: str, start_date: str):
#
# emp_chg_instを更新
try:
elapsed_time = ElapsedTime()
sql = """
@ -174,14 +173,15 @@ def _update_emp_chg_inst_enabled_flg(db: Database, dcf_inst_cd: str, ta_cd: str,
params = {'dcf_inst_cd': dcf_inst_cd, 'ta_cd': ta_cd, 'start_date': start_date}
res = db.execute(sql, params)
logging_sql(logger, sql)
logger.info(f'従業員担当施設マスタの更新に成功, {res.rowcount} 行更新 ({elapsed_time.of})')
logger.info(f'従業員担当施設マスタのYorNフラグ更新に成功, {res.rowcount} 行更新 ({elapsed_time.of})')
except Exception as e:
logger.debug('')
logger.debug('従業員担当施設マスタのYorNフラグ更新に失敗')
raise e
def _update_emp_chg_inst_end_date(db: Database, dcf_inst_cd: str, last_end_date: str, emp_row: CursorResult):
#
def _update_emp_chg_inst_end_date(db: Database, dcf_inst_cd: str, last_end_date: str,
emp_chg_inst_row: CursorResult):
# emp_chg_instを更新
try:
elapsed_time = ElapsedTime()
sql = """
@ -200,21 +200,22 @@ def _update_emp_chg_inst_end_date(db: Database, dcf_inst_cd: str, last_end_date:
params = {
'end_date': last_end_date,
'dcf_inst_cd': dcf_inst_cd,
'ta_cd': emp_row['ta_cd'],
'emp_cd': emp_row['emp_cd'],
'bu_cd': emp_row['bu_cd'],
'start_date': emp_row['start_date']
'ta_cd': emp_chg_inst_row['ta_cd'],
'emp_cd': emp_chg_inst_row['emp_cd'],
'bu_cd': emp_chg_inst_row['bu_cd'],
'start_date': emp_chg_inst_row['start_date']
}
res = db.execute(sql, params)
logging_sql(logger, sql)
logger.info(f'従業員担当施設マスタの更新に成功, {res.rowcount} 行更新 ({elapsed_time.of})')
logger.info(f'従業員担当施設マスタの適用終了日更新 成功, {res.rowcount} 行更新 ({elapsed_time.of})')
except Exception as e:
logger.debug('')
logger.debug('従業員担当施設マスタの適用終了日更新 失敗')
raise e
def _insert_emp_chg_inst(db: Database, dup_opp_cd: str, set_start_date: str, emp_row: CursorResult):
#
def _insert_emp_chg_inst(db: Database, dup_opp_cd: str, set_start_date: str,
emp_chg_inst_row: CursorResult):
# emp_chg_instにInsert
try:
elapsed_time = ElapsedTime()
sql = """
@ -250,23 +251,24 @@ def _insert_emp_chg_inst(db: Database, dup_opp_cd: str, set_start_date: str, emp
"""
params = {
'dup_opp_cd': dup_opp_cd,
'ta_cd': emp_row['ta_cd'],
'emp_cd': emp_row['emp_cd'],
'bu_cd': emp_row['bu_cd'],
'ta_cd': emp_chg_inst_row['ta_cd'],
'emp_cd': emp_chg_inst_row['emp_cd'],
'bu_cd': emp_chg_inst_row['bu_cd'],
'start_date': set_start_date,
'end_date': emp_row['end_date'],
'main_chg_flg': emp_row['main_chg_flg'] if emp_row['main_chg_flg'] is None else None
'end_date': emp_chg_inst_row['end_date'],
'main_chg_flg': None
if emp_chg_inst_row['main_chg_flg'] is None else emp_chg_inst_row['main_chg_flg']
}
res = db.execute(sql, params)
logging_sql(logger, sql)
logger.info(f'従業員担当施設マスタの追加に成功, {res.rowcount} 行更新 ({elapsed_time.of})')
except Exception as e:
logger.debug('')
logger.debug('従業員担当施設マスタの追加に失敗')
raise e
def _select_dct_inst_merge(db: Database, muko_flg: int, is_null_dcf_inst_cd_new: bool):
#
def _select_dct_inst_merge(db: Database, muko_flg: int) -> list[dict]:
# dcf_inst_mergeからSelect
try:
sql = """
SELECT
@ -279,25 +281,26 @@ def _select_dct_inst_merge(db: Database, muko_flg: int, is_null_dcf_inst_cd_new:
src05.hdke_tbl AS ht
ON dim.tekiyo_month = DATE_FORMAT(ht.syor_date, '%Y%m')
WHERE
dim.muko_flg =: muko_flg
dim.muko_flg = :muko_flg
AND dim.enabled_flg = 'Y'
AND dim.dcf_inst_cd_new <= >: is_null_dcf_inst_cd_new
"""
AND dim.dcf_inst_cd_new IS {not_null}NULL
""".format(
not_null='' if muko_flg == 0 else 'NOT '
)
params = {
'muko_flg': muko_flg,
'is_null_dcf_inst_cd_new': None
'muko_flg': muko_flg
}
dst_inst_merge_records = db.execute_select(sql, params)
logging_sql(logger, sql)
logger.info('')
logger.info('DCF施設統合マスタの取得に成功')
except Exception as e:
logger.debug('')
logger.debug('DCF施設統合マスタの取得に失敗')
raise e
return dst_inst_merge_records
def _update_dcf_inst_merge(db: Database, muko_flg: int):
def _update_dcf_inst_merge(db: Database, muko_flg: int) -> int:
#
try:
elapsed_time = ElapsedTime()
@ -319,7 +322,7 @@ def _update_dcf_inst_merge(db: Database, muko_flg: int):
WHERE
dim.muko_flg= :muko_flg
AND dim.enabled_flg='Y'
AND dim.dcf_inst_cd_new IS {$dcfInstCdNew}NULL
AND dim.dcf_inst_cd_new IS {not_null}NULL
) AS bf_dim
SET
updim.dcf_inst_cd_new = {column},
@ -329,24 +332,27 @@ def _update_dcf_inst_merge(db: Database, muko_flg: int):
updim.dcf_inst_cd = base_dcf_inst_cd
AND updim.dup_opp_cd = base_dup_opp_cd
AND updim.tekiyo_month = base_tekiyo_month
AND updim.muko_flg =base_muko_flg
AND updim.enabled_flg =base_enabled_flg
"""
AND updim.muko_flg = base_muko_flg
AND updim.enabled_flg = base_enabled_flg
""".format(
not_null='' if muko_flg == 0 else 'NOT ',
column='base_dup_opp_cd' if muko_flg == 0 else 'NULL'
)
params = {
'muko_flg': muko_flg
}
res = db.execute(sql.format(
column='base_dup_opp_cd' if muko_flg == 1 else 'NULL'
), params)
res = db.execute(sql, params)
logging_sql(logger, sql)
logger.info(f'DCF施設統合マスタの更新に成功, {res.rowcount} 行更新 ({elapsed_time.of})')
except Exception as e:
logger.debug('')
logger.debug('DCF施設統合マスタの更新に失敗')
raise e
return res.rowcount
def _update_dcf_inst_cd_new(db: Database, dcf_inst_cd_new_after: str, dcf_inst_cd_new_before: str):
#
# dcf_inst_mergeをUpdate
try:
elapsed_time = ElapsedTime()
sql = """
@ -361,17 +367,20 @@ def _update_dcf_inst_cd_new(db: Database, dcf_inst_cd_new_after: str, dcf_inst_c
AND enabled_flg = 'Y'
AND muko_flg = 0
"""
params = {'dcf_inst_cd_new_after': dcf_inst_cd_new_after, 'dcf_inst_cd_new_before': dcf_inst_cd_new_before}
params = {
'dcf_inst_cd_new_after': dcf_inst_cd_new_after,
'dcf_inst_cd_new_before': dcf_inst_cd_new_before
}
res = db.execute(sql, params)
logging_sql(logger, sql)
logger.info(f'移行先DCF施設コードの更新に成功, {res.rowcount} 行更新 ({elapsed_time.of})')
except Exception as e:
logger.debug('')
logger.debug('移行先DCF施設コードの更新に失敗')
raise e
def _update_ult_ident_presc_end_date(db: Database, last_end_date: str, ult_ident_presc_record: CursorResult):
#
def _update_ult_ident_presc_end_date(db: Database, last_end_date: str, ult_ident_presc_row: CursorResult):
# ult_ident_presc_endをUpdate
try:
elapsed_time = ElapsedTime()
sql = """
@ -388,21 +397,22 @@ def _update_ult_ident_presc_end_date(db: Database, last_end_date: str, ult_ident
"""
params = {
'end_date': last_end_date,
'ta_cd': ult_ident_presc_record['ta_cd'],
'ult_ident_cd': ult_ident_presc_record['ult_ident_cd'],
'ratio': ult_ident_presc_record['ratio'],
'start_date': ult_ident_presc_record['start_date']
'ta_cd': ult_ident_presc_row['ta_cd'],
'ult_ident_cd': ult_ident_presc_row['ult_ident_cd'],
'ratio': ult_ident_presc_row['ratio'],
'start_date': ult_ident_presc_row['start_date']
}
res = db.execute(sql, params)
logging_sql(logger, sql)
logger.info(f'終了日 > 開始月のため適用終了日を更新, {res.rowcount} 行更新 ({elapsed_time.of})')
logger.info(f'終了日 > 開始月のため適用終了日を更新 成功, {res.rowcount} 行更新 ({elapsed_time.of})')
except Exception as e:
logger.debug('')
logger.debug('終了日 > 開始月のため適用終了日を更新 失敗')
raise e
def _insert_ult_ident_presc(db: Database, set_Start_Date: str, dup_opp_cd: str, ult_row: CursorResult):
#
def _insert_ult_ident_presc(db: Database, set_Start_Date: str, dup_opp_cd: str,
ult_ident_presc_row: CursorResult):
# ult_ident_prescにInsert
try:
elapsed_time = ElapsedTime()
sql = """
@ -419,7 +429,7 @@ def _insert_ult_ident_presc(db: Database, set_Start_Date: str, dup_opp_cd: str,
update_date,
updater
)
VALUES(
VALUES(
:ta_cd,
:ult_ident_cd,
:ratio,
@ -433,23 +443,23 @@ def _insert_ult_ident_presc(db: Database, set_Start_Date: str, dup_opp_cd: str,
)
"""
params = {
'ta_cd': ult_row['ta_cd'],
'ult_ident_cd': ult_row['ult_ident_cd'],
'ratio': ult_row['ratio'],
'ta_cd': ult_ident_presc_row['ta_cd'],
'ult_ident_cd': ult_ident_presc_row['ult_ident_cd'],
'ratio': ult_ident_presc_row['ratio'],
'start_date': set_Start_Date,
'presc_cd': dup_opp_cd,
'end_date': ult_row['end_date']
'end_date': ult_ident_presc_row['end_date']
}
res = db.execute(sql, params)
logging_sql(logger, sql)
logger.info(f'納入先処方元マスタに追加成功, {res.rowcount} 行更新 ({elapsed_time.of})')
logger.info(f'納入先処方元マスタに追加 成功, {res.rowcount} 行更新 ({elapsed_time.of})')
except Exception as e:
logger.debug('納入先処方元マスタに追加失敗')
logger.debug('納入先処方元マスタに追加 失敗')
raise e
def _select_emp_chg_inst(db: Database, dcf_inst_cd: str, dup_opp_cd: str) -> list[dict]:
#
# emp_chg_instから取得
try:
sql = """
SELECT
@ -461,7 +471,14 @@ def _select_emp_chg_inst(db: Database, dcf_inst_cd: str, dup_opp_cd: str) -> lis
eci.end_date,
eci.main_chg_flg,
eci.enabled_flg,
(SELECT COUNT(eciopp.inst_cd) FROM src05.emp_chg_inst AS eciopp WHERE eciopp.inst_cd = :dup_opp_cd) AS opp_count
(
SELECT
COUNT(eciopp.inst_cd)
FROM
src05.emp_chg_inst AS eciopp
WHERE
eciopp.inst_cd = :dup_opp_cd
) AS opp_count
FROM
src05.emp_chg_inst AS eci
WHERE
@ -472,15 +489,15 @@ def _select_emp_chg_inst(db: Database, dcf_inst_cd: str, dup_opp_cd: str) -> lis
params = {'dcf_inst_cd': dcf_inst_cd, 'dup_opp_cd': dup_opp_cd}
emp_chg_inst_records = db.execute_select(sql, params)
logging_sql(logger, sql)
logger.info('')
logger.info('従業員担当施設マスタの取得 成功')
except Exception as e:
logger.debug('')
logger.debug('従業員担当施設マスタの取得 失敗')
raise e
return emp_chg_inst_records
def _select_ult_ident_presc(db: Database, dcf_inst_cd: str, dup_opp_cd: str) -> list[dict]:
#
# ult_ident_prescから取得
try:
sql = """
SELECT
@ -489,25 +506,33 @@ def _select_ult_ident_presc(db: Database, dcf_inst_cd: str, dup_opp_cd: str) ->
uip.ratio,
uip.start_date,
uip.end_date,
(SELECT COUNT(uipopp.ta_cd) FROM ult_ident_presc AS uipopp WHERE uipopp.presc_cd = :dup_opp_cd) AS opp_count
(
SELECT
COUNT(uipopp.ta_cd)
FROM
ult_ident_presc AS uipopp
WHERE
uipopp.presc_cd = :dup_opp_cd
) AS opp_count
FROM
src05.ult_ident_presc AS uip
WHERE
uip.presc_cd = '{$dcfInstCd}'
uip.presc_cd = :dcf_inst_cd
AND (SELECT ht.syor_date FROM src05.hdke_tbl AS ht) < uip.end_date
"""
params = {'dcf_inst_cd': dcf_inst_cd, 'dup_opp_cd': dup_opp_cd}
ult_ident_presc_records = db.execute_select(sql, params)
logging_sql(logger, sql)
logger.info('')
logger.info('納入先処方元マスタの取得 成功')
except Exception as e:
logger.debug('')
logger.debug('納入先処方元マスタの取得 失敗')
raise e
return ult_ident_presc_records
def _count_duplicate_ult_ident_presc(db: Database, set_Start_Date: str, ult_row: CursorResult):
#
def _count_duplicate_ult_ident_presc(db: Database, set_start_date: str,
ult_ident_presc_row: CursorResult) -> int:
# ult_ident_prescの重複時相手先コードの件数取得
try:
sql = """
SELECT
@ -518,30 +543,33 @@ def _count_duplicate_ult_ident_presc(db: Database, set_Start_Date: str, ult_row:
ta_cd = :ta_cd
AND ult_ident_cd = :ult_ident_cd
AND ratio = :ratio
AND start_date = :set_Start_Date
AND start_date = :start_date
"""
params = {
'ta_cd': ult_row['ta_cd'],
'ult_ident_cd': ult_row['ult_ident_cd'],
'ratio': ult_row['ratio'],
'start_date': set_Start_Date
'ta_cd': ult_ident_presc_row['ta_cd'],
'ult_ident_cd': ult_ident_presc_row['ult_ident_cd'],
'ratio': ult_ident_presc_row['ratio'],
'start_date': set_start_date
}
result = db.execute_select(sql, params)
logging_sql(logger, sql)
logger.info('')
logger.info('納入先処方元マスタの重複予定データの存在チェック 成功')
except Exception as e:
logger.debug('')
logger.debug('納入先処方元マスタの重複予定データの存在チェック 失敗')
raise e
return result[0]['cnt']
def _get_first_day_of_month(month_day: str):
return datetime.datetime.strptime(month_day, '%Y%m01')
def _get_first_day_of_month(year_month: str) -> datetime:
# year_monthの初日の日付を日付型に変換し返却する
return datetime.strptime(year_month + '01', '%Y%m%d')
def _str_to_date_time(str_date_time: str):
return datetime.datetime.strptime(str_date_time, '%Y%m%d')
def _str_to_date_time(str_date_time: str) -> datetime:
# str_date_timeを日付型に変換して返却する
return datetime.strptime(str_date_time, '%Y%m%d')
def _date_time_to_str(date_time: datetime):
return date_time.strptime('%Y%m%d')
def _date_time_to_str(date_time: datetime) -> str:
# date_timeをYmd型に変換して返却する
return date_time.strftime('%Y%m%d')