Merge pull request #376 feature-NEWDWH2021-1503 into develop-emp-chg-inst

This commit is contained in:
朝倉 明日香 2024-04-17 11:10:42 +09:00
commit 267ae37ec9
4 changed files with 35 additions and 22 deletions

View File

@ -20,8 +20,8 @@ def exec():
db = Database.get_instance()
try:
db.connect()
db.to_jst()
db.begin()
db.to_jst()
logger.debug('DCF施設統合マスタ作成処理開始')
# COM施設からDCF施設統合マスタに登録
(is_add_dcf_inst_merge, duplication_inst_records) = _insert_dcf_inst_merge_from_com_inst(db)

View File

@ -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
@ -14,8 +15,8 @@ def exec():
db = Database.get_instance()
try:
db.connect()
db.to_jst()
db.begin()
db.to_jst()
logger.debug('DCF施設統合マスタ日次更新処理開始')
# DCF施設統合マスタ移行先コードのセット(無効フラグが『0(有効)』)
enabled_dst_inst_merge_records = _set_enabled_dct_inst_merge(db)
@ -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('従業員担当施設マスタから領域コードの取得に成功')
logger.info('従業員担当施設マスタから領域コード、担当者種別コードの取得に成功')
except Exception as e:
logger.debug('従業員担当施設マスタから領域コードの取得に失敗')
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('従業員担当施設マスタの取得 成功')

View File

@ -53,7 +53,9 @@ def _insert_into_emp_chg_inst_lau_from_emp_chg_inst(db: Database):
src05.emp_chg_inst_lau
SELECT
inst_cd,
ta_cd,emp_cd,
ta_cd,
emp_chg_type_cd,
emp_cd,
bu_cd,
start_date,
end_date,

View File

@ -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()
# 施設担当者洗替