生物由来ロット分解データの作成の外部結合以外までのコミット

This commit is contained in:
mori.k 2025-05-28 20:54:33 +09:00
parent bb015efe3a
commit 20907bc4bd

View File

@ -135,211 +135,75 @@ class TrnResultDataBioLot(JskultBatchEntrypoint):
logger.info('生物由来ロット分解データの作成開始')
try:
sql = """
INSERT INTO src07.bio_sales_lot
INSERT INTO src07.trn_result_data_bio_lot
SELECT
bio.slip_mgt_num AS slip_mgt_num,
bio.account_ym AS account_ym,
bio.seq_no AS seq_no,
conv.conv_cd AS conv_cd,
bio.rec_whs_cd AS rec_whs_cd,
bio.rec_whs_sub_cd AS rec_whs_sub_cd,
bio.rec_whs_org_cd AS rec_whs_org_cd,
bio.rec_comm_cd AS rec_comm_cd,
bio.rec_tran_kbn AS rec_tran_kbn,
bio.rev_hsdnymd_srk AS rev_hsdnymd_srk,
bio.rec_urag_num AS rec_urag_num,
bio.rec_comm_name AS rec_comm_name,
bio.rec_nonyu_fcl_name AS rec_nonyu_fcl_name,
bio.rec_nonyu_fcl_addr AS rec_nonyu_fcl_addr,
bio.orig_whlslr_cd AS orig_whlslr_cd,
bio.orig_whlslr_sub_cd AS orig_whlslr_sub_cd,
bio.edit_whlslr_org_cd AS edit_whlslr_org_cd,
bio.orig_univ_product_cd AS orig_univ_product_cd,
bio.edit_deal_div_cd AS edit_deal_div_cd,
bio.cnvs_sales_dt AS cnvs_sales_dt,
bio.orig_slip_no AS orig_slip_no,
bio.orig_prod_nm AS orig_prod_nm,
bio.edit_endusr_cd AS edit_endusr_cd,
bio.orig_endusr_nm AS orig_endusr_nm,
bio.orig_jd45_addr_txt AS orig_jd45_addr_txt,
-- 3レコードに分解する
CASE conv.conv_cd
WHEN 1 THEN bio.rec_lot_num1
WHEN 2 THEN bio.rec_lot_num2
WHEN 3 THEN bio.rec_lot_num3
END AS rec_lot_num,
bio.rec_ymd AS rec_ymd,
bio.v_tran_cd AS v_tran_cd,
bio.tran_kbn_name AS tran_kbn_name,
bio.whs_org_cd AS whs_org_cd,
bio.v_whsorg_cd AS v_whsorg_cd,
bio.whs_org_name AS whs_org_name,
bio.v_whs_cd AS v_whs_cd,
bio.whs_name AS whs_name,
bio.nonyu_fcl_cd AS nonyu_fcl_cd,
bio.v_inst_cd AS v_inst_cd,
bio.v_inst_kn AS v_inst_kn,
bio.v_inst_name AS v_inst_name,
bio.v_inst_addr AS v_inst_addr,
bio.comm_cd AS comm_cd,
bio.product_name AS product_name,
bio.whs_rep_comm_name AS whs_rep_comm_name,
bio.whs_rep_nonyu_fcl_name AS whs_rep_nonyu_fcl_name,
bio.whs_rep_nonyu_fcl_addr AS whs_rep_nonyu_fcl_addr,
/* 製品名と製品コードは後ほどV製品マスタからセットする */
-- 製品名
NULL AS mkr_inf_1,
-- 製品コード
NULL AS mkr_cd,
-- 数量
-- Veeva取引区分の先頭が2の場合マイナス表示にする
CASE conv.conv_cd
WHEN 1 THEN
CASE
WHEN (LEFT(bio.v_tran_cd, 1) = 2 AND bio.qty1 >= 1) THEN -bio.qty1
ELSE bio.qty1
END
WHEN 2 THEN
CASE
WHEN (LEFT(bio.v_tran_cd, 1) = 2 AND bio.qty2 >= 1) THEN -bio.qty2
ELSE bio.qty2
END
WHEN 3 THEN
CASE
WHEN (LEFT(bio.v_tran_cd, 1) = 2 AND bio.qty3 >= 1) THEN -bio.qty3
ELSE bio.qty3
END
END AS qty,
bio.slip_org_kbn AS slip_org_kbn,
bio.bef_slip_mgt_num AS bef_slip_mgt_num,
CASE conv.conv_cd
WHEN 1 THEN bio.err_flg11
WHEN 2 THEN bio.err_flg12
WHEN 3 THEN bio.err_flg13
END AS lot_no_err_flg,
CASE bio.err_flg20
WHEN 'M' THEN '*'
ELSE NULL
END AS iko_flg,
CASE bio.rec_sts_kbn
WHEN '0' THEN bio.rec_sts_kbn
WHEN '1' THEN
CASE conv.conv_cd
WHEN 1 THEN bio.err_flg11
WHEN 2 THEN bio.err_flg12
WHEN 3 THEN bio.err_flg13
END
END AS rec_sts_kbn,
CASE
WHEN bio.bef_slip_mgt_num IS NOT NULL THEN bio.ins_dt
ELSE NULL
END AS ins_dt,
CASE
WHEN bio.bef_slip_mgt_num IS NOT NULL THEN bio.ins_usr
ELSE NULL
END AS ins_usr,
bio.dwh_upd_dt AS dwh_upd_dt,
/* 施設情報は後ほどセットする */
-- 施設コード
NULL AS inst_cd,
-- 正式施設名漢字
NULL AS inst_name_form,
-- 施設住所
NULL AS address,
-- 施設電話番号
NULL AS tel_num,
CASE conv.conv_cd
WHEN 1 THEN
CASE bio.err_flg11
WHEN '0' THEN '正常'
WHEN '1' THEN 'ロットエラー'
WHEN '2' THEN 'ロットエラー'
WHEN '3' THEN 'エラー(解消済)'
WHEN '4' THEN 'ロット不明'
WHEN '5' THEN 'エラー(解消済)'
WHEN '6' THEN 'ロット不明'
WHEN '7' THEN '除外'
WHEN '8' THEN '除外'
WHEN 'Z' THEN '除外'
END
WHEN 2 THEN
CASE bio.err_flg12
WHEN '0' THEN '正常'
WHEN '1' THEN 'ロットエラー'
WHEN '2' THEN 'ロットエラー'
WHEN '3' THEN 'エラー(解消済)'
WHEN '4' THEN 'ロット不明'
WHEN '5' THEN 'エラー(解消済)'
WHEN '6' THEN 'ロット不明'
WHEN '7' THEN '除外'
WHEN '8' THEN '除外'
WHEN 'Z' THEN '除外'
END
WHEN 3 THEN
CASE bio.err_flg13
WHEN '0' THEN '正常'
WHEN '1' THEN 'ロットエラー'
WHEN '2' THEN 'ロットエラー'
WHEN '3' THEN 'エラー(解消済)'
WHEN '4' THEN 'ロット不明'
WHEN '5' THEN 'エラー(解消済)'
WHEN '6' THEN 'ロット不明'
WHEN '7' THEN '除外'
WHEN '8' THEN '除外'
WHEN 'Z' THEN '除外'
END
WHEN 1 THEN bio.cnvs_lot_no_1
WHEN 2 THEN bio.cnvs_lot_no_2
WHEN 3 THEN bio.cnvs_lot_no_3
END AS cnvs_lot_no,
bio.load_dt AS load_dt,
bio.cnvs_deal_div_cd AS cnvs_deal_div_cd,
bio.cls_deal_div_nm AS cls_deal_div_nm,
bio.cnvs_depo_cd
bio.cls_depo_nm AS cls_depo_nm,
bio.cnvs_whlslr_cd AS cnvs_whlslr_cd,
bio.cls_whlslr_nm AS cls_whlslr_nm,
bio.cls_prod_nm AS cls_prod_nm,
bio.cnvs_prod_cd AS nvs_prod_cd,
bio.cnvs_lot_sales_qty_1 AS cnvs_lot_sales_qty_1,
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
WHEN src07.mst_inst_merck.tel_no
END AS inst_tel AS inst_tel,
bio.result_cd AS result_cd,
bio.src_cd AS src_cd,
-- 判定結果CDより値を設定する
CASE bio.result_cd
WHEN '1:正常' THEN '正常'
WHEN '2:卸間転送除外対象データ' THEN '卸間転送除外対象'
WHEN 'E事前想定したエラーが発生したデータ' THEN 'エラー'
WHEN 'Dレコード重複エラーが発生したデータ' THEN 'エラー(重複)'
WHEN 'Z想定外のエラーが発生したデータ' THEN 'エラー(想定外)'
END AS data_kbn,
CASE bio.slip_org_kbn
WHEN 'J' THEN 'JD-NET'
WHEN 'N' THEN 'NHI'
WHEN 'H' THEN '手入力'
END AS data_kind,
CASE conv.conv_cd
WHEN 1 THEN
CASE bio.err_flg11
WHEN '0' THEN '正常'
WHEN '1' THEN 'ロットエラー'
WHEN '2' THEN '日付エラー'
WHEN '3' THEN 'ロットエラー(解消済)'
WHEN '4' THEN 'ロットエラー(調査不能)'
WHEN '5' THEN '日付エラー(解消済)'
WHEN '6' THEN '日付エラー(調査不能)'
WHEN '7' THEN '除外(卸都合)'
WHEN '8' THEN '除外(再送信)'
WHEN 'Z' THEN '過去データ'
END
WHEN 2 THEN
CASE bio.err_flg12
WHEN '0' THEN '正常'
WHEN '1' THEN 'ロットエラー'
WHEN '2' THEN '日付エラー'
WHEN '3' THEN 'ロットエラー(解消済)'
WHEN '4' THEN 'ロットエラー(調査不能)'
WHEN '5' THEN '日付エラー(解消済)'
WHEN '6' THEN '日付エラー(調査不能)'
WHEN '7' THEN '除外(卸都合)'
WHEN '8' THEN '除外(再送信)'
WHEN 'Z' THEN '過去データ'
END
WHEN 3 THEN
CASE bio.err_flg13
WHEN '0' THEN '正常'
WHEN '1' THEN 'ロットエラー'
WHEN '2' THEN '日付エラー'
WHEN '3' THEN 'ロットエラー(解消済)'
WHEN '4' THEN 'ロットエラー(調査不能)'
WHEN '5' THEN '日付エラー(解消済)'
WHEN '6' THEN '日付エラー(調査不能)'
WHEN '7' THEN '除外(卸都合)'
WHEN '8' THEN '除外(再送信)'
WHEN 'Z' THEN '過去データ'
END
END AS err_dtl_kind,
NULL AS expr_dt
-- SRC_種類より値を設定する
CASE bio.result_cd
WHEN '1:VAN' THEN 'VAN'
WHEN '2:手入力' THEN '手入力'
WHEN '3:VAN-Web' THEN 'VAN-Web'
WHEN 'S:SCSK-VAN' THEN 'SCSK-VAN'
END AS if_kind,
-- 製品コードロット番号でロットマスタよりセット
bio.ck_last_dt_txt AS ck_last_dt_txt
FROM
src05.bio_sales bio
src07.trn_result_data_bio bio
-- 生物由来変換マスタ
CROSS JOIN src07.bio_conv conv
WHERE
bio.err_flg1 = '0'
AND bio.err_flg2 = '0'
AND bio.err_flg3 = '0'
AND bio.err_flg4 = '0'
AND bio.err_flg5 = '0'
AND bio.err_flg6 = '0'
AND bio.err_flg7 = '0'
AND bio.err_flg8 = '0'
AND bio.err_flg9 = '0'
AND bio.err_flg10 = '0'
AND bio.rec_sts_kbn <> '99'
AND DATE(bio.dwh_upd_dt) >= src07.get_syor_date()
DATE(bio.last_upd_dtt) >= src07.get_syor_date()
"""
res = db.execute(sql)