feat: DCF施設統合マスタ作成(仮)
This commit is contained in:
parent
f12c36aa0b
commit
3a98128b11
@ -0,0 +1,138 @@
|
||||
from src.batch.batch_functions import logging_sql
|
||||
from src.batch.common.batch_context import BatchContext
|
||||
from src.db.database import Database
|
||||
from src.error.exceptions import BatchOperationException
|
||||
from src.logging.get_logger import get_logger
|
||||
from src.time.elapsed_time import ElapsedTime
|
||||
|
||||
batch_context = BatchContext.get_instance()
|
||||
logger = get_logger('DCF施設統合マスタ作成')
|
||||
|
||||
|
||||
def exec():
|
||||
"""DCF施設統合マスタ作成"""
|
||||
|
||||
# アルトマーク取込が行われていない場合は処理をスキップする
|
||||
# if not batch_context.is_ultmarc_imported:
|
||||
# logger.info('アルトマーク取込が行われていないため、DCF施設統合マスタ作成処理をスキップします。')
|
||||
|
||||
db = Database.get_instance()
|
||||
try:
|
||||
db.connect()
|
||||
db.begin()
|
||||
logger.debug('DCF施設統合マスタ作成処理開始')
|
||||
# COM施設からDCF施設統合マスタに登録
|
||||
_insert_dcf_inst_merge_from_com_ci(db)
|
||||
db.commit()
|
||||
logger.debug('DCF施設統合マスタ作成処理終了')
|
||||
except Exception as e:
|
||||
db.rollback()
|
||||
raise BatchOperationException(e)
|
||||
finally:
|
||||
db.disconnect()
|
||||
|
||||
|
||||
def _insert_dcf_inst_merge_from_com_ci(db: Database):
|
||||
# com_ciにdcf_inst_mergeにinsert
|
||||
creater = 'batchuser'
|
||||
enabledFlg = 'Y'
|
||||
|
||||
try:
|
||||
result = db.execute_select(
|
||||
"""
|
||||
SELECT
|
||||
ci.dcf_dsf_inst_cd AS dcf_dsf_inst_cd,
|
||||
ci.form_inst_name_kanji AS form_inst_name_kanji,
|
||||
ci.dup_opp_cd AS dup_opp_cd,
|
||||
(
|
||||
SELECT
|
||||
dupci.form_inst_name_kanji
|
||||
FROM
|
||||
src05.com_inst AS dupci
|
||||
WHERE
|
||||
dupci.dcf_dsf_inst_cd = ci.dup_opp_cd
|
||||
) AS dup_inst_name_kanji,
|
||||
DATE_FORMAT(DATE_ADD((SELECT syor_date FROM src05.hdke_tbl),INTERVAL 1 MONTH),'%Y%m') AS sys_update_date
|
||||
FROM
|
||||
src05.com_inst AS ci
|
||||
WHERE
|
||||
CHAR_LENGTH(ci.dup_opp_cd) > 0
|
||||
AND ci.delete_sche_reason_cd = 'D'
|
||||
AND ci.abolish_ymd IS NULL
|
||||
AND DATE_FORMAT(ci.sys_update_date, '%Y%m%d') BETWEEN (SELECT syor_date FROM src05.hdke_tbl) AND DATE_FORMAT(SYSDATE(), '%Y%m%d')
|
||||
AND NOT EXISTS (
|
||||
SELECT
|
||||
dim.dcf_inst_cd
|
||||
FROM
|
||||
src05.dcf_inst_merge AS dim
|
||||
WHERE
|
||||
dim.dcf_inst_cd = ci.dcf_dsf_inst_cd
|
||||
)
|
||||
AND (
|
||||
EXISTS (
|
||||
SELECT
|
||||
eci.inst_cd
|
||||
FROM
|
||||
src05.emp_chg_inst AS eci
|
||||
WHERE
|
||||
eci.inst_cd = ci.dcf_dsf_inst_cd
|
||||
)
|
||||
OR (
|
||||
SELECT
|
||||
sl.inst_cd
|
||||
FROM
|
||||
src05.sales_lau AS sl
|
||||
WHERE
|
||||
sl.inst_cd = ci.dcf_dsf_inst_cd
|
||||
)
|
||||
)
|
||||
"""
|
||||
)
|
||||
logger.debug('重複コードがあるデータの取得に成功')
|
||||
except Exception as e:
|
||||
logger.debug('重複コードがあるデータの取得に失敗')
|
||||
raise e
|
||||
|
||||
if len(result) == 0:
|
||||
logger.info('重複コードがあるデータはありません')
|
||||
return
|
||||
|
||||
values_clauses = []
|
||||
params = {'enabledFlg': enabledFlg, 'creater': creater, "updater": creater}
|
||||
clauses_no = 0
|
||||
for row in result:
|
||||
dcfInstCdArr = f'dcfInstCd{clauses_no}'
|
||||
dupOppCdArr = f'dupOppCd{clauses_no}'
|
||||
tekiyoMonthArr = f'tekiyoMonth{clauses_no}'
|
||||
placeholders = f'(:{dcfInstCdArr}, :{dupOppCdArr}, :{tekiyoMonthArr}, :enabledFlg, :creater, SYSDATE(), :updater, SYSDATE())'
|
||||
values_clauses.append(placeholders)
|
||||
params[dcfInstCdArr] = row['dcf_dsf_inst_cd']
|
||||
params[dupOppCdArr] = row['dup_opp_cd']
|
||||
params[tekiyoMonthArr] = row['sys_update_date']
|
||||
clauses_no += 1
|
||||
|
||||
insert_sql = f"""
|
||||
INSERT INTO
|
||||
src05.dcf_inst_merge (
|
||||
dcf_inst_cd,
|
||||
dup_opp_cd,
|
||||
tekiyo_month,
|
||||
enabled_flg,
|
||||
creater,
|
||||
create_date,
|
||||
updater,
|
||||
update_date
|
||||
) VALUES
|
||||
{','.join(values_clauses)}
|
||||
"""
|
||||
|
||||
try:
|
||||
elapsed_time = ElapsedTime()
|
||||
res = db.execute(insert_sql, params)
|
||||
logging_sql(logger, insert_sql)
|
||||
logger.info(f'COM施設からDCF施設統合マスタに登録成功, {res.rowcount} 行更新 ({elapsed_time.of})')
|
||||
except Exception as e:
|
||||
logger.debug('COM施設からDCF施設統合マスタの登録に失敗')
|
||||
raise e
|
||||
|
||||
return
|
||||
@ -1,15 +0,0 @@
|
||||
from src.batch.common.batch_context import BatchContext
|
||||
from src.logging.get_logger import get_logger
|
||||
|
||||
batch_context = BatchContext.get_instance()
|
||||
logger = get_logger('DCF施設統合マスタ作成')
|
||||
|
||||
|
||||
def exec():
|
||||
"""DCF施設統合マスタ作成"""
|
||||
|
||||
# アルトマーク取込が行われていない場合は処理をスキップする
|
||||
if not batch_context.is_ultmarc_imported:
|
||||
logger.info('アルトマーク取込が行われていないため、DCF施設統合マスタ作成処理をスキップします。')
|
||||
|
||||
pass
|
||||
Loading…
x
Reference in New Issue
Block a user