Merge pull request #172 feature-NEWDWH2021-1058 into develop

This commit is contained in:
朝倉 明日香 2023-04-25 11:39:05 +09:00
commit bd8e396e0a

View File

@ -15,16 +15,14 @@ def exec():
db.connect()
logger.debug('##########################')
logger.debug('START Changing Employee in charge of institution PGM.')
# 業務日付を取得
syor_date = batch_context.syor_date
# `emp_chg_inst_lau`をTruncate
_truncate_emp_chg_inst_lau(db)
# emp_chg_inst から、`emp_chg_inst_lau`へInsert
_insert_into_emp_chg_inst_lau_from_emp_chg_inst(db)
# vop_hco_merge_vから、emp_chg_inst_lauをUpdate
_update_emp_chg_inst_lau_from_vop_hco_merge_v(db, syor_date)
# dcf_inst_mergeから、emp_chg_inst_lauをUpdate
_update_dcf_inst_merge_from_emp_chg_inst_lau(db, syor_date)
# v_inst_merge_tから、emp_chg_inst_lauをUpdate
_update_emp_chg_inst_lau_from_v_inst_merge_t(db)
# inst_merge_tから、emp_chg_inst_lauをUpdate
_update_emp_chg_inst_lau_from_inst_merge_t(db)
logger.debug('##########################')
logger.debug('End All Processing PGM.')
except Exception as e:
@ -81,8 +79,8 @@ def _insert_into_emp_chg_inst_lau_from_emp_chg_inst(db: Database):
return
def _update_emp_chg_inst_lau_from_vop_hco_merge_v(db: Database, syor_date: str):
# vop_hco_merge_vはデータが作られないため、この洗い替え処理は基本空振りする
def _update_emp_chg_inst_lau_from_v_inst_merge_t(db: Database):
# v_inst_merge_tの元となるvop_hco_merge_vはデータが作られないため、この洗い替え処理は基本空振りする
logger.debug("##########################")
try:
select_result = db.execute_select(
@ -90,93 +88,19 @@ def _update_emp_chg_inst_lau_from_vop_hco_merge_v(db: Database, syor_date: str):
SELECT
COUNT(v_inst_cd) AS row_count
FROM
src05.vop_hco_merge_v
WHERE
STR_TO_DATE(apply_dt, '%Y-%m-%d') <= :syor_date
""",
{'syor_date': syor_date}
internal05.v_inst_merge_t
"""
)
except Exception as e:
logger.debug("Error! `vop_hco_merge_v` Table count error!")
logger.debug("Error! `v_inst_merge_t` Table count error!")
raise e
count = [row for row in select_result][0]['row_count']
if count == 0:
logger.info('vop_hco_merge_v Table Data is not exists!')
logger.info('v_inst_merge_t Table Data is not exists!')
return
logger.info('vop_hco_merge_v Table Data is exists!')
# vop_hco_merge_v から、emp_chg_inst_lauをUpdateします
result = db.execute_select(
"""
SELECT
v_inst_cd,
v_inst_cd_merg
FROM
src05.vop_hco_merge_v
WHERE
STR_TO_DATE(apply_dt, '%Y-%m-%d') <= :syor_date
ORDER BY
STR_TO_DATE(apply_dt, '%Y-%m-%d') ASC
""",
{'syor_date': syor_date}
)
for row in result:
v_inst_cd = row['v_inst_cd']
v_inst_cd_merge = row['v_inst_cd_merg']
try:
elapsed_time = ElapsedTime()
update_sql = """
UPDATE
emp_chg_inst_lau
SET
inst_cd = :v_inst_merge,
lua_ope_dt = SYSDATE()
WHERE
inst_cd = :v_inst_cd;
"""
update_result = db.execute(
update_sql,
{'v_inst_cd': v_inst_cd, 'v_inst_cd_merg': v_inst_cd_merge}
)
logging_sql(logger, update_sql)
logger.info(f'Query OK, {update_result.rowcount} rows affected ({elapsed_time.of})')
except Exception as e:
logger.debug(f"emp_chg_inst_lau v_inst_cd could not set from {v_inst_cd_merge} to {v_inst_cd_merge}!")
raise e
logger.debug(f"Success! emp_chg_inst_lau v_inst_cd was set from {v_inst_cd} to {v_inst_cd_merge}!")
return
def _update_dcf_inst_merge_from_emp_chg_inst_lau(db: Database, syor_date: str):
# dcf_inst_mergeから、emp_chg_inst_lauをUpdate
# Get count from DCF_INST_MERGE
logger.debug("##########################")
try:
select_result = db.execute_select(
"""
SELECT
COUNT(dcf_inst_cd) AS row_count
FROM
src05.dcf_inst_merge
WHERE
muko_flg = '0'
AND dcf_inst_cd_new IS NOT NULL
AND enabled_flg = 'Y'
AND STR_TO_DATE(CONCAT(tekiyo_month, '01'), '%Y%m%d') <= :syor_date
""",
{'syor_date': syor_date}
)
except Exception as e:
logger.debug("Error! Getting Count of dcf_inst_merge was failed!")
raise e
count = [row for row in select_result][0]['row_count']
if count == 0:
logger.info('dcf_inst_merge Table Data is not exists!')
return
logger.debug('dcf_inst_merge Table Data is exists!')
# dcf_inst_mergeから、emp_chg_inst_lauをUpdate
logger.info('v_inst_merge_t Table Data is exists!')
# v_inst_merge_t から、emp_chg_inst_lauをUpdateします
logger.debug("##########################")
logger.debug("#### UPDATE DATA #########")
logger.debug("##########################")
@ -184,29 +108,64 @@ def _update_dcf_inst_merge_from_emp_chg_inst_lau(db: Database, syor_date: str):
elapsed_time = ElapsedTime()
update_sql = """
UPDATE
src05.emp_chg_inst_lau el,
(
SELECT
dcf_inst_cd,
dcf_inst_cd_new
FROM
src05.dcf_inst_merge
WHERE
muko_flg = '0'
AND dcf_inst_cd_new IS NOT NULL
AND enabled_flg = 'Y'
AND STR_TO_DATE(CONCAT(tekiyo_month, '01'), '%Y%m%d') <= :syor_date
) dm
src05.emp_chg_inst_lau el, internal05.v_inst_merge_t vimt
SET
el.inst_cd = dm.dcf_inst_cd_new,
el.inst_cd = vimt.v_inst_cd_merge,
el.lua_ope_dt = SYSDATE()
WHERE
el.inst_cd = dm.dcf_inst_cd
el.inst_cd = vimt.v_inst_cd
"""
res = db.execute(
update_sql,
{'syor_date': syor_date}
)
res = db.execute(update_sql)
logging_sql(logger, update_sql)
logger.info(f'Query OK, {res.rowcount} rows affected ({elapsed_time.of})')
except Exception as e:
logger.debug("emp_chg_inst_lau.v_inst_cd could not set!")
raise e
logger.debug("emp_chg_inst_lau.v_inst_cd was set!")
return
def _update_emp_chg_inst_lau_from_inst_merge_t(db: Database):
# inst_merge_tから、emp_chg_inst_lauをUpdate
# Get count from INST_MERGE_T
logger.debug("##########################")
try:
select_result = db.execute_select(
"""
SELECT
COUNT(dcf_dsf_inst_cd) AS row_count
FROM
internal05.inst_merge_t
"""
)
except Exception as e:
logger.debug("Error! Getting Count of internal05.inst_merge_t was failed!")
raise e
count = [row for row in select_result][0]['row_count']
if count == 0:
logger.info('inst_merge_t Table Data is not exists!')
return
logger.debug('inst_merge_t Table Data is exists!')
# inst_merge_tから、emp_chg_inst_lauをUpdate
logger.debug("##########################")
logger.debug("#### UPDATE DATA #########")
logger.debug("##########################")
try:
elapsed_time = ElapsedTime()
update_sql = """
UPDATE
src05.emp_chg_inst_lau el, internal05.inst_merge_t imt
SET
el.inst_cd = imt.dup_opp_cd,
el.lua_ope_dt = SYSDATE()
WHERE
el.inst_cd = imt.dcf_dsf_inst_cd
"""
res = db.execute(update_sql)
logging_sql(logger, update_sql)
logger.info(f'Query OK, {res.rowcount} rows affected ({elapsed_time.of})')
except Exception as e: