import textwrap


class VjskReceiveFileMapper:
    CONDKEY_SLIP_DATA = "SLIP_DATA"  # 販売実績データ
    CONDKEY_HLD_MST = "HLD_MST"  # Ｖ卸ホールディングスマスタ
    CONDKEY_WHS_MST = "WHS_MST"  # Ｖ卸マスタ
    CONDKEY_MKR_ORG_HORIZON = "MKR_ORG_HORIZON"  # Ｖメーカー卸組織展開表
    CONDKEY_ORG_CNV_MST = "ORG_CNV_MST"  # Ｖ卸組織変換マスタ
    CONDKEY_TRAN_KBN_MST = "TRAN_KBN_MST"  # Ｖ取引区分マスタ
    CONDKEY_FCL_MST = "FCL_MST"  # Ｖ施設マスタ
    CONDKEY_PHM_PRD_MST = "PHM_PRD_MST"  # Ｖ製品マスタ
    CONDKEY_PHM_PRICE_MST = "PHM_PRICE_MST"  # Ｖ製品価格マスタ
    CONDKEY_VOP_HCO_MERGE = "VOP_HCO_MERGE"  # Ｖ施設統合マスタ
    CONDKEY_WHS_CUSTOMER_MST = "WHS_CUSTOMER_MST"  # Ｖ卸得意先情報マスタ
    CONDKEY_MDB_CONV_MST = "MDB_CONV_MST"  # MDBコード変換表
    CONDKEY_STOCK_SLIP_DATA = "STOCK_SLIP_DATA"  # 卸在庫データ
    CONDKEY_BIO_SLIP_DATA = "BIO_SLIP_DATA"  # 生物由来データ
    CONDKEY_LOT_NUM_MST = "LOT_NUM_MST"  # ロットマスタデータ

    _KEY_DATA_NAME = "data_name"
    _KEY_FILE_PREFIX = "file_prefix"
    _KEY_FILE_SUFFIX = "file_suffix"
    _KEY_FILE_COLUMN_SEPARATORS = "file_column_separators"
    _KEY_ORG_TABLE = "org_table"
    _KEY_SRC_TABLE = "src_table"
    _KEY_UPSERT_SQL = "upsert_sql"
    _VJSK_INTERFACE_MAPPING = {
        # 販売実績データ
        CONDKEY_SLIP_DATA: {
            _KEY_DATA_NAME: "販売実績データ",
            _KEY_FILE_PREFIX: "slip_data_",
            _KEY_FILE_SUFFIX: ".gz",
            _KEY_FILE_COLUMN_SEPARATORS: "82",
            _KEY_ORG_TABLE: "org05.sales",
            _KEY_SRC_TABLE: "src05.sales",
            _KEY_UPSERT_SQL: textwrap.dedent("""\
                INSERT INTO src05.sales (
                    rec_data
                    ,rec_whs_cd
                    ,rec_whs_sub_cd
                    ,rec_whs_org_cd
                    ,rec_cust_cd
                    ,rec_comm_cd
                    ,rec_tran_kbn
                    ,rev_hsdnymd_wrk
                    ,rev_hsdnymd_srk
                    ,rec_urag_num
                    ,rec_qty
                    ,rec_nonyu_price
                    ,rec_nonyu_amt
                    ,rec_comm_name
                    ,rec_nonyu_fcl_name
                    ,free_item
                    ,rec_nonyu_fcl_addr
                    ,rec_nonyu_fcl_post
                    ,rec_nonyu_fcl_tel
                    ,rec_bef_hsdn_ymd
                    ,rec_bef_slip_num
                    ,rec_ymd
                    ,sale_data_cat
                    ,slip_file_name
                    ,slip_mgt_num
                    ,row_num
                    ,hsdn_ymd
                    ,exec_dt
                    ,v_tran_cd
                    ,tran_kbn_name
                    ,whs_org_cd
                    ,v_whsorg_cd
                    ,whs_org_name
                    ,whs_org_kn
                    ,v_whs_cd
                    ,whs_name
                    ,nonyu_fcl_cd
                    ,v_inst_cd
                    ,v_inst_kn
                    ,v_inst_name
                    ,v_inst_addr
                    ,comm_cd
                    ,comm_name
                    ,nonyu_qty
                    ,nonyu_price
                    ,nonyu_amt
                    ,shikiri_price
                    ,shikiri_amt
                    ,nhi_price
                    ,nhi_amt
                    ,whspos_err_kbn
                    ,htdnymd_err_kbn
                    ,prd_exis_kbn
                    ,fcl_exis_kbn
                    ,bef_hsdn_ymd
                    ,bef_slip_num
                    ,slip_org_kbn
                    ,err_flg1
                    ,err_flg2
                    ,err_flg3
                    ,err_flg4
                    ,err_flg5
                    ,err_flg6
                    ,err_flg7
                    ,err_flg8
                    ,err_flg9
                    ,err_flg10
                    ,err_flg11
                    ,err_flg12
                    ,err_flg13
                    ,err_flg14
                    ,err_flg15
                    ,err_flg16
                    ,err_flg17
                    ,err_flg18
                    ,err_flg19
                    ,err_flg20
                    ,kjyo_ym
                    ,tksnbk_kbn
                    ,fcl_exec_kbn
                    ,rec_sts_kbn
                    ,ins_dt
                    ,ins_usr
                    ,dwh_upd_dt
                )
                SELECT
                    t.rec_data
                    ,t.rec_whs_cd
                    ,t.rec_whs_sub_cd
                    ,t.rec_whs_org_cd
                    ,t.rec_cust_cd
                    ,t.rec_comm_cd
                    ,t.rec_tran_kbn
                    ,t.rev_hsdnymd_wrk
                    ,t.rev_hsdnymd_srk
                    ,t.rec_urag_num
                    ,t.rec_qty
                    ,t.rec_nonyu_price
                    ,t.rec_nonyu_amt
                    ,t.rec_comm_name
                    ,t.rec_nonyu_fcl_name
                    ,t.free_item
                    ,t.rec_nonyu_fcl_addr
                    ,t.rec_nonyu_fcl_post
                    ,t.rec_nonyu_fcl_tel
                    ,t.rec_bef_hsdn_ymd
                    ,t.rec_bef_slip_num
                    ,t.rec_ymd
                    ,t.sale_data_cat
                    ,t.slip_file_name
                    ,t.slip_mgt_num
                    ,t.row_num
                    ,t.hsdn_ymd
                    ,t.exec_dt
                    ,t.v_tran_cd
                    ,t.tran_kbn_name
                    ,t.whs_org_cd
                    ,t.v_whsorg_cd
                    ,t.whs_org_name
                    ,t.whs_org_kn
                    ,t.v_whs_cd
                    ,t.whs_name
                    ,t.nonyu_fcl_cd
                    ,t.v_inst_cd
                    ,t.v_inst_kn
                    ,t.v_inst_name
                    ,t.v_inst_addr
                    ,t.comm_cd
                    ,t.comm_name
                    ,t.nonyu_qty
                    ,t.nonyu_price
                    ,t.nonyu_amt
                    ,t.shikiri_price
                    ,t.shikiri_amt
                    ,t.nhi_price
                    ,t.nhi_amt
                    ,t.whspos_err_kbn
                    ,t.htdnymd_err_kbn
                    ,t.prd_exis_kbn
                    ,t.fcl_exis_kbn
                    ,t.bef_hsdn_ymd
                    ,t.bef_slip_num
                    ,t.slip_org_kbn
                    ,t.err_flg1
                    ,t.err_flg2
                    ,t.err_flg3
                    ,t.err_flg4
                    ,t.err_flg5
                    ,t.err_flg6
                    ,t.err_flg7
                    ,t.err_flg8
                    ,t.err_flg9
                    ,t.err_flg10
                    ,t.err_flg11
                    ,t.err_flg12
                    ,t.err_flg13
                    ,t.err_flg14
                    ,t.err_flg15
                    ,t.err_flg16
                    ,t.err_flg17
                    ,t.err_flg18
                    ,t.err_flg19
                    ,t.err_flg20
                    ,t.kjyo_ym
                    ,t.tksnbk_kbn
                    ,t.fcl_exec_kbn
                    ,t.rec_sts_kbn
                    ,nullif(t.ins_dt, 0)  -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する
                    ,t.ins_usr
                    ,SYSDATE()
                FROM org05.sales AS t
                ON DUPLICATE KEY UPDATE
                    rec_data=t.rec_data
                    ,rec_whs_cd=t.rec_whs_cd
                    ,rec_whs_sub_cd=t.rec_whs_sub_cd
                    ,rec_whs_org_cd=t.rec_whs_org_cd
                    ,rec_cust_cd=t.rec_cust_cd
                    ,rec_comm_cd=t.rec_comm_cd
                    ,rec_tran_kbn=t.rec_tran_kbn
                    ,rev_hsdnymd_wrk=t.rev_hsdnymd_wrk
                    ,rev_hsdnymd_srk=t.rev_hsdnymd_srk
                    ,rec_urag_num=t.rec_urag_num
                    ,rec_qty=t.rec_qty
                    ,rec_nonyu_price=t.rec_nonyu_price
                    ,rec_nonyu_amt=t.rec_nonyu_amt
                    ,rec_comm_name=t.rec_comm_name
                    ,rec_nonyu_fcl_name=t.rec_nonyu_fcl_name
                    ,free_item=t.free_item
                    ,rec_nonyu_fcl_addr=t.rec_nonyu_fcl_addr
                    ,rec_nonyu_fcl_post=t.rec_nonyu_fcl_post
                    ,rec_nonyu_fcl_tel=t.rec_nonyu_fcl_tel
                    ,rec_bef_hsdn_ymd=t.rec_bef_hsdn_ymd
                    ,rec_bef_slip_num=t.rec_bef_slip_num
                    ,rec_ymd=t.rec_ymd
                    ,sale_data_cat=t.sale_data_cat
                    ,slip_file_name=t.slip_file_name
                    ,slip_mgt_num=t.slip_mgt_num
                    ,row_num=t.row_num
                    ,hsdn_ymd=t.hsdn_ymd
                    ,exec_dt=t.exec_dt
                    ,v_tran_cd=t.v_tran_cd
                    ,tran_kbn_name=t.tran_kbn_name
                    ,whs_org_cd=t.whs_org_cd
                    ,v_whsorg_cd=t.v_whsorg_cd
                    ,whs_org_name=t.whs_org_name
                    ,whs_org_kn=t.whs_org_kn
                    ,v_whs_cd=t.v_whs_cd
                    ,whs_name=t.whs_name
                    ,nonyu_fcl_cd=t.nonyu_fcl_cd
                    ,v_inst_cd=t.v_inst_cd
                    ,v_inst_kn=t.v_inst_kn
                    ,v_inst_name=t.v_inst_name
                    ,v_inst_addr=t.v_inst_addr
                    ,comm_cd=t.comm_cd
                    ,comm_name=t.comm_name
                    ,nonyu_qty=t.nonyu_qty
                    ,nonyu_price=t.nonyu_price
                    ,nonyu_amt=t.nonyu_amt
                    ,shikiri_price=t.shikiri_price
                    ,shikiri_amt=t.shikiri_amt
                    ,nhi_price=t.nhi_price
                    ,nhi_amt=t.nhi_amt
                    ,whspos_err_kbn=t.whspos_err_kbn
                    ,htdnymd_err_kbn=t.htdnymd_err_kbn
                    ,prd_exis_kbn=t.prd_exis_kbn
                    ,fcl_exis_kbn=t.fcl_exis_kbn
                    ,bef_hsdn_ymd=t.bef_hsdn_ymd
                    ,bef_slip_num=t.bef_slip_num
                    ,slip_org_kbn=t.slip_org_kbn
                    ,err_flg1=t.err_flg1
                    ,err_flg2=t.err_flg2
                    ,err_flg3=t.err_flg3
                    ,err_flg4=t.err_flg4
                    ,err_flg5=t.err_flg5
                    ,err_flg6=t.err_flg6
                    ,err_flg7=t.err_flg7
                    ,err_flg8=t.err_flg8
                    ,err_flg9=t.err_flg9
                    ,err_flg10=t.err_flg10
                    ,err_flg11=t.err_flg11
                    ,err_flg12=t.err_flg12
                    ,err_flg13=t.err_flg13
                    ,err_flg14=t.err_flg14
                    ,err_flg15=t.err_flg15
                    ,err_flg16=t.err_flg16
                    ,err_flg17=t.err_flg17
                    ,err_flg18=t.err_flg18
                    ,err_flg19=t.err_flg19
                    ,err_flg20=t.err_flg20
                    ,kjyo_ym=t.kjyo_ym
                    ,tksnbk_kbn=t.tksnbk_kbn
                    ,fcl_exec_kbn=t.fcl_exec_kbn
                    ,rec_sts_kbn=t.rec_sts_kbn
                    ,ins_dt=nullif(t.ins_dt, 0)
                    ,ins_usr=t.ins_usr
                    ,dwh_upd_dT=SYSDATE()
                ;
                """)
        },

        # Ｖ卸ホールディングスマスタ
        CONDKEY_HLD_MST: {
            _KEY_DATA_NAME: "Ｖ卸ホールディングスマスタ",
            _KEY_FILE_PREFIX: "hld_mst_",
            _KEY_FILE_SUFFIX: ".gz",
            _KEY_FILE_COLUMN_SEPARATORS: "10",
            _KEY_ORG_TABLE: "org05.hld_mst_v",
            _KEY_SRC_TABLE: "src05.hld_mst_v",
            _KEY_UPSERT_SQL: textwrap.dedent("""\
                INSERT INTO src05.hld_mst_v (
                    v_hld_cd
                    ,sub_num
                    ,name
                    ,kn_name
                    ,abb_name
                    ,start_date
                    ,end_date
                    ,dsp_odr
                    ,rec_sts_kbn
                    ,ins_dt
                    ,upd_dt
                    ,dwh_upd_dt
                )
                SELECT
                    t.v_hld_cd
                    ,t.sub_num
                    ,t.name
                    ,t.kn_name
                    ,t.abb_name
                    ,t.start_date
                    ,t.end_date
                    ,t.dsp_odr
                    ,t.rec_sts_kbn
                    ,nullif(t.ins_dt, 0)  -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する
                    ,t.upd_dt
                    ,SYSDATE()
                FROM org05.hld_mst_v AS t
                ON DUPLICATE KEY UPDATE
                    v_hld_cd=t.v_hld_cd
                    ,sub_num=t.sub_num
                    ,name=t.name
                    ,kn_name=t.kn_name
                    ,abb_name=t.abb_name
                    ,start_date=t.start_date
                    ,end_date=t.end_date
                    ,dsp_odr=t.dsp_odr
                    ,rec_sts_kbn=t.rec_sts_kbn
                    ,ins_dt=nullif(t.ins_dt, 0)
                    ,upd_dt=t.upd_dt
                    ,dwh_upd_dt=SYSDATE()
                ;
                """)
        },

        # Ｖ卸マスタ
        CONDKEY_WHS_MST: {
            _KEY_DATA_NAME: "Ｖ卸マスタ",
            _KEY_FILE_PREFIX: "whs_mst_",
            _KEY_FILE_SUFFIX: ".gz",
            _KEY_FILE_COLUMN_SEPARATORS: "15",
            _KEY_ORG_TABLE: "org05.whs_mst_v",
            _KEY_SRC_TABLE: "src05.whs_mst_v",
            _KEY_UPSERT_SQL: textwrap.dedent("""\
                INSERT INTO src05.whs_mst_v (
                    v_whs_cd
                    ,sub_num
                    ,name
                    ,kn_name
                    ,abb_name
                    ,postal_cd
                    ,addr
                    ,kn_addr
                    ,tel_num
                    ,v_hld_cd
                    ,start_date
                    ,end_date
                    ,dsp_odr
                    ,rec_sts_kbn
                    ,ins_dt
                    ,upd_dt
                    ,dwh_upd_dt
                )
                SELECT
                    t.v_whs_cd
                    ,t.sub_num
                    ,t.name
                    ,t.kn_name
                    ,t.abb_name
                    ,t.postal_cd
                    ,t.addr
                    ,t.kn_addr
                    ,t.tel_num
                    ,t.v_hld_cd
                    ,t.start_date
                    ,t.end_date
                    ,t.dsp_odr
                    ,t.rec_sts_kbn
                    ,nullif(t.ins_dt, 0)  -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する
                    ,t.upd_dt
                    ,SYSDATE()
                FROM org05.whs_mst_v AS t
                ON DUPLICATE KEY UPDATE
                    v_whs_cd=t.v_whs_cd
                    ,sub_num=t.sub_num
                    ,name=t.name
                    ,kn_name=t.kn_name
                    ,abb_name=t.abb_name
                    ,postal_cd=t.postal_cd
                    ,addr=t.addr
                    ,kn_addr=t.kn_addr
                    ,tel_num=t.tel_num
                    ,v_hld_cd=t.v_hld_cd
                    ,start_date=t.start_date
                    ,end_date=t.end_date
                    ,dsp_odr=t.dsp_odr
                    ,rec_sts_kbn=t.rec_sts_kbn
                    ,ins_dt=nullif(t.ins_dt, 0)
                    ,upd_dt=t.upd_dt
                    ,dwh_upd_dt=SYSDATE()
                ;
                """)
        },

        # Ｖメーカー卸組織展開表
        CONDKEY_MKR_ORG_HORIZON: {
            _KEY_DATA_NAME: "Ｖメーカー卸組織展開表",
            _KEY_FILE_PREFIX: "mkr_org_horizon_",
            _KEY_FILE_SUFFIX: ".gz",
            _KEY_FILE_COLUMN_SEPARATORS: "45",
            _KEY_ORG_TABLE: "org05.mkr_org_horizon_v",
            _KEY_SRC_TABLE: "src05.mkr_org_horizon_v",
            _KEY_UPSERT_SQL: textwrap.dedent("""\
                INSERT INTO src05.mkr_org_horizon_v (
                    vid_kind_1
                    ,v_cd_1
                    ,name_1
                    ,dsp_odr_1
                    ,vid_kind_2
                    ,v_cd_2
                    ,name_2
                    ,dsp_odr_2
                    ,vid_kind_3
                    ,v_cd_3
                    ,name_3
                    ,dsp_odr_3
                    ,vid_kind_4
                    ,v_cd_4
                    ,name_4
                    ,dsp_odr_4
                    ,vid_kind_5
                    ,v_cd_5
                    ,name_5
                    ,dsp_odr_5
                    ,vid_kind_6
                    ,v_cd_6
                    ,name_6
                    ,dsp_odr_6
                    ,vid_kind_7
                    ,v_cd_7
                    ,name_7
                    ,dsp_odr_7
                    ,vid_kind_8
                    ,v_cd_8
                    ,name_8
                    ,dsp_odr_8
                    ,vid_kind_9
                    ,v_cd_9
                    ,name_9
                    ,dsp_odr_9
                    ,vid_kind_10
                    ,v_cd_10
                    ,name_10
                    ,dsp_odr_10
                    ,v_whs_cd
                    ,start_date
                    ,end_date
                    ,rec_sts_kbn
                    ,ins_dt
                    ,upd_dt
                    ,dwh_upd_dt
                )
                SELECT
                    t.vid_kind_1
                    ,t.v_cd_1
                    ,t.name_1
                    ,t.dsp_odr_1
                    ,t.vid_kind_2
                    ,t.v_cd_2
                    ,t.name_2
                    ,t.dsp_odr_2
                    ,t.vid_kind_3
                    ,t.v_cd_3
                    ,t.name_3
                    ,t.dsp_odr_3
                    ,t.vid_kind_4
                    ,t.v_cd_4
                    ,t.name_4
                    ,t.dsp_odr_4
                    ,t.vid_kind_5
                    ,t.v_cd_5
                    ,t.name_5
                    ,t.dsp_odr_5
                    ,t.vid_kind_6
                    ,t.v_cd_6
                    ,t.name_6
                    ,t.dsp_odr_6
                    ,t.vid_kind_7
                    ,t.v_cd_7
                    ,t.name_7
                    ,t.dsp_odr_7
                    ,t.vid_kind_8
                    ,t.v_cd_8
                    ,t.name_8
                    ,t.dsp_odr_8
                    ,t.vid_kind_9
                    ,t.v_cd_9
                    ,t.name_9
                    ,t.dsp_odr_9
                    ,t.vid_kind_10
                    ,t.v_cd_10
                    ,t.name_10
                    ,t.dsp_odr_10
                    ,t.v_whs_cd
                    ,t.start_date
                    ,t.end_date
                    ,t.rec_sts_kbn
                    ,nullif(t.ins_dt, 0)  -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する
                    ,t.upd_dt
                    ,SYSDATE()
                FROM org05.mkr_org_horizon_v AS t
                ON DUPLICATE KEY UPDATE
                    vid_kind_1=t.vid_kind_1
                    ,v_cd_1=t.v_cd_1
                    ,name_1=t.name_1
                    ,dsp_odr_1=t.dsp_odr_1
                    ,vid_kind_2=t.vid_kind_2
                    ,v_cd_2=t.v_cd_2
                    ,name_2=t.name_2
                    ,dsp_odr_2=t.dsp_odr_2
                    ,vid_kind_3=t.vid_kind_3
                    ,v_cd_3=t.v_cd_3
                    ,name_3=t.name_3
                    ,dsp_odr_3=t.dsp_odr_3
                    ,vid_kind_4=t.vid_kind_4
                    ,v_cd_4=t.v_cd_4
                    ,name_4=t.name_4
                    ,dsp_odr_4=t.dsp_odr_4
                    ,vid_kind_5=t.vid_kind_5
                    ,v_cd_5=t.v_cd_5
                    ,name_5=t.name_5
                    ,dsp_odr_5=t.dsp_odr_5
                    ,vid_kind_6=t.vid_kind_6
                    ,v_cd_6=t.v_cd_6
                    ,name_6=t.name_6
                    ,dsp_odr_6=t.dsp_odr_6
                    ,vid_kind_7=t.vid_kind_7
                    ,v_cd_7=t.v_cd_7
                    ,name_7=t.name_7
                    ,dsp_odr_7=t.dsp_odr_7
                    ,vid_kind_8=t.vid_kind_8
                    ,v_cd_8=t.v_cd_8
                    ,name_8=t.name_8
                    ,dsp_odr_8=t.dsp_odr_8
                    ,vid_kind_9=t.vid_kind_9
                    ,v_cd_9=t.v_cd_9
                    ,name_9=t.name_9
                    ,dsp_odr_9=t.dsp_odr_9
                    ,vid_kind_10=t.vid_kind_10
                    ,v_cd_10=t.v_cd_10
                    ,name_10=t.name_10
                    ,dsp_odr_10=t.dsp_odr_10
                    ,v_whs_cd=t.v_whs_cd
                    ,start_date=t.start_date
                    ,end_date=t.end_date
                    ,rec_sts_kbn=t.rec_sts_kbn
                    ,ins_dt=nullif(t.ins_dt, 0)
                    ,upd_dt=t.upd_dt
                    ,dwh_upd_dt=SYSDATE()
                ;
                """)
        },

        # Ｖ卸組織変換マスタ
        CONDKEY_ORG_CNV_MST: {
            _KEY_DATA_NAME: "Ｖ卸組織変換マスタ",
            _KEY_FILE_PREFIX: "org_cnv_mst_",
            _KEY_FILE_SUFFIX: ".gz",
            _KEY_FILE_COLUMN_SEPARATORS: "10",
            _KEY_ORG_TABLE: "org05.org_cnv_mst_v",
            _KEY_SRC_TABLE: "src05.org_cnv_mst_v",
            _KEY_UPSERT_SQL: textwrap.dedent("""\
                INSERT INTO src05.org_cnv_mst_v (
                    whs_cd
                    ,whs_sub_cd
                    ,org_cd
                    ,sub_num
                    ,v_org_cd
                    ,start_date
                    ,end_date
                    ,dsp_odr
                    ,rec_sts_kbn
                    ,ins_dt
                    ,upd_dt
                    ,dwh_upd_dt
                )
                SELECT
                    t.whs_cd
                    ,t.whs_sub_cd
                    ,t.org_cd
                    ,t.sub_num
                    ,t.v_org_cd
                    ,t.start_date
                    ,t.end_date
                    ,t.dsp_odr
                    ,t.rec_sts_kbn
                    ,nullif(t.ins_dt, 0)  -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する
                    ,t.upd_dt
                    ,SYSDATE()
                FROM org05.org_cnv_mst_v AS t
                ON DUPLICATE KEY UPDATE
                    whs_cd=t.whs_cd
                    ,whs_sub_cd=t.whs_sub_cd
                    ,org_cd=t.org_cd
                    ,sub_num=t.sub_num
                    ,v_org_cd=t.v_org_cd
                    ,start_date=t.start_date
                    ,end_date=t.end_date
                    ,dsp_odr=t.dsp_odr
                    ,rec_sts_kbn=t.rec_sts_kbn
                    ,ins_dt=nullif(t.ins_dt, 0)
                    ,upd_dt=t.upd_dt
                    ,dwh_upd_dt=SYSDATE()
                ;
                """)
        },

        # Ｖ取引区分マスタ
        CONDKEY_TRAN_KBN_MST: {
            _KEY_DATA_NAME: "Ｖ取引区分マスタ",
            _KEY_FILE_PREFIX: "tran_kbn_mst_",
            _KEY_FILE_SUFFIX: ".gz",
            _KEY_FILE_COLUMN_SEPARATORS: "8",
            _KEY_ORG_TABLE: "org05.tran_kbn_mst_v",
            _KEY_SRC_TABLE: "src05.tran_kbn_mst_v",
            _KEY_UPSERT_SQL: textwrap.dedent("""\
                INSERT INTO src05.tran_kbn_mst_v (
                    v_tran_cd
                    ,sub_num
                    ,name
                    ,start_date
                    ,end_date
                    ,dsp_odr
                    ,rec_sts_kbn
                    ,ins_dt
                    ,upd_dt
                    ,dwh_upd_dt
                )
                SELECT
                    t.v_tran_cd
                    ,t.sub_num
                    ,t.name
                    ,t.start_date
                    ,t.end_date
                    ,t.dsp_odr
                    ,t.rec_sts_kbn
                    ,nullif(t.ins_dt, 0)  -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する
                    ,t.upd_dt
                    ,SYSDATE()
                FROM org05.tran_kbn_mst_v AS t
                ON DUPLICATE KEY UPDATE
                    v_tran_cd=t.v_tran_cd
                    ,sub_num=t.sub_num
                    ,name=t.name
                    ,start_date=t.start_date
                    ,end_date=t.end_date
                    ,dsp_odr=t.dsp_odr
                    ,rec_sts_kbn=t.rec_sts_kbn
                    ,ins_dt=nullif(t.ins_dt, 0)
                    ,upd_dt=t.upd_dt
                    ,dwh_upd_dt=SYSDATE()
                ;
                """)
        },

        # Ｖ施設マスタ
        CONDKEY_FCL_MST: {
            _KEY_DATA_NAME: "Ｖ施設マスタ",
            _KEY_FILE_PREFIX: "fcl_mst_",
            _KEY_FILE_SUFFIX: ".gz",
            _KEY_FILE_COLUMN_SEPARATORS: "23",
            _KEY_ORG_TABLE: "org05.fcl_mst_v",
            _KEY_SRC_TABLE: "src05.fcl_mst_v",
            _KEY_UPSERT_SQL: textwrap.dedent("""\
                INSERT INTO src05.fcl_mst_v (
                    v_inst_cd
                    ,sub_num
                    ,start_date
                    ,end_date
                    ,closed_dt
                    ,fcl_name
                    ,fcl_kn_name
                    ,fcl_abb_name
                    ,fcl_abb_kn_name
                    ,mkr_cd
                    ,jsk_proc_kbn
                    ,fmt_addr
                    ,fmt_kn_addr
                    ,postal_cd
                    ,prft_cd
                    ,prft_name
                    ,city_name
                    ,addr_line_1
                    ,tel_num
                    ,admin_kbn
                    ,fcl_type
                    ,rec_sts_kbn
                    ,ins_dt
                    ,upd_dt
                    ,dwh_upd_dt
                )
                SELECT
                    t.v_inst_cd
                    ,t.sub_num
                    ,t.start_date
                    ,t.end_date
                    ,t.closed_dt
                    ,t.fcl_name
                    ,t.fcl_kn_name
                    ,t.fcl_abb_name
                    ,t.fcl_abb_kn_name
                    ,t.mkr_cd
                    ,t.jsk_proc_kbn
                    ,t.fmt_addr
                    ,t.fmt_kn_addr
                    ,t.postal_cd
                    ,t.prft_cd
                    ,t.prft_name
                    ,t.city_name
                    ,t.addr_line_1
                    ,t.tel_num
                    ,t.admin_kbn
                    ,t.fcl_type
                    ,t.rec_sts_kbn
                    ,nullif(t.ins_dt, 0)  -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する
                    ,t.upd_dt
                    ,SYSDATE()
                FROM org05.fcl_mst_v AS t
                ON DUPLICATE KEY UPDATE
                    v_inst_cd=t.v_inst_cd
                    ,sub_num=t.sub_num
                    ,start_date=t.start_date
                    ,end_date=t.end_date
                    ,closed_dt=t.closed_dt
                    ,fcl_name=t.fcl_name
                    ,fcl_kn_name=t.fcl_kn_name
                    ,fcl_abb_name=t.fcl_abb_name
                    ,fcl_abb_kn_name=t.fcl_abb_kn_name
                    ,mkr_cd=t.mkr_cd
                    ,jsk_proc_kbn=t.jsk_proc_kbn
                    ,fmt_addr=t.fmt_addr
                    ,fmt_kn_addr=t.fmt_kn_addr
                    ,postal_cd=t.postal_cd
                    ,prft_cd=t.prft_cd
                    ,prft_name=t.prft_name
                    ,city_name=t.city_name
                    ,addr_line_1=t.addr_line_1
                    ,tel_num=t.tel_num
                    ,admin_kbn=t.admin_kbn
                    ,fcl_type=t.fcl_type
                    ,rec_sts_kbn=t.rec_sts_kbn
                    ,ins_dt=nullif(t.ins_dt, 0)
                    ,upd_dt=t.upd_dt
                    ,dwh_upd_dt=SYSDATE()
                ;
                """)
        },

        # Ｖ製品マスタ
        CONDKEY_PHM_PRD_MST: {
            _KEY_DATA_NAME: "Ｖ製品マスタ",
            _KEY_FILE_PREFIX: "phm_prd_mst_",
            _KEY_FILE_SUFFIX: ".gz",
            _KEY_FILE_COLUMN_SEPARATORS: "27",
            _KEY_ORG_TABLE: "org05.phm_prd_mst_v",
            _KEY_SRC_TABLE: "src05.phm_prd_mst_v",
            _KEY_UPSERT_SQL: textwrap.dedent("""\
                INSERT INTO src05.phm_prd_mst_v (
                    prd_cd
                    ,sub_num
                    ,prd_name
                    ,prd_e_name
                    ,mkr_cd
                    ,mkr_inf_1
                    ,mkr_inf_2
                    ,phm_itm_cd
                    ,itm_name
                    ,itm_abb_name
                    ,form_cd
                    ,form_name
                    ,vol_cd
                    ,vol_name
                    ,cont_cd
                    ,cont_name
                    ,pkg_cd
                    ,pkg_name
                    ,cnv_num
                    ,jsk_start_dt
                    ,prd_sale_kbn
                    ,jsk_proc_kbn
                    ,start_date
                    ,end_date
                    ,dsp_odr
                    ,rec_sts_kbn
                    ,ins_dt
                    ,upd_dt
                    ,dwh_upd_dt
                )
                SELECT
                    t.prd_cd
                    ,t.sub_num
                    ,t.prd_name
                    ,t.prd_e_name
                    ,t.mkr_cd
                    ,t.mkr_inf_1
                    ,t.mkr_inf_2
                    ,t.phm_itm_cd
                    ,t.itm_name
                    ,t.itm_abb_name
                    ,t.form_cd
                    ,t.form_name
                    ,t.vol_cd
                    ,t.vol_name
                    ,t.cont_cd
                    ,t.cont_name
                    ,t.pkg_cd
                    ,t.pkg_name
                    ,t.cnv_num
                    ,nullif(t.jsk_start_dt, 0)  -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する
                    ,t.prd_sale_kbn
                    ,t.jsk_proc_kbn
                    ,t.start_date
                    ,t.end_date
                    ,t.dsp_odr
                    ,t.rec_sts_kbn
                    ,nullif(t.ins_dt, 0)  -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する
                    ,t.upd_dt
                    ,SYSDATE()
                FROM org05.phm_prd_mst_v AS t
                ON DUPLICATE KEY UPDATE
                    prd_cd=t.prd_cd
                    ,sub_num=t.sub_num
                    ,prd_name=t.prd_name
                    ,prd_e_name=t.prd_e_name
                    ,mkr_cd=t.mkr_cd
                    ,mkr_inf_1=t.mkr_inf_1
                    ,mkr_inf_2=t.mkr_inf_2
                    ,phm_itm_cd=t.phm_itm_cd
                    ,itm_name=t.itm_name
                    ,itm_abb_name=t.itm_abb_name
                    ,form_cd=t.form_cd
                    ,form_name=t.form_name
                    ,vol_cd=t.vol_cd
                    ,vol_name=t.vol_name
                    ,cont_cd=t.cont_cd
                    ,cont_name=t.cont_name
                    ,pkg_cd=t.pkg_cd
                    ,pkg_name=t.pkg_name
                    ,cnv_num=t.cnv_num
                    ,jsk_start_dt=nullif(t.jsk_start_dt, 0)
                    ,prd_sale_kbn=t.prd_sale_kbn
                    ,jsk_proc_kbn=t.jsk_proc_kbn
                    ,start_date=t.start_date
                    ,end_date=t.end_date
                    ,dsp_odr=t.dsp_odr
                    ,rec_sts_kbn=t.rec_sts_kbn
                    ,ins_dt=nullif(t.ins_dt, 0)
                    ,upd_dt=t.upd_dt
                    ,dwh_upd_dt=SYSDATE()
                ;
                """)
        },

        # Ｖ製品価格マスタ
        CONDKEY_PHM_PRICE_MST: {
            _KEY_DATA_NAME: "Ｖ製品価格マスタ",
            _KEY_FILE_PREFIX: "phm_price_mst_",
            _KEY_FILE_SUFFIX: ".gz",
            _KEY_FILE_COLUMN_SEPARATORS: "9",
            _KEY_ORG_TABLE: "org05.phm_price_mst_v",
            _KEY_SRC_TABLE: "src05.phm_price_mst_v",
            _KEY_UPSERT_SQL: textwrap.dedent("""\
                INSERT INTO src05.phm_price_mst_v (
                    phm_prd_cd
                    ,phm_price_kind
                    ,sub_num
                    ,price
                    ,start_date
                    ,end_date
                    ,dsp_odr
                    ,rec_sts_kbn
                    ,ins_dt
                    ,upd_dt
                    ,dwh_upd_dt
                )
                SELECT
                    t.phm_prd_cd
                    ,t.phm_price_kind
                    ,t.sub_num
                    ,t.price
                    ,t.start_date
                    ,t.end_date
                    ,t.dsp_odr
                    ,t.rec_sts_kbn
                    ,nullif(t.ins_dt, 0)  -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する
                    ,t.upd_dt
                    ,SYSDATE()
                FROM org05.phm_price_mst_v AS t
                ON DUPLICATE KEY UPDATE
                    phm_prd_cd=t.phm_prd_cd
                    ,phm_price_kind=t.phm_price_kind
                    ,sub_num=t.sub_num
                    ,price=t.price
                    ,start_date=t.start_date
                    ,end_date=t.end_date
                    ,dsp_odr=t.dsp_odr
                    ,rec_sts_kbn=t.rec_sts_kbn
                    ,ins_dt=nullif(t.ins_dt, 0)
                    ,upd_dt=t.upd_dt
                    ,dwh_upd_dt=SYSDATE()
                ;
                """)
        },

        # Ｖ施設統合マスタ
        CONDKEY_VOP_HCO_MERGE: {
            _KEY_DATA_NAME: "Ｖ施設統合マスタ",
            _KEY_FILE_PREFIX: "vop_hco_merge_",
            _KEY_FILE_SUFFIX: ".gz",
            _KEY_FILE_COLUMN_SEPARATORS: "3",
            _KEY_ORG_TABLE: "org05.vop_hco_merge_v",
            _KEY_SRC_TABLE: "src05.vop_hco_merge_v",
            _KEY_UPSERT_SQL: textwrap.dedent("""\
                INSERT INTO src05.vop_hco_merge_v (
                    v_inst_cd
                    ,v_inst_cd_merg
                    ,apply_dt
                    ,merge_reason
                    ,dwh_upd_dt
                )
                SELECT
                    t.v_inst_cd
                    ,t.v_inst_cd_merg
                    ,t.apply_dt
                    ,t.merge_reason
                    ,SYSDATE()
                FROM org05.vop_hco_merge_v AS t
                ON DUPLICATE KEY UPDATE
                    v_inst_cd=t.v_inst_cd
                    ,v_inst_cd_merg=t.v_inst_cd_merg
                    ,apply_dt=t.apply_dt
                    ,merge_reason=t.merge_reason
                    ,dwh_upd_dt=SYSDATE()
                ;
                """)
        },

        # Ｖ卸得意先情報マスタ
        CONDKEY_WHS_CUSTOMER_MST: {
            _KEY_DATA_NAME: "Ｖ卸得意先情報マスタ",
            _KEY_FILE_PREFIX: "whs_customer_mst_",
            _KEY_FILE_SUFFIX: ".gz",
            _KEY_FILE_COLUMN_SEPARATORS: "16",
            _KEY_ORG_TABLE: "org05.whs_customer_mst_v",
            _KEY_SRC_TABLE: "src05.whs_customer_mst_v",
            _KEY_UPSERT_SQL: textwrap.dedent("""\
                INSERT INTO src05.whs_customer_mst_v (
                    whs_cd
                    ,whs_sub_cd
                    ,customer_cd
                    ,sub_num
                    ,start_date
                    ,end_date
                    ,whs_org_cd
                    ,src_org_cd
                    ,name
                    ,kn_name
                    ,addr
                    ,kn_addr
                    ,postal_cd
                    ,tel_num
                    ,rec_sts_kbn
                    ,ins_dt
                    ,upd_dt
                    ,dwh_upd_dt
                )
                SELECT
                    t.whs_cd
                    ,t.whs_sub_cd
                    ,t.customer_cd
                    ,t.sub_num
                    ,t.start_date
                    ,t.end_date
                    ,t.whs_org_cd
                    ,t.src_org_cd
                    ,t.name
                    ,t.kn_name
                    ,t.addr
                    ,t.kn_addr
                    ,t.postal_cd
                    ,t.tel_num
                    ,t.rec_sts_kbn
                    ,nullif(t.ins_dt, 0)  -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する
                    ,t.upd_dt
                    ,SYSDATE()
                FROM org05.whs_customer_mst_v AS t
                ON DUPLICATE KEY UPDATE
                    whs_cd=t.whs_cd
                    ,whs_sub_cd=t.whs_sub_cd
                    ,customer_cd=t.customer_cd
                    ,sub_num=t.sub_num
                    ,start_date=t.start_date
                    ,end_date=t.end_date
                    ,whs_org_cd=t.whs_org_cd
                    ,src_org_cd=t.src_org_cd
                    ,name=t.name
                    ,kn_name=t.kn_name
                    ,addr=t.addr
                    ,kn_addr=t.kn_addr
                    ,postal_cd=t.postal_cd
                    ,tel_num=t.tel_num
                    ,rec_sts_kbn=t.rec_sts_kbn
                    ,ins_dt=nullif(t.ins_dt, 0)
                    ,upd_dt=t.upd_dt
                    ,dwh_upd_dt=SYSDATE()
                ;
                """)
        },

        # MDBコード変換表
        CONDKEY_MDB_CONV_MST: {
            _KEY_DATA_NAME: "MDBコード変換表",
            _KEY_FILE_PREFIX: "mdb_conv_mst_",
            _KEY_FILE_SUFFIX: ".gz",
            _KEY_FILE_COLUMN_SEPARATORS: "7",
            _KEY_ORG_TABLE: "org05.mdb_cnv_mst_v",
            _KEY_SRC_TABLE: "src05.mdb_cnv_mst_v",
            _KEY_UPSERT_SQL: textwrap.dedent("""\
                INSERT INTO src05.mdb_cnv_mst_v (
                    hco_vid_v
                    ,sub_num
                    ,mdb_cd
                    ,reliability
                    ,start_date
                    ,rec_sts_kbn
                    ,ins_dt
                    ,upd_dt
                    ,dwh_upd_dt
                )
                SELECT
                    t.hco_vid_v
                    ,t.sub_num
                    ,t.mdb_cd
                    ,t.reliability
                    ,t.start_date
                    ,t.rec_sts_kbn
                    ,nullif(t.ins_dt, 0)  -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する
                    ,t.upd_dt
                    ,SYSDATE()
                FROM org05.mdb_cnv_mst_v AS t
                ON DUPLICATE KEY UPDATE
                    hco_vid_v=t.hco_vid_v
                    ,sub_num=t.sub_num
                    ,mdb_cd=t.mdb_cd
                    ,reliability=t.reliability
                    ,start_date=t.start_date
                    ,rec_sts_kbn=t.rec_sts_kbn
                    ,ins_dt=nullif(t.ins_dt, 0)
                    ,upd_dt=t.upd_dt
                    ,dwh_upd_dt=SYSDATE()
                ;
                """)
        },

        # 卸在庫データ
        CONDKEY_STOCK_SLIP_DATA: {
            _KEY_DATA_NAME: "卸在庫データ",
            _KEY_FILE_PREFIX: "stock_slip_data_",
            _KEY_FILE_SUFFIX: ".gz",
            _KEY_FILE_COLUMN_SEPARATORS: "28",
            _KEY_ORG_TABLE: "org05.whole_stock",
            _KEY_SRC_TABLE: "src05.whole_stock",
            _KEY_UPSERT_SQL: textwrap.dedent("""\
                INSERT INTO src05.whole_stock (
                    rec_data
                    ,rec_whs_cd
                    ,rec_whs_sub_cd
                    ,rec_sto_place
                    ,rec_stock_ymd
                    ,rec_comm_cd
                    ,rec_qty
                    ,rec_stock_no_sign
                    ,rec_jan_cd
                    ,free_item
                    ,rec_ymd
                    ,sale_data_cat
                    ,slip_file_name
                    ,slip_mgt_num
                    ,row_num
                    ,exec_dt
                    ,err_flg1
                    ,err_flg2
                    ,err_flg3
                    ,err_flg4
                    ,err_flg5
                    ,err_flg6
                    ,err_flg7
                    ,err_flg8
                    ,err_flg9
                    ,err_flg10
                    ,rec_sts_kbn
                    ,ins_dt
                    ,ins_usr
                    ,dwh_upd_dt
                )
                SELECT
                    t.rec_data
                    ,t.rec_whs_cd
                    ,t.rec_whs_sub_cd
                    ,t.rec_sto_place
                    ,t.rec_stock_ymd
                    ,t.rec_comm_cd
                    ,t.rec_qty
                    ,t.rec_stock_no_sign
                    ,t.rec_jan_cd
                    ,t.free_item
                    ,t.rec_ymd
                    ,t.sale_data_cat
                    ,t.slip_file_name
                    ,t.slip_mgt_num
                    ,t.row_num
                    ,t.exec_dt
                    ,t.err_flg1
                    ,t.err_flg2
                    ,t.err_flg3
                    ,t.err_flg4
                    ,t.err_flg5
                    ,t.err_flg6
                    ,t.err_flg7
                    ,t.err_flg8
                    ,t.err_flg9
                    ,t.err_flg10
                    ,t.rec_sts_kbn
                    ,nullif(t.ins_dt, 0)  -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する
                    ,t.ins_usr
                    ,SYSDATE()
                FROM org05.whole_stock AS t
                ON DUPLICATE KEY UPDATE
                    rec_data=t.rec_data
                    ,rec_whs_cd=t.rec_whs_cd
                    ,rec_whs_sub_cd=t.rec_whs_sub_cd
                    ,rec_sto_place=t.rec_sto_place
                    ,rec_stock_ymd=t.rec_stock_ymd
                    ,rec_comm_cd=t.rec_comm_cd
                    ,rec_qty=t.rec_qty
                    ,rec_stock_no_sign=t.rec_stock_no_sign
                    ,rec_jan_cd=t.rec_jan_cd
                    ,free_item=t.free_item
                    ,rec_ymd=t.rec_ymd
                    ,sale_data_cat=t.sale_data_cat
                    ,slip_file_name=t.slip_file_name
                    ,slip_mgt_num=t.slip_mgt_num
                    ,row_num=t.row_num
                    ,exec_dt=t.exec_dt
                    ,err_flg1=t.err_flg1
                    ,err_flg2=t.err_flg2
                    ,err_flg3=t.err_flg3
                    ,err_flg4=t.err_flg4
                    ,err_flg5=t.err_flg5
                    ,err_flg6=t.err_flg6
                    ,err_flg7=t.err_flg7
                    ,err_flg8=t.err_flg8
                    ,err_flg9=t.err_flg9
                    ,err_flg10=t.err_flg10
                    ,rec_sts_kbn=t.rec_sts_kbn
                    ,ins_dt=nullif(t.ins_dt, 0)
                    ,ins_usr=t.ins_usr
                    ,dwh_upd_dt=SYSDATE()
                ;
                """)
        },

        # 生物由来データ
        CONDKEY_BIO_SLIP_DATA: {
            _KEY_DATA_NAME: "生物由来データ",
            _KEY_FILE_PREFIX: "bio_slip_data_",
            _KEY_FILE_SUFFIX: ".gz",
            _KEY_FILE_COLUMN_SEPARATORS: "77",
            _KEY_ORG_TABLE: "org05.bio_sales",
            _KEY_SRC_TABLE: "src05.bio_sales",
            _KEY_UPSERT_SQL: textwrap.dedent("""\
                INSERT INTO src05.bio_sales (
                    rec_data
                    ,rec_whs_cd
                    ,rec_whs_sub_cd
                    ,rec_whs_org_cd
                    ,rec_cust_cd
                    ,rec_comm_cd
                    ,rec_tran_kbn
                    ,rev_hsdnymd_wrk
                    ,rev_hsdnymd_srk
                    ,rec_urag_num
                    ,rec_comm_name
                    ,rec_nonyu_fcl_name
                    ,rec_nonyu_fcl_addr
                    ,rec_lot_num1
                    ,rec_qty1
                    ,rec_lot_num2
                    ,rec_qty2
                    ,rec_lot_num3
                    ,rec_qty3
                    ,rec_ymd
                    ,sale_data_cat
                    ,slip_file_name
                    ,slip_mgt_num
                    ,row_num
                    ,hsdn_ymd
                    ,exec_dt
                    ,v_tran_cd
                    ,tran_kbn_name
                    ,whs_org_cd
                    ,v_whsorg_cd
                    ,whs_org_name
                    ,whs_org_kn
                    ,v_whs_cd
                    ,whs_name
                    ,nonyu_fcl_cd
                    ,v_inst_cd
                    ,v_inst_name
                    ,v_inst_kn
                    ,v_inst_addr
                    ,comm_cd
                    ,product_name
                    ,htdnymd_err_kbn
                    ,prd_exis_kbn
                    ,fcl_exis_kbn
                    ,qty1
                    ,qty2
                    ,qty3
                    ,slip_org_kbn
                    ,bef_slip_mgt_num
                    ,whs_rep_comm_name
                    ,whs_rep_nonyu_fcl_name
                    ,whs_rep_nonyu_fcl_addr
                    ,err_flg1
                    ,err_flg2
                    ,err_flg3
                    ,err_flg4
                    ,err_flg5
                    ,err_flg6
                    ,err_flg7
                    ,err_flg8
                    ,err_flg9
                    ,err_flg10
                    ,err_flg11
                    ,err_flg12
                    ,err_flg13
                    ,err_flg14
                    ,err_flg15
                    ,err_flg16
                    ,err_flg17
                    ,err_flg18
                    ,err_flg19
                    ,err_flg20
                    ,kjyo_ym
                    ,tksnbk_kbn
                    ,fcl_exec_kbn
                    ,rec_sts_kbn
                    ,ins_dt
                    ,ins_usr
                    ,dwh_upd_dt
                )
                SELECT
                    t.rec_data
                    ,t.rec_whs_cd
                    ,t.rec_whs_sub_cd
                    ,t.rec_whs_org_cd
                    ,t.rec_cust_cd
                    ,t.rec_comm_cd
                    ,t.rec_tran_kbn
                    ,t.rev_hsdnymd_wrk
                    ,t.rev_hsdnymd_srk
                    ,t.rec_urag_num
                    ,t.rec_comm_name
                    ,t.rec_nonyu_fcl_name
                    ,t.rec_nonyu_fcl_addr
                    ,t.rec_lot_num1
                    ,t.rec_qty1
                    ,t.rec_lot_num2
                    ,t.rec_qty2
                    ,t.rec_lot_num3
                    ,t.rec_qty3
                    ,t.rec_ymd
                    ,t.sale_data_cat
                    ,t.slip_file_name
                    ,t.slip_mgt_num
                    ,t.row_num
                    ,t.hsdn_ymd
                    ,t.exec_dt
                    ,t.v_tran_cd
                    ,t.tran_kbn_name
                    ,t.whs_org_cd
                    ,t.v_whsorg_cd
                    ,t.whs_org_name
                    ,t.whs_org_kn
                    ,t.v_whs_cd
                    ,t.whs_name
                    ,t.nonyu_fcl_cd
                    ,t.v_inst_cd
                    ,t.v_inst_name
                    ,t.v_inst_kn
                    ,t.v_inst_addr
                    ,t.comm_cd
                    ,t.product_name
                    ,t.htdnymd_err_kbn
                    ,t.prd_exis_kbn
                    ,t.fcl_exis_kbn
                    ,t.qty1
                    ,t.qty2
                    ,t.qty3
                    ,t.slip_org_kbn
                    ,t.bef_slip_mgt_num
                    ,t.whs_rep_comm_name
                    ,t.whs_rep_nonyu_fcl_name
                    ,t.whs_rep_nonyu_fcl_addr
                    ,t.err_flg1
                    ,t.err_flg2
                    ,t.err_flg3
                    ,t.err_flg4
                    ,t.err_flg5
                    ,t.err_flg6
                    ,t.err_flg7
                    ,t.err_flg8
                    ,t.err_flg9
                    ,t.err_flg10
                    ,t.err_flg11
                    ,t.err_flg12
                    ,t.err_flg13
                    ,t.err_flg14
                    ,t.err_flg15
                    ,t.err_flg16
                    ,t.err_flg17
                    ,t.err_flg18
                    ,t.err_flg19
                    ,t.err_flg20
                    ,t.kjyo_ym
                    ,t.tksnbk_kbn
                    ,t.fcl_exec_kbn
                    ,t.rec_sts_kbn
                    ,nullif(t.ins_dt, 0)  -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する
                    ,t.ins_usr
                    ,SYSDATE()
                FROM org05.bio_sales AS t
                ON DUPLICATE KEY UPDATE
                    rec_data=t.rec_data
                    ,rec_whs_cd=t.rec_whs_cd
                    ,rec_whs_sub_cd=t.rec_whs_sub_cd
                    ,rec_whs_org_cd=t.rec_whs_org_cd
                    ,rec_cust_cd=t.rec_cust_cd
                    ,rec_comm_cd=t.rec_comm_cd
                    ,rec_tran_kbn=t.rec_tran_kbn
                    ,rev_hsdnymd_wrk=t.rev_hsdnymd_wrk
                    ,rev_hsdnymd_srk=t.rev_hsdnymd_srk
                    ,rec_urag_num=t.rec_urag_num
                    ,rec_comm_name=t.rec_comm_name
                    ,rec_nonyu_fcl_name=t.rec_nonyu_fcl_name
                    ,rec_nonyu_fcl_addr=t.rec_nonyu_fcl_addr
                    ,rec_lot_num1=t.rec_lot_num1
                    ,rec_qty1=t.rec_qty1
                    ,rec_lot_num2=t.rec_lot_num2
                    ,rec_qty2=t.rec_qty2
                    ,rec_lot_num3=t.rec_lot_num3
                    ,rec_qty3=t.rec_qty3
                    ,rec_ymd=t.rec_ymd
                    ,sale_data_cat=t.sale_data_cat
                    ,slip_file_name=t.slip_file_name
                    ,slip_mgt_num=t.slip_mgt_num
                    ,row_num=t.row_num
                    ,hsdn_ymd=t.hsdn_ymd
                    ,exec_dt=t.exec_dt
                    ,v_tran_cd=t.v_tran_cd
                    ,tran_kbn_name=t.tran_kbn_name
                    ,whs_org_cd=t.whs_org_cd
                    ,v_whsorg_cd=t.v_whsorg_cd
                    ,whs_org_name=t.whs_org_name
                    ,whs_org_kn=t.whs_org_kn
                    ,v_whs_cd=t.v_whs_cd
                    ,whs_name=t.whs_name
                    ,nonyu_fcl_cd=t.nonyu_fcl_cd
                    ,v_inst_cd=t.v_inst_cd
                    ,v_inst_name=t.v_inst_name
                    ,v_inst_kn=t.v_inst_kn
                    ,v_inst_addr=t.v_inst_addr
                    ,comm_cd=t.comm_cd
                    ,product_name=t.product_name
                    ,htdnymd_err_kbn=t.htdnymd_err_kbn
                    ,prd_exis_kbn=t.prd_exis_kbn
                    ,fcl_exis_kbn=t.fcl_exis_kbn
                    ,qty1=t.qty1
                    ,qty2=t.qty2
                    ,qty3=t.qty3
                    ,slip_org_kbn=t.slip_org_kbn
                    ,bef_slip_mgt_num=t.bef_slip_mgt_num
                    ,whs_rep_comm_name=t.whs_rep_comm_name
                    ,whs_rep_nonyu_fcl_name=t.whs_rep_nonyu_fcl_name
                    ,whs_rep_nonyu_fcl_addr=t.whs_rep_nonyu_fcl_addr
                    ,err_flg1=t.err_flg1
                    ,err_flg2=t.err_flg2
                    ,err_flg3=t.err_flg3
                    ,err_flg4=t.err_flg4
                    ,err_flg5=t.err_flg5
                    ,err_flg6=t.err_flg6
                    ,err_flg7=t.err_flg7
                    ,err_flg8=t.err_flg8
                    ,err_flg9=t.err_flg9
                    ,err_flg10=t.err_flg10
                    ,err_flg11=t.err_flg11
                    ,err_flg12=t.err_flg12
                    ,err_flg13=t.err_flg13
                    ,err_flg14=t.err_flg14
                    ,err_flg15=t.err_flg15
                    ,err_flg16=t.err_flg16
                    ,err_flg17=t.err_flg17
                    ,err_flg18=t.err_flg18
                    ,err_flg19=t.err_flg19
                    ,err_flg20=t.err_flg20
                    ,kjyo_ym=t.kjyo_ym
                    ,tksnbk_kbn=t.tksnbk_kbn
                    ,fcl_exec_kbn=t.fcl_exec_kbn
                    ,rec_sts_kbn=t.rec_sts_kbn
                    ,ins_dt=nullif(t.ins_dt, 0)
                    ,ins_usr=t.ins_usr
                    ,dwh_upd_dt=SYSDATE()
                ;
                """)
        },

        # ロットマスタデータ
        CONDKEY_LOT_NUM_MST: {
            _KEY_DATA_NAME: "ロットマスタデータ",
            _KEY_FILE_PREFIX: "lot_num_mst_",
            _KEY_FILE_SUFFIX: ".gz",
            _KEY_FILE_COLUMN_SEPARATORS: "5",
            _KEY_ORG_TABLE: "org05.lot_num_mst",
            _KEY_SRC_TABLE: "src05.lot_num_mst",
            _KEY_UPSERT_SQL: textwrap.dedent("""\
                INSERT INTO src05.lot_num_mst (
                    ser_num
                    ,lot_num
                    ,expr_dt
                    ,frst_mov_dt
                    ,ins_dt
                    ,ins_usr
                    ,dwh_upd_dt
                )
                SELECT
                    t.ser_num
                    ,t.lot_num
                    ,t.expr_dt
                    ,t.frst_mov_dt
                    ,nullif(t.ins_dt, 0)  -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する
                    ,t.ins_usr
                    ,SYSDATE()
                FROM org05.lot_num_mst AS t
                ON DUPLICATE KEY UPDATE
                    ser_num=t.ser_num
                    ,lot_num=t.lot_num
                    ,expr_dt=t.expr_dt
                    ,frst_mov_dt=t.frst_mov_dt
                    ,ins_dt=nullif(t.ins_dt, 0)
                    ,ins_usr=t.ins_usr
                    ,dwh_upd_dt=SYSDATE()
                ;
                """)
        },
    }

    def _get_interface_property(self, condkey: str, property_name: str) -> str:
        ret = None
        if condkey in self._VJSK_INTERFACE_MAPPING:
            ret = self._VJSK_INTERFACE_MAPPING.get(condkey).get(property_name)
        return ret

    def get_data_name(self, condkey: str) -> str:
        return self._get_interface_property(condkey, self._KEY_DATA_NAME)

    def get_file_prefix(self, condkey: str) -> str:
        return self._get_interface_property(condkey, self._KEY_FILE_PREFIX)

    def get_file_suffix(self, condkey: str) -> str:
        return self._get_interface_property(condkey, self._KEY_FILE_SUFFIX)

    def get_file_column_separators(self, condkey: str) -> int:
        return int(self._get_interface_property(condkey, self._KEY_FILE_COLUMN_SEPARATORS))

    def get_org_table(self, condkey: str) -> str:
        return self._get_interface_property(condkey, self._KEY_ORG_TABLE)

    def get_src_table(self, condkey: str) -> str:
        return self._get_interface_property(condkey, self._KEY_SRC_TABLE)

    def get_upsert_sql(self, condkey: str) -> str:
        return self._get_interface_property(condkey, self._KEY_UPSERT_SQL)

    def get_condkey_by_s3_file_path(self, s3_file_path: str) -> str:
        ret = None
        filename = s3_file_path[s3_file_path.rfind("/") + 1:]
        for condkey in self._VJSK_INTERFACE_MAPPING:
            element = self._VJSK_INTERFACE_MAPPING.get(condkey)
            if filename.startswith(element.get(self._KEY_FILE_PREFIX)) \
                    and filename.endswith(element.get(self._KEY_FILE_SUFFIX)):
                ret = condkey
                break
        return ret
