diff --git a/ecs/jskult-batch-daily/src/batch/laundering/emp_chg_inst_laundering.py b/ecs/jskult-batch-daily/src/batch/laundering/emp_chg_inst_laundering.py index e9d77529..f78ece9b 100644 --- a/ecs/jskult-batch-daily/src/batch/laundering/emp_chg_inst_laundering.py +++ b/ecs/jskult-batch-daily/src/batch/laundering/emp_chg_inst_laundering.py @@ -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: