レビュー指摘対応とset_process_statusの引数を変更

This commit is contained in:
mori.k 2025-06-02 14:59:35 +09:00
parent 80da987224
commit a232923909

View File

@ -16,6 +16,7 @@ from src.manager.jskult_batch_run_manager import JskultBatchRunManager
from src.manager.jskult_batch_status_manager import JskultBatchStatusManager
from src.manager.jskult_hdke_tbl_manager import JskultHdkeTblManager
from src.system_var import environment
from src.system_var import constants
logger = get_logger('メルク施設マスタ作成')
@ -74,119 +75,56 @@ class MstInstAll(JskultBatchEntrypoint):
)
try:
jskult_batch_status_manager.set_process_status("start")
jskult_batch_status_manager.set_process_status(
constants.PROCESS_STATUS_START)
try:
if not jskult_batch_status_manager.can_run_post_process():
# 後続処理の起動条件を満たしていない場合
# 処理ステータスを「処理待」に設定
jskult_batch_status_manager.set_process_status("waiting")
jskult_batch_status_manager.set_process_status(
constants.PROCESS_STATUS_WAITING)
# バッチ実行管理テーブルに「retry」で登録
jskult_batch_run_manager.batch_retry()
return
except MaxRunCountReachedException:
logger.info('最大起動回数に到達したため、メルク施設マスタ作成処理を実行します。')
logger.info("最大起動回数に到達したため、メルク施設マスタ作成処理を実行します。")
jskult_batch_status_manager.set_process_status("doing")
jskult_batch_status_manager.set_process_status(
constants.PROCESS_STATUS_DOING)
# アルトマーク取込が実行されていた場合にDCF施設削除新規マスタの作成処理を実行
if jskult_batch_status_manager.is_done_ultmarc_import():
self._db = Database.get_instance()
self._db.connect()
logger.debug('メルク施設マスタ作成処理開始')
# mst_inst_allをTruncate
self._truncate_mst_inst_all(self._db)
# com_instから、mst_inst_allへInsert
self._insert_mst_inst_all_from_com_inst(self._db)
# com_pharmから、mst_inst_allへInsert
self._insert_mst_inst_all_from_com_pharm(self._db)
logger.debug('メルク施設マスタ作成処理終了')
db = Database.get_instance()
db.connect()
logger.info("メルク施設マスタ作成処理開始")
# mst_inst_allをTruncate
self._truncate_mst_inst_all(db)
# com_instから、mst_inst_allへInsert
self._insert_mst_inst_all_from_com_inst(db)
# com_pharmから、mst_inst_allへInsert
self._insert_mst_inst_all_from_com_pharm(db)
logger.info("メルク施設マスタ作成処理終了")
jskult_batch_run_manager.batch_success()
jskult_batch_status_manager.set_process_status(
constants.PROCESS_STATUS_DONE)
except Exception as e:
logger.exception(e)
jskult_batch_run_manager.batch_failed()
jskult_batch_status_manager.set_process_status(
constants.PROCESS_STATUS_ERROR)
raise BatchOperationException(e)
finally:
self._db.disconnect()
db.disconnect()
def _truncate_mst_inst_all(self, db: Database):
try:
db.execute("TRUNCATE TABLE src07.mst_inst_all")
except Exception as e:
logger.debug("メルク施設マスタの全件削除に失敗")
raise e
logger.debug("メルク施設マスタの全件削除に成功")
return
def _insert_mst_inst_all_from_com_pharm(self, db: Database):
# com_pharmから、mst_inst_allへInsert
try:
sql = """
INSERT INTO
src07.mst_inst_all (
inst_cd,
inst_clas_cd,
inst_name_form,
inst_name,
pref_cd,
city_cd,
pref_name,
city_name,
address,
postal_cd,
tel_num,
bed_num,
manage_cd,
manage_name,
delete_date,
inst_div_cd,
inst_div_name,
yobi,
creater,
create_date,
updater,
update_date
)
SELECT
cp.dcf_dsf_inst_cd,
'2',
cp.form_inst_name_kanji,
cp.inst_name_kanji,
cp.prefc_cd,
cp.city_cd,
mp.prefc_name,
LEFT(mc.city_name, 40),
cp.inst_addr,
cp.postal_number,
null,
null,
null,
LEFT(cm.manage_name, 40),
cp.abolish_ymd,
cp.inst_div_cd,
LEFT(cid.inst_div_name, 40),
null,
cp.create_user,
cp.regist_date,
cp.update_user,
cp.update_date
FROM
src05.com_pharm AS cp
LEFT OUTER JOIN src05.mst_prefc AS mp
ON cp.prefc_cd = mp.prefc_cd
LEFT OUTER JOIN src05.mst_city AS mc
ON cp.prefc_cd = mc.prefc_cd
AND cp.city_cd = mc.city_cd
LEFT OUTER JOIN src05.com_manage AS cm
ON cp.manage_cd = cm.manage_cd
LEFT OUTER JOIN src05.com_inst_div AS cid
ON cp.inst_div_cd = cid.inst_div_cd
"""
res = db.execute(sql)
logger.info(f'COM_薬局からメルク施設マスタに登録成功')
except Exception as e:
logger.debug("COM_薬局からメルク施設マスタに登録失敗")
logger.info("メルク施設マスタの全件削除に失敗")
raise e
logger.info("メルク施設マスタの全件削除に成功")
return
def _insert_mst_inst_all_from_com_inst(self, db: Database):
@ -196,9 +134,9 @@ class MstInstAll(JskultBatchEntrypoint):
SET SESSION optimizer_switch = 'derived_merge=off'
"""
db.execute(sql)
logger.debug("オプティマイザのderived_mergeフラグ = Off")
logger.info("オプティマイザのderived_mergeフラグ = Off")
except Exception as e:
logger.debug("オプティマイザのderived_mergeフラグの値変更に失敗")
logger.info("オプティマイザのderived_mergeフラグの値変更に失敗")
raise e
# com_instから、mst_inst_allへInsert
@ -265,9 +203,81 @@ class MstInstAll(JskultBatchEntrypoint):
ON ci.inst_div_cd = cid.inst_div_cd
"""
res = db.execute(sql)
logger.info(f'COM_施設からメルク施設マスタに登録成功')
logger.info("COM_施設からメルク施設マスタに登録成功")
except Exception as e:
logger.debug("COM_施設からメルク施設マスタに登録失敗")
logger.info("COM_施設からメルク施設マスタに登録失敗")
raise e
return
def _insert_mst_inst_all_from_com_pharm(self, db: Database):
# com_pharmから、mst_inst_allへInsert
try:
sql = """
INSERT INTO
src07.mst_inst_all (
inst_cd,
inst_clas_cd,
inst_name_form,
inst_name,
pref_cd,
city_cd,
pref_name,
city_name,
address,
postal_cd,
tel_num,
bed_num,
manage_cd,
manage_name,
delete_date,
inst_div_cd,
inst_div_name,
yobi,
creater,
create_date,
updater,
update_date
)
SELECT
cp.dcf_dsf_inst_cd,
'2',
cp.form_inst_name_kanji,
cp.inst_name_kanji,
cp.prefc_cd,
cp.city_cd,
mp.prefc_name,
LEFT(mc.city_name, 40),
cp.inst_addr,
cp.postal_number,
cp.inst_phone_number,
null,
null,
null,
cp.abolish_ymd,
cp.inst_div_cd,
LEFT(cid.inst_div_name, 40),
null,
cp.create_user,
cp.regist_date,
cp.update_user,
cp.update_date
FROM
src05.com_pharm AS cp
LEFT OUTER JOIN src05.mst_prefc AS mp
ON cp.prefc_cd = mp.prefc_cd
LEFT OUTER JOIN src05.mst_city AS mc
ON cp.prefc_cd = mc.prefc_cd
AND cp.city_cd = mc.city_cd
LEFT OUTER JOIN src05.com_manage AS cm
ON cp.manage_cd = cm.manage_cd
LEFT OUTER JOIN src05.com_inst_div AS cid
ON cp.inst_div_cd = cid.inst_div_cd
"""
res = db.execute(sql)
logger.info("COM_薬局からメルク施設マスタに登録成功")
except Exception as e:
logger.info("COM_薬局からメルク施設マスタに登録失敗")
raise e
return