From e45bb1371b124ebad7d84eaa7f6b2e6ad4d15123 Mon Sep 17 00:00:00 2001 From: "mori.k" Date: Thu, 29 May 2025 15:47:39 +0900 Subject: [PATCH] =?UTF-8?q?=E6=96=BD=E8=A8=AD=E6=83=85=E5=A0=B1=E3=82=BB?= =?UTF-8?q?=E3=83=83=E3=83=88=E9=80=94=E4=B8=AD=E3=82=B3=E3=83=9F=E3=83=83?= =?UTF-8?q?=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/batch/trn_result_data_bio_lot.py | 121 +++++++----------- 1 file changed, 43 insertions(+), 78 deletions(-) diff --git a/ecs/jskult-batch/src/batch/trn_result_data_bio_lot.py b/ecs/jskult-batch/src/batch/trn_result_data_bio_lot.py index 870b6c94..c792254a 100644 --- a/ecs/jskult-batch/src/batch/trn_result_data_bio_lot.py +++ b/ecs/jskult-batch/src/batch/trn_result_data_bio_lot.py @@ -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):