施設情報セット途中コミット

This commit is contained in:
mori.k 2025-05-29 15:47:39 +09:00
parent 1b4cff1509
commit e45bb1371b

View File

@ -173,16 +173,8 @@ class TrnResultDataBioLot(JskultBatchEntrypoint):
END AS cnvs_lot_sales_qty,
bio.cnvs_inst_cd AS cnvs_inst_cd,
bio.cls_inst_nm AS cls_inst_nm,
CASE LEFT(bio.cnvs_inst_cd, 2)
WHEN '00' THEN src05.com_inst.inst_addr
WHEN '03' THEN src05.com_pharm.inst_addr
ELSE src07.mst_inst_merck.addr2_nm_kj
END AS inst_addr,
CASE LEFT(bio.cnvs_inst_cd, 2)
WHEN '00' THEN src05.com_inst.inst_phone_number
WHEN '03' THEN src05.com_pharm.inst_phone_number
ELSE src07.mst_inst_merck.tel_no
END AS inst_tel AS inst_tel,
NULL AS inst_addr,
NULL AS inst_tel,
bio.result_cd AS result_cd,
bio.src_cd AS src_cd,
-- 判定結果CDより値を設定する
@ -206,20 +198,6 @@ class TrnResultDataBioLot(JskultBatchEntrypoint):
src07.trn_result_data_bio bio
-- 生物由来変換マスタ
CROSS JOIN src07.bio_conv conv
LEFT OUTER JOIN src07.customer_lotno_all cla
ON bio.cnvs_prod_cd = cla.material_cd
AND bio.cnvs_lot_no_1 = cla.lot_no_txt
AND bio.cnvs_lot_no_2 = cla.lot_no_txt
AND bio.cnvs_lot_no_3 = cla.lot_no_txt
-- COM_施設
LEFT OUTER JOIN src05.com_inst ci
ON bio.cnvs_inst_cd = ci.dcf_dsf_inst_cd
-- COM_薬局
LEFT OUTER JOIN src05.com_pharm cp
ON bio.cnvs_inst_cd = cp.dcf_dsf_inst_cd
-- 独自施設マスタ
LEFT OUTER JOIN src05.mst_inst_merck mim
ON bio.cnvs_inst_cd = mim.inst_cd
WHERE
IFNULL(DATE(bio.upd_date), DATE(bio.ins_date)) >= src07.get_syor_date()
"""
@ -247,72 +225,59 @@ class TrnResultDataBioLot(JskultBatchEntrypoint):
logger.info('生物由来ロット分解データの製造番号が空のレコードを削除に成功')
def _set_inst_info_from_mdb_or_mst_inst(self, db: Database):
logger.info('MDB変換マスタビュー生物由来ロット分解処理用、メルク施設マスタから施設情報を生物由来ロット分解データにセット開始')
def _set_inst_info_from_com_inst_or_com_pharm_or_mst_inst_merck(self, db: Database):
logger.info('COM_施設 or COM_薬局 or メルク独自施設マスタから施設情報を生物由来ロット分解データにセット開始')
try:
sql = """
UPDATE
src07.bio_sales_lot bio
LEFT OUTER JOIN internal05.view_mdb_cnv_mst mdb
ON bio.v_inst_cd = mdb.hco_vid_v
LEFT OUTER JOIN src05.mst_inst inst
ON bio.v_inst_cd = inst.inst_cd
src07.trn_result_data_bio_lot lot
SET
-- 施設コード
bio.inst_cd = (
CASE
WHEN mdb.mdb_cd IS NOT NULL THEN mdb.mdb_cd
ELSE bio.v_inst_cd
END
),
-- 正式施設名漢字
bio.inst_name_form = (
CASE
WHEN mdb.mdb_cd IS NOT NULL THEN mdb.inst_name_form
ELSE inst.inst_name_form
END
),
-- 施設住所
bio.address = (
CASE
WHEN mdb.mdb_cd IS NOT NULL THEN mdb.address
ELSE inst.address
END
inst_addr = (
SELECT
CASE LEFT(bio.cnvs_inst_cd, 2)
WHEN '00' THEN ci.inst_addr
WHEN '03' THEN cp.inst_addr
ELSE mim.addr2_nm_kj
END AS inst_addr
FROM src07.trn_result_data_bio bio
-- COM_施設
LEFT OUTER JOIN src05.com_inst ci
ON bio.cnvs_inst_cd = ci.dcf_dsf_inst_cd
-- COM_薬局
LEFT OUTER JOIN src05.com_pharm cp
ON bio.cnvs_inst_cd = cp.dcf_dsf_inst_cd
-- 独自施設マスタ
LEFT OUTER JOIN src07.mst_inst_merck mim
ON bio.cnvs_inst_cd = mim.inst_cd
),
-- 施設電話番号
bio.tel_num = (
CASE
WHEN mdb.mdb_cd IS NOT NULL THEN mdb.tel_num
ELSE inst.tel_num
END
inst_tel = (
SELECT
CASE LEFT(bio.cnvs_inst_cd, 2)
WHEN '00' THEN ci.inst_phone_number
WHEN '03' THEN cm.inst_phone_number
ELSE mim.tel_no
END AS inst_tel
FROM src07.trn_result_data_bio bio
-- COM_施設
LEFT OUTER JOIN src05.com_inst ci
ON bio.cnvs_inst_cd = ci.dcf_dsf_inst_cd
-- COM_薬局
LEFT OUTER JOIN src05.com_pharm cp
ON bio.cnvs_inst_cd = cp.dcf_dsf_inst_cd
-- 独自施設マスタ
LEFT OUTER JOIN src07.mst_inst_merck mim
ON bio.cnvs_inst_cd = mim.inst_cd
)
"""
res = db.execute(sql)
except Exception as e:
logger.info('MDB変換マスタビュー生物由来ロット分解処理用、メルク施設マスタから施設情報を生物由来ロット分解データにセットに失敗')
logger.info('COM_施設 or COM_薬局 or メルク独自施設マスタから施設情報を生物由来ロット分解データにセット開始')
raise e
logger.info('MDB変換マスタビュー生物由来ロット分解処理用、メルク施設マスタから施設情報を生物由来ロット分解データにセットに成功')
def _set_prd_info_from_v_prd_mst(self, db: Database):
logger.info('V製品マスタから製品情報を生物由来ロット分解データにセット開始')
try:
sql = """
UPDATE
src07.bio_sales_lot bio
LEFT OUTER JOIN src05.phm_prd_mst_v prd
ON bio.comm_cd = prd.prd_cd
AND STR_TO_DATE(bio.rev_hsdnymd_srk,'%Y%m%d') BETWEEN prd.start_date AND prd.end_date
AND prd.rec_sts_kbn <> '9'
SET
bio.mkr_inf_1 = prd.mkr_inf_1,
bio.mkr_cd = prd.mkr_cd
"""
res = db.execute(sql)
except Exception as e:
logger.info('V製品マスタから製品情報を生物由来ロット分解データにセットに失敗')
raise e
logger.info('V製品マスタから製品情報を生物由来ロット分解データにセットに成功')
logger.info('COM_施設 or COM_薬局 or メルク独自施設マスタから施設情報を生物由来ロット分解データにセット開始')
def _set_expr_dt_from_lot_num_mst(self, db: Database):