From c38e3cb69ef59cda2a4979ea9c265629942e6463 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Sat, 16 Sep 2023 10:22:26 +0900 Subject: [PATCH 01/19] =?UTF-8?q?fix:=20DB=E7=A9=BA=E6=96=87=E5=AD=97?= =?UTF-8?q?=E3=80=81INPUT=E7=A9=BA=E6=96=87=E5=AD=97=E3=81=AE=E3=83=91?= =?UTF-8?q?=E3=82=BF=E3=83=BC=E3=83=B3=E3=81=AF=E7=95=B0=E5=B8=B8=E3=81=AA?= =?UTF-8?q?=E3=82=B1=E3=83=BC=E3=82=B9=E3=81=AA=E3=81=AE=E3=81=A7=E3=80=81?= =?UTF-8?q?=E3=82=A8=E3=83=A9=E3=83=BC=E3=81=AB=E3=81=99=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecs/jskult-batch-daily/tests/testing_vjsk_utility.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ecs/jskult-batch-daily/tests/testing_vjsk_utility.py b/ecs/jskult-batch-daily/tests/testing_vjsk_utility.py index 441c5c9e..06173c2e 100644 --- a/ecs/jskult-batch-daily/tests/testing_vjsk_utility.py +++ b/ecs/jskult-batch-daily/tests/testing_vjsk_utility.py @@ -113,6 +113,9 @@ def assert_table_results(actual_rows: list[dict], expect_rows: list[dict], ignor elif actual_value == "0000-00-00 00:00:00" and expect_value == "": # DB項目(datetime)がゼロ日付(NULL代替値)の場合、期待値が""であれば"0000-00-00 00:00:00"に置換する expect_value = "0000-00-00 00:00:00" + elif actual_value == "" and expect_value == "": + # DB項目値が空文字のかつ期待値が""のパターンは想定外のパターンであるため、期待値をNoneに置換して失敗させる + expect_value = None # 検証 assert actual_value == expect_value, f'{line_number}行目:"{actual_col_name}" : "{actual_value}" ({type(actual_value)})が、期待値 "{expect_value}" ({type(expect_value)}) と一致しませんでした' From a7d4033ca4fd784da8f4dcc59bd57222b41f64df Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Sat, 16 Sep 2023 13:56:34 +0900 Subject: [PATCH 02/19] =?UTF-8?q?feat:=20=E7=94=9F=E7=89=A9=E7=94=B1?= =?UTF-8?q?=E6=9D=A5=E3=83=87=E3=83=BC=E3=82=BF=E3=81=AB=E7=A9=BA=E6=96=87?= =?UTF-8?q?=E5=AD=97=E2=86=92NULL=E5=A4=89=E6=8F=9B=E3=82=92=E5=AE=9F?= =?UTF-8?q?=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/batch/vjsk/vjsk_recv_file_mapper.py | 294 +++++++++--------- .../batch/vjsk/vjsk_load/test_vjsk_load.py | 12 +- .../tests/testing_vjsk_utility.py | 6 +- .../src05/convert_empty_to_null.sql | 14 + 4 files changed, 171 insertions(+), 155 deletions(-) create mode 100644 rds_mysql/stored_procedure/src05/convert_empty_to_null.sql diff --git a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py index 4ffaa652..dbd94d28 100644 --- a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py @@ -1281,165 +1281,165 @@ class VjskReceiveFileMapper: ,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 + src05.convert_empty_to_null(t.rec_data) + ,src05.convert_empty_to_null(t.rec_whs_cd) + ,src05.convert_empty_to_null(t.rec_whs_sub_cd) + ,src05.convert_empty_to_null(t.rec_whs_org_cd) + ,src05.convert_empty_to_null(t.rec_cust_cd) + ,src05.convert_empty_to_null(t.rec_comm_cd) + ,src05.convert_empty_to_null(t.rec_tran_kbn) + ,src05.convert_empty_to_null(t.rev_hsdnymd_wrk) + ,src05.convert_empty_to_null(t.rev_hsdnymd_srk) + ,src05.convert_empty_to_null(t.rec_urag_num) + ,src05.convert_empty_to_null(t.rec_comm_name) + ,src05.convert_empty_to_null(t.rec_nonyu_fcl_name) + ,src05.convert_empty_to_null(t.rec_nonyu_fcl_addr) + ,src05.convert_empty_to_null(t.rec_lot_num1) + ,src05.convert_empty_to_null(t.rec_qty1) + ,src05.convert_empty_to_null(t.rec_lot_num2) + ,src05.convert_empty_to_null(t.rec_qty2) + ,src05.convert_empty_to_null(t.rec_lot_num3) + ,src05.convert_empty_to_null(t.rec_qty3) + ,src05.convert_empty_to_null(t.rec_ymd) + ,src05.convert_empty_to_null(t.sale_data_cat) + ,src05.convert_empty_to_null(t.slip_file_name) + ,src05.convert_empty_to_null(t.slip_mgt_num) ,t.row_num - ,t.hsdn_ymd - ,t.exec_dt + ,src05.convert_empty_to_null(t.hsdn_ymd) + ,src05.convert_empty_to_null(t.exec_dt) ,t.v_tran_cd - ,t.tran_kbn_name - ,t.whs_org_cd + ,src05.convert_empty_to_null(t.tran_kbn_name) + ,src05.convert_empty_to_null(t.whs_org_cd) ,t.v_whsorg_cd - ,t.whs_org_name - ,t.whs_org_kn + ,src05.convert_empty_to_null(t.whs_org_name) + ,src05.convert_empty_to_null(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 + ,src05.convert_empty_to_null(t.whs_name) + ,src05.convert_empty_to_null(t.nonyu_fcl_cd) + ,nullif(t.v_inst_cd,'') + ,nullif(t.v_inst_name,'') + ,nullif(t.v_inst_kn,'') + ,nullif(t.v_inst_addr,'') + ,nullif(t.comm_cd,'') + ,nullif(t.product_name,'') + ,nullif(t.htdnymd_err_kbn,'') + ,nullif(t.prd_exis_kbn,'') + ,nullif(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 + ,src05.convert_empty_to_null(t.bef_slip_mgt_num) + ,src05.convert_empty_to_null(t.whs_rep_comm_name) + ,src05.convert_empty_to_null(t.whs_rep_nonyu_fcl_name) + ,src05.convert_empty_to_null(t.whs_rep_nonyu_fcl_addr) + ,src05.convert_empty_to_null(t.err_flg1) + ,src05.convert_empty_to_null(t.err_flg2) + ,src05.convert_empty_to_null(t.err_flg3) + ,src05.convert_empty_to_null(t.err_flg4) + ,src05.convert_empty_to_null(t.err_flg5) + ,src05.convert_empty_to_null(t.err_flg6) + ,src05.convert_empty_to_null(t.err_flg7) + ,src05.convert_empty_to_null(t.err_flg8) + ,src05.convert_empty_to_null(t.err_flg9) + ,src05.convert_empty_to_null(t.err_flg10) + ,src05.convert_empty_to_null(t.err_flg11) + ,src05.convert_empty_to_null(t.err_flg12) + ,src05.convert_empty_to_null(t.err_flg13) + ,src05.convert_empty_to_null(t.err_flg14) + ,src05.convert_empty_to_null(t.err_flg15) + ,src05.convert_empty_to_null(t.err_flg16) + ,src05.convert_empty_to_null(t.err_flg17) + ,src05.convert_empty_to_null(t.err_flg18) + ,src05.convert_empty_to_null(t.err_flg19) + ,src05.convert_empty_to_null(t.err_flg20) + ,src05.convert_empty_to_null(t.kjyo_ym) + ,src05.convert_empty_to_null(t.tksnbk_kbn) + ,src05.convert_empty_to_null(t.fcl_exec_kbn) + ,src05.convert_empty_to_null(t.rec_sts_kbn) ,nullif(t.ins_dt, 0) -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する - ,t.ins_usr + ,src05.convert_empty_to_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 + rec_data=VALUES(rec_data) + ,rec_whs_cd=VALUES(rec_whs_cd) + ,rec_whs_sub_cd=VALUES(rec_whs_sub_cd) + ,rec_whs_org_cd=VALUES(rec_whs_org_cd) + ,rec_cust_cd=VALUES(rec_cust_cd) + ,rec_comm_cd=VALUES(rec_comm_cd) + ,rec_tran_kbn=VALUES(rec_tran_kbn) + ,rev_hsdnymd_wrk=VALUES(rev_hsdnymd_wrk) + ,rev_hsdnymd_srk=VALUES(rev_hsdnymd_srk) + ,rec_urag_num=VALUES(rec_urag_num) + ,rec_comm_name=VALUES(rec_comm_name) + ,rec_nonyu_fcl_name=VALUES(rec_nonyu_fcl_name) + ,rec_nonyu_fcl_addr=VALUES(rec_nonyu_fcl_addr) + ,rec_lot_num1=VALUES(rec_lot_num1) + ,rec_qty1=VALUES(rec_qty1) + ,rec_lot_num2=VALUES(rec_lot_num2) + ,rec_qty2=VALUES(rec_qty2) + ,rec_lot_num3=VALUES(rec_lot_num3) + ,rec_qty3=VALUES(rec_qty3) + ,rec_ymd=VALUES(rec_ymd) + ,sale_data_cat=VALUES(sale_data_cat) + ,slip_file_name=VALUES(slip_file_name) + ,slip_mgt_num=VALUES(slip_mgt_num) + ,row_num=VALUES(row_num) + ,hsdn_ymd=VALUES(hsdn_ymd) + ,exec_dt=VALUES(exec_dt) + ,v_tran_cd=VALUES(v_tran_cd) + ,tran_kbn_name=VALUES(tran_kbn_name) + ,whs_org_cd=VALUES(whs_org_cd) + ,v_whsorg_cd=VALUES(v_whsorg_cd) + ,whs_org_name=VALUES(whs_org_name) + ,whs_org_kn=VALUES(whs_org_kn) + ,v_whs_cd=VALUES(v_whs_cd) + ,whs_name=VALUES(whs_name) + ,nonyu_fcl_cd=VALUES(nonyu_fcl_cd) + ,v_inst_cd=VALUES(v_inst_cd) + ,v_inst_name=VALUES(v_inst_name) + ,v_inst_kn=VALUES(v_inst_kn) + ,v_inst_addr=VALUES(v_inst_addr) + ,comm_cd=VALUES(comm_cd) + ,product_name=VALUES(product_name) + ,htdnymd_err_kbn=VALUES(htdnymd_err_kbn) + ,prd_exis_kbn=VALUES(prd_exis_kbn) + ,fcl_exis_kbn=VALUES(fcl_exis_kbn) + ,qty1=VALUES(qty1) + ,qty2=VALUES(qty2) + ,qty3=VALUES(qty3) + ,slip_org_kbn=VALUES(slip_org_kbn) + ,bef_slip_mgt_num=VALUES(bef_slip_mgt_num) + ,whs_rep_comm_name=VALUES(whs_rep_comm_name) + ,whs_rep_nonyu_fcl_name=VALUES(whs_rep_nonyu_fcl_name) + ,whs_rep_nonyu_fcl_addr=VALUES(whs_rep_nonyu_fcl_addr) + ,err_flg1=VALUES(err_flg1) + ,err_flg2=VALUES(err_flg2) + ,err_flg3=VALUES(err_flg3) + ,err_flg4=VALUES(err_flg4) + ,err_flg5=VALUES(err_flg5) + ,err_flg6=VALUES(err_flg6) + ,err_flg7=VALUES(err_flg7) + ,err_flg8=VALUES(err_flg8) + ,err_flg9=VALUES(err_flg9) + ,err_flg10=VALUES(err_flg10) + ,err_flg11=VALUES(err_flg11) + ,err_flg12=VALUES(err_flg12) + ,err_flg13=VALUES(err_flg13) + ,err_flg14=VALUES(err_flg14) + ,err_flg15=VALUES(err_flg15) + ,err_flg16=VALUES(err_flg16) + ,err_flg17=VALUES(err_flg17) + ,err_flg18=VALUES(err_flg18) + ,err_flg19=VALUES(err_flg19) + ,err_flg20=VALUES(err_flg20) + ,kjyo_ym=VALUES(kjyo_ym) + ,tksnbk_kbn=VALUES(tksnbk_kbn) + ,fcl_exec_kbn=VALUES(fcl_exec_kbn) + ,rec_sts_kbn=VALUES(rec_sts_kbn) + ,ins_dt=VALUES(ins_dt) + ,ins_usr=VALUES(ins_usr) ,dwh_upd_dt=SYSDATE() ; """) diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py index a4f6383e..a2088ae5 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py @@ -996,7 +996,7 @@ class TestImportFileToDb: self.batch_context.is_vjsk_stock_import_day = True self.db.execute(f"truncate table {table_name_src}") - # assertion1 (insert 4row) + # assertion1 (insert 6row) # 処理実行 target_dict = { @@ -1012,7 +1012,7 @@ class TestImportFileToDb: # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # orgテーブル結果が期待値通りかを突合 - assert_table_results(result_org, assert_list, ignore_columns) + assert_table_results(result_org, assert_list, ignore_columns, is_loaddata=True) # srcテーブル結果を取得 result_src = self.db.execute_select(f"select * from {table_name_src}") # 突合から除外する項目 @@ -1036,18 +1036,18 @@ class TestImportFileToDb: # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # orgテーブル結果が期待値通りかを突合 - assert_table_results(result_org, assert_list, ignore_columns) + assert_table_results(result_org, assert_list, ignore_columns, is_loaddata=True) # srcテーブル結果(orgテーブル結果のPK値で一致するもの)を取得 result_src = self.db.execute_select( - f"select * from {table_name_src} s inner join {table_name_org} o on (s.slip_mgt_num = o.slip_mgt_num)") + f"select s.* from {table_name_src} s inner join {table_name_org} o on (s.slip_mgt_num = o.slip_mgt_num)") # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # srcテーブル結果が期待値通りかを突合 assert_table_results(result_src, assert_list, ignore_columns) - # srcテーブル結果のレコード件数 (insert 4row + update 2row + insert 2row = 6row) + # srcテーブル結果のレコード件数 (insert 6row + update 2row + insert 2row = 8row) result_src_count = self.db.execute_select(f"select count(*) from {table_name_src} ") - assert result_src_count[0]['count(*)'] == 6 + assert result_src_count[0]['count(*)'] == 8 # teardown diff --git a/ecs/jskult-batch-daily/tests/testing_vjsk_utility.py b/ecs/jskult-batch-daily/tests/testing_vjsk_utility.py index 06173c2e..52969c49 100644 --- a/ecs/jskult-batch-daily/tests/testing_vjsk_utility.py +++ b/ecs/jskult-batch-daily/tests/testing_vjsk_utility.py @@ -62,13 +62,14 @@ def is_valid_date_format(date_str: str, date_format): return False -def assert_table_results(actual_rows: list[dict], expect_rows: list[dict], ignore_col_names: list = None, force_cast_to_str_columns: list = []) -> None: +def assert_table_results(actual_rows: list[dict], expect_rows: list[dict], ignore_col_names: list = None, force_cast_to_str_columns: list = [], is_loaddata=False) -> None: """テーブル同士の取得結果突き合わせ Args: actual_rows (list[dict]): テスト結果の辞書リスト expect_rows (list[dict]): 期待値の辞書リスト ignore_col_name (list): 比較を無視するDBのカラム名. Default None. + is_loaddata (bool): LOAD DATAで読み込むテーブルかどうかのフラグ。org05の比較をするときにONにする. Default False. """ # 取得件数が一致すること assert len(actual_rows) == len(expect_rows), f'レコード件数が一致しません。DBレコード数 : {len(actual_rows)} 期待値 : {len(expect_rows)}' @@ -113,8 +114,9 @@ def assert_table_results(actual_rows: list[dict], expect_rows: list[dict], ignor elif actual_value == "0000-00-00 00:00:00" and expect_value == "": # DB項目(datetime)がゼロ日付(NULL代替値)の場合、期待値が""であれば"0000-00-00 00:00:00"に置換する expect_value = "0000-00-00 00:00:00" - elif actual_value == "" and expect_value == "": + elif actual_value == "" and expect_value == "" and not is_loaddata: # DB項目値が空文字のかつ期待値が""のパターンは想定外のパターンであるため、期待値をNoneに置換して失敗させる + # LOAD文では空文字で登録されるので除外する expect_value = None # 検証 diff --git a/rds_mysql/stored_procedure/src05/convert_empty_to_null.sql b/rds_mysql/stored_procedure/src05/convert_empty_to_null.sql new file mode 100644 index 00000000..339bbe44 --- /dev/null +++ b/rds_mysql/stored_procedure/src05/convert_empty_to_null.sql @@ -0,0 +1,14 @@ +-- A5M2で実行時に[SQL] - [スラッシュ(/)のみの行でSQLを区切る]に変えてから実行する +-- 空文字→NULL変換 +CREATE FUNCTION src05.convert_empty_to_null(column_value VARCHAR(500)) +RETURNS VARCHAR(500) DETERMINISTIC +BEGIN + RETURN ( + CASE + WHEN column_value IS NULL THEN NULL + WHEN LENGTH(column_value) = 0 THEN NULL + ELSE column_value + END + ); +END +; From 999e7e27a7dcb5ccf86ed523c8ab739939fe59f4 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Sat, 16 Sep 2023 13:56:54 +0900 Subject: [PATCH 03/19] =?UTF-8?q?feat:=20=E7=94=9F=E7=89=A9=E7=94=B1?= =?UTF-8?q?=E6=9D=A5=E3=81=AB=E3=83=86=E3=82=B9=E3=83=88=E3=83=87=E3=83=BC?= =?UTF-8?q?=E3=82=BF=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vjsk_load/testdata/bio_slip_data_202304280000.tsv | 2 ++ .../vjsk_load/testdata/bio_slip_data_202304290000.tsv | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/bio_slip_data_202304280000.tsv b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/bio_slip_data_202304280000.tsv index 0c345954..b675c364 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/bio_slip_data_202304280000.tsv +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/bio_slip_data_202304280000.tsv @@ -3,3 +3,5 @@ "D452960211G11111377452402930640002304016433215111 496300127ゴナ-ルエフヒカチユウペン450 1トウ セコム)オギクボビヨウイン トウキヨウト シブヤク ジングウマエ 1-5-1 GF4C001 000002 000000 000000 " "296" "02" "11G111113774524" "0293064000" "496300127" "111" "230401" "20230401" "6433215" "ゴナ-ルエフヒカチユウペン450 1トウ " "セコム)オギクボビヨウイン " "トウキヨウト シブヤク ジングウマエ 1-5-1 " "GF4C001 " "000002" " " "000000" " " "000000" "20230403" "J" "VJSK-BIO_J_MERCK_2023040300.txt" "J2023040300000127" "130" "20230401" "202305082041" "110" "売上" "11G1" "300001351" "杉並・中野支店" "" "200000007" "アルフレッサ株式会社" "0293064000" "670234652241314835" "医療法人財団荻窪病院 荻窪病院" "イリョウホウジンザイダンオギクボビョウイン オギクボビョウイン" "167-0035 東京都杉並区今川3−1−24" "496300127" "ゴナールエフ 皮下注ペン 450IU 1PEN" "" "1" "" "2" "0" "0" "J" "" "" "" "" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "202304" "" "" "0" "23-04-03 20:42:11" "system" "D452960211V11121120604204799500002304016461276111 496300134ゴナ-ルエフヒカチユウペン900 1トウ ニチイサ-ビスキユウシユウフクオカサンフクオカシ サワラク モモチハマ 1-7-5 7F GF9C002 000010 000000 000000 " "296" "02" "11V111211206042" "0479950000" "496300134" "111" "230401" "20230401" "6461276" "ゴナ-ルエフヒカチユウペン900 1トウ " "ニチイサ-ビスキユウシユウフクオカサン" "フクオカシ サワラク モモチハマ 1-7-5 7F " "GF9C002 " "000010" " " "000000" " " "000000" "20230403" "J" "VJSK-BIO_J_MERCK_2023040300.txt" "J2023040300000128" "131" "20230401" "202305082041" "110" "売上" "11V1" "300001491" "福岡第一支店" "" "200000007" "アルフレッサ株式会社" "0479950000" "670235883412145206" "医療法人社団高邦会 福岡山王病院" "イリョウホウジンシャダンコウホウカイ フクオカサンノウビョウイン" "814-0001 福岡県福岡市早良区百道浜3−6−45" "496300134" "ゴナールエフ 皮下注ペン 900IU 1PEN" "" "1" "" "10" "0" "0" "J" "" "" "" "" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "202304" "" "" "0" "23-04-03 20:42:11" "system" "D452960211JB1121309300202875030002304016523689111 496300127ゴナ-ルエフヒカチユウペン450 1トウ イツカンドウヤツキヨク0561 カワサキシ アサオク フルサワ 172-1 GF4C001 000001 000000 000000 " "296" "02" "11JB11213093002" "0287503000" "496300127" "111" "230401" "20230401" "6523689" "ゴナ-ルエフヒカチユウペン450 1トウ " "イツカンドウヤツキヨク0561 " "カワサキシ アサオク フルサワ 172-1 " "GF4C001 " "000001" " " "000000" " " "000000" "20230403" "J" "VJSK-BIO_J_MERCK_2023040300.txt" "J2023040300000129" "132" "20230401" "202305082041" "110" "売上" "11JB" "300001369" "川崎北支店" "" "200000007" "アルフレッサ株式会社" "0287503000" "670237078008644636" "株式会社キリン堂 一貫堂薬局" "カブシキガイシャキリンドウ イッカンドウヤッキョク" "215-0026 神奈川県川崎市麻生区古沢172−1" "496300127" "ゴナールエフ 皮下注ペン 450IU 1PEN" "" "1" "" "1" "0" "0" "J" "" "" "" "" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "202304" "" "" "0" "23-04-03 20:42:11" "system" +"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "J2023040300000130" "132" "" "" "110" "" "" "300001369" "" "" "200000007" "" "" "" "" "" "" "" "" "" "" "" "1" "0" "0" "J" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "23-04-03 20:42:11" "" +"D452960211JB1121309300202875030002304016523689111 496300127ゴナ-ルエフヒカチユウペン450 1トウ イツカンドウヤツキヨク0561 カワサキシ アサオク フルサワ 172-1 GF4C001 000001 000000 000000 " "296" "02" "11JB11213093002" "0287503000" "496300127" "111" "230401" "20230401" "6523689" "ゴナ-ルエフヒカチユウペン450 1トウ " "イツカンドウヤツキヨク0561 " "カワサキシ アサオク フルサワ 172-1 " "GF4C001 " "000001" " " "000000" " " "000000" "20230403" "J" "VJSK-BIO_J_MERCK_2023040300.txt" "J2023040300000131" "132" "20230401" "202305082041" "110" "売上" "11JB" "300001369" "川崎北支店" "" "200000007" "アルフレッサ株式会社" "0287503000" "670237078008644636" "株式会社キリン堂 一貫堂薬局" "カブシキガイシャキリンドウ イッカンドウヤッキョク" "215-0026 神奈川県川崎市麻生区古沢172−1" "496300127" "ゴナールエフ 皮下注ペン 450IU 1PEN" "" "1" "" "1" "0" "0" "J" "" "" "" "" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "202304" "" "" "0" "23-04-03 20:42:11" "system" \ No newline at end of file diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/bio_slip_data_202304290000.tsv b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/bio_slip_data_202304290000.tsv index e7f85ba8..48cb064b 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/bio_slip_data_202304290000.tsv +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/bio_slip_data_202304290000.tsv @@ -1,5 +1,5 @@ "rec_data" "rec_whs_cd" "rec_whs_sub_cd" "rec_whs_org_cd" "rec_cust_cd" "rec_comm_cd" "rec_tran_kbn" "rec_hsdnYmd_wrk" "rec_hsdnYmd_srk" "rec_urag_no" "rec_comm_nm" "rec_nnskFcl_nm" "rec_nnsk_fcl_addr" "rec_lot_num1" "rec_amt1" "rec_lot_num2" "rec_amt2" "rec_lot_num3" "rec_amt3" "rec_ymd" "sale_data_cat" "slip_file_nm" "slip_mgt_no" "row_num" "hsdn_ymd" "exec_dt" "v_tran_cd" "tran_kbn_nm" "whs_org_cd" "v_whsOrg_cd" "whs_org_nm" "whs_org_kn" "v_whs_cd" "whs_nm" "nnsk_cd" "fcl_cd" "fcl_nm" "fcl_kn" "fcl_addr_v" "comm_cd" "comm_nm" "htdnYmd_err_kbn" "prd_exis_kbn" "fcl_exis_kbn" "amt1" "amt2" "amt3" "slip_org_kbn" "bef_slip_mgt_no" "whs_rep_comm_nm" "whs_rep_nnskFcl_nm" "whs_rep_nnsk_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" -"D452960211V11121120604204799500002304016461276111 496300134ゴナ-ルエフヒカチユウペン900 1トウ ニチイサ-ビスキユウシユウフクオカサンフクオカシ サワラク モモチハマ 1-7-5 7F GF9C002 000010 000000 000000 " "296" "02" "11V111211206042" "0479950000" "496300134" "111" "230401" "20230401" "6461276" "ゴナ-ルエフヒカチユウペン900 1トウ " "ニチイサ-ビスキユウシユウフクオカサン" "フクオカシ サワラク モモチハマ 1-7-5 7F " "GF9C002 " "000010" " " "000000" " " "000000" "20230403" "J" "VJSK-BIO_J_MERCK_2023040300.txt" "J2023040300000128" "131" "20230401" "202305082041" "110" "売上" "11V1" "300001491" "福岡第一支店" "" "200000007" "アルフレッサ株式会社" "0479950000" "670235883412145206" "医療法人社団高邦会 福岡山王病院" "イリョウホウジンシャダンコウホウカイ フクオカサンノウビョウイン" "814-0001 福岡県福岡市早良区百道浜3−6−45" "496300134" "ゴナールエフ 皮下注ペン 900IU 1PEN" "" "1" "" "10" "0" "0" "J" "" "" "" "" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "202304" "" "" "0" "23-04-03 20:42:11" "system" -"D452960211JB1121309300202875030002304016523689111 496300127ゴナ-ルエフヒカチユウペン450 1トウ イツカンドウヤツキヨク0561 カワサキシ アサオク フルサワ 172-1 GF4C001 000001 000000 000000 " "296" "02" "11JB11213093002" "0287503000" "496300127" "111" "230401" "20230401" "6523689" "ゴナ-ルエフヒカチユウペン450 1トウ " "イツカンドウヤツキヨク0561 " "カワサキシ アサオク フルサワ 172-1 " "GF4C001 " "000001" " " "000000" " " "000000" "20230403" "J" "VJSK-BIO_J_MERCK_2023040300.txt" "J2023040300000129" "132" "20230401" "202305082041" "110" "売上" "11JB" "300001369" "川崎北支店" "" "200000007" "アルフレッサ株式会社" "0287503000" "670237078008644636" "株式会社キリン堂 一貫堂薬局" "カブシキガイシャキリンドウ イッカンドウヤッキョク" "215-0026 神奈川県川崎市麻生区古沢172−1" "496300127" "ゴナールエフ 皮下注ペン 450IU 1PEN" "" "1" "" "1" "0" "0" "J" "" "" "" "" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "202304" "" "" "0" "23-04-03 20:42:11" "system" -"D4529602K1201130032696508657140002304016527757111 496300110ゴナ-ルエフヒカチユウペン300 1トウ モリノクスリヤヤツキヨク オキナワケン シマジリグン ヤエセチヨウ ヤギバル 238-1 GF3B013 000005 000000 000000 " "296" "02" "K12011300326965" "0865714000" "496300110" "111" "230401" "20230401" "6527757" "ゴナ-ルエフヒカチユウペン300 1トウ " "モリノクスリヤヤツキヨク " "オキナワケン シマジリグン ヤエセチヨウ ヤギバル 238-1 " "GF3B013 " "000005" " " "000000" " " "000000" "20230403" "J" "VJSK-BIO_J_MERCK_2023040300.txt" "J2023040300000130" "133" "20230401" "202305082041" "110" "売上" "K120" "300006583" "沖縄第二営業部" "" "200000007" "アルフレッサ株式会社" "0865714000" "670232348519842842" "有限会社吾妻サンライズ 森の薬屋薬局" "ユウゲンガイシャアガツマサンライズ モリノクスリヤヤッキョク" "901-0406 沖縄県島尻郡八重瀬町屋宜原238−1" "496300110" "ゴナールエフ 皮下注ペン 300IU 1PEN" "" "1" "" "5" "0" "0" "J" "" "" "" "" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "202304" "" "" "0" "23-04-03 20:42:11" "system" -"D4529602K1201130032696508657140002304016527757111 496300127ゴナ-ルエフヒカチユウペン450 1トウ モリノクスリヤヤツキヨク オキナワケン シマジリグン ヤエセチヨウ ヤギバル 238-1 GF4B011 000010 000000 000000 " "296" "02" "K12011300326965" "0865714000" "496300127" "111" "230401" "20230401" "6527757" "ゴナ-ルエフヒカチユウペン450 1トウ " "モリノクスリヤヤツキヨク " "オキナワケン シマジリグン ヤエセチヨウ ヤギバル 238-1 " "GF4B011 " "000010" " " "000000" " " "000000" "20230403" "J" "VJSK-BIO_J_MERCK_2023040300.txt" "J2023040300000131" "134" "20230401" "202305082041" "110" "売上" "K120" "300006583" "沖縄第二営業部" "" "200000007" "アルフレッサ株式会社" "0865714000" "670232348519842842" "有限会社吾妻サンライズ 森の薬屋薬局" "ユウゲンガイシャアガツマサンライズ モリノクスリヤヤッキョク" "901-0406 沖縄県島尻郡八重瀬町屋宜原238−1" "496300127" "ゴナールエフ 皮下注ペン 450IU 1PEN" "" "1" "" "10" "0" "0" "J" "" "" "" "" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "202304" "" "" "0" "23-04-03 20:42:11" "system" +"D4529602K1201130032696508657140002304016527757111 496300110ゴナ-ルエフヒカチユウペン300 1トウ モリノクスリヤヤツキヨク オキナワケン シマジリグン ヤエセチヨウ ヤギバル 238-1 GF3B013 000005 000000 000000 " "296" "02" "K12011300326965" "0865714000" "496300110" "111" "230401" "20230401" "6527757" "ゴナ-ルエフヒカチユウペン300 1トウ " "モリノクスリヤヤツキヨク " "オキナワケン シマジリグン ヤエセチヨウ ヤギバル 238-1 " "GF3B013 " "000005" " " "000000" " " "000000" "20230403" "J" "VJSK-BIO_J_MERCK_2023040300.txt" "J2023040300000130" "133" "20230401" "202305082041" "110" "売上" "K120" "300006583" "沖縄第二営業部" "200000007" "アルフレッサ株式会社" "0865714000" "670232348519842842" "有限会社吾妻サンライズ 森の薬屋薬局" "ユウゲンガイシャアガツマサンライズ モリノクスリヤヤッキョク" "901-0406 沖縄県島尻郡八重瀬町屋宜原238−1" "496300110" "ゴナールエフ 皮下注ペン 300IU 1PEN" "1" "5" "0" "0" "J" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "202304" "0" "23-04-03 20:42:11" "system" +"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "J2023040300000131" "132" "" "" "110" "" "" "300001369" "" "" "200000007" "" "" "" "" "" "" "" "" "" "" "" "1" "0" "0" "J" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "23-04-03 20:42:11" "" +"D4529602K1201130032696508657140002304016527757111 496300110ゴナ-ルエフヒカチユウペン300 1トウ モリノクスリヤヤツキヨク オキナワケン シマジリグン ヤエセチヨウ ヤギバル 238-1 GF3B013 000005 000000 000000 " "296" "02" "K12011300326965" "0865714000" "496300110" "111" "230401" "20230401" "6527757" "ゴナ-ルエフヒカチユウペン300 1トウ " "モリノクスリヤヤツキヨク " "オキナワケン シマジリグン ヤエセチヨウ ヤギバル 238-1 " "GF3B013 " "000005" " " "000000" " " "000000" "20230403" "J" "VJSK-BIO_J_MERCK_2023040300.txt" "J2023040300000132" "133" "20230401" "202305082041" "110" "売上" "K120" "300006583" "沖縄第二営業部" "200000007" "アルフレッサ株式会社" "0865714000" "670232348519842842" "有限会社吾妻サンライズ 森の薬屋薬局" "ユウゲンガイシャアガツマサンライズ モリノクスリヤヤッキョク" "901-0406 沖縄県島尻郡八重瀬町屋宜原238−1" "496300110" "ゴナールエフ 皮下注ペン 300IU 1PEN" "1" "5" "0" "0" "J" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "202304" "0" "23-04-03 20:42:11" "system" +"D4529602K1201130032696508657140002304016527757111 496300127ゴナ-ルエフヒカチユウペン450 1トウ モリノクスリヤヤツキヨク オキナワケン シマジリグン ヤエセチヨウ ヤギバル 238-1 GF4B011 000010 000000 000000 " "296" "02" "K12011300326965" "0865714000" "496300127" "111" "230401" "20230401" "6527757" "ゴナ-ルエフヒカチユウペン450 1トウ " "モリノクスリヤヤツキヨク " "オキナワケン シマジリグン ヤエセチヨウ ヤギバル 238-1 " "GF4B011 " "000010" " " "000000" " " "000000" "20230403" "J" "VJSK-BIO_J_MERCK_2023040300.txt" "J2023040300000133" "134" "20230401" "202305082041" "110" "売上" "K120" "300006583" "沖縄第二営業部" "200000007" "アルフレッサ株式会社" "0865714000" "670232348519842842" "有限会社吾妻サンライズ 森の薬屋薬局" "ユウゲンガイシャアガツマサンライズ モリノクスリヤヤッキョク" "901-0406 沖縄県島尻郡八重瀬町屋宜原238−1" "496300127" "ゴナールエフ 皮下注ペン 450IU 1PEN" "1" "10" "0" "0" "J" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "202304" "0" "23-04-03 20:42:11" "system" \ No newline at end of file From 3614b3f6e9a2b27c966ba7bd6ed6c34cacf4c8b3 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Sat, 16 Sep 2023 13:57:33 +0900 Subject: [PATCH 04/19] =?UTF-8?q?feat:=20=E6=8E=A8=E5=A5=A8=E8=A8=AD?= =?UTF-8?q?=E5=AE=9A=E3=81=AEpytestArgs=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecs/jskult-batch-daily/.vscode/recommended_settings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ecs/jskult-batch-daily/.vscode/recommended_settings.json b/ecs/jskult-batch-daily/.vscode/recommended_settings.json index b5e79d73..2fde8732 100644 --- a/ecs/jskult-batch-daily/.vscode/recommended_settings.json +++ b/ecs/jskult-batch-daily/.vscode/recommended_settings.json @@ -23,7 +23,7 @@ "--ignore=F541" ], "python.testing.pytestArgs": [ - "tests/batch/ultmarc" + "tests/batch/" ], "python.testing.unittestEnabled": false, From bc90b0eb7cbfa443e40130bc78283ad377e97ede Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Sat, 16 Sep 2023 14:21:17 +0900 Subject: [PATCH 05/19] =?UTF-8?q?feat:=20=E5=8D=B8=E8=B2=A9=E5=A3=B2?= =?UTF-8?q?=E3=83=87=E3=83=BC=E3=82=BF=E3=81=AE=E7=A9=BA=E6=96=87=E5=AD=97?= =?UTF-8?q?=E2=86=92NULL=E5=A4=89=E6=8F=9B=E3=82=92=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/batch/vjsk/vjsk_recv_file_mapper.py | 306 +++++++++--------- .../batch/vjsk/vjsk_load/test_vjsk_load.py | 12 +- .../testdata/slip_data_202304280000.tsv | 2 + .../testdata/slip_data_202304290000.tsv | 4 +- 4 files changed, 163 insertions(+), 161 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py index dbd94d28..74d719cc 100644 --- a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py @@ -125,49 +125,49 @@ class VjskReceiveFileMapper: ,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 + src05.convert_empty_to_null(t.rec_data) + ,src05.convert_empty_to_null(t.rec_whs_cd) + ,src05.convert_empty_to_null(t.rec_whs_sub_cd) + ,src05.convert_empty_to_null(t.rec_whs_org_cd) + ,src05.convert_empty_to_null(t.rec_cust_cd) + ,src05.convert_empty_to_null(t.rec_comm_cd) + ,src05.convert_empty_to_null(t.rec_tran_kbn) + ,src05.convert_empty_to_null(t.rev_hsdnymd_wrk) + ,src05.convert_empty_to_null(t.rev_hsdnymd_srk) + ,src05.convert_empty_to_null(t.rec_urag_num) + ,src05.convert_empty_to_null(t.rec_qty) + ,src05.convert_empty_to_null(t.rec_nonyu_price) + ,src05.convert_empty_to_null(t.rec_nonyu_amt) + ,src05.convert_empty_to_null(t.rec_comm_name) + ,src05.convert_empty_to_null(t.rec_nonyu_fcl_name) + ,src05.convert_empty_to_null(t.free_item) + ,src05.convert_empty_to_null(t.rec_nonyu_fcl_addr) + ,src05.convert_empty_to_null(t.rec_nonyu_fcl_post) + ,src05.convert_empty_to_null(t.rec_nonyu_fcl_tel) + ,src05.convert_empty_to_null(t.rec_bef_hsdn_ymd) + ,src05.convert_empty_to_null(t.rec_bef_slip_num) + ,src05.convert_empty_to_null(t.rec_ymd) + ,src05.convert_empty_to_null(t.sale_data_cat) + ,src05.convert_empty_to_null(t.slip_file_name) + ,src05.convert_empty_to_null(t.slip_mgt_num) ,t.row_num - ,t.hsdn_ymd - ,t.exec_dt + ,src05.convert_empty_to_null(t.hsdn_ymd) + ,src05.convert_empty_to_null(t.exec_dt) ,t.v_tran_cd - ,t.tran_kbn_name - ,t.whs_org_cd + ,src05.convert_empty_to_null(t.tran_kbn_name) + ,src05.convert_empty_to_null(t.whs_org_cd) ,t.v_whsorg_cd - ,t.whs_org_name - ,t.whs_org_kn + ,src05.convert_empty_to_null(t.whs_org_name) + ,src05.convert_empty_to_null(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 + ,src05.convert_empty_to_null(t.whs_name) + ,src05.convert_empty_to_null(t.nonyu_fcl_cd) + ,src05.convert_empty_to_null(t.v_inst_cd) + ,src05.convert_empty_to_null(t.v_inst_kn) + ,src05.convert_empty_to_null(t.v_inst_name) + ,src05.convert_empty_to_null(t.v_inst_addr) + ,src05.convert_empty_to_null(t.comm_cd) + ,src05.convert_empty_to_null(t.comm_name) ,t.nonyu_qty ,t.nonyu_price ,t.nonyu_amt @@ -175,125 +175,125 @@ class VjskReceiveFileMapper: ,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 + ,src05.convert_empty_to_null(t.whspos_err_kbn) + ,src05.convert_empty_to_null(t.htdnymd_err_kbn) + ,src05.convert_empty_to_null(t.prd_exis_kbn) + ,src05.convert_empty_to_null(t.fcl_exis_kbn) + ,src05.convert_empty_to_null(t.bef_hsdn_ymd) + ,src05.convert_empty_to_null(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 + ,src05.convert_empty_to_null(t.err_flg1) + ,src05.convert_empty_to_null(t.err_flg2) + ,src05.convert_empty_to_null(t.err_flg3) + ,src05.convert_empty_to_null(t.err_flg4) + ,src05.convert_empty_to_null(t.err_flg5) + ,src05.convert_empty_to_null(t.err_flg6) + ,src05.convert_empty_to_null(t.err_flg7) + ,src05.convert_empty_to_null(t.err_flg8) + ,src05.convert_empty_to_null(t.err_flg9) + ,src05.convert_empty_to_null(t.err_flg10) + ,src05.convert_empty_to_null(t.err_flg11) + ,src05.convert_empty_to_null(t.err_flg12) + ,src05.convert_empty_to_null(t.err_flg13) + ,src05.convert_empty_to_null(t.err_flg14) + ,src05.convert_empty_to_null(t.err_flg15) + ,src05.convert_empty_to_null(t.err_flg16) + ,src05.convert_empty_to_null(t.err_flg17) + ,src05.convert_empty_to_null(t.err_flg18) + ,src05.convert_empty_to_null(t.err_flg19) + ,src05.convert_empty_to_null(t.err_flg20) + ,src05.convert_empty_to_null(t.kjyo_ym) + ,src05.convert_empty_to_null(t.tksnbk_kbn) + ,src05.convert_empty_to_null(t.fcl_exec_kbn) + ,src05.convert_empty_to_null(t.rec_sts_kbn) ,nullif(t.ins_dt, 0) -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する - ,t.ins_usr + ,src05.convert_empty_to_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 + rec_data=VALUES(rec_data) + ,rec_whs_cd=VALUES(rec_whs_cd) + ,rec_whs_sub_cd=VALUES(rec_whs_sub_cd) + ,rec_whs_org_cd=VALUES(rec_whs_org_cd) + ,rec_cust_cd=VALUES(rec_cust_cd) + ,rec_comm_cd=VALUES(rec_comm_cd) + ,rec_tran_kbn=VALUES(rec_tran_kbn) + ,rev_hsdnymd_wrk=VALUES(rev_hsdnymd_wrk) + ,rev_hsdnymd_srk=VALUES(rev_hsdnymd_srk) + ,rec_urag_num=VALUES(rec_urag_num) + ,rec_qty=VALUES(rec_qty) + ,rec_nonyu_price=VALUES(rec_nonyu_price) + ,rec_nonyu_amt=VALUES(rec_nonyu_amt) + ,rec_comm_name=VALUES(rec_comm_name) + ,rec_nonyu_fcl_name=VALUES(rec_nonyu_fcl_name) + ,free_item=VALUES(free_item) + ,rec_nonyu_fcl_addr=VALUES(rec_nonyu_fcl_addr) + ,rec_nonyu_fcl_post=VALUES(rec_nonyu_fcl_post) + ,rec_nonyu_fcl_tel=VALUES(rec_nonyu_fcl_tel) + ,rec_bef_hsdn_ymd=VALUES(rec_bef_hsdn_ymd) + ,rec_bef_slip_num=VALUES(rec_bef_slip_num) + ,rec_ymd=VALUES(rec_ymd) + ,sale_data_cat=VALUES(sale_data_cat) + ,slip_file_name=VALUES(slip_file_name) + ,slip_mgt_num=VALUES(slip_mgt_num) + ,row_num=VALUES(row_num) + ,hsdn_ymd=VALUES(hsdn_ymd) + ,exec_dt=VALUES(exec_dt) + ,v_tran_cd=VALUES(v_tran_cd) + ,tran_kbn_name=VALUES(tran_kbn_name) + ,whs_org_cd=VALUES(whs_org_cd) + ,v_whsorg_cd=VALUES(v_whsorg_cd) + ,whs_org_name=VALUES(whs_org_name) + ,whs_org_kn=VALUES(whs_org_kn) + ,v_whs_cd=VALUES(v_whs_cd) + ,whs_name=VALUES(whs_name) + ,nonyu_fcl_cd=VALUES(nonyu_fcl_cd) + ,v_inst_cd=VALUES(v_inst_cd) + ,v_inst_kn=VALUES(v_inst_kn) + ,v_inst_name=VALUES(v_inst_name) + ,v_inst_addr=VALUES(v_inst_addr) + ,comm_cd=VALUES(comm_cd) + ,comm_name=VALUES(comm_name) + ,nonyu_qty=VALUES(nonyu_qty) + ,nonyu_price=VALUES(nonyu_price) + ,nonyu_amt=VALUES(nonyu_amt) + ,shikiri_price=VALUES(shikiri_price) + ,shikiri_amt=VALUES(shikiri_amt) + ,nhi_price=VALUES(nhi_price) + ,nhi_amt=VALUES(nhi_amt) + ,whspos_err_kbn=VALUES(whspos_err_kbn) + ,htdnymd_err_kbn=VALUES(htdnymd_err_kbn) + ,prd_exis_kbn=VALUES(prd_exis_kbn) + ,fcl_exis_kbn=VALUES(fcl_exis_kbn) + ,bef_hsdn_ymd=VALUES(bef_hsdn_ymd) + ,bef_slip_num=VALUES(bef_slip_num) + ,slip_org_kbn=VALUES(slip_org_kbn) + ,err_flg1=VALUES(err_flg1) + ,err_flg2=VALUES(err_flg2) + ,err_flg3=VALUES(err_flg3) + ,err_flg4=VALUES(err_flg4) + ,err_flg5=VALUES(err_flg5) + ,err_flg6=VALUES(err_flg6) + ,err_flg7=VALUES(err_flg7) + ,err_flg8=VALUES(err_flg8) + ,err_flg9=VALUES(err_flg9) + ,err_flg10=VALUES(err_flg10) + ,err_flg11=VALUES(err_flg11) + ,err_flg12=VALUES(err_flg12) + ,err_flg13=VALUES(err_flg13) + ,err_flg14=VALUES(err_flg14) + ,err_flg15=VALUES(err_flg15) + ,err_flg16=VALUES(err_flg16) + ,err_flg17=VALUES(err_flg17) + ,err_flg18=VALUES(err_flg18) + ,err_flg19=VALUES(err_flg19) + ,err_flg20=VALUES(err_flg20) + ,kjyo_ym=VALUES(kjyo_ym) + ,tksnbk_kbn=VALUES(tksnbk_kbn) + ,fcl_exec_kbn=VALUES(fcl_exec_kbn) + ,rec_sts_kbn=VALUES(rec_sts_kbn) + ,ins_dt=VALUES(ins_dt) + ,ins_usr=VALUES(ins_usr) ,dwh_upd_dT=SYSDATE() ; """) diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py index a2088ae5..3152bf5e 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py @@ -231,7 +231,7 @@ class TestImportFileToDb: self.batch_context.is_vjsk_stock_import_day = True self.db.execute(f"truncate table {table_name_src}") - # assertion1 (insert 4row) + # assertion1 (insert 6row) # 処理実行 target_dict = { @@ -247,7 +247,7 @@ class TestImportFileToDb: # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # orgテーブル結果が期待値通りかを突合 - assert_table_results(result_org, assert_list, ignore_columns) + assert_table_results(result_org, assert_list, ignore_columns, is_loaddata=True) # srcテーブル結果を取得 result_src = self.db.execute_select(f"select * from {table_name_src}") # 突合から除外する項目 @@ -271,18 +271,18 @@ class TestImportFileToDb: # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # orgテーブル結果が期待値通りかを突合 - assert_table_results(result_org, assert_list, ignore_columns) + assert_table_results(result_org, assert_list, ignore_columns, is_loaddata=True) # srcテーブル結果(orgテーブル結果のPK値で一致するもの)を取得 result_src = self.db.execute_select( - f"select * from {table_name_src} s inner join {table_name_org} o on (s.slip_mgt_num = o.slip_mgt_num)") + f"select s.* from {table_name_src} s inner join {table_name_org} o on (s.slip_mgt_num = o.slip_mgt_num)") # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # srcテーブル結果が期待値通りかを突合 assert_table_results(result_src, assert_list, ignore_columns) - # srcテーブル結果のレコード件数 (insert 4row + update 2row + insert 2row = 6row) + # srcテーブル結果のレコード件数 (insert 6row + update 2row + insert 2row =8row) result_src_count = self.db.execute_select(f"select count(*) from {table_name_src} ") - assert result_src_count[0]['count(*)'] == 6 + assert result_src_count[0]['count(*)'] == 8 # teardown diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/slip_data_202304280000.tsv b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/slip_data_202304280000.tsv index d9b11f17..41bcc129 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/slip_data_202304280000.tsv +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/slip_data_202304280000.tsv @@ -3,3 +3,5 @@ "D4420202011611A4 0183733 23030133625921102303 4963500230000080003110000002488000000000000000000000000 ア-ビタツクスチユウシヤエキ100MG 100MG 20MLX1Vハコダテチユウオウビヨウイン 00000408585ハコダテシホンチヨウ33バン2ゴウ " "202" "02" "011611A4 " "0183733 " "496350023" "110" "230301" "20230301" "3362592" "000008" "00031100" "0000248800" "ア-ビタツクスチユウシヤエキ100MG 100MG 20MLX1V" "ハコダテチユウオウビヨウイン " "0408585ハコダテシホンチヨウ33バン2ゴウ " "ハコダテシホンチヨウ33バン2ゴウ " "0408585" "" "000000" " " "20230222" "J" "VJSK_J_MERCK_2023022" "J2023022200000023" "30" "20230301" "202303142041" "110" "売上" "01161" "300000383" "函館支店" "" "200000016" "株式会社スズケン" "0183733 " "670234934576694289" "シャカイフクシホウジンハコダテコウセイイン ハコダテチュウオウビョウイン" "社会福祉法人函館厚生院 函館中央病院" "040-0011 北海道函館市本町33−2" "496350023" "アービタックス 注射剤 100mg 1VIAL" "8" "31100" "248800" "31438" "251504" "35309" "282472" "" "" "1" "" "" "" "J" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "202303" "" "" "0" "23-03-14 20:41:26" "SYSTEM" "D4416101311101A8 5140013 23030173719811122303 4963500230000120002738100003285720000000000000000000000 ア-ビタツクスチユウシヤエキ100MG 100MG 20MLX1Vトツトリニツセキビヨウイン 00006808517トツトリケントツトリシシヨウトクチヨウ117 " "161" "01" "311101A8 " "5140013 " "496350023" "112" "230301" "20230301" "7371981" "000012" "00027381" "0000328572" "ア-ビタツクスチユウシヤエキ100MG 100MG 20MLX1V" "トツトリニツセキビヨウイン " "6808517トツトリケントツトリシシヨウトクチヨウ117 " "トツトリケントツトリシシヨウトクチヨウ117 " "6808517" "" "000000" " " "20230224" "J" "VJSK_J_MERCK_2023022" "J2023022400000011" "16" "20230301" "202303142041" "110" "売上" "31110" "300000391" "鳥取支店" "" "200000015" "株式会社サンキ" "5140013 " "670237031040828444" "ニホンセキジュウジシャ トットリセキジュウジビョウイン" "日本赤十字社 鳥取赤十字病院" "680-0017 鳥取県鳥取市尚徳町117" "496350023" "アービタックス 注射剤 100mg 1VIAL" "12" "27381" "328572" "31438" "377256" "35309" "423708" "" "" "1" "" "" "" "J" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "202303" "" "" "0" "23-03-14 20:41:26" "SYSTEM" "D4416101311101A8 5140013 23030173720211122303 4963500230000080002738100002190480000000000000000000000 ア-ビタツクスチユウシヤエキ100MG 100MG 20MLX1Vトツトリニツセキビヨウイン 00006808517トツトリケントツトリシシヨウトクチヨウ117 " "161" "01" "311101A8 " "5140013 " "496350023" "112" "230301" "20230301" "7372021" "000008" "00027381" "0000219048" "ア-ビタツクスチユウシヤエキ100MG 100MG 20MLX1V" "トツトリニツセキビヨウイン " "6808517トツトリケントツトリシシヨウトクチヨウ117 " "トツトリケントツトリシシヨウトクチヨウ117 " "6808517" "" "000000" " " "20230224" "J" "VJSK_J_MERCK_2023022" "J2023022400000012" "17" "20230301" "202303142041" "110" "売上" "31110" "300000391" "鳥取支店" "" "200000015" "株式会社サンキ" "5140013 " "670237031040828444" "ニホンセキジュウジシャ トットリセキジュウジビョウイン" "日本赤十字社 鳥取赤十字病院" "680-0017 鳥取県鳥取市尚徳町117" "496350023" "アービタックス 注射剤 100mg 1VIAL" "8" "27381" "219048" "31438" "251504" "35309" "282472" "" "" "1" "" "" "" "J" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "202303" "" "" "0" "23-03-14 20:41:26" "SYSTEM" +"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "J2023022400000013" "18" "110" "" "110" "" "" "300000391" "200000007" "" "200000015" "" "" "" "" "" "" "" "" "8" "27381" "219048" "31438" "251504" "35309" "282472" "" "" "" "" "" "" "J" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "23-04-03 20:42:11" "" +"D4416101311101A8 5140013 23030173720211122303 4963500230000080002738100002190480000000000000000000000 ア-ビタツクスチユウシヤエキ100MG 100MG 20MLX1Vトツトリニツセキビヨウイン 00006808517トツトリケントツトリシシヨウトクチヨウ117 " "161" "01" "311101A8 " "5140013 " "496350023" "112" "230301" "20230301" "7372021" "000008" "00027381" "0000219048" "ア-ビタツクスチユウシヤエキ100MG 100MG 20MLX1V" "トツトリニツセキビヨウイン " "6808517トツトリケントツトリシシヨウトクチヨウ117 " "トツトリケントツトリシシヨウトクチヨウ117 " "6808517" "" "000000" " " "20230224" "J" "VJSK_J_MERCK_2023022" "J2023022400000014" "19" "20230301" "202303142041" "110" "売上" "31110" "300000391" "鳥取支店" "" "200000015" "株式会社サンキ" "5140013 " "670237031040828444" "ニホンセキジュウジシャ トットリセキジュウジビョウイン" "日本赤十字社 鳥取赤十字病院" "680-0017 鳥取県鳥取市尚徳町117" "496350023" "アービタックス 注射剤 100mg 1VIAL" "8" "27381" "219048" "31438" "251504" "35309" "282472" "" "" "1" "" "" "" "J" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "202303" "" "" "0" "23-03-14 20:41:26" "SYSTEM" \ No newline at end of file diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/slip_data_202304290000.tsv b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/slip_data_202304290000.tsv index 5299839a..beba523c 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/slip_data_202304290000.tsv +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/slip_data_202304290000.tsv @@ -1,5 +1,5 @@ "recvdata" "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_no" "rec_amt" "rec_unit_price" "rec_price" "rec_comm_nm" "rec_nnskFcl_nm" "free_item" "rec_nnsk_fcl_addr" "rec_nnsk_fcl_post" "rec_nnsk_fcl_tel" "rec_bef_hsdn_ymd" "rec_bef_slip_no" "rec_ymd" "sale_data_cat" "slip_file_nm" "slip_mgt_no" "row_num" "hsdn_ymd" "exec_dt" "v_tran_cd" "tran_kbn_nm" "whs_org_cd" "v_whsOrg_cd" "whs_org_nm" "whs_org_kn" "v_whs_cd" "whs_nm" "nnsk_cd" "fcl_cd" "fcl_kn" "fcl_nm" "fcl_addr_v" "comm_cd" "comm_nm" "nn_amt" "nn_unitPrice" "nn_price" "unit_price" "unit_amt" "drag_price" "drag_amt" "whsPos_err_kbn" "htdnYmd_err_kbn" "prd_exis_kbn" "fcl_exis_kbn" "bef_hsdn_ymd" "bef_slip_no" "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" -"DAY2-101311101A8 5140013 23030173719811122303 4963500230000120002738100003285720000000000000000000000 ア-ビタツクスチユウシヤエキ100MG 100MG 20MLX1Vトツトリニツセキビヨウイン 00006808517トツトリケントツトリシシヨウトクチヨウ117 " "161" "01" "311101A8 " "5140013 " "496350023" "112" "230301" "20230301" "7371981" "000012" "00027381" "0000328572" "ア-ビタツクスチユウシヤエキ100MG 100MG 20MLX1V" "トツトリニツセキビヨウイン " "6808517トツトリケントツトリシシヨウトクチヨウ117 " "トツトリケントツトリシシヨウトクチヨウ117 " "6808517" "" "000000" " " "20230224" "J" "VJSK_J_MERCK_2023022" "J2023022400000011" "16" "20230301" "202303142041" "110" "売上" "31110" "300000391" "鳥取支店" "" "200000015" "株式会社サンキ" "5140013 " "670237031040828444" "ニホンセキジュウジシャ トットリセキジュウジビョウイン" "日本赤十字社 鳥取赤十字病院" "680-0017 鳥取県鳥取市尚徳町117" "496350023" "アービタックス 注射剤 100mg 1VIAL" "12" "27381" "328572" "31438" "377256" "35309" "423708" "" "" "1" "" "" "" "J" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "202303" "" "" "0" "23-03-14 20:41:26" "SYSTEM" -"DAY2-101311101A8 5140013 23030173720211122303 4963500230000080002738100002190480000000000000000000000 ア-ビタツクスチユウシヤエキ100MG 100MG 20MLX1Vトツトリニツセキビヨウイン 00006808517トツトリケントツトリシシヨウトクチヨウ117 " "161" "01" "311101A8 " "5140013 " "496350023" "112" "230301" "20230301" "7372021" "000008" "00027381" "0000219048" "ア-ビタツクスチユウシヤエキ100MG 100MG 20MLX1V" "トツトリニツセキビヨウイン " "6808517トツトリケントツトリシシヨウトクチヨウ117 " "トツトリケントツトリシシヨウトクチヨウ117 " "6808517" "" "000000" " " "20230224" "J" "VJSK_J_MERCK_2023022" "J2023022400000012" "17" "20230301" "202303142041" "110" "売上" "31110" "300000391" "鳥取支店" "" "200000015" "株式会社サンキ" "5140013 " "670237031040828444" "ニホンセキジュウジシャ トットリセキジュウジビョウイン" "日本赤十字社 鳥取赤十字病院" "680-0017 鳥取県鳥取市尚徳町117" "496350023" "アービタックス 注射剤 100mg 1VIAL" "8" "27381" "219048" "31438" "251504" "35309" "282472" "" "" "1" "" "" "" "J" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "202303" "" "" "0" "23-03-14 20:41:26" "SYSTEM" +"DAY2-101311101A8 5140013 23030173719811122303 4963500230000120002738100003285720000000000000000000000 ア-ビタツクスチユウシヤエキ100MG 100MG 20MLX1Vトツトリニツセキビヨウイン 00006808517トツトリケントツトリシシヨウトクチヨウ117 " "161" "01" "311101A8 " "5140013 " "496350023" "112" "230301" "20230301" "7371981" "000012" "00027381" "0000328572" "ア-ビタツクスチユウシヤエキ100MG 100MG 20MLX1V" "トツトリニツセキビヨウイン " "6808517トツトリケントツトリシシヨウトクチヨウ117 " "トツトリケントツトリシシヨウトクチヨウ117 " "6808517" "" "000000" " " "20230224" "J" "VJSK_J_MERCK_2023022" "J2023022400000013" "16" "20230301" "202303142041" "110" "売上" "31110" "300000391" "鳥取支店" "" "200000015" "株式会社サンキ" "5140013 " "670237031040828444" "ニホンセキジュウジシャ トットリセキジュウジビョウイン" "日本赤十字社 鳥取赤十字病院" "680-0017 鳥取県鳥取市尚徳町117" "496350023" "アービタックス 注射剤 100mg 1VIAL" "12" "27381" "328572" "31438" "377256" "35309" "423708" "" "" "1" "" "" "" "J" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "202303" "" "" "0" "23-03-14 20:41:26" "SYSTEM" +"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "J2023022400000014" "18" "110" "" "110" "" "" "300000391" "200000007" "" "200000015" "" "" "" "" "" "" "" "" "8" "27381" "219048" "31438" "251504" "35309" "282472" "" "" "" "" "" "" "J" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "23-04-03 20:42:11" "" "DAY2-202041131A1 1409581 23030106357711102303 4963500230000070002966000002076200000000000000000000000 ア-ビタツクスチユウシヤエキ100MG 100MG 20MLX1Vトウホクロウサイビヨウイン 00009818563センダイシアオバクダイノハラ " "202" "02" "041131A1 " "1409581 " "496350023" "110" "230301" "20230301" "0635771" "000007" "00029660" "0000207620" "ア-ビタツクスチユウシヤエキ100MG 100MG 20MLX1V" "トウホクロウサイビヨウイン " "9818563センダイシアオバクダイノハラ " "センダイシアオバクダイノハラ " "9818563" "" "000000" " " "20230227" "J" "VJSK_J_MERCK_2023022" "J2023022700000128" "135" "20230301" "202303142041" "110" "売上" "04113" "300000354" "北仙台支店" "" "200000016" "株式会社スズケン" "1409581 " "670232828063007745" "ドクリツギョウセイホウジンロウドウシャケンコウアンゼンキコウ トウホクロウサイビョウイン" "独立行政法人労働者健康安全機構 東北労災病院" "981-0911 宮城県仙台市青葉区台原4−3−21" "496350023" "アービタックス 注射剤 100mg 1VIAL" "7" "29660" "207620" "31438" "220066" "35309" "247163" "" "" "1" "" "" "" "J" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "202303" "" "" "0" "23-03-14 20:41:26" "SYSTEM" "DAY2-202141234B1 2607506 23030109289511102303 4963500230000100003036600003036600000000000000000000000 ア-ビタツクスチユウシヤエキ100MG 100MG 20MLX1Vヨコスカキヨウサイビヨウイン 00002380011カナガワケンヨコスカシヨネガハマドオリ1-16 " "202" "02" "141234B1 " "2607506 " "496350023" "110" "230301" "20230301" "0928951" "000010" "00030366" "0000303660" "ア-ビタツクスチユウシヤエキ100MG 100MG 20MLX1V" "ヨコスカキヨウサイビヨウイン " "2380011カナガワケンヨコスカシヨネガハマドオリ1-16 " "カナガワケンヨコスカシヨネガハマドオリ1-16 " "2380011" "" "000000" " " "20230228" "J" "VJSK_J_MERCK_2023022" "J2023022800000094" "101" "20230301" "202303142041" "110" "売上" "14123" "300000274" "磯子支店" "" "200000016" "株式会社スズケン" "2607506 " "670236609488110605" "コッカコウムインキョウサイクミアイレンゴウカイ ヨコスカキョウサイビョウイン" "国家公務員共済組合連合会 横須賀共済病院" "238-0011 神奈川県横須賀市米が浜通1−16" "496350023" "アービタックス 注射剤 100mg 1VIAL" "10" "30366" "303660" "31438" "314380" "35309" "353090" "" "" "1" "" "" "" "J" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "202303" "" "" "0" "23-03-14 20:41:26" "SYSTEM" From 5c7489ebe566d98f23a6ff6dbe393557cfae39bc Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Sat, 16 Sep 2023 14:46:41 +0900 Subject: [PATCH 06/19] =?UTF-8?q?feat:=20=E5=8D=B8=E5=9C=A8=E5=BA=AB?= =?UTF-8?q?=E3=81=AE=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/batch/vjsk/vjsk_recv_file_mapper.py | 114 +++++++++--------- .../batch/vjsk/vjsk_load/test_vjsk_load.py | 12 +- .../testdata/stock_slip_data_202304280000.tsv | 2 + .../testdata/stock_slip_data_202304290000.tsv | 6 +- 4 files changed, 68 insertions(+), 66 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py index 74d719cc..d32f281f 100644 --- a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py @@ -149,7 +149,7 @@ class VjskReceiveFileMapper: ,src05.convert_empty_to_null(t.rec_ymd) ,src05.convert_empty_to_null(t.sale_data_cat) ,src05.convert_empty_to_null(t.slip_file_name) - ,src05.convert_empty_to_null(t.slip_mgt_num) + ,t.slip_mgt_num ,t.row_num ,src05.convert_empty_to_null(t.hsdn_ymd) ,src05.convert_empty_to_null(t.exec_dt) @@ -1124,67 +1124,67 @@ class VjskReceiveFileMapper: ,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 + src05.convert_empty_to_null(t.rec_data) + ,src05.convert_empty_to_null(t.rec_whs_cd) + ,src05.convert_empty_to_null(t.rec_whs_sub_cd) + ,src05.convert_empty_to_null(t.rec_sto_place) + ,src05.convert_empty_to_null(t.rec_stock_ymd) + ,src05.convert_empty_to_null(t.rec_comm_cd) + ,src05.convert_empty_to_null(t.rec_qty) + ,src05.convert_empty_to_null(t.rec_stock_no_sign) + ,src05.convert_empty_to_null(t.rec_jan_cd) + ,src05.convert_empty_to_null(t.free_item) + ,src05.convert_empty_to_null(t.rec_ymd) + ,src05.convert_empty_to_null(t.sale_data_cat) + ,src05.convert_empty_to_null(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 + ,src05.convert_empty_to_null(t.exec_dt) + ,src05.convert_empty_to_null(t.err_flg1) + ,src05.convert_empty_to_null(t.err_flg2) + ,src05.convert_empty_to_null(t.err_flg3) + ,src05.convert_empty_to_null(t.err_flg4) + ,src05.convert_empty_to_null(t.err_flg5) + ,src05.convert_empty_to_null(t.err_flg6) + ,src05.convert_empty_to_null(t.err_flg7) + ,src05.convert_empty_to_null(t.err_flg8) + ,src05.convert_empty_to_null(t.err_flg9) + ,src05.convert_empty_to_null(t.err_flg10) + ,src05.convert_empty_to_null(t.rec_sts_kbn) ,nullif(t.ins_dt, 0) -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する - ,t.ins_usr + ,src05.convert_empty_to_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 + rec_data=VALUES(rec_data) + ,rec_whs_cd=VALUES(rec_whs_cd) + ,rec_whs_sub_cd=VALUES(rec_whs_sub_cd) + ,rec_sto_place=VALUES(rec_sto_place) + ,rec_stock_ymd=VALUES(rec_stock_ymd) + ,rec_comm_cd=VALUES(rec_comm_cd) + ,rec_qty=VALUES(rec_qty) + ,rec_stock_no_sign=VALUES(rec_stock_no_sign) + ,rec_jan_cd=VALUES(rec_jan_cd) + ,free_item=VALUES(free_item) + ,rec_ymd=VALUES(rec_ymd) + ,sale_data_cat=VALUES(sale_data_cat) + ,slip_file_name=VALUES(slip_file_name) + ,slip_mgt_num=VALUES(slip_mgt_num) + ,row_num=VALUES(row_num) + ,exec_dt=VALUES(exec_dt) + ,err_flg1=VALUES(err_flg1) + ,err_flg2=VALUES(err_flg2) + ,err_flg3=VALUES(err_flg3) + ,err_flg4=VALUES(err_flg4) + ,err_flg5=VALUES(err_flg5) + ,err_flg6=VALUES(err_flg6) + ,err_flg7=VALUES(err_flg7) + ,err_flg8=VALUES(err_flg8) + ,err_flg9=VALUES(err_flg9) + ,err_flg10=VALUES(err_flg10) + ,rec_sts_kbn=VALUES(rec_sts_kbn) + ,ins_dt=VALUES(ins_dt) + ,ins_usr=VALUES(ins_usr) ,dwh_upd_dt=SYSDATE() ; """) @@ -1303,7 +1303,7 @@ class VjskReceiveFileMapper: ,src05.convert_empty_to_null(t.rec_ymd) ,src05.convert_empty_to_null(t.sale_data_cat) ,src05.convert_empty_to_null(t.slip_file_name) - ,src05.convert_empty_to_null(t.slip_mgt_num) + ,t.slip_mgt_num ,t.row_num ,src05.convert_empty_to_null(t.hsdn_ymd) ,src05.convert_empty_to_null(t.exec_dt) diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py index 3152bf5e..109ac100 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py @@ -168,7 +168,7 @@ class TestImportFileToDb: self.batch_context.is_vjsk_stock_import_day = True self.db.execute(f"truncate table {table_name_src}") - # assertion1 (insert 4row) + # assertion1 (insert 6row) # 処理実行 target_dict = { @@ -184,7 +184,7 @@ class TestImportFileToDb: # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # orgテーブル結果が期待値通りかを突合 - assert_table_results(result_org, assert_list, ignore_columns) + assert_table_results(result_org, assert_list, ignore_columns, is_loaddata=True) # srcテーブル結果を取得 result_src = self.db.execute_select(f"select * from {table_name_src}") # 突合から除外する項目 @@ -208,18 +208,18 @@ class TestImportFileToDb: # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # orgテーブル結果が期待値通りかを突合 - assert_table_results(result_org, assert_list, ignore_columns) + assert_table_results(result_org, assert_list, ignore_columns, is_loaddata=True) # srcテーブル結果(orgテーブル結果のPK値で一致するもの)を取得 result_src = self.db.execute_select( - f"select * from {table_name_src} s inner join {table_name_org} o on (s.slip_mgt_num = o.slip_mgt_num)") + f"select s.* from {table_name_src} s inner join {table_name_org} o on (s.slip_mgt_num = o.slip_mgt_num)") # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # srcテーブル結果が期待値通りかを突合 assert_table_results(result_src, assert_list, ignore_columns) - # srcテーブル結果のレコード件数 (insert 4row + update 2row + insert 2row = 6row) + # srcテーブル結果のレコード件数 (insert 6row + update 2row + insert 2row = 8row) result_src_count = self.db.execute_select(f"select count(*) from {table_name_src} ") - assert result_src_count[0]['count(*)'] == 6 + assert result_src_count[0]['count(*)'] == 8 # teardown diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/stock_slip_data_202304280000.tsv b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/stock_slip_data_202304280000.tsv index cc6c3902..4c4d9c43 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/stock_slip_data_202304280000.tsv +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/stock_slip_data_202304280000.tsv @@ -3,3 +3,5 @@ "D4625301026 2302284963001270000040000001ゴナールエフヒカチユウペン450 1トウ40 " "253" "01" "026 " "230228" "496300127" "000004" "0" "0000" "01ゴナールエフヒカチユウペン450 1トウ40 " "20230314" "J" "VJSK-STOCK_J_MERCK_2023031400.txt" "J2023031400000060" "60" "202303142041" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "23-03-14 20:41:57" "SYSTEM" "D4625301026 2302284963001340000220000001ゴナールエフヒカチユウペン900 1トウ40 " "253" "01" "026 " "230228" "496300134" "000022" "0" "0000" "01ゴナールエフヒカチユウペン900 1トウ40 " "20230314" "J" "VJSK-STOCK_J_MERCK_2023031400.txt" "J2023031400000061" "61" "202303142041" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "23-03-14 20:41:57" "SYSTEM" "D4625301026 2302284963004170000500000001オビドレルヒカチユウシリンジ250MCG 140 " "253" "01" "026 " "230228" "496300417" "000050" "0" "0000" "01オビドレルヒカチユウシリンジ250MCG 140 " "20230314" "J" "VJSK-STOCK_J_MERCK_2023031400.txt" "J2023031400000062" "62" "202303142041" "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "23-03-14 20:41:57" "SYSTEM" +"" "" "" "" "" "" "" "" "" "" "" "" "" "J2023031400000063" "63" "" "" "" "" "" "" "" "" "" "" "" "" "23-03-14 20:41:57" "" +"D4625301026 2302284963004170000500000001オビドレルヒカチユウシリンジ250MCG 140 " "253" "01" "026 " "230228" "496300417" "000050" "0" "0000" "01オビドレルヒカチユウシリンジ250MCG 140 " "20230314" "J" "VJSK-STOCK_J_MERCK_2023031400.txt" "J2023031400000064" "64" "202303142041" "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "23-03-14 20:41:57" "SYSTEM" \ No newline at end of file diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/stock_slip_data_202304290000.tsv b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/stock_slip_data_202304290000.tsv index 0b180c24..bd43cb40 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/stock_slip_data_202304290000.tsv +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/stock_slip_data_202304290000.tsv @@ -1,5 +1,5 @@ "rec_data" "rec_whs_cd" "rec_whs_sub_cd" "rec_sto_place" "rec_stock_ymd" "rec_comm_cd" "rec_amt" "rev_stok_no_sign" "rev_jan_cd" "rec_free_item" "rec_ymd" "sale_data_cat" "slip_file_nm" "slip_mgt_no" "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" -"DAY2-301026 2302284963001340000220000001ゴナールエフヒカチユウペン900 1トウ40 " "253" "01" "026 " "230228" "496300134" "000022" "0" "0000" "01ゴナールエフヒカチユウペン900 1トウ40 " "20230314" "J" "VJSK-STOCK_J_MERCK_2023031400.txt" "J2023031400000061" "61" "202303142041" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "23-03-14 20:41:57" "SYSTEM" -"DAY2-301026 2302284963004170000500000001オビドレルヒカチユウシリンジ250MCG 140 " "253" "01" "026 " "230228" "496300417" "000050" "0" "0000" "01オビドレルヒカチユウシリンジ250MCG 140 " "20230314" "J" "VJSK-STOCK_J_MERCK_2023031400.txt" "J2023031400000062" "62" "202303142041" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "23-03-14 20:41:57" "SYSTEM" "DAY2-301027 2302284963001100000020000001ゴナールエフヒカチユウペン300 1トウ40 " "253" "01" "027 " "230228" "496300110" "000002" "0" "0000" "01ゴナールエフヒカチユウペン300 1トウ40 " "20230314" "J" "VJSK-STOCK_J_MERCK_2023031400.txt" "J2023031400000063" "63" "202303142041" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "23-03-14 20:41:57" "SYSTEM" -"DAY2-301027 2302284963001270000110000001ゴナールエフヒカチユウペン450 1トウ40 " "253" "01" "027 " "230228" "496300127" "000011" "0" "0000" "01ゴナールエフヒカチユウペン450 1トウ40 " "20230314" "J" "VJSK-STOCK_J_MERCK_2023031400.txt" "J2023031400000064" "64" "202303142041" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "23-03-14 20:41:57" "SYSTEM" +"" "" "" "" "" "" "" "" "" "" "" "" "" "J2023031400000064" "64" "" "" "" "" "" "" "" "" "" "" "" "" "23-03-14 20:41:57" "" +"DAY2-301026 2302284963001340000220000001ゴナールエフヒカチユウペン900 1トウ40 " "253" "01" "026 " "230228" "496300134" "000022" "0" "0000" "01ゴナールエフヒカチユウペン900 1トウ40 " "20230314" "J" "VJSK-STOCK_J_MERCK_2023031400.txt" "J2023031400000065" "65" "202303142041" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "23-03-14 20:41:57" "SYSTEM" +"DAY2-301026 2302284963004170000500000001オビドレルヒカチユウシリンジ250MCG 140 " "253" "01" "026 " "230228" "496300417" "000050" "0" "0000" "01オビドレルヒカチユウシリンジ250MCG 140 " "20230314" "J" "VJSK-STOCK_J_MERCK_2023031400.txt" "J2023031400000066" "66" "202303142041" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "23-03-14 20:41:57" "SYSTEM" \ No newline at end of file From c0604a9c8d69c706e3cf6125f029757799d4703e Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Sat, 16 Sep 2023 14:56:53 +0900 Subject: [PATCH 07/19] =?UTF-8?q?feat:=20NULL=E5=A4=89=E6=8F=9B=E9=96=A2?= =?UTF-8?q?=E6=95=B0=E3=81=AE=E3=82=B9=E3=82=AD=E3=83=BC=E3=83=9E=E3=82=92?= =?UTF-8?q?=E5=85=B1=E9=80=9A=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/batch/vjsk/vjsk_recv_file_mapper.py | 308 +++++++++--------- .../convert_empty_to_null.sql | 7 +- 2 files changed, 158 insertions(+), 157 deletions(-) rename rds_mysql/stored_procedure/{src05 => medaca_common}/convert_empty_to_null.sql (60%) diff --git a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py index d32f281f..025276dc 100644 --- a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py @@ -125,49 +125,49 @@ class VjskReceiveFileMapper: ,dwh_upd_dt ) SELECT - src05.convert_empty_to_null(t.rec_data) - ,src05.convert_empty_to_null(t.rec_whs_cd) - ,src05.convert_empty_to_null(t.rec_whs_sub_cd) - ,src05.convert_empty_to_null(t.rec_whs_org_cd) - ,src05.convert_empty_to_null(t.rec_cust_cd) - ,src05.convert_empty_to_null(t.rec_comm_cd) - ,src05.convert_empty_to_null(t.rec_tran_kbn) - ,src05.convert_empty_to_null(t.rev_hsdnymd_wrk) - ,src05.convert_empty_to_null(t.rev_hsdnymd_srk) - ,src05.convert_empty_to_null(t.rec_urag_num) - ,src05.convert_empty_to_null(t.rec_qty) - ,src05.convert_empty_to_null(t.rec_nonyu_price) - ,src05.convert_empty_to_null(t.rec_nonyu_amt) - ,src05.convert_empty_to_null(t.rec_comm_name) - ,src05.convert_empty_to_null(t.rec_nonyu_fcl_name) - ,src05.convert_empty_to_null(t.free_item) - ,src05.convert_empty_to_null(t.rec_nonyu_fcl_addr) - ,src05.convert_empty_to_null(t.rec_nonyu_fcl_post) - ,src05.convert_empty_to_null(t.rec_nonyu_fcl_tel) - ,src05.convert_empty_to_null(t.rec_bef_hsdn_ymd) - ,src05.convert_empty_to_null(t.rec_bef_slip_num) - ,src05.convert_empty_to_null(t.rec_ymd) - ,src05.convert_empty_to_null(t.sale_data_cat) - ,src05.convert_empty_to_null(t.slip_file_name) + medaca_common.convert_empty_to_null(t.rec_data) + ,medaca_common.convert_empty_to_null(t.rec_whs_cd) + ,medaca_common.convert_empty_to_null(t.rec_whs_sub_cd) + ,medaca_common.convert_empty_to_null(t.rec_whs_org_cd) + ,medaca_common.convert_empty_to_null(t.rec_cust_cd) + ,medaca_common.convert_empty_to_null(t.rec_comm_cd) + ,medaca_common.convert_empty_to_null(t.rec_tran_kbn) + ,medaca_common.convert_empty_to_null(t.rev_hsdnymd_wrk) + ,medaca_common.convert_empty_to_null(t.rev_hsdnymd_srk) + ,medaca_common.convert_empty_to_null(t.rec_urag_num) + ,medaca_common.convert_empty_to_null(t.rec_qty) + ,medaca_common.convert_empty_to_null(t.rec_nonyu_price) + ,medaca_common.convert_empty_to_null(t.rec_nonyu_amt) + ,medaca_common.convert_empty_to_null(t.rec_comm_name) + ,medaca_common.convert_empty_to_null(t.rec_nonyu_fcl_name) + ,medaca_common.convert_empty_to_null(t.free_item) + ,medaca_common.convert_empty_to_null(t.rec_nonyu_fcl_addr) + ,medaca_common.convert_empty_to_null(t.rec_nonyu_fcl_post) + ,medaca_common.convert_empty_to_null(t.rec_nonyu_fcl_tel) + ,medaca_common.convert_empty_to_null(t.rec_bef_hsdn_ymd) + ,medaca_common.convert_empty_to_null(t.rec_bef_slip_num) + ,medaca_common.convert_empty_to_null(t.rec_ymd) + ,medaca_common.convert_empty_to_null(t.sale_data_cat) + ,medaca_common.convert_empty_to_null(t.slip_file_name) ,t.slip_mgt_num ,t.row_num - ,src05.convert_empty_to_null(t.hsdn_ymd) - ,src05.convert_empty_to_null(t.exec_dt) + ,medaca_common.convert_empty_to_null(t.hsdn_ymd) + ,medaca_common.convert_empty_to_null(t.exec_dt) ,t.v_tran_cd - ,src05.convert_empty_to_null(t.tran_kbn_name) - ,src05.convert_empty_to_null(t.whs_org_cd) + ,medaca_common.convert_empty_to_null(t.tran_kbn_name) + ,medaca_common.convert_empty_to_null(t.whs_org_cd) ,t.v_whsorg_cd - ,src05.convert_empty_to_null(t.whs_org_name) - ,src05.convert_empty_to_null(t.whs_org_kn) + ,medaca_common.convert_empty_to_null(t.whs_org_name) + ,medaca_common.convert_empty_to_null(t.whs_org_kn) ,t.v_whs_cd - ,src05.convert_empty_to_null(t.whs_name) - ,src05.convert_empty_to_null(t.nonyu_fcl_cd) - ,src05.convert_empty_to_null(t.v_inst_cd) - ,src05.convert_empty_to_null(t.v_inst_kn) - ,src05.convert_empty_to_null(t.v_inst_name) - ,src05.convert_empty_to_null(t.v_inst_addr) - ,src05.convert_empty_to_null(t.comm_cd) - ,src05.convert_empty_to_null(t.comm_name) + ,medaca_common.convert_empty_to_null(t.whs_name) + ,medaca_common.convert_empty_to_null(t.nonyu_fcl_cd) + ,medaca_common.convert_empty_to_null(t.v_inst_cd) + ,medaca_common.convert_empty_to_null(t.v_inst_kn) + ,medaca_common.convert_empty_to_null(t.v_inst_name) + ,medaca_common.convert_empty_to_null(t.v_inst_addr) + ,medaca_common.convert_empty_to_null(t.comm_cd) + ,medaca_common.convert_empty_to_null(t.comm_name) ,t.nonyu_qty ,t.nonyu_price ,t.nonyu_amt @@ -175,39 +175,39 @@ class VjskReceiveFileMapper: ,t.shikiri_amt ,t.nhi_price ,t.nhi_amt - ,src05.convert_empty_to_null(t.whspos_err_kbn) - ,src05.convert_empty_to_null(t.htdnymd_err_kbn) - ,src05.convert_empty_to_null(t.prd_exis_kbn) - ,src05.convert_empty_to_null(t.fcl_exis_kbn) - ,src05.convert_empty_to_null(t.bef_hsdn_ymd) - ,src05.convert_empty_to_null(t.bef_slip_num) + ,medaca_common.convert_empty_to_null(t.whspos_err_kbn) + ,medaca_common.convert_empty_to_null(t.htdnymd_err_kbn) + ,medaca_common.convert_empty_to_null(t.prd_exis_kbn) + ,medaca_common.convert_empty_to_null(t.fcl_exis_kbn) + ,medaca_common.convert_empty_to_null(t.bef_hsdn_ymd) + ,medaca_common.convert_empty_to_null(t.bef_slip_num) ,t.slip_org_kbn - ,src05.convert_empty_to_null(t.err_flg1) - ,src05.convert_empty_to_null(t.err_flg2) - ,src05.convert_empty_to_null(t.err_flg3) - ,src05.convert_empty_to_null(t.err_flg4) - ,src05.convert_empty_to_null(t.err_flg5) - ,src05.convert_empty_to_null(t.err_flg6) - ,src05.convert_empty_to_null(t.err_flg7) - ,src05.convert_empty_to_null(t.err_flg8) - ,src05.convert_empty_to_null(t.err_flg9) - ,src05.convert_empty_to_null(t.err_flg10) - ,src05.convert_empty_to_null(t.err_flg11) - ,src05.convert_empty_to_null(t.err_flg12) - ,src05.convert_empty_to_null(t.err_flg13) - ,src05.convert_empty_to_null(t.err_flg14) - ,src05.convert_empty_to_null(t.err_flg15) - ,src05.convert_empty_to_null(t.err_flg16) - ,src05.convert_empty_to_null(t.err_flg17) - ,src05.convert_empty_to_null(t.err_flg18) - ,src05.convert_empty_to_null(t.err_flg19) - ,src05.convert_empty_to_null(t.err_flg20) - ,src05.convert_empty_to_null(t.kjyo_ym) - ,src05.convert_empty_to_null(t.tksnbk_kbn) - ,src05.convert_empty_to_null(t.fcl_exec_kbn) - ,src05.convert_empty_to_null(t.rec_sts_kbn) + ,medaca_common.convert_empty_to_null(t.err_flg1) + ,medaca_common.convert_empty_to_null(t.err_flg2) + ,medaca_common.convert_empty_to_null(t.err_flg3) + ,medaca_common.convert_empty_to_null(t.err_flg4) + ,medaca_common.convert_empty_to_null(t.err_flg5) + ,medaca_common.convert_empty_to_null(t.err_flg6) + ,medaca_common.convert_empty_to_null(t.err_flg7) + ,medaca_common.convert_empty_to_null(t.err_flg8) + ,medaca_common.convert_empty_to_null(t.err_flg9) + ,medaca_common.convert_empty_to_null(t.err_flg10) + ,medaca_common.convert_empty_to_null(t.err_flg11) + ,medaca_common.convert_empty_to_null(t.err_flg12) + ,medaca_common.convert_empty_to_null(t.err_flg13) + ,medaca_common.convert_empty_to_null(t.err_flg14) + ,medaca_common.convert_empty_to_null(t.err_flg15) + ,medaca_common.convert_empty_to_null(t.err_flg16) + ,medaca_common.convert_empty_to_null(t.err_flg17) + ,medaca_common.convert_empty_to_null(t.err_flg18) + ,medaca_common.convert_empty_to_null(t.err_flg19) + ,medaca_common.convert_empty_to_null(t.err_flg20) + ,medaca_common.convert_empty_to_null(t.kjyo_ym) + ,medaca_common.convert_empty_to_null(t.tksnbk_kbn) + ,medaca_common.convert_empty_to_null(t.fcl_exec_kbn) + ,medaca_common.convert_empty_to_null(t.rec_sts_kbn) ,nullif(t.ins_dt, 0) -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する - ,src05.convert_empty_to_null(t.ins_usr) + ,medaca_common.convert_empty_to_null(t.ins_usr) ,SYSDATE() FROM org05.sales AS t ON DUPLICATE KEY UPDATE @@ -1124,35 +1124,35 @@ class VjskReceiveFileMapper: ,dwh_upd_dt ) SELECT - src05.convert_empty_to_null(t.rec_data) - ,src05.convert_empty_to_null(t.rec_whs_cd) - ,src05.convert_empty_to_null(t.rec_whs_sub_cd) - ,src05.convert_empty_to_null(t.rec_sto_place) - ,src05.convert_empty_to_null(t.rec_stock_ymd) - ,src05.convert_empty_to_null(t.rec_comm_cd) - ,src05.convert_empty_to_null(t.rec_qty) - ,src05.convert_empty_to_null(t.rec_stock_no_sign) - ,src05.convert_empty_to_null(t.rec_jan_cd) - ,src05.convert_empty_to_null(t.free_item) - ,src05.convert_empty_to_null(t.rec_ymd) - ,src05.convert_empty_to_null(t.sale_data_cat) - ,src05.convert_empty_to_null(t.slip_file_name) + medaca_common.convert_empty_to_null(t.rec_data) + ,medaca_common.convert_empty_to_null(t.rec_whs_cd) + ,medaca_common.convert_empty_to_null(t.rec_whs_sub_cd) + ,medaca_common.convert_empty_to_null(t.rec_sto_place) + ,medaca_common.convert_empty_to_null(t.rec_stock_ymd) + ,medaca_common.convert_empty_to_null(t.rec_comm_cd) + ,medaca_common.convert_empty_to_null(t.rec_qty) + ,medaca_common.convert_empty_to_null(t.rec_stock_no_sign) + ,medaca_common.convert_empty_to_null(t.rec_jan_cd) + ,medaca_common.convert_empty_to_null(t.free_item) + ,medaca_common.convert_empty_to_null(t.rec_ymd) + ,medaca_common.convert_empty_to_null(t.sale_data_cat) + ,medaca_common.convert_empty_to_null(t.slip_file_name) ,t.slip_mgt_num ,t.row_num - ,src05.convert_empty_to_null(t.exec_dt) - ,src05.convert_empty_to_null(t.err_flg1) - ,src05.convert_empty_to_null(t.err_flg2) - ,src05.convert_empty_to_null(t.err_flg3) - ,src05.convert_empty_to_null(t.err_flg4) - ,src05.convert_empty_to_null(t.err_flg5) - ,src05.convert_empty_to_null(t.err_flg6) - ,src05.convert_empty_to_null(t.err_flg7) - ,src05.convert_empty_to_null(t.err_flg8) - ,src05.convert_empty_to_null(t.err_flg9) - ,src05.convert_empty_to_null(t.err_flg10) - ,src05.convert_empty_to_null(t.rec_sts_kbn) + ,medaca_common.convert_empty_to_null(t.exec_dt) + ,medaca_common.convert_empty_to_null(t.err_flg1) + ,medaca_common.convert_empty_to_null(t.err_flg2) + ,medaca_common.convert_empty_to_null(t.err_flg3) + ,medaca_common.convert_empty_to_null(t.err_flg4) + ,medaca_common.convert_empty_to_null(t.err_flg5) + ,medaca_common.convert_empty_to_null(t.err_flg6) + ,medaca_common.convert_empty_to_null(t.err_flg7) + ,medaca_common.convert_empty_to_null(t.err_flg8) + ,medaca_common.convert_empty_to_null(t.err_flg9) + ,medaca_common.convert_empty_to_null(t.err_flg10) + ,medaca_common.convert_empty_to_null(t.rec_sts_kbn) ,nullif(t.ins_dt, 0) -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する - ,src05.convert_empty_to_null(t.ins_usr) + ,medaca_common.convert_empty_to_null(t.ins_usr) ,SYSDATE() FROM org05.whole_stock AS t ON DUPLICATE KEY UPDATE @@ -1281,41 +1281,41 @@ class VjskReceiveFileMapper: ,dwh_upd_dt ) SELECT - src05.convert_empty_to_null(t.rec_data) - ,src05.convert_empty_to_null(t.rec_whs_cd) - ,src05.convert_empty_to_null(t.rec_whs_sub_cd) - ,src05.convert_empty_to_null(t.rec_whs_org_cd) - ,src05.convert_empty_to_null(t.rec_cust_cd) - ,src05.convert_empty_to_null(t.rec_comm_cd) - ,src05.convert_empty_to_null(t.rec_tran_kbn) - ,src05.convert_empty_to_null(t.rev_hsdnymd_wrk) - ,src05.convert_empty_to_null(t.rev_hsdnymd_srk) - ,src05.convert_empty_to_null(t.rec_urag_num) - ,src05.convert_empty_to_null(t.rec_comm_name) - ,src05.convert_empty_to_null(t.rec_nonyu_fcl_name) - ,src05.convert_empty_to_null(t.rec_nonyu_fcl_addr) - ,src05.convert_empty_to_null(t.rec_lot_num1) - ,src05.convert_empty_to_null(t.rec_qty1) - ,src05.convert_empty_to_null(t.rec_lot_num2) - ,src05.convert_empty_to_null(t.rec_qty2) - ,src05.convert_empty_to_null(t.rec_lot_num3) - ,src05.convert_empty_to_null(t.rec_qty3) - ,src05.convert_empty_to_null(t.rec_ymd) - ,src05.convert_empty_to_null(t.sale_data_cat) - ,src05.convert_empty_to_null(t.slip_file_name) + medaca_common.convert_empty_to_null(t.rec_data) + ,medaca_common.convert_empty_to_null(t.rec_whs_cd) + ,medaca_common.convert_empty_to_null(t.rec_whs_sub_cd) + ,medaca_common.convert_empty_to_null(t.rec_whs_org_cd) + ,medaca_common.convert_empty_to_null(t.rec_cust_cd) + ,medaca_common.convert_empty_to_null(t.rec_comm_cd) + ,medaca_common.convert_empty_to_null(t.rec_tran_kbn) + ,medaca_common.convert_empty_to_null(t.rev_hsdnymd_wrk) + ,medaca_common.convert_empty_to_null(t.rev_hsdnymd_srk) + ,medaca_common.convert_empty_to_null(t.rec_urag_num) + ,medaca_common.convert_empty_to_null(t.rec_comm_name) + ,medaca_common.convert_empty_to_null(t.rec_nonyu_fcl_name) + ,medaca_common.convert_empty_to_null(t.rec_nonyu_fcl_addr) + ,medaca_common.convert_empty_to_null(t.rec_lot_num1) + ,medaca_common.convert_empty_to_null(t.rec_qty1) + ,medaca_common.convert_empty_to_null(t.rec_lot_num2) + ,medaca_common.convert_empty_to_null(t.rec_qty2) + ,medaca_common.convert_empty_to_null(t.rec_lot_num3) + ,medaca_common.convert_empty_to_null(t.rec_qty3) + ,medaca_common.convert_empty_to_null(t.rec_ymd) + ,medaca_common.convert_empty_to_null(t.sale_data_cat) + ,medaca_common.convert_empty_to_null(t.slip_file_name) ,t.slip_mgt_num ,t.row_num - ,src05.convert_empty_to_null(t.hsdn_ymd) - ,src05.convert_empty_to_null(t.exec_dt) + ,medaca_common.convert_empty_to_null(t.hsdn_ymd) + ,medaca_common.convert_empty_to_null(t.exec_dt) ,t.v_tran_cd - ,src05.convert_empty_to_null(t.tran_kbn_name) - ,src05.convert_empty_to_null(t.whs_org_cd) + ,medaca_common.convert_empty_to_null(t.tran_kbn_name) + ,medaca_common.convert_empty_to_null(t.whs_org_cd) ,t.v_whsorg_cd - ,src05.convert_empty_to_null(t.whs_org_name) - ,src05.convert_empty_to_null(t.whs_org_kn) + ,medaca_common.convert_empty_to_null(t.whs_org_name) + ,medaca_common.convert_empty_to_null(t.whs_org_kn) ,t.v_whs_cd - ,src05.convert_empty_to_null(t.whs_name) - ,src05.convert_empty_to_null(t.nonyu_fcl_cd) + ,medaca_common.convert_empty_to_null(t.whs_name) + ,medaca_common.convert_empty_to_null(t.nonyu_fcl_cd) ,nullif(t.v_inst_cd,'') ,nullif(t.v_inst_name,'') ,nullif(t.v_inst_kn,'') @@ -1329,36 +1329,36 @@ class VjskReceiveFileMapper: ,t.qty2 ,t.qty3 ,t.slip_org_kbn - ,src05.convert_empty_to_null(t.bef_slip_mgt_num) - ,src05.convert_empty_to_null(t.whs_rep_comm_name) - ,src05.convert_empty_to_null(t.whs_rep_nonyu_fcl_name) - ,src05.convert_empty_to_null(t.whs_rep_nonyu_fcl_addr) - ,src05.convert_empty_to_null(t.err_flg1) - ,src05.convert_empty_to_null(t.err_flg2) - ,src05.convert_empty_to_null(t.err_flg3) - ,src05.convert_empty_to_null(t.err_flg4) - ,src05.convert_empty_to_null(t.err_flg5) - ,src05.convert_empty_to_null(t.err_flg6) - ,src05.convert_empty_to_null(t.err_flg7) - ,src05.convert_empty_to_null(t.err_flg8) - ,src05.convert_empty_to_null(t.err_flg9) - ,src05.convert_empty_to_null(t.err_flg10) - ,src05.convert_empty_to_null(t.err_flg11) - ,src05.convert_empty_to_null(t.err_flg12) - ,src05.convert_empty_to_null(t.err_flg13) - ,src05.convert_empty_to_null(t.err_flg14) - ,src05.convert_empty_to_null(t.err_flg15) - ,src05.convert_empty_to_null(t.err_flg16) - ,src05.convert_empty_to_null(t.err_flg17) - ,src05.convert_empty_to_null(t.err_flg18) - ,src05.convert_empty_to_null(t.err_flg19) - ,src05.convert_empty_to_null(t.err_flg20) - ,src05.convert_empty_to_null(t.kjyo_ym) - ,src05.convert_empty_to_null(t.tksnbk_kbn) - ,src05.convert_empty_to_null(t.fcl_exec_kbn) - ,src05.convert_empty_to_null(t.rec_sts_kbn) + ,medaca_common.convert_empty_to_null(t.bef_slip_mgt_num) + ,medaca_common.convert_empty_to_null(t.whs_rep_comm_name) + ,medaca_common.convert_empty_to_null(t.whs_rep_nonyu_fcl_name) + ,medaca_common.convert_empty_to_null(t.whs_rep_nonyu_fcl_addr) + ,medaca_common.convert_empty_to_null(t.err_flg1) + ,medaca_common.convert_empty_to_null(t.err_flg2) + ,medaca_common.convert_empty_to_null(t.err_flg3) + ,medaca_common.convert_empty_to_null(t.err_flg4) + ,medaca_common.convert_empty_to_null(t.err_flg5) + ,medaca_common.convert_empty_to_null(t.err_flg6) + ,medaca_common.convert_empty_to_null(t.err_flg7) + ,medaca_common.convert_empty_to_null(t.err_flg8) + ,medaca_common.convert_empty_to_null(t.err_flg9) + ,medaca_common.convert_empty_to_null(t.err_flg10) + ,medaca_common.convert_empty_to_null(t.err_flg11) + ,medaca_common.convert_empty_to_null(t.err_flg12) + ,medaca_common.convert_empty_to_null(t.err_flg13) + ,medaca_common.convert_empty_to_null(t.err_flg14) + ,medaca_common.convert_empty_to_null(t.err_flg15) + ,medaca_common.convert_empty_to_null(t.err_flg16) + ,medaca_common.convert_empty_to_null(t.err_flg17) + ,medaca_common.convert_empty_to_null(t.err_flg18) + ,medaca_common.convert_empty_to_null(t.err_flg19) + ,medaca_common.convert_empty_to_null(t.err_flg20) + ,medaca_common.convert_empty_to_null(t.kjyo_ym) + ,medaca_common.convert_empty_to_null(t.tksnbk_kbn) + ,medaca_common.convert_empty_to_null(t.fcl_exec_kbn) + ,medaca_common.convert_empty_to_null(t.rec_sts_kbn) ,nullif(t.ins_dt, 0) -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する - ,src05.convert_empty_to_null(t.ins_usr) + ,medaca_common.convert_empty_to_null(t.ins_usr) ,SYSDATE() FROM org05.bio_sales AS t ON DUPLICATE KEY UPDATE diff --git a/rds_mysql/stored_procedure/src05/convert_empty_to_null.sql b/rds_mysql/stored_procedure/medaca_common/convert_empty_to_null.sql similarity index 60% rename from rds_mysql/stored_procedure/src05/convert_empty_to_null.sql rename to rds_mysql/stored_procedure/medaca_common/convert_empty_to_null.sql index 339bbe44..539d9e30 100644 --- a/rds_mysql/stored_procedure/src05/convert_empty_to_null.sql +++ b/rds_mysql/stored_procedure/medaca_common/convert_empty_to_null.sql @@ -1,7 +1,8 @@ -- A5M2で実行時に[SQL] - [スラッシュ(/)のみの行でSQLを区切る]に変えてから実行する --- 空文字→NULL変換 -CREATE FUNCTION src05.convert_empty_to_null(column_value VARCHAR(500)) -RETURNS VARCHAR(500) DETERMINISTIC +-- 空文字をNULLに変換する +-- 半角スペースを含む値はそのまま返却される +CREATE FUNCTION medaca_common.convert_empty_to_null(column_value TEXT) +RETURNS TEXT DETERMINISTIC BEGIN RETURN ( CASE From 97462420a1b1954a65d82f0b6c98fe0130b6b9bd Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Sat, 16 Sep 2023 15:25:36 +0900 Subject: [PATCH 08/19] =?UTF-8?q?feat:=20V=E6=96=BD=E8=A8=AD=E3=83=9E?= =?UTF-8?q?=E3=82=B9=E3=82=BF=E3=81=AE=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/batch/vjsk/vjsk_recv_file_mapper.py | 82 +++++++++---------- .../batch/vjsk/vjsk_load/test_vjsk_load.py | 14 ++-- .../testdata/fcl_mst_202304280000.tsv | 2 + .../testdata/fcl_mst_202304290000.tsv | 4 +- .../tests/testing_vjsk_utility.py | 7 +- 5 files changed, 59 insertions(+), 50 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py index 025276dc..51b51cd0 100644 --- a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py @@ -720,57 +720,57 @@ class VjskReceiveFileMapper: ,dwh_upd_dt ) SELECT - t.v_inst_cd + 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 + ,medaca_common.convert_empty_to_null(t.closed_dt) + ,medaca_common.convert_empty_to_null(t.fcl_name) + ,medaca_common.convert_empty_to_null(t.fcl_kn_name) + ,medaca_common.convert_empty_to_null(t.fcl_abb_name) + ,medaca_common.convert_empty_to_null(t.fcl_abb_kn_name) + ,medaca_common.convert_empty_to_null(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 + ,medaca_common.convert_empty_to_null(t.fmt_addr) + ,medaca_common.convert_empty_to_null(t.fmt_kn_addr) + ,medaca_common.convert_empty_to_null(t.postal_cd) + ,medaca_common.convert_empty_to_null(t.prft_cd) + ,medaca_common.convert_empty_to_null(t.prft_name) + ,medaca_common.convert_empty_to_null(t.city_name) + ,medaca_common.convert_empty_to_null(t.addr_line_1) + ,medaca_common.convert_empty_to_null(t.tel_num) + ,medaca_common.convert_empty_to_null(t.admin_kbn) + ,medaca_common.convert_empty_to_null(t.fcl_type) ,t.rec_sts_kbn ,nullif(t.ins_dt, 0) -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する ,nullif(t.upd_dt, 0) -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する ,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=nullif(t.upd_dt, 0) + v_inst_cd=VALUES(v_inst_cd) + ,sub_num=VALUES(sub_num) + ,start_date=VALUES(start_date) + ,end_date=VALUES(end_date) + ,closed_dt=VALUES(closed_dt) + ,fcl_name=VALUES(fcl_name) + ,fcl_kn_name=VALUES(fcl_kn_name) + ,fcl_abb_name=VALUES(fcl_abb_name) + ,fcl_abb_kn_name=VALUES(fcl_abb_kn_name) + ,mkr_cd=VALUES(mkr_cd) + ,jsk_proc_kbn=VALUES(jsk_proc_kbn) + ,fmt_addr=VALUES(fmt_addr) + ,fmt_kn_addr=VALUES(fmt_kn_addr) + ,postal_cd=VALUES(postal_cd) + ,prft_cd=VALUES(prft_cd) + ,prft_name=VALUES(prft_name) + ,city_name=VALUES(city_name) + ,addr_line_1=VALUES(addr_line_1) + ,tel_num=VALUES(tel_num) + ,admin_kbn=VALUES(admin_kbn) + ,fcl_type=VALUES(fcl_type) + ,rec_sts_kbn=VALUES(rec_sts_kbn) + ,ins_dt=VALUES(ins_dt) + ,upd_dt=VALUES(upd_dt) ,dwh_upd_dt=SYSDATE() ; """) diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py index 109ac100..05921299 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py @@ -546,7 +546,7 @@ class TestImportFileToDb: self.batch_context.is_vjsk_stock_import_day = True self.db.execute(f"truncate table {table_name_src}") - # assertion1 (insert 4row) + # assertion1 (insert 6row) # 処理実行 target_dict = { @@ -561,13 +561,15 @@ class TestImportFileToDb: result_org = self.db.execute_select(f"select * from {table_name_org}") # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] + # 日付型に変換して比較する項目 force_cast_to_str_columns = ['closed_dt'] # orgテーブル結果が期待値通りかを突合 - assert_table_results(result_org, assert_list, ignore_columns, force_cast_to_str_columns) + assert_table_results(result_org, assert_list, ignore_columns, force_cast_to_str_columns, is_loaddata=True) # srcテーブル結果を取得 result_src = self.db.execute_select(f"select * from {table_name_src}") # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] + # 日付型に変換して比較する項目 force_cast_to_str_columns = ['closed_dt'] # srcテーブル結果が期待値通りかを突合 assert_table_results(result_src, assert_list, ignore_columns, force_cast_to_str_columns) @@ -587,21 +589,23 @@ class TestImportFileToDb: result_org = self.db.execute_select(f"select * from {table_name_org}") # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] + # 日付型に変換して比較する項目 force_cast_to_str_columns = ['closed_dt'] # orgテーブル結果が期待値通りかを突合 - assert_table_results(result_org, assert_list, ignore_columns, force_cast_to_str_columns) + assert_table_results(result_org, assert_list, ignore_columns, force_cast_to_str_columns, is_loaddata=True) # srcテーブル結果(orgテーブル結果のPK値で一致するもの)を取得 result_src = self.db.execute_select( - f"select * from {table_name_src} s inner join {table_name_org} o on (s.v_inst_cd = o.v_inst_cd and s.sub_num = o.sub_num)") + f"select s.* from {table_name_src} s inner join {table_name_org} o on (s.v_inst_cd = o.v_inst_cd and s.sub_num = o.sub_num)") # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] + # 日付型に変換して比較する項目 force_cast_to_str_columns = ['closed_dt'] # srcテーブル結果が期待値通りかを突合 assert_table_results(result_src, assert_list, ignore_columns, force_cast_to_str_columns) # srcテーブル結果のレコード件数 (insert 4row + update 2row + insert 2row = 6row) result_src_count = self.db.execute_select(f"select count(*) from {table_name_src} ") - assert result_src_count[0]['count(*)'] == 6 + assert result_src_count[0]['count(*)'] == 8 # teardown diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/fcl_mst_202304280000.tsv b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/fcl_mst_202304280000.tsv index 9615f392..705bfe65 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/fcl_mst_202304280000.tsv +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/fcl_mst_202304280000.tsv @@ -3,3 +3,5 @@ "670229435466662922" "0" "20000101" "99991231" "" "医療法人社団仁卓会 ほりかわ歯科クリニック" "イリョウホウジンシャダンジンタクカイ ホリカワシカクリニック" "ほりかわ歯科クリニック (医社)" "ホリカワシカクリニック (イシャ)" "" "0" "675-0101 兵庫県加古川市平岡町新在家1573−1−4F" "ヒョウゴケン カコガワシ ヒラオカチョウシンザイケ1573-1-4F" "675-0101" "28" "兵庫県" "加古川市" "平岡町新在家1573−1−4F" "0794244617" "28210" "30" "1" "" "" "670229435785430019" "0" "20000101" "99991231" "" "株式会社コミュニティメディカル なつめ薬局 千歳船橋店" "カブシキガイシャコミュニティメディカル ナツメヤッキョク チトセフナバシテン" "なつめ薬局 千歳船橋店 (株)" "ナツメヤッキョク チトセフナバシテン (カ)" "" "0" "156-0054 東京都世田谷区桜丘2−24−2" "トウキョウト セタガヤク サクラガオカ2-24-2" "156-0054" "13" "東京都" "世田谷区" "桜丘2−24−2" "0364136189" "13112" "20" "1" "" "" "670229447437206529" "0" "20000101" "20230407" "2023-04-07" "ヒカリ薬局" "ヒカリヤッキョク" "ヒカリ薬局" "ヒカリヤッキョク" "" "0" "670-0955 兵庫県姫路市安田4−47−8−1F" "ヒョウゴケン ヒメジシ ヤスダ4-47-8-1F" "670-0955" "28" "兵庫県" "姫路市" "安田4−47−8−1F" "0792846396" "28201" "20" "1" "" "" +"670229447437206530" "0" "20000101" "20230407" "" "" "" "" "" "" "0" "" "" "" "" "" "" "" "" "" "1" "" "" +"670229447437206531" "0" "20000101" "20230407" "2023-04-07" "ヒカリ薬局" "ヒカリヤッキョク" "ヒカリ薬局" "ヒカリヤッキョク" "" "0" "670-0955 兵庫県姫路市安田4−47−8−1F" "ヒョウゴケン ヒメジシ ヤスダ4-47-8-1F" "670-0955" "28" "兵庫県" "姫路市" "安田4−47−8−1F" "0792846396" "28201" "20" "1" "" "" \ No newline at end of file diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/fcl_mst_202304290000.tsv b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/fcl_mst_202304290000.tsv index b4c05930..2cc40cb0 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/fcl_mst_202304290000.tsv +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/fcl_mst_202304290000.tsv @@ -1,5 +1,5 @@ "fcl_cd" "sub_no" "start_dt" "end_dt" "closed_dt" "nm" "kn_nm" "sht_nm" "sht_kn_nm" "mkr_cd" "jsk_proc_kbn" "fmt_addr" "fmt_kn_addr" "post_cd" "prft_cd" "prft_nm" "city_nm" "addr_line_1" "tel_no" "admin_kbn" "fcl_type" "rec_sts_kbn" "ins_dt" "upd_dt" -"670229435785430019" "0" "20000202" "99991231" "" "株式会社コミュニティメディカル なつめ薬局 千歳船橋店" "カブシキガイシャコミュニティメディカル ナツメヤッキョク チトセフナバシテン" "なつめ薬局 千歳船橋店 (株)" "ナツメヤッキョク チトセフナバシテン (カ)" "" "0" "156-0054 東京都世田谷区桜丘2−24−2" "トウキョウト セタガヤク サクラガオカ2-24-2" "156-0054" "13" "東京都" "世田谷区" "桜丘2−24−2" "0364136189" "13112" "20" "1" "" "" -"670229447437206529" "0" "20000202" "20230407" "2023-04-07" "ヒカリ薬局" "ヒカリヤッキョク" "ヒカリ薬局" "ヒカリヤッキョク" "" "0" "670-0955 兵庫県姫路市安田4−47−8−1F" "ヒョウゴケン ヒメジシ ヤスダ4-47-8-1F" "670-0955" "28" "兵庫県" "姫路市" "安田4−47−8−1F" "0792846396" "28201" "20" "1" "" "" +"670229447437206530" "0" "20000202" "99991231" "" "株式会社コミュニティメディカル なつめ薬局 千歳船橋店" "カブシキガイシャコミュニティメディカル ナツメヤッキョク チトセフナバシテン" "なつめ薬局 千歳船橋店 (株)" "ナツメヤッキョク チトセフナバシテン (カ)" "" "0" "156-0054 東京都世田谷区桜丘2−24−2" "トウキョウト セタガヤク サクラガオカ2-24-2" "156-0054" "13" "東京都" "世田谷区" "桜丘2−24−2" "0364136189" "13112" "20" "1" "" "" +"670229447437206531" "0" "20000101" "20230407" "" "" "" "" "" "" "0" "" "" "" "" "" "" "" "" "" "1" "" "" "670229463350395910" "0" "20000101" "99991231" "" "こうだ歯科" "コウダシカ" "こうだ歯科" "コウダシカ" "" "0" "770-0831 徳島県徳島市寺島本町西1−10" "トクシマケン トクシマシ テラシマホンチョウニシ1-10" "770-0831" "36" "徳島県" "徳島市" "寺島本町西1−10" "0886552625" "36201" "30" "1" "" "" "670229489380246545" "0" "20020521" "99991231" "" "社会医療法人社団埼玉巨樹の会 狭山中央病院" "シャカイイリョウホウジンシャダンサイタマキョジュノカイ サヤマチュウオウビョウイン" "狭山中央病院 (社社)" "サヤマチュウオウビョウイン (シャシャ)" "" "0" "350-1306 埼玉県狭山市富士見2−19−35" "サイタマケン サヤマシ フジミ2-19-35" "350-1306" "11" "埼玉県" "狭山市" "富士見2−19−35" "0429597111" "11215" "10" "1" "" "" diff --git a/ecs/jskult-batch-daily/tests/testing_vjsk_utility.py b/ecs/jskult-batch-daily/tests/testing_vjsk_utility.py index 52969c49..c93ba52d 100644 --- a/ecs/jskult-batch-daily/tests/testing_vjsk_utility.py +++ b/ecs/jskult-batch-daily/tests/testing_vjsk_utility.py @@ -62,13 +62,14 @@ def is_valid_date_format(date_str: str, date_format): return False -def assert_table_results(actual_rows: list[dict], expect_rows: list[dict], ignore_col_names: list = None, force_cast_to_str_columns: list = [], is_loaddata=False) -> None: +def assert_table_results(actual_rows: list[dict], expect_rows: list[dict], ignore_col_names: list = None, force_cast_to_str_columns: list = None, is_loaddata=False) -> None: """テーブル同士の取得結果突き合わせ Args: actual_rows (list[dict]): テスト結果の辞書リスト expect_rows (list[dict]): 期待値の辞書リスト ignore_col_name (list): 比較を無視するDBのカラム名. Default None. + force_cast_to_str_columns (list): 強制的に文字列にキャストする項目のリスト is_loaddata (bool): LOAD DATAで読み込むテーブルかどうかのフラグ。org05の比較をするときにONにする. Default False. """ # 取得件数が一致すること @@ -88,10 +89,12 @@ def assert_table_results(actual_rows: list[dict], expect_rows: list[dict], ignor expect_value = expect_row[expect_col_name] # 期待値を、DBのデータ型(リフレクションされたpythonのデータ型)にキャストする - if actual_col_name in force_cast_to_str_columns: + if force_cast_to_str_columns is not None and actual_col_name in force_cast_to_str_columns: # DB項目(varchar)に日付型としてキャスト可能な値が期待値である場合、force_cast_to_str_columnsに基づいて強制的に文字列キャストする if type(expect_value).__name__ == 'date': expect_value = expect_value.strftime('%Y-%m-%d') + elif not is_loaddata and expect_value == "": + expect_value = None elif isinstance(actual_value, (int)): # DB項目(int)の場合、期待値もintにキャストする expect_value = int(expect_value) From 568c8417708d1dcd3096e5fda1503a85a9571ee7 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Sat, 16 Sep 2023 15:34:49 +0900 Subject: [PATCH 09/19] =?UTF-8?q?feat:=20=E5=8D=B8=E3=83=9B=E3=83=BC?= =?UTF-8?q?=E3=83=AB=E3=83=87=E3=82=A3=E3=83=B3=E3=82=B0=E3=83=9E=E3=82=B9?= =?UTF-8?q?=E3=82=BF=E3=83=BC=E3=81=AE=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/batch/vjsk/vjsk_recv_file_mapper.py | 26 +++++++++---------- .../batch/vjsk/vjsk_load/test_vjsk_load.py | 10 +++---- .../testdata/hld_mst_202304280000.tsv | 2 ++ .../testdata/hld_mst_202304290000.tsv | 6 ++--- 4 files changed, 23 insertions(+), 21 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py index 51b51cd0..7dcc9ade 100644 --- a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py @@ -326,8 +326,8 @@ class VjskReceiveFileMapper: t.v_hld_cd ,t.sub_num ,t.name - ,t.kn_name - ,t.abb_name + ,medaca_common.convert_empty_to_null(t.kn_name) + ,medaca_common.convert_empty_to_null(t.abb_name) ,t.start_date ,t.end_date ,t.dsp_odr @@ -337,17 +337,17 @@ class VjskReceiveFileMapper: ,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=nullif(t.upd_dt, 0) -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する + v_hld_cd=VALUES(v_hld_cd) + ,sub_num=VALUES(sub_num) + ,name=VALUES(name) + ,kn_name=VALUES(kn_name) + ,abb_name=VALUES(abb_name) + ,start_date=VALUES(start_date) + ,end_date=VALUES(end_date) + ,dsp_odr=VALUES(dsp_odr) + ,rec_sts_kbn=VALUES(rec_sts_kbn) + ,ins_dt=VALUES(ins_dt) + ,upd_dt=VALUES(upd_dt) ,dwh_upd_dt=SYSDATE() ; """) diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py index 05921299..38998356 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py @@ -483,7 +483,7 @@ class TestImportFileToDb: self.batch_context.is_vjsk_stock_import_day = True self.db.execute(f"truncate table {table_name_src}") - # assertion1 (insert 4row) + # assertion1 (insert 6row) # 処理実行 target_dict = { @@ -499,7 +499,7 @@ class TestImportFileToDb: # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # orgテーブル結果が期待値通りかを突合 - assert_table_results(result_org, assert_list, ignore_columns) + assert_table_results(result_org, assert_list, ignore_columns, is_loaddata=True) # srcテーブル結果を取得 result_src = self.db.execute_select(f"select * from {table_name_src}") # 突合から除外する項目 @@ -523,10 +523,10 @@ class TestImportFileToDb: # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # orgテーブル結果が期待値通りかを突合 - assert_table_results(result_org, assert_list, ignore_columns) + assert_table_results(result_org, assert_list, ignore_columns, is_loaddata=True) # srcテーブル結果(orgテーブル結果のPK値で一致するもの)を取得 result_src = self.db.execute_select( - f"select * from {table_name_src} s inner join {table_name_org} o on (s.v_hld_cd = o.v_hld_cd and s.sub_num = o.sub_num)") + f"select s.* from {table_name_src} s inner join {table_name_org} o on (s.v_hld_cd = o.v_hld_cd and s.sub_num = o.sub_num)") # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # srcテーブル結果が期待値通りかを突合 @@ -534,7 +534,7 @@ class TestImportFileToDb: # srcテーブル結果のレコード件数 (insert 4row + update 2row + insert 2row = 6row) result_src_count = self.db.execute_select(f"select count(*) from {table_name_src} ") - assert result_src_count[0]['count(*)'] == 6 + assert result_src_count[0]['count(*)'] == 8 # teardown diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/hld_mst_202304280000.tsv b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/hld_mst_202304280000.tsv index 2c4a8c1f..9199fc0b 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/hld_mst_202304280000.tsv +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/hld_mst_202304280000.tsv @@ -3,3 +3,5 @@ "10001" "2" "卸ホールディングス名01-2" "オロシホールディングスメイ01-2" "卸名01-2" "20230102" "99991231" "1" "0" "23-05-09 12:00:02" "23-05-09 13:00:02" "10001" "3" "卸ホールディングス名01-3" "オロシホールディングスメイ01-3" "卸名01-3" "20230103" "99991231" "1" "0" "23-05-09 12:00:03" "23-05-09 13:00:03" "10001" "4" "卸ホールディングス名01-4" "オロシホールディングスメイ01-4" "卸名01-4" "20230104" "99991231" "1" "0" "23-05-09 12:00:04" "23-05-09 13:00:04" +"10001" "5" "卸ホールディングス名01-5" "" "" "20230104" "99991231" "1" "0" "23-05-09 12:00:06" "23-05-09 13:00:06" +"10001" "6" "卸ホールディングス名01-6" "オロシホールディングスメイ01-6" "卸名01-6" "20230104" "99991231" "1" "0" "23-05-09 12:00:06" "23-05-09 13:00:06" diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/hld_mst_202304290000.tsv b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/hld_mst_202304290000.tsv index 9728bb5f..c5f81610 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/hld_mst_202304290000.tsv +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/hld_mst_202304290000.tsv @@ -1,5 +1,5 @@ "v_hld_cd" "sub_no" "nm" "kn_nm" "sht_nm" "start_dt" "end_dt" "dsp_odr" "rec_sts_kbn" "ins_dt" "upd_dt" -"10001" "3" "卸ホールディングス名01-3" "オロシホールディングスメイ01-3" "卸名01-3" "20230101" "99991231" "1" "0" "23-05-09 12:00:03" "23-05-09 13:00:03" -"10001" "4" "卸ホールディングス名01-4" "オロシホールディングスメイ01-4" "卸名01-4" "20230102" "99991231" "1" "0" "23-05-09 12:00:04" "23-05-09 13:00:04" "10001" "5" "卸ホールディングス名01-5" "オロシホールディングスメイ01-5" "卸名01-5" "20230103" "99991231" "1" "0" "23-05-09 12:00:05" "23-05-09 13:00:05" -"10002" "1" "卸ホールディングス名02-1" "オロシホールディングスメイ02-1" "卸名01-1" "20230104" "99991231" "1" "0" "23-05-09 12:00:06" "23-05-09 13:00:06" +"10001" "6" "卸ホールディングス名01-6" "" "" "20230104" "99991231" "1" "0" "23-05-09 12:00:06" "23-05-09 13:00:06" +"10002" "1" "卸ホールディングス名02-1" "オロシホールディングスメイ02-1" "卸名02-1" "20230104" "99991231" "1" "0" "23-05-09 12:00:06" "23-05-09 13:00:06" +"10002" "2" "卸ホールディングス名02-2" "オロシホールディングスメイ02-2" "卸名02-2" "20230104" "99991231" "1" "0" "23-05-09 12:00:06" "23-05-09 13:00:06" From 92dcd97021bb584a0ecc4c7822830e349ddc5234 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Sat, 16 Sep 2023 15:40:50 +0900 Subject: [PATCH 10/19] =?UTF-8?q?feat:=20=E8=A3=BD=E9=80=A0=E3=83=AD?= =?UTF-8?q?=E3=83=83=E3=83=88=E7=95=AA=E5=8F=B7=E3=83=9E=E3=82=B9=E3=82=BF?= =?UTF-8?q?=E3=81=AE=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/batch/vjsk/vjsk_recv_file_mapper.py | 14 +++++++------- .../tests/batch/vjsk/vjsk_load/test_vjsk_load.py | 10 +++++----- .../testdata/lot_num_mst_202304280000.tsv | 2 ++ .../testdata/lot_num_mst_202304290000.tsv | 4 ++-- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py index 7dcc9ade..75fcfe66 100644 --- a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py @@ -1469,16 +1469,16 @@ class VjskReceiveFileMapper: ,t.expr_dt ,t.frst_mov_dt ,nullif(t.ins_dt, 0) -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する - ,t.ins_usr + ,medaca_common.convert_empty_to_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 + ser_num=VALUES(ser_num) + ,lot_num=VALUES(lot_num) + ,expr_dt=VALUES(expr_dt) + ,frst_mov_dt=VALUES(frst_mov_dt) + ,ins_dt=VALUES(ins_dt) + ,ins_usr=VALUES(ins_usr) ,dwh_upd_dt=SYSDATE() ; """) diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py index 38998356..2e2947c6 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py @@ -1063,7 +1063,7 @@ class TestImportFileToDb: self.batch_context.is_vjsk_stock_import_day = True self.db.execute(f"truncate table {table_name_src}") - # assertion1 (insert 4row) + # assertion1 (insert 6row) # 処理実行 target_dict = { @@ -1079,7 +1079,7 @@ class TestImportFileToDb: # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # orgテーブル結果が期待値通りかを突合 - assert_table_results(result_org, assert_list, ignore_columns) + assert_table_results(result_org, assert_list, ignore_columns, is_loaddata=True) # srcテーブル結果を取得 result_src = self.db.execute_select(f"select * from {table_name_src}") # 突合から除外する項目 @@ -1103,10 +1103,10 @@ class TestImportFileToDb: # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # orgテーブル結果が期待値通りかを突合 - assert_table_results(result_org, assert_list, ignore_columns) + assert_table_results(result_org, assert_list, ignore_columns, is_loaddata=True) # srcテーブル結果(orgテーブル結果のPK値で一致するもの)を取得 result_src = self.db.execute_select( - f"select * from {table_name_src} s inner join {table_name_org} o on (s.ser_num = o.ser_num and s.lot_num = o.lot_num)") + f"select s.* from {table_name_src} s inner join {table_name_org} o on (s.ser_num = o.ser_num and s.lot_num = o.lot_num)") # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # srcテーブル結果が期待値通りかを突合 @@ -1114,7 +1114,7 @@ class TestImportFileToDb: # srcテーブル結果のレコード件数 (insert 4row + update 2row + insert 2row = 6row) result_src_count = self.db.execute_select(f"select count(*) from {table_name_src} ") - assert result_src_count[0]['count(*)'] == 6 + assert result_src_count[0]['count(*)'] == 8 # teardown diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/lot_num_mst_202304280000.tsv b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/lot_num_mst_202304280000.tsv index 3acfb7cc..627d7b66 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/lot_num_mst_202304280000.tsv +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/lot_num_mst_202304280000.tsv @@ -3,3 +3,5 @@ "F0110601" "BAVA002" "20230331" "20210615" "23-05-08 20:40:41" "batch" "F0110601" "BAVA003" "20231031" "20210719" "23-05-08 20:40:41" "batch" "F0110601" "BAVA004" "20231031" "20210823" "23-05-08 20:40:41" "batch" +"F0110602" "BAVA001" "20231031" "20210823" "23-05-08 20:40:41" "" +"F0110602" "BAVA002" "20231031" "20210823" "23-05-08 20:40:41" "batch" diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/lot_num_mst_202304290000.tsv b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/lot_num_mst_202304290000.tsv index c7e86b9a..bdcbd308 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/lot_num_mst_202304290000.tsv +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/lot_num_mst_202304290000.tsv @@ -1,5 +1,5 @@ "ser_no" "lot_num" "expr_dt" "frst_mov_dt" "ins_dt" "ins_usr" -"F0110601" "BAVA003" "20231031" "20210719" "23-05-08 20:40:41" "batch" -"F0110601" "BAVA004" "20231031" "20210823" "23-05-08 20:40:41" "batch" +"F0110602" "BAVA001" "20231031" "20210719" "23-05-08 20:40:41" "batch" +"F0110602" "BAVA002" "20231031" "20210823" "23-05-08 20:40:41" "" "F0110601" "BAVA005" "20231031" "20210927" "23-05-08 20:40:41" "batch" "F0110601" "BAVA006" "20240131" "20211025" "23-05-08 20:40:41" "batch" From a29d71514626cc3f7d934016c950f174f2c25ea7 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Sat, 16 Sep 2023 15:52:18 +0900 Subject: [PATCH 11/19] =?UTF-8?q?feat:=20MDB=E3=82=B3=E3=83=BC=E3=83=89?= =?UTF-8?q?=E5=A4=89=E6=8F=9B=E8=A1=A8=E3=81=AB=E3=81=AF=E5=A4=89=E6=8F=9B?= =?UTF-8?q?=E5=AF=BE=E8=B1=A1=E3=81=8C=E3=81=AA=E3=81=8B=E3=81=A3=E3=81=9F?= =?UTF-8?q?=E3=80=82=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88=E3=81=A0=E3=81=91?= =?UTF-8?q?=E8=BF=BD=E8=A8=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py | 1 + .../tests/batch/vjsk/vjsk_load/test_vjsk_load.py | 1 + 2 files changed, 2 insertions(+) diff --git a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py index 75fcfe66..b88851bf 100644 --- a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py @@ -1057,6 +1057,7 @@ class VjskReceiveFileMapper: ,upd_dt ,dwh_upd_dt ) + -- NULLに変換する対象のカラムはない SELECT t.hco_vid_v ,t.sub_num diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py index 2e2947c6..2b2afd01 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py @@ -930,6 +930,7 @@ class TestImportFileToDb: # teardown def test_load_13_mdb_conv_mst_ok(self, mapper): + # MDBコード変換表には変換対象の文字列型カラムがない table_name_org = mapper.get_org_table(mapper.CONDKEY_MDB_CONV_MST) table_name_src = mapper.get_src_table(mapper.CONDKEY_MDB_CONV_MST) From f238cfb19b8c50b7a9fc54ba39ed7f0a15047c4c Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Sat, 16 Sep 2023 16:17:01 +0900 Subject: [PATCH 12/19] =?UTF-8?q?feat:=20V=E3=83=A1=E3=83=BC=E3=82=AB?= =?UTF-8?q?=E3=83=BC=E5=8D=B8=E7=B5=84=E7=B9=94=E5=B1=95=E9=96=8B=E8=A1=A8?= =?UTF-8?q?=E3=81=AE=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/batch/vjsk/vjsk_recv_file_mapper.py | 112 +++++++++--------- .../batch/vjsk/vjsk_load/test_vjsk_load.py | 10 +- .../testdata/mkr_org_horizon_202304280000.tsv | 2 + .../testdata/mkr_org_horizon_202304290000.tsv | 4 +- 4 files changed, 65 insertions(+), 63 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py index b88851bf..3de47515 100644 --- a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py @@ -483,43 +483,43 @@ class VjskReceiveFileMapper: SELECT t.vid_kind_1 ,t.v_cd_1 - ,t.name_1 + ,medaca_common.convert_empty_to_null(t.name_1) ,t.dsp_odr_1 ,t.vid_kind_2 ,t.v_cd_2 - ,t.name_2 + ,medaca_common.convert_empty_to_null(t.name_2) ,t.dsp_odr_2 ,t.vid_kind_3 ,t.v_cd_3 - ,t.name_3 + ,medaca_common.convert_empty_to_null(t.name_3) ,t.dsp_odr_3 ,t.vid_kind_4 ,t.v_cd_4 - ,t.name_4 + ,medaca_common.convert_empty_to_null(t.name_4) ,t.dsp_odr_4 ,t.vid_kind_5 ,t.v_cd_5 - ,t.name_5 + ,medaca_common.convert_empty_to_null(t.name_5) ,t.dsp_odr_5 ,t.vid_kind_6 ,t.v_cd_6 - ,t.name_6 + ,medaca_common.convert_empty_to_null(t.name_6) ,t.dsp_odr_6 ,t.vid_kind_7 ,t.v_cd_7 - ,t.name_7 + ,medaca_common.convert_empty_to_null(t.name_7) ,t.dsp_odr_7 ,t.vid_kind_8 ,t.v_cd_8 - ,t.name_8 + ,medaca_common.convert_empty_to_null(t.name_8) ,t.dsp_odr_8 ,t.vid_kind_9 ,t.v_cd_9 - ,t.name_9 + ,medaca_common.convert_empty_to_null(t.name_9) ,t.dsp_odr_9 ,t.vid_kind_10 ,t.v_cd_10 - ,t.name_10 + ,medaca_common.convert_empty_to_null(t.name_10) ,t.dsp_odr_10 ,t.v_whs_cd ,t.start_date @@ -530,52 +530,52 @@ class VjskReceiveFileMapper: ,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=nullif(t.upd_dt, 0) + vid_kind_1=VALUES(vid_kind_1) + ,v_cd_1=VALUES(v_cd_1) + ,name_1=VALUES(name_1) + ,dsp_odr_1=VALUES(dsp_odr_1) + ,vid_kind_2=VALUES(vid_kind_2) + ,v_cd_2=VALUES(v_cd_2) + ,name_2=VALUES(name_2) + ,dsp_odr_2=VALUES(dsp_odr_2) + ,vid_kind_3=VALUES(vid_kind_3) + ,v_cd_3=VALUES(v_cd_3) + ,name_3=VALUES(name_3) + ,dsp_odr_3=VALUES(dsp_odr_3) + ,vid_kind_4=VALUES(vid_kind_4) + ,v_cd_4=VALUES(v_cd_4) + ,name_4=VALUES(name_4) + ,dsp_odr_4=VALUES(dsp_odr_4) + ,vid_kind_5=VALUES(vid_kind_5) + ,v_cd_5=VALUES(v_cd_5) + ,name_5=VALUES(name_5) + ,dsp_odr_5=VALUES(dsp_odr_5) + ,vid_kind_6=VALUES(vid_kind_6) + ,v_cd_6=VALUES(v_cd_6) + ,name_6=VALUES(name_6) + ,dsp_odr_6=VALUES(dsp_odr_6) + ,vid_kind_7=VALUES(vid_kind_7) + ,v_cd_7=VALUES(v_cd_7) + ,name_7=VALUES(name_7) + ,dsp_odr_7=VALUES(dsp_odr_7) + ,vid_kind_8=VALUES(vid_kind_8) + ,v_cd_8=VALUES(v_cd_8) + ,name_8=VALUES(name_8) + ,dsp_odr_8=VALUES(dsp_odr_8) + ,vid_kind_9=VALUES(vid_kind_9) + ,v_cd_9=VALUES(v_cd_9) + ,name_9=VALUES(name_9) + ,dsp_odr_9=VALUES(dsp_odr_9) + ,vid_kind_10=VALUES(vid_kind_10) + ,v_cd_10=VALUES(v_cd_10) + ,name_10=VALUES(name_10) + ,dsp_odr_10=VALUES(dsp_odr_10) + ,v_whs_cd=VALUES(v_whs_cd) + ,start_date=VALUES(start_date) + ,end_date=VALUES(end_date) + ,rec_sts_kbn=VALUES(rec_sts_kbn) + ,ins_dt=VALUES(ins_dt) + ,upd_dt=VALUES(upd_dt) ,dwh_upd_dt=SYSDATE() ; """) diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py index 2b2afd01..94cbf055 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py @@ -617,7 +617,7 @@ class TestImportFileToDb: self.batch_context.is_vjsk_stock_import_day = True self.db.execute(f"truncate table {table_name_src}") - # assertion1 (insert 4row) + # assertion1 (insert 6row) # 処理実行 target_dict = { @@ -633,7 +633,7 @@ class TestImportFileToDb: # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # orgテーブル結果が期待値通りかを突合 - assert_table_results(result_org, assert_list, ignore_columns) + assert_table_results(result_org, assert_list, ignore_columns, is_loaddata=True) # srcテーブル結果を取得 result_src = self.db.execute_select(f"select * from {table_name_src}") # 突合から除外する項目 @@ -662,7 +662,7 @@ class TestImportFileToDb: # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # orgテーブル結果が期待値通りかを突合 - assert_table_results(result_org, assert_list, ignore_columns) + assert_table_results(result_org, assert_list, ignore_columns, is_loaddata=True) # srcテーブル結果(orgテーブル結果のPK値で一致するもの)を取得 result_src = self.db.execute_select( f"select * from {table_name_src} where dwh_upd_dt > :dt_value", {"dt_value": assetion1_done_dt}) @@ -671,9 +671,9 @@ class TestImportFileToDb: # srcテーブル結果が期待値通りかを突合 assert_table_results(result_src, assert_list, ignore_columns) - # srcテーブル結果のレコード件数 (insert 4row + update 0row + insert 4row = 8row) ※PK項目がないテーブルなのですべてinsertになる + # srcテーブル結果のレコード件数 (insert 6row + update 0row + insert 4row = 10row) ※PK項目がないテーブルなのですべてinsertになる result_src_count = self.db.execute_select(f"select count(*) from {table_name_src} ") - assert result_src_count[0]['count(*)'] == 8 + assert result_src_count[0]['count(*)'] == 10 # teardown diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/mkr_org_horizon_202304280000.tsv b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/mkr_org_horizon_202304280000.tsv index 3755e224..a782e200 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/mkr_org_horizon_202304280000.tsv +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/mkr_org_horizon_202304280000.tsv @@ -3,3 +3,5 @@ "3" "300003138" "北関東甲信越営業本部" "0" "3" "300003195" "首都圏移管組織" "0" "3" "300003195" "首都圏移管組織" "0" "3" "300003195" "首都圏移管組織" "0" "3" "300003195" "首都圏移管組織" "0" "3" "300003195" "首都圏移管組織" "0" "3" "300003195" "首都圏移管組織" "0" "3" "300003195" "首都圏移管組織" "0" "3" "300003195" "首都圏移管組織" "0" "3" "300003195" "首都圏移管組織" "0" "200000007" "20190401" "99991231" "0" "19-04-11 11:30:59" "23-04-12 17:52:38" "3" "300003202" "その他営業本部卸" "0" "3" "300003226" "大垣(回収)" "0" "3" "300003226" "大垣(回収)" "0" "3" "300003226" "大垣(回収)" "0" "3" "300003226" "大垣(回収)" "0" "3" "300003226" "大垣(回収)" "0" "3" "300003226" "大垣(回収)" "0" "3" "300003226" "大垣(回収)" "0" "3" "300003226" "大垣(回収)" "0" "3" "300003226" "大垣(回収)" "0" "200000007" "20190401" "99991231" "0" "19-04-11 11:30:59" "23-04-12 17:52:38" "a" "300003144" "メディカル営業本部1" "1" "b" "300003202" "東海スタッフ医療2" "2" "c" "300003203" "東海スタッフ医療3" "3" "d" "300003204" "東海スタッフ医療4" "4" "e" "300003205" "東海スタッフ医療5" "5" "f" "300003206" "東海スタッフ医療6" "6" "g" "300003207" "東海スタッフ医療7" "7" "h" "300003208" "東海スタッフ医療8" "8" "i" "300003209" "東海スタッフ医療9" "9" "j" "300003210" "東海スタッフ医療10" "10" "200000007" "20190401" "99991231" "0" "19-04-11 11:30:59" "23-04-12 17:52:38" +"1" "300003144" "" "1" "2" "300003202" "" "2" "c" "300003203" "" "3" "d" "300003204" "" "4" "e" "300003205" "" "5" "f" "300003206" "" "6" "g" "300003207" "" "7" "h" "300003208" "" "8" "i" "300003209" "" "9" "j" "300003210" "" "10" "200000007" "20190401" "99991231" "0" "19-04-11 11:30:59" "23-04-12 17:52:38" +"2" "300003144" "メディカル営業本部1" "1" "b" "300003202" "東海スタッフ医療2" "2" "c" "300003203" "東海スタッフ医療3" "3" "d" "300003204" "東海スタッフ医療4" "4" "e" "300003205" "東海スタッフ医療5" "5" "f" "300003206" "東海スタッフ医療6" "6" "g" "300003207" "東海スタッフ医療7" "7" "h" "300003208" "東海スタッフ医療8" "8" "i" "300003209" "東海スタッフ医療9" "9" "j" "300003210" "東海スタッフ医療10" "10" "200000007" "20190401" "99991231" "0" "19-04-11 11:30:59" "23-04-12 17:52:38" diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/mkr_org_horizon_202304290000.tsv b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/mkr_org_horizon_202304290000.tsv index 71f9d85b..7482316d 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/mkr_org_horizon_202304290000.tsv +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/mkr_org_horizon_202304290000.tsv @@ -1,5 +1,5 @@ "vid_kind_1" "v_cd_1" "nm_1" "dsp_odr_1" "vid_kind_2" "v_cd_2" "nm_2" "dsp_odr_2" "vid_kind_3" "v_cd_3" "nm_3" "dsp_odr_3" "vid_kind_4" "v_cd_4" "nm_4" "dsp_odr_4" "vid_kind_5" "v_cd_5" "nm_5" "dsp_odr_5" "vid_kind_6" "v_cd_6" "nm_6" "dsp_odr_6" "vid_kind_7" "v_cd_7" "nm_7" "dsp_odr_7" "vid_kind_8" "v_cd_8" "nm_8" "dsp_odr_8" "vid_kind_9" "v_cd_9" "nm_9" "dsp_odr_9" "vid_kind_10" "v_cd_10" "nm_10" "dsp_odr_10" "v_whs_cd" "start_dt" "end_dt" "rec_sts_kbn" "ins_dt" "upd_dt" +"1" "300003144" "メディカル営業本部1" "1" "b" "300003202" "東海スタッフ医療2" "2" "c" "300003203" "東海スタッフ医療3" "3" "d" "300003204" "東海スタッフ医療4" "4" "e" "300003205" "東海スタッフ医療5" "5" "f" "300003206" "東海スタッフ医療6" "6" "g" "300003207" "東海スタッフ医療7" "7" "h" "300003208" "東海スタッフ医療8" "8" "i" "300003209" "東海スタッフ医療9" "9" "j" "300003210" "東海スタッフ医療10" "10" "200000007" "20190401" "99991231" "0" "19-04-11 11:30:59" "23-04-12 17:52:38" +"2" "300003144" "" "1" "2" "300003202" "" "2" "c" "300003203" "" "3" "d" "300003204" "" "4" "e" "300003205" "" "5" "f" "300003206" "" "6" "g" "300003207" "" "7" "h" "300003208" "" "8" "i" "300003209" "" "9" "j" "300003210" "" "10" "200000007" "20190401" "99991231" "0" "19-04-11 11:30:59" "23-04-12 17:52:38" "3" "300003202" "その他営業本部卸" "0" "3" "300003226" "大垣(回収)" "0" "3" "300003226" "大垣(回収)" "0" "3" "300003226" "大垣(回収)" "0" "3" "300003226" "大垣(回収)" "0" "3" "300003226" "大垣(回収)" "0" "3" "300003226" "大垣(回収)" "0" "3" "300003226" "大垣(回収)" "0" "3" "300003226" "大垣(回収)" "0" "3" "300003226" "大垣(回収)" "0" "200000007" "20190401" "99991231" "0" "19-04-11 11:30:59" "23-04-12 17:52:38" "3" "300003144" "メディカル営業本部" "0" "3" "300003201" "東海スタッフ医療" "0" "3" "300003201" "東海スタッフ医療" "0" "3" "300003201" "東海スタッフ医療" "0" "3" "300003201" "東海スタッフ医療" "0" "3" "300003201" "東海スタッフ医療" "0" "3" "300003201" "東海スタッフ医療" "0" "3" "300003201" "東海スタッフ医療" "0" "3" "300003201" "東海スタッフ医療" "0" "3" "300003201" "東海スタッフ医療" "0" "200000007" "20190401" "99991231" "0" "19-04-11 11:30:59" "23-04-12 17:52:38" -"3" "300003202" "その他営業本部卸" "0" "3" "300003224" "岐阜第二(回収)" "0" "3" "300003224" "岐阜第二(回収)" "0" "3" "300003224" "岐阜第二(回収)" "0" "3" "300003224" "岐阜第二(回収)" "0" "3" "300003224" "岐阜第二(回収)" "0" "3" "300003224" "岐阜第二(回収)" "0" "3" "300003224" "岐阜第二(回収)" "0" "3" "300003224" "岐阜第二(回収)" "0" "3" "300003224" "岐阜第二(回収)" "0" "200000007" "20190401" "99991231" "0" "19-04-11 11:30:59" "23-04-12 17:52:38" -"3" "300003143" "医薬営業統括本部" "0" "3" "300003196" "医薬その他" "0" "3" "300003196" "医薬その他" "0" "3" "300003196" "医薬その他" "0" "3" "300003196" "医薬その他" "0" "3" "300003196" "医薬その他" "0" "3" "300003196" "医薬その他" "0" "3" "300003196" "医薬その他" "0" "3" "300003196" "医薬その他" "0" "3" "300003196" "医薬その他" "0" "200000007" "20190401" "20190930" "0" "19-04-11 11:30:59" "23-04-12 17:52:38" From 7428f703e9d8f4fbedb77404f3bb10192b9c9925 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Sat, 16 Sep 2023 16:19:41 +0900 Subject: [PATCH 13/19] =?UTF-8?q?feat:=20V=E5=8D=B8=E7=B5=84=E7=B9=94?= =?UTF-8?q?=E5=A4=89=E6=8F=9B=E3=83=9E=E3=82=B9=E3=82=BF=E3=81=AB=E3=81=AF?= =?UTF-8?q?=E5=A4=89=E6=8F=9B=E5=AF=BE=E8=B1=A1=E3=81=8C=E3=81=AA=E3=81=8B?= =?UTF-8?q?=E3=81=A3=E3=81=9F=E3=80=82=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88?= =?UTF-8?q?=E3=81=A0=E3=81=91=E8=BF=BD=E8=A8=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/batch/vjsk/vjsk_recv_file_mapper.py | 1 + .../test_create_bio_sales_lot.py | 31 +++++++++++++++++++ .../batch/vjsk/vjsk_load/test_vjsk_load.py | 3 +- 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 ecs/jskult-batch-daily/test_create_bio_sales_lot.py diff --git a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py index 3de47515..f1ba07a2 100644 --- a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py @@ -604,6 +604,7 @@ class VjskReceiveFileMapper: ,upd_dt ,dwh_upd_dt ) + -- NULLに変換する対象のカラムはない SELECT t.whs_cd ,t.whs_sub_cd diff --git a/ecs/jskult-batch-daily/test_create_bio_sales_lot.py b/ecs/jskult-batch-daily/test_create_bio_sales_lot.py new file mode 100644 index 00000000..6178bda2 --- /dev/null +++ b/ecs/jskult-batch-daily/test_create_bio_sales_lot.py @@ -0,0 +1,31 @@ +import src.batch.bio_sales.create_bio_sales_lot as create_bio_sales_lot +import src.batch.common.batch_context as batch_context + +# context = batch_context.BatchContext.get_instance().is_ultmarc_imported = True +context = batch_context.BatchContext.get_instance().is_not_business_day = False + +# import gzip +# import os +# import tarfile + + +# def main(): + +# gzname = '/Users/shimoda.m/Downloads/bio_slip_data_20230612204112.gz' +# ret = [] +# with tarfile.open(gzname, 'r') as tar: +# temp_dir = os.path.dirname(gzname) +# tar.extractall(path=temp_dir) +# extracted_files = tar.getnames() +# for extracted_file in extracted_files: +# file = os.path.join(temp_dir, extracted_file) +# ret.append(file) +# return ret + + +if __name__ == '__main__': + # main() + create_bio_sales_lot.exec() + + +# tar -zxvf '/Users/shimoda.m/Downloads/bio_slip_data_20230612204112-1.gz' diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py index 94cbf055..1912de73 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py @@ -287,6 +287,7 @@ class TestImportFileToDb: # teardown def test_load_03_org_cnv_mst_ok(self, mapper): + # V卸組織変換マスタにはNULL変換対象の文字列型カラムがない table_name_org = mapper.get_org_table(mapper.CONDKEY_ORG_CNV_MST) table_name_src = mapper.get_src_table(mapper.CONDKEY_ORG_CNV_MST) @@ -930,7 +931,7 @@ class TestImportFileToDb: # teardown def test_load_13_mdb_conv_mst_ok(self, mapper): - # MDBコード変換表には変換対象の文字列型カラムがない + # MDBコード変換表にはNULL変換対象の文字列型カラムがない table_name_org = mapper.get_org_table(mapper.CONDKEY_MDB_CONV_MST) table_name_src = mapper.get_src_table(mapper.CONDKEY_MDB_CONV_MST) From 391e433d1b6872cf4849f53d0eedefa717185bd9 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Sat, 16 Sep 2023 16:30:02 +0900 Subject: [PATCH 14/19] =?UTF-8?q?feat:=20V=E8=A3=BD=E5=93=81=E3=83=9E?= =?UTF-8?q?=E3=82=B9=E3=82=BF=E3=81=AE=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/batch/vjsk/vjsk_recv_file_mapper.py | 86 +++++++++---------- .../batch/vjsk/vjsk_load/test_vjsk_load.py | 12 +-- .../testdata/phm_prd_mst_202304280000.tsv | 2 + .../testdata/phm_prd_mst_202304290000.tsv | 4 +- 4 files changed, 53 insertions(+), 51 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py index f1ba07a2..07188070 100644 --- a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py @@ -821,21 +821,21 @@ class VjskReceiveFileMapper: 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 + ,medaca_common.convert_empty_to_null(t.prd_e_name) + ,medaca_common.convert_empty_to_null(t.mkr_cd) + ,medaca_common.convert_empty_to_null(t.mkr_inf_1) + ,medaca_common.convert_empty_to_null(t.mkr_inf_2) + ,medaca_common.convert_empty_to_null(t.phm_itm_cd) + ,medaca_common.convert_empty_to_null(t.itm_name) + ,medaca_common.convert_empty_to_null(t.itm_abb_name) + ,medaca_common.convert_empty_to_null(t.form_cd) + ,medaca_common.convert_empty_to_null(t.form_name) + ,medaca_common.convert_empty_to_null(t.vol_cd) + ,medaca_common.convert_empty_to_null(t.vol_name) + ,medaca_common.convert_empty_to_null(t.cont_cd) + ,medaca_common.convert_empty_to_null(t.cont_name) + ,medaca_common.convert_empty_to_null(t.pkg_cd) + ,medaca_common.convert_empty_to_null(t.pkg_name) ,t.cnv_num ,nullif(t.jsk_start_dt, 0) -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する ,t.prd_sale_kbn @@ -849,34 +849,34 @@ class VjskReceiveFileMapper: ,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=nullif(t.upd_dt, 0) + prd_cd=VALUES(prd_cd) + ,sub_num=VALUES(sub_num) + ,prd_name=VALUES(prd_name) + ,prd_e_name=VALUES(prd_e_name) + ,mkr_cd=VALUES(mkr_cd) + ,mkr_inf_1=VALUES(mkr_inf_1) + ,mkr_inf_2=VALUES(mkr_inf_2) + ,phm_itm_cd=VALUES(phm_itm_cd) + ,itm_name=VALUES(itm_name) + ,itm_abb_name=VALUES(itm_abb_name) + ,form_cd=VALUES(form_cd) + ,form_name=VALUES(form_name) + ,vol_cd=VALUES(vol_cd) + ,vol_name=VALUES(vol_name) + ,cont_cd=VALUES(cont_cd) + ,cont_name=VALUES(cont_name) + ,pkg_cd=VALUES(pkg_cd) + ,pkg_name=VALUES(pkg_name) + ,cnv_num=VALUES(cnv_num) + ,jsk_start_dt=VALUES(jsk_start_dt) + ,prd_sale_kbn=VALUES(prd_sale_kbn) + ,jsk_proc_kbn=VALUES(jsk_proc_kbn) + ,start_date=VALUES(start_date) + ,end_date=VALUES(end_date) + ,dsp_odr=VALUES(dsp_odr) + ,rec_sts_kbn=VALUES(rec_sts_kbn) + ,ins_dt=VALUES(ins_dt) + ,upd_dt=VALUES(upd_dt) ,dwh_upd_dt=SYSDATE() ; """) diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py index 1912de73..16d5db0c 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py @@ -749,7 +749,7 @@ class TestImportFileToDb: self.batch_context.is_vjsk_stock_import_day = True self.db.execute(f"truncate table {table_name_src}") - # assertion1 (insert 4row) + # assertion1 (insert 6row) # 処理実行 target_dict = { @@ -765,7 +765,7 @@ class TestImportFileToDb: # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # orgテーブル結果が期待値通りかを突合 - assert_table_results(result_org, assert_list, ignore_columns) + assert_table_results(result_org, assert_list, ignore_columns, is_loaddata=True) # srcテーブル結果を取得 result_src = self.db.execute_select(f"select * from {table_name_src}") # 突合から除外する項目 @@ -789,18 +789,18 @@ class TestImportFileToDb: # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # orgテーブル結果が期待値通りかを突合 - assert_table_results(result_org, assert_list, ignore_columns) + assert_table_results(result_org, assert_list, ignore_columns, is_loaddata=True) # srcテーブル結果(orgテーブル結果のPK値で一致するもの)を取得 result_src = self.db.execute_select( - f"select * from {table_name_src} s inner join {table_name_org} o on (s.prd_cd = o.prd_cd and s.sub_num = o.sub_num)") + f"select s.* from {table_name_src} s inner join {table_name_org} o on (s.prd_cd = o.prd_cd and s.sub_num = o.sub_num)") # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # srcテーブル結果が期待値通りかを突合 assert_table_results(result_src, assert_list, ignore_columns) - # srcテーブル結果のレコード件数 (insert 4row + update 2row + insert 2row = 6row) + # srcテーブル結果のレコード件数 (insert 6row + update 2row + insert 2row = 8row) result_src_count = self.db.execute_select(f"select count(*) from {table_name_src} ") - assert result_src_count[0]['count(*)'] == 6 + assert result_src_count[0]['count(*)'] == 8 # teardown diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/phm_prd_mst_202304280000.tsv b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/phm_prd_mst_202304280000.tsv index 9c4d4d86..98d9ba16 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/phm_prd_mst_202304280000.tsv +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/phm_prd_mst_202304280000.tsv @@ -3,3 +3,5 @@ "496201127" "0" "セロフェン 錠剤 50mg 30TAB" "" "F21206A0" "セロフェン 錠 50MG" "SEROPHENE TAB. 50 MG. (30)" "001" "セロフェン" "SP" "F003" "錠剤" "0000" "" "V009" "50mg" "P007" "30TAB" "30" "" "0" "0" "20070401" "20190930" "150" "0" "17-11-08 16:52:41" "19-09-19 11:42:45" "496300110" "2" "ゴナールエフ 皮下注ペン 300IU 1PEN" "" "F1990608" "ゴナールエフ皮下注ペン 300" "GONAL-F PEN 300IU (1) - JPN" "005" "セロスティム" "ST" "F005" "皮下注ペン" "0000" "" "V017" "300IU" "P011" "1PEN" "1" "" "0" "0" "20190501" "20190930" "100" "9" "19-04-23 16:35:36" "19-04-23 16:40:38" "496300127" "2" "ゴナールエフ 皮下注ペン 450IU 1PEN" "" "F19D0608" "ゴナールエフ皮下注ペン450" "Gonalef Pen 450 (1)" "008" "BDマイクロファインプラス" "MF" "F005" "皮下注ペン" "0000" "" "V018" "450IU" "P011" "1PEN" "1" "" "0" "0" "20190501" "20190930" "120" "9" "19-04-23 16:37:10" "19-04-23 16:40:54" +"496300128" "1" "ゴナールエフ 皮下注ペン 450IU 1PEN" "" "F19D0608" "ゴナールエフ皮下注ペン450" "Gonalef Pen 450 (1)" "008" "BDマイクロファインプラス" "MF" "F005" "皮下注ペン" "0000" "" "V018" "450IU" "P011" "1PEN" "1" "" "0" "0" "20190501" "20190930" "120" "9" "19-04-23 16:37:10" "19-04-23 16:40:54" +"496300128" "2" "ゴナールエフ 皮下注ペン 450IU 1PEN" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "1" "" "0" "0" "20190501" "20190930" "120" "9" "19-04-23 16:37:10" "19-04-23 16:40:54" diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/phm_prd_mst_202304290000.tsv b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/phm_prd_mst_202304290000.tsv index 29824385..8656b6c0 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/phm_prd_mst_202304290000.tsv +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/phm_prd_mst_202304290000.tsv @@ -1,5 +1,5 @@ "prd_cd" "sub_no" "prd_nm" "prd_e_nm" "mkr_cd" "mkr_inf_1" "mkr_inf_2" "phm_itm_cd" "itm_nm" "itm_sht_nm" "form_cd" "form_nm" "vol_cd" "vol_nm" "cont_cd" "cont_nm" "pkg_cd" "pkg_nm" "cnv_num" "jsk_start_dt" "prd_sale_kbn" "jsk_proc_kbn" "start_dt" "end_dt" "dsp_odr" "rec_sts_kbn" "ins_dt" "upd_dt" -"496300110" "2" "ゴナールエフ 皮下注ペン 300IU 1PEN" "" "F1990608" "ゴナールエフ皮下注ペン 300" "GONAL-F PEN 300IU (1) - JPN" "005" "セロスティム" "ST" "F005" "皮下注ペン" "0000" "" "V017" "300IU" "P011" "1PEN" "1" "20230601" "0" "0" "20190501" "20190930" "100" "9" "19-04-23 16:35:36" "19-04-23 16:40:38" -"496300127" "2" "ゴナールエフ 皮下注ペン 450IU 1PEN" "" "F19D0608" "ゴナールエフ皮下注ペン450" "Gonalef Pen 450 (1)" "008" "BDマイクロファインプラス" "MF" "F005" "皮下注ペン" "0000" "" "V018" "450IU" "P011" "1PEN" "1" "20230602" "0" "0" "20190501" "20190930" "120" "9" "19-04-23 16:37:10" "19-04-23 16:40:54" +"496300128" "1" "ゴナールエフ 皮下注ペン 450IU 1PEN" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "1" "" "0" "0" "20190501" "20190930" "120" "9" "19-04-23 16:37:10" "19-04-23 16:40:54" +"496300128" "2" "ゴナールエフ 皮下注ペン 450IU 1PEN" "" "F19D0608" "ゴナールエフ皮下注ペン450" "Gonalef Pen 450 (1)" "008" "BDマイクロファインプラス" "MF" "F005" "皮下注ペン" "0000" "" "V018" "450IU" "P011" "1PEN" "1" "" "0" "0" "20190501" "20190930" "120" "9" "19-04-23 16:37:10" "19-04-23 16:40:54" "496300134" "2" "ゴナールエフ 皮下注ペン 900IU 1PEN" "" "F19B0608" "ゴナールエフ皮下注ペン900" "Gonalef Pen 900 (1)" "008" "BDマイクロファインプラス" "MF" "F005" "皮下注ペン" "0000" "" "V019" "900IU" "P011" "1PEN" "1" "20230603" "0" "0" "20190501" "20190930" "110" "9" "19-04-23 16:38:36" "19-04-23 16:41:05" "496301315" "0" "プロファシー 注射剤 5000IU 10VIAL" "" "F47706A0" "プロファシー 注 5000IU" "PROFASI M AMP. 5000 IU (10)" "002" "プロファシー" "PF" "F002" "注射剤" "0000" "" "V020" "5000IU" "P005" "10VIAL" "10" "20230604" "0" "0" "20070401" "20190930" "160" "0" "17-11-08 16:52:41" "19-09-19 11:42:45" From ffc13ab2b393ad2ace505952309c9fcc87dabe57 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Sat, 16 Sep 2023 16:31:48 +0900 Subject: [PATCH 15/19] =?UTF-8?q?feat:=20V=E8=A3=BD=E5=93=81=E4=BE=A1?= =?UTF-8?q?=E6=A0=BC=E3=83=9E=E3=82=B9=E3=82=BF=E3=81=AB=E3=81=AF=E5=A4=89?= =?UTF-8?q?=E6=8F=9B=E5=AF=BE=E8=B1=A1=E3=81=8C=E3=81=AA=E3=81=8B=E3=81=A3?= =?UTF-8?q?=E3=81=9F=E3=80=82=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88=E3=81=A0?= =?UTF-8?q?=E3=81=91=E8=BF=BD=E8=A8=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py | 1 + .../tests/batch/vjsk/vjsk_load/test_vjsk_load.py | 1 + 2 files changed, 2 insertions(+) diff --git a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py index 07188070..7371a860 100644 --- a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py @@ -905,6 +905,7 @@ class VjskReceiveFileMapper: ,dwh_upd_dt ) SELECT + -- NULLに変換する対象のカラムはない t.phm_prd_cd ,t.phm_price_kind ,t.sub_num diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py index 16d5db0c..24edf2a1 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py @@ -805,6 +805,7 @@ class TestImportFileToDb: # teardown def test_load_11_phm_price_mst_ok(self, mapper): + # V製品価格マスタにはNULL変換対象の文字列型カラムがない table_name_org = mapper.get_org_table(mapper.CONDKEY_PHM_PRICE_MST) table_name_src = mapper.get_src_table(mapper.CONDKEY_PHM_PRICE_MST) From 4a32976debc95942fcb36d951e28bb7a73fd8666 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Sat, 16 Sep 2023 16:41:02 +0900 Subject: [PATCH 16/19] =?UTF-8?q?feat:=20V=E5=8F=96=E5=BC=95=E5=8C=BA?= =?UTF-8?q?=E5=88=86=E3=83=9E=E3=82=B9=E3=82=BF=E3=81=AE=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/batch/vjsk/vjsk_recv_file_mapper.py | 20 +++++++++---------- .../batch/vjsk/vjsk_load/test_vjsk_load.py | 20 +++++++++---------- .../testdata/tran_kbn_mst_202304280000.tsv | 2 ++ .../testdata/tran_kbn_mst_202304290000.tsv | 8 ++++---- 4 files changed, 26 insertions(+), 24 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py index 7371a860..6162d07f 100644 --- a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py @@ -660,7 +660,7 @@ class VjskReceiveFileMapper: SELECT t.v_tran_cd ,t.sub_num - ,t.name + ,medaca_common.convert_empty_to_null(t.name) ,t.start_date ,t.end_date ,t.dsp_odr @@ -670,15 +670,15 @@ class VjskReceiveFileMapper: ,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=nullif(t.upd_dt, 0) + v_tran_cd=VALUES(v_tran_cd) + ,sub_num=VALUES(sub_num) + ,name=VALUES(name) + ,start_date=VALUES(start_date) + ,end_date=VALUES(end_date) + ,dsp_odr=VALUES(dsp_odr) + ,rec_sts_kbn=VALUES(rec_sts_kbn) + ,ins_dt=VALUES(ins_dt) + ,upd_dt=VALUES(upd_dt) ,dwh_upd_dt=SYSDATE() ; """) diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py index 24edf2a1..0da0f4ab 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py @@ -280,7 +280,7 @@ class TestImportFileToDb: # srcテーブル結果が期待値通りかを突合 assert_table_results(result_src, assert_list, ignore_columns) - # srcテーブル結果のレコード件数 (insert 6row + update 2row + insert 2row =8row) + # srcテーブル結果のレコード件数 (insert 6row + update 2row + insert 2row = 8row) result_src_count = self.db.execute_select(f"select count(*) from {table_name_src} ") assert result_src_count[0]['count(*)'] == 8 @@ -533,7 +533,7 @@ class TestImportFileToDb: # srcテーブル結果が期待値通りかを突合 assert_table_results(result_src, assert_list, ignore_columns) - # srcテーブル結果のレコード件数 (insert 4row + update 2row + insert 2row = 6row) + # srcテーブル結果のレコード件数 (insert 4row + update 2row + insert 2row = 8row) result_src_count = self.db.execute_select(f"select count(*) from {table_name_src} ") assert result_src_count[0]['count(*)'] == 8 @@ -604,7 +604,7 @@ class TestImportFileToDb: # srcテーブル結果が期待値通りかを突合 assert_table_results(result_src, assert_list, ignore_columns, force_cast_to_str_columns) - # srcテーブル結果のレコード件数 (insert 4row + update 2row + insert 2row = 6row) + # srcテーブル結果のレコード件数 (insert 4row + update 2row + insert 2row = 8row) result_src_count = self.db.execute_select(f"select count(*) from {table_name_src} ") assert result_src_count[0]['count(*)'] == 8 @@ -686,7 +686,7 @@ class TestImportFileToDb: self.batch_context.is_vjsk_stock_import_day = True self.db.execute(f"truncate table {table_name_src}") - # assertion1 (insert 4row) + # assertion1 (insert 6row) # 処理実行 target_dict = { @@ -702,7 +702,7 @@ class TestImportFileToDb: # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # orgテーブル結果が期待値通りかを突合 - assert_table_results(result_org, assert_list, ignore_columns) + assert_table_results(result_org, assert_list, ignore_columns, is_loaddata=True) # srcテーブル結果を取得 result_src = self.db.execute_select(f"select * from {table_name_src}") # 突合から除外する項目 @@ -726,18 +726,18 @@ class TestImportFileToDb: # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # orgテーブル結果が期待値通りかを突合 - assert_table_results(result_org, assert_list, ignore_columns) + assert_table_results(result_org, assert_list, ignore_columns, is_loaddata=True) # srcテーブル結果(orgテーブル結果のPK値で一致するもの)を取得 result_src = self.db.execute_select( - f"select * from {table_name_src} s inner join {table_name_org} o on (s.v_tran_cd = o.v_tran_cd and s.sub_num = o.sub_num)") + f"select s.* from {table_name_src} s inner join {table_name_org} o on (s.v_tran_cd = o.v_tran_cd and s.sub_num = o.sub_num)") # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # srcテーブル結果が期待値通りかを突合 assert_table_results(result_src, assert_list, ignore_columns) - # srcテーブル結果のレコード件数 (insert 4row + update 2row + insert 2row = 6row) + # srcテーブル結果のレコード件数 (insert 4row + update 2row + insert 2row = 8row) result_src_count = self.db.execute_select(f"select count(*) from {table_name_src} ") - assert result_src_count[0]['count(*)'] == 6 + assert result_src_count[0]['count(*)'] == 8 # teardown @@ -1115,7 +1115,7 @@ class TestImportFileToDb: # srcテーブル結果が期待値通りかを突合 assert_table_results(result_src, assert_list, ignore_columns) - # srcテーブル結果のレコード件数 (insert 4row + update 2row + insert 2row = 6row) + # srcテーブル結果のレコード件数 (insert 4row + update 2row + insert 2row = 8row) result_src_count = self.db.execute_select(f"select count(*) from {table_name_src} ") assert result_src_count[0]['count(*)'] == 8 diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/tran_kbn_mst_202304280000.tsv b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/tran_kbn_mst_202304280000.tsv index cb5d5ff8..ee01c830 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/tran_kbn_mst_202304280000.tsv +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/tran_kbn_mst_202304280000.tsv @@ -3,3 +3,5 @@ "10001" "2" "Veeva取引区分名01-2" "20230102" "99991231" "1" "0" "2023-05-09 12:00:02" "2023-05-09 13:00:02" "10001" "3" "Veeva取引区分名01-3" "20230103" "99991231" "1" "0" "2023-05-09 12:00:03" "2023-05-09 13:00:03" "10001" "4" "Veeva取引区分名01-4" "20230104" "99991231" "1" "0" "2023-05-09 12:00:04" "2023-05-09 13:00:04" +"10001" "5" "" "20230104" "99991231" "1" "0" "2023-05-09 12:00:04" "2023-05-09 13:00:04" +"10001" "6" "Veeva取引区分名01-6" "20230104" "99991231" "1" "0" "2023-05-09 12:00:04" "2023-05-09 13:00:04" diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/tran_kbn_mst_202304290000.tsv b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/tran_kbn_mst_202304290000.tsv index 0813b3df..a62dd170 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/tran_kbn_mst_202304290000.tsv +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/tran_kbn_mst_202304290000.tsv @@ -1,5 +1,5 @@ "v_tran_cd" "sub_no" "nm" "start_dt" "end_dt" "dsp_odr" "rec_sts_kbn" "ins_dt" "upd_dt" -"10001" "3" "Veeva取引区分名01-3" "20230201" "20301231" "1" "0" "2023-05-09 12:00:03" "2023-05-09 13:00:03" -"10001" "4" "Veeva取引区分名01-4" "20230202" "20301231" "1" "0" "2023-05-09 12:00:04" "2023-05-09 13:00:04" -"10001" "5" "Veeva取引区分名01-5" "20230203" "20301231" "1" "0" "2023-05-09 12:00:05" "2023-05-09 13:00:05" -"10002" "1" "Veeva取引区分名02-1" "20230204" "20301231" "1" "0" "2023-05-09 12:00:06" "2023-05-09 13:00:06" +"10001" "5" "Veeva取引区分名01-5" "20230104" "99991231" "1" "0" "2023-05-09 12:00:04" "2023-05-09 13:00:04" +"10001" "6" "" "20230104" "99991231" "1" "0" "2023-05-09 12:00:04" "2023-05-09 13:00:04" +"10002" "1" "Veeva取引区分名0-1" "20230203" "20301231" "1" "0" "2023-05-09 12:00:05" "2023-05-09 13:00:05" +"10002" "2" "Veeva取引区分名02-2" "20230204" "20301231" "1" "0" "2023-05-09 12:00:06" "2023-05-09 13:00:06" From ae4a40a8bd954e28efc5001cb87fcab4c2b9f2b5 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Sat, 16 Sep 2023 16:44:13 +0900 Subject: [PATCH 17/19] =?UTF-8?q?feat:=20V=E6=96=BD=E8=A8=AD=E7=B5=B1?= =?UTF-8?q?=E5=90=88=E3=83=9E=E3=82=B9=E3=82=BF=E3=81=AB=E3=81=AF=E5=A4=89?= =?UTF-8?q?=E6=8F=9B=E5=AF=BE=E8=B1=A1=E3=81=8C=E3=81=AA=E3=81=8B=E3=81=A3?= =?UTF-8?q?=E3=81=9F=E3=80=82=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88=E3=81=A0?= =?UTF-8?q?=E3=81=91=E8=BF=BD=E8=A8=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py | 1 + .../tests/batch/vjsk/vjsk_load/test_vjsk_load.py | 1 + 2 files changed, 2 insertions(+) diff --git a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py index 6162d07f..ae1f8529 100644 --- a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py @@ -950,6 +950,7 @@ class VjskReceiveFileMapper: ,merge_reason ,dwh_upd_dt ) + -- NULLに変換する対象のカラムはない SELECT t.v_inst_cd ,t.v_inst_cd_merg diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py index 0da0f4ab..87510db7 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py @@ -351,6 +351,7 @@ class TestImportFileToDb: # teardown def test_load_04_vop_hco_merge_ok(self, mapper): + # V施設統合マスタにはNULL変換対象の文字列型カラムがない table_name_org = mapper.get_org_table(mapper.CONDKEY_VOP_HCO_MERGE) table_name_src = mapper.get_src_table(mapper.CONDKEY_VOP_HCO_MERGE) From 59b2ac98a738df7570751fb08fc6dde2e1eb7060 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Sat, 16 Sep 2023 16:54:25 +0900 Subject: [PATCH 18/19] =?UTF-8?q?feat:=20V=E5=8D=B8=E5=BE=97=E6=84=8F?= =?UTF-8?q?=E5=85=88=E6=83=85=E5=A0=B1=E3=83=9E=E3=82=B9=E3=82=BF=E3=81=AE?= =?UTF-8?q?=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/batch/vjsk/vjsk_recv_file_mapper.py | 50 +++++++++---------- .../batch/vjsk/vjsk_load/test_vjsk_load.py | 20 ++++---- .../whs_customer_mst_202304280000.tsv | 2 + .../whs_customer_mst_202304290000.tsv | 4 +- 4 files changed, 39 insertions(+), 37 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py index ae1f8529..e5199f38 100644 --- a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py @@ -1004,37 +1004,37 @@ class VjskReceiveFileMapper: ,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 + ,medaca_common.convert_empty_to_null(t.whs_org_cd) + ,medaca_common.convert_empty_to_null(t.src_org_cd) + ,medaca_common.convert_empty_to_null(t.name) + ,medaca_common.convert_empty_to_null(t.kn_name) + ,medaca_common.convert_empty_to_null(t.addr) + ,medaca_common.convert_empty_to_null(t.kn_addr) + ,medaca_common.convert_empty_to_null(t.postal_cd) + ,medaca_common.convert_empty_to_null(t.tel_num) ,t.rec_sts_kbn ,nullif(t.ins_dt, 0) -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する ,nullif(t.upd_dt, 0) -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する ,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=nullif(t.upd_dt, 0) + whs_cd=VALUES(whs_cd) + ,whs_sub_cd=VALUES(whs_sub_cd) + ,customer_cd=VALUES(customer_cd) + ,sub_num=VALUES(sub_num) + ,start_date=VALUES(start_date) + ,end_date=VALUES(end_date) + ,whs_org_cd=VALUES(whs_org_cd) + ,src_org_cd=VALUES(src_org_cd) + ,name=VALUES(name) + ,kn_name=VALUES(kn_name) + ,addr=VALUES(addr) + ,kn_addr=VALUES(kn_addr) + ,postal_cd=VALUES(postal_cd) + ,tel_num=VALUES(tel_num) + ,rec_sts_kbn=VALUES(rec_sts_kbn) + ,ins_dt=VALUES(ins_dt) + ,upd_dt=VALUES(upd_dt) ,dwh_upd_dt=SYSDATE() ; """) diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py index 87510db7..f6616bf4 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py @@ -534,7 +534,7 @@ class TestImportFileToDb: # srcテーブル結果が期待値通りかを突合 assert_table_results(result_src, assert_list, ignore_columns) - # srcテーブル結果のレコード件数 (insert 4row + update 2row + insert 2row = 8row) + # srcテーブル結果のレコード件数 (insert 6row + update 2row + insert 2row = 8row) result_src_count = self.db.execute_select(f"select count(*) from {table_name_src} ") assert result_src_count[0]['count(*)'] == 8 @@ -605,7 +605,7 @@ class TestImportFileToDb: # srcテーブル結果が期待値通りかを突合 assert_table_results(result_src, assert_list, ignore_columns, force_cast_to_str_columns) - # srcテーブル結果のレコード件数 (insert 4row + update 2row + insert 2row = 8row) + # srcテーブル結果のレコード件数 (insert 6row + update 2row + insert 2row = 8row) result_src_count = self.db.execute_select(f"select count(*) from {table_name_src} ") assert result_src_count[0]['count(*)'] == 8 @@ -736,7 +736,7 @@ class TestImportFileToDb: # srcテーブル結果が期待値通りかを突合 assert_table_results(result_src, assert_list, ignore_columns) - # srcテーブル結果のレコード件数 (insert 4row + update 2row + insert 2row = 8row) + # srcテーブル結果のレコード件数 (insert 6row + update 2row + insert 2row = 8row) result_src_count = self.db.execute_select(f"select count(*) from {table_name_src} ") assert result_src_count[0]['count(*)'] == 8 @@ -877,7 +877,7 @@ class TestImportFileToDb: self.batch_context.is_vjsk_stock_import_day = True self.db.execute(f"truncate table {table_name_src}") - # assertion1 (insert 4row) + # assertion1 (insert 6row) # 処理実行 target_dict = { @@ -893,7 +893,7 @@ class TestImportFileToDb: # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # orgテーブル結果が期待値通りかを突合 - assert_table_results(result_org, assert_list, ignore_columns) + assert_table_results(result_org, assert_list, ignore_columns, is_loaddata=True) # srcテーブル結果を取得 result_src = self.db.execute_select(f"select * from {table_name_src}") # 突合から除外する項目 @@ -917,18 +917,18 @@ class TestImportFileToDb: # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # orgテーブル結果が期待値通りかを突合 - assert_table_results(result_org, assert_list, ignore_columns) + assert_table_results(result_org, assert_list, ignore_columns, is_loaddata=True) # srcテーブル結果(orgテーブル結果のPK値で一致するもの)を取得 result_src = self.db.execute_select( - f"select * from {table_name_src} s inner join {table_name_org} o on (s.whs_cd = o.whs_cd and s.whs_sub_cd = o.whs_sub_cd and s.customer_cd = o.customer_cd and s.sub_num = o.sub_num)") + f"select s.* from {table_name_src} s inner join {table_name_org} o on (s.whs_cd = o.whs_cd and s.whs_sub_cd = o.whs_sub_cd and s.customer_cd = o.customer_cd and s.sub_num = o.sub_num)") # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # srcテーブル結果が期待値通りかを突合 assert_table_results(result_src, assert_list, ignore_columns) - # srcテーブル結果のレコード件数 (insert 4row + update 2row + insert 2row = 6row) + # srcテーブル結果のレコード件数 (insert 6row + update 2row + insert 2row = 8row) result_src_count = self.db.execute_select(f"select count(*) from {table_name_src} ") - assert result_src_count[0]['count(*)'] == 6 + assert result_src_count[0]['count(*)'] == 8 # teardown @@ -1116,7 +1116,7 @@ class TestImportFileToDb: # srcテーブル結果が期待値通りかを突合 assert_table_results(result_src, assert_list, ignore_columns) - # srcテーブル結果のレコード件数 (insert 4row + update 2row + insert 2row = 8row) + # srcテーブル結果のレコード件数 (insert 6row + update 2row + insert 2row = 8row) result_src_count = self.db.execute_select(f"select count(*) from {table_name_src} ") assert result_src_count[0]['count(*)'] == 8 diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/whs_customer_mst_202304280000.tsv b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/whs_customer_mst_202304280000.tsv index 0c23e674..5e0410dc 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/whs_customer_mst_202304280000.tsv +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/whs_customer_mst_202304280000.tsv @@ -3,3 +3,5 @@ "006" "01" "1005400000" "0" "20000101" "99991231" "12" "1211C3415515" "医療法人 愛恵会 佐世保愛恵病院       " "イリヨウホウジンアイケイカイサセボアイケイビ" "長崎県 佐世保市瀬戸越4丁目 2−15             " "ナガサキケン サセボシセトゴシ 4チヨウメ 2-15" "8570134" "0956493335" "0" "23-04-14 11:53:14" "23-04-14 11:53:14" "006" "01" "1007200000" "0" "20000101" "99991231" "11" "1131A2407312" "医療法人 山祇診療所             " "イリヨウホウジンヤマズミシンリヨウジヨ" "長崎県 佐世保市山祇町 19−36               " "ナガサキケン サセボシヤマズミチョウ" "8570822" "0956313633" "0" "23-04-14 11:53:14" "23-04-14 11:53:14" "006" "01" "1007800000" "0" "20000101" "99991231" "11" "1121A2402213" "医療法人道仁会 品川医院           " "イリヨウホウジンドウジンカイ シナガワイイン" "長崎県 佐世保市柚木町2188                 " "ナガサキケン サセボシユノキチヨウ 2188" "8570112" "0956460005" "0" "23-04-14 11:53:14" "23-04-14 11:53:14" +"006" "01" "1009200000" "0" "20000101" "99991231" "" "" "" "" "" "" "" "" "0" "23-04-14 11:53:14" "23-04-14 11:53:14" +"006" "01" "1009300000" "0" "20000101" "99991231" "11" "1121A2224212" "山口医院2                  " "ヤマグチイイン" "長崎県 佐世保市春日町29−14                " "ナガサキケン サセボシカスガチヨウ29-14" "8570011" "0956228610" "0" "23-04-14 11:53:14" "23-04-14 11:53:14" diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/whs_customer_mst_202304290000.tsv b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/whs_customer_mst_202304290000.tsv index e5c22a27..3b15a520 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/whs_customer_mst_202304290000.tsv +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/whs_customer_mst_202304290000.tsv @@ -1,5 +1,5 @@ "whs_cd" "whs_sub_cd" "customer_cd" "sub_no" "start_dt" "end_dt" "org_cd" "src_org_cd" "nm" "kn_nm" "addr" "kn_addr" "zip_cd" "tel_no" "rec_sts_kbn" "ins_dt" "upd_dt" -"006" "01" "1007200000" "0" "20000101" "99991231" "11" "1131A2407312" "医療法人 山祇診療所2            " "イリヨウホウジンヤマズミシンリヨウジヨ" "長崎県 佐世保市山祇町 19−36               " "ナガサキケン サセボシヤマズミチョウ" "8570822" "0956313633" "0" "23-04-14 11:53:14" "23-04-14 11:53:14" -"006" "01" "1007800000" "0" "20000101" "99991231" "11" "1121A2402213" "医療法人道仁会 品川医院2          " "イリヨウホウジンドウジンカイ シナガワイイン" "長崎県 佐世保市柚木町2188                 " "ナガサキケン サセボシユノキチヨウ 2188" "8570112" "0956460005" "0" "23-04-14 11:53:14" "23-04-14 11:53:14" +"006" "01" "1009200000" "0" "20000101" "99991231" "11" "1121A2224212" "山口医院2                  " "ヤマグチイイン" "長崎県 佐世保市春日町29−14                " "ナガサキケン サセボシカスガチヨウ29-14" "8570011" "0956228610" "0" "23-04-14 11:53:14" "23-04-14 11:53:14" +"006" "01" "1009300000" "0" "20000101" "99991231" "" "" "" "" "" "" "" "" "0" "23-04-14 11:53:14" "23-04-14 11:53:14" "006" "01" "1008000000" "0" "20000101" "99991231" "11" "1131A2283316" "北原整形外科医院2              " "キタハラセイケイゲカ イイン" "長崎県 佐世保市瀬戸越町4丁目1298−1           " "ナガサキケン サセボシセトゴシチヨウ 1298-1" "8570135" "0956497773" "0" "23-04-14 11:53:14" "23-04-14 11:53:14" "006" "01" "1009100000" "0" "20000101" "99991231" "11" "1121A2224212" "山口医院2                  " "ヤマグチイイン" "長崎県 佐世保市春日町29−14                " "ナガサキケン サセボシカスガチヨウ29-14" "8570011" "0956228610" "0" "23-04-14 11:53:14" "23-04-14 11:53:14" From 5bc1159fa93cb6a08d05432dcdae877ccf75ee0a Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Sat, 16 Sep 2023 17:07:40 +0900 Subject: [PATCH 19/19] =?UTF-8?q?feat:=20V=E5=8D=B8=E3=83=9E=E3=82=B9?= =?UTF-8?q?=E3=82=BF=E3=81=AE=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/batch/vjsk/vjsk_recv_file_mapper.py | 44 +++++++++---------- .../batch/vjsk/vjsk_load/test_vjsk_load.py | 12 ++--- .../testdata/whs_mst_202304280000.tsv | 2 + .../testdata/whs_mst_202304290000.tsv | 8 ++-- 4 files changed, 34 insertions(+), 32 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py index e5199f38..905691a2 100644 --- a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py @@ -385,12 +385,12 @@ class VjskReceiveFileMapper: 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 + ,medaca_common.convert_empty_to_null(t.kn_name) + ,medaca_common.convert_empty_to_null(t.abb_name) + ,medaca_common.convert_empty_to_null(t.postal_cd) + ,medaca_common.convert_empty_to_null(t.addr) + ,medaca_common.convert_empty_to_null(t.kn_addr) + ,medaca_common.convert_empty_to_null(t.tel_num) ,t.v_hld_cd ,t.start_date ,t.end_date @@ -401,22 +401,22 @@ class VjskReceiveFileMapper: ,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=nullif(t.upd_dt, 0) + v_whs_cd=VALUES(v_whs_cd) + ,sub_num=VALUES(sub_num) + ,name=VALUES(name) + ,kn_name=VALUES(kn_name) + ,abb_name=VALUES(abb_name) + ,postal_cd=VALUES(postal_cd) + ,addr=VALUES(addr) + ,kn_addr=VALUES(kn_addr) + ,tel_num=VALUES(tel_num) + ,v_hld_cd=VALUES(v_hld_cd) + ,start_date=VALUES(start_date) + ,end_date=VALUES(end_date) + ,dsp_odr=VALUES(dsp_odr) + ,rec_sts_kbn=VALUES(rec_sts_kbn) + ,ins_dt=VALUES(ins_dt) + ,upd_dt=VALUES(upd_dt) ,dwh_upd_dt=SYSDATE() ; """) diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py index f6616bf4..d40550ce 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py @@ -422,7 +422,7 @@ class TestImportFileToDb: self.batch_context.is_vjsk_stock_import_day = True self.db.execute(f"truncate table {table_name_src}") - # assertion1 (insert 4row) + # assertion1 (insert 6row) # 処理実行 target_dict = { @@ -438,7 +438,7 @@ class TestImportFileToDb: # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # orgテーブル結果が期待値通りかを突合 - assert_table_results(result_org, assert_list, ignore_columns) + assert_table_results(result_org, assert_list, ignore_columns, is_loaddata=True) # srcテーブル結果を取得 result_src = self.db.execute_select(f"select * from {table_name_src}") # 突合から除外する項目 @@ -462,18 +462,18 @@ class TestImportFileToDb: # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # orgテーブル結果が期待値通りかを突合 - assert_table_results(result_org, assert_list, ignore_columns) + assert_table_results(result_org, assert_list, ignore_columns, is_loaddata=True) # srcテーブル結果(orgテーブル結果のPK値で一致するもの)を取得 result_src = self.db.execute_select( - f"select * from {table_name_src} s inner join {table_name_org} o on (s.v_whs_cd = o.v_whs_cd and s.sub_num = o.sub_num)") + f"select s.* from {table_name_src} s inner join {table_name_org} o on (s.v_whs_cd = o.v_whs_cd and s.sub_num = o.sub_num)") # 突合から除外する項目 ignore_columns = ['dwh_upd_dt'] # srcテーブル結果が期待値通りかを突合 assert_table_results(result_src, assert_list, ignore_columns) - # srcテーブル結果のレコード件数 (insert 4row + update 2row + insert 2row = 6row) + # srcテーブル結果のレコード件数 (insert 6row + update 2row + insert 2row = 8row) result_src_count = self.db.execute_select(f"select count(*) from {table_name_src} ") - assert result_src_count[0]['count(*)'] == 6 + assert result_src_count[0]['count(*)'] == 8 # teardown diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/whs_mst_202304280000.tsv b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/whs_mst_202304280000.tsv index e9280e36..d4a060b7 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/whs_mst_202304280000.tsv +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/whs_mst_202304280000.tsv @@ -3,3 +3,5 @@ "200000005" "0" "岩渕薬品株式会社" "カナ02" "岩渕薬品" "1110002" "住所02" "ジュウショ02" "00-0000-0002" "0" "20000101" "99991231" "50" "0" "16-04-15 16:25:33" "16-04-15 16:25:33" "200000009" "0" "株式会社マルタケ" "カナ03" "マルタケ" "1110003" "住所03" "ジュウショ03" "00-0000-0003" "0" "20000101" "99991231" "90" "0" "16-04-15 16:25:33" "16-04-15 16:25:33" "200000010" "0" "株式会社ファイネス" "カナ04" "ファイネス" "1110004" "住所04" "ジュウショ04" "00-0000-0004" "0" "20000101" "99991231" "100" "0" "16-04-15 16:25:33" "16-04-15 16:25:33" +"200000011" "0" "鍋林株式会社" "" "" "" "" "" "" "0" "20000101" "99991231" "100" "0" "16-04-15 16:25:33" "16-04-15 16:25:33" +"200000012" "0" "岡野薬品株式会社" "カナ06" "岡野薬品" "1110004" "住所04" "ジュウショ04" "00-0000-0004" "0" "20000101" "99991231" "100" "0" "16-04-15 16:25:33" "16-04-15 16:25:33" \ No newline at end of file diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/whs_mst_202304290000.tsv b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/whs_mst_202304290000.tsv index c16f188e..01e5ba6b 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/whs_mst_202304290000.tsv +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/whs_mst_202304290000.tsv @@ -1,5 +1,5 @@ "v_whs_cd" "sub_no" "nm" "kn_nm" "sht_nm" "zip_cd" "addr" "kn_addr" "tel_no" "v_hld_cd" "start_dt" "end_dt" "dsp_odr" "rec_sts_kbn" "ins_dt" "upd_dt" -"200000009" "0" "株式会社マルタケ" "" "マルタケ" "" "" "" "" "0" "20000101" "99991231" "90" "0" "16-04-15 16:25:33" "16-04-15 16:25:33" -"200000010" "0" "株式会社ファイネス" "" "ファイネス" "" "" "" "" "0" "20000101" "99991231" "100" "0" "16-04-15 16:25:33" "16-04-15 16:25:33" -"200000011" "0" "鍋林株式会社" "" "鍋林" "" "" "" "" "0" "20000101" "99991231" "110" "0" "16-04-15 16:25:33" "16-04-15 16:25:33" -"200000012" "0" "岡野薬品株式会社" "" "岡野薬品" "" "" "" "" "0" "20000101" "99991231" "120" "0" "16-04-15 16:25:33" "16-04-15 16:25:33" +"200000011" "0" "鍋林株式会社" "カナ05" "鍋林" "1110004" "住所04" "ジュウショ04" "00-0000-0004" "0" "20000101" "99991231" "100" "0" "16-04-15 16:25:33" "16-04-15 16:25:33" +"200000012" "0" "岡野薬品株式会社" "" "" "" "" "" "" "0" "20000101" "99991231" "100" "0" "16-04-15 16:25:33" "16-04-15 16:25:33" +"200000013" "0" "株式会社アスティス" "" "アスティス" "" "" "" "" "0" "20000101" "99991231" "110" "0" "16-04-15 16:25:33" "16-04-15 16:25:33" +"200000014" "0" "株式会社スズケン岩手" "" "スズケン岩手" "" "" "" "" "0" "20000101" "99991231" "120" "0" "16-04-15 16:25:33" "16-04-15 16:25:33"