diff --git a/ecs/jskult-batch-daily/src/batch/dcf_inst_merge/integrate_dcf_inst_merge.py b/ecs/jskult-batch-daily/src/batch/dcf_inst_merge/integrate_dcf_inst_merge.py index 85de15ed..df20ea05 100644 --- a/ecs/jskult-batch-daily/src/batch/dcf_inst_merge/integrate_dcf_inst_merge.py +++ b/ecs/jskult-batch-daily/src/batch/dcf_inst_merge/integrate_dcf_inst_merge.py @@ -1,4 +1,5 @@ from datetime import datetime, timedelta + from src.batch.batch_functions import logging_sql from src.batch.common.batch_context import BatchContext from src.db.database import Database @@ -120,12 +121,13 @@ def _add_ult_ident_presc(db: Database, enabled_dst_inst_merge_records: list[dict logger.info('納入先処方元マスタの登録 終了') -def _select_emp_chg_inst_ta_cd(db: Database, dcf_inst_cd: str) -> list[dict]: - # 従業員担当施設マスタから、DCF施設コードに対応した領域コードの取得 +def _select_primary_key_from_emp_chg_inst(db: Database, dcf_inst_cd: str) -> list[dict]: + # 従業員担当施設マスタから、DCF施設コードに対応した領域コードと担当者種別コードの取得 try: sql = """ SELECT - ta_cd + ta_cd, + emp_chg_type_cd FROM src05.emp_chg_inst WHERE @@ -134,14 +136,14 @@ def _select_emp_chg_inst_ta_cd(db: Database, dcf_inst_cd: str) -> list[dict]: AND (SELECT ht.syor_date FROM src05.hdke_tbl AS ht) < end_date """ params = {'dcf_inst_cd': dcf_inst_cd} - emp_chg_inst_ta_cd_records = db.execute_select(sql, params) + emp_chg_inst_primary_key_records = db.execute_select(sql, params) logging_sql(logger, sql) logger.info('従業員担当施設マスタから領域コードの取得に成功') except Exception as e: logger.debug('従業員担当施設マスタから領域コードの取得に失敗') raise e - return emp_chg_inst_ta_cd_records + return emp_chg_inst_primary_key_records def _add_emp_chg_inst(db: Database, enabled_dst_inst_merge_records: list[dict]): @@ -149,10 +151,10 @@ def _add_emp_chg_inst(db: Database, enabled_dst_inst_merge_records: list[dict]): logger.info('従業員担当施設マスタの登録 開始') for enabled_merge_record in enabled_dst_inst_merge_records: tekiyo_month_first_day = _get_first_day_of_month(enabled_merge_record['tekiyo_month']) - emp_chg_inst_ta_cd_records = _select_emp_chg_inst_ta_cd(db, enabled_merge_record['dcf_inst_cd']) - for emp_chg_inst_ta_cd_record in emp_chg_inst_ta_cd_records: + emp_chg_inst_primary_key_records = _select_primary_key_from_emp_chg_inst(db, enabled_merge_record['dcf_inst_cd']) + for emp_chg_inst_primary_key_record in emp_chg_inst_primary_key_records: emp_chg_inst_records = _select_emp_chg_inst(db, enabled_merge_record['dcf_inst_cd'], enabled_merge_record['dup_opp_cd'], - emp_chg_inst_ta_cd_record['ta_cd']) + emp_chg_inst_primary_key_record['ta_cd'], emp_chg_inst_primary_key_record['emp_chg_type_cd']) for emp_chg_inst_row in emp_chg_inst_records: # 重複時相手先コードが存在したかのチェック if emp_chg_inst_row['opp_count'] > 0: @@ -173,7 +175,7 @@ def _add_emp_chg_inst(db: Database, enabled_dst_inst_merge_records: list[dict]): emp_chg_inst_row) continue # 適用開始日 ≧ DCF施設統合マスタの適用月度の1日の場合、N(論理削除レコード)に設定する - _update_emp_chg_inst_disabled(db, enabled_merge_record['dcf_inst_cd'], emp_chg_inst_row['ta_cd'], + _update_emp_chg_inst_disabled(db, enabled_merge_record['dcf_inst_cd'], emp_chg_inst_row['ta_cd'], emp_chg_inst_row['emp_chg_type_cd'], emp_chg_inst_row['start_date']) logger.info('従業員担当施設マスタの登録 終了') @@ -207,7 +209,7 @@ def _delete_ult_ident_presc(db: Database, start_date: str, ult_ident_presc_row: raise e -def _update_emp_chg_inst_disabled(db: Database, dcf_inst_cd: str, ta_cd: str, start_date: str): +def _update_emp_chg_inst_disabled(db: Database, dcf_inst_cd: str, ta_cd: str, emp_chg_type_cd: str, start_date: str): # emp_chg_instをUPDATE try: elapsed_time = ElapsedTime() @@ -221,9 +223,10 @@ def _update_emp_chg_inst_disabled(db: Database, dcf_inst_cd: str, ta_cd: str, st WHERE inst_cd = :dcf_inst_cd AND ta_cd = :ta_cd + AND emp_chg_type_cd = :emp_chg_type_cd AND start_date = :start_date """ - params = {'dcf_inst_cd': dcf_inst_cd, 'ta_cd': ta_cd, 'start_date': start_date} + params = {'dcf_inst_cd': dcf_inst_cd, 'ta_cd': ta_cd, 'emp_chg_type_cd': emp_chg_type_cd, 'start_date': start_date} res = db.execute(sql, params) logging_sql(logger, sql) logger.info(f'従業員担当施設マスタのYorNフラグ更新に成功, {res.rowcount} 行更新 ({elapsed_time.of})') @@ -246,6 +249,7 @@ def _update_emp_chg_inst_end_date(db: Database, dcf_inst_cd: str, last_end_date: WHERE inst_cd = :dcf_inst_cd AND ta_cd = :ta_cd + AND emp_chg_type_cd = :emp_chg_type_cd AND emp_cd = :emp_cd AND bu_cd = :bu_cd AND start_date = :start_date @@ -254,6 +258,7 @@ def _update_emp_chg_inst_end_date(db: Database, dcf_inst_cd: str, last_end_date: 'end_date': last_end_date, 'dcf_inst_cd': dcf_inst_cd, 'ta_cd': emp_chg_inst_row['ta_cd'], + 'emp_chg_type_cd': emp_chg_inst_row['emp_chg_type_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'] @@ -276,6 +281,7 @@ def _insert_emp_chg_inst(db: Database, dup_opp_cd: str, set_start_date: str, src05.emp_chg_inst( inst_cd, ta_cd, + emp_chg_type_cd, emp_cd, bu_cd, start_date, @@ -290,6 +296,7 @@ def _insert_emp_chg_inst(db: Database, dup_opp_cd: str, set_start_date: str, VALUES( :dup_opp_cd, :ta_cd, + :emp_chg_type_cd, :emp_cd, :bu_cd, :start_date, @@ -305,6 +312,7 @@ def _insert_emp_chg_inst(db: Database, dup_opp_cd: str, set_start_date: str, params = { 'dup_opp_cd': dup_opp_cd, 'ta_cd': emp_chg_inst_row['ta_cd'], + 'emp_chg_type_cd': emp_chg_inst_row['emp_chg_type_cd'], 'emp_cd': emp_chg_inst_row['emp_cd'], 'bu_cd': emp_chg_inst_row['bu_cd'], 'start_date': set_start_date, @@ -518,13 +526,14 @@ def _insert_ult_ident_presc(db: Database, set_Start_Date: str, dup_opp_cd: str, raise e -def _select_emp_chg_inst(db: Database, dcf_inst_cd: str, dup_opp_cd: str, ta_cd: str) -> list[dict]: +def _select_emp_chg_inst(db: Database, dcf_inst_cd: str, dup_opp_cd: str, ta_cd: str, emp_chg_type_cd: str) -> list[dict]: # emp_chg_instからSELECT try: sql = """ SELECT eci.inst_cd, eci.ta_cd, + eci.emp_chg_type_cd, eci.emp_cd, eci.bu_cd, eci.start_date, @@ -545,10 +554,11 @@ def _select_emp_chg_inst(db: Database, dcf_inst_cd: str, dup_opp_cd: str, ta_cd: WHERE eci.inst_cd = :dcf_inst_cd AND eci.ta_cd = :ta_cd + AND eci.emp_chg_type_cd = :emp_chg_type_cd AND eci.enabled_flg = 'Y' AND (SELECT ht.syor_date FROM src05.hdke_tbl AS ht) < eci.end_date """ - params = {'dcf_inst_cd': dcf_inst_cd, 'dup_opp_cd': dup_opp_cd, 'ta_cd': ta_cd} + params = {'dcf_inst_cd': dcf_inst_cd, 'dup_opp_cd': dup_opp_cd, 'ta_cd': ta_cd, 'emp_chg_type_cd': emp_chg_type_cd} emp_chg_inst_records = db.execute_select(sql, params) logging_sql(logger, sql) logger.info('従業員担当施設マスタの取得 成功') diff --git a/ecs/jskult-batch-daily/src/batch/laundering/sales_laundering.py b/ecs/jskult-batch-daily/src/batch/laundering/sales_laundering.py index 2cc530f9..8a25ae76 100644 --- a/ecs/jskult-batch-daily/src/batch/laundering/sales_laundering.py +++ b/ecs/jskult-batch-daily/src/batch/laundering/sales_laundering.py @@ -1,8 +1,9 @@ from src.batch.common.batch_context import BatchContext -from src.batch.laundering import ( - create_inst_merge_for_laundering, emp_chg_inst_laundering, - ult_ident_presc_laundering, sales_results_laundering) from src.batch.dcf_inst_merge import integrate_dcf_inst_merge +from src.batch.laundering import (create_inst_merge_for_laundering, + emp_chg_inst_laundering, + sales_results_laundering, + ult_ident_presc_laundering) from src.logging.get_logger import get_logger batch_context = BatchContext.get_instance() @@ -18,7 +19,7 @@ def exec(): logger.info('営業日ではないため、実績洗替処理をスキップします。') return # DCF施設統合マスタ日次更新 - integrate_dcf_inst_merge.exec() + integrate_dcf_inst_merge.exec() # 洗替用マスタ作成 create_inst_merge_for_laundering.exec() # 施設担当者洗替