From 5f4efd451def5911198a8826a117cec361e6ee87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=9C=A8=E8=A6=81?= Date: Mon, 12 Jun 2023 10:30:52 +0900 Subject: [PATCH] =?UTF-8?q?feat:=2048-1.=E5=8D=B8=E5=AE=9F=E7=B8=BE?= =?UTF-8?q?=E6=B4=97=E6=9B=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecs/jskult-batch-daily/.env.example | 6 + .../src/batch/laundering/sales_laundering.py | 6 +- .../laundering/sales_results_laundering.py | 85 +- .../src/system_var/environment.py | 7 + .../src05/hco_to_mdb_laundering.sql | 40 +- .../src05/inst_merge_laundering.sql | 57 +- .../src05/sales_lau_delete.sql | 20 +- .../src05/sales_lau_upsert.sql | 864 +++++++++--------- .../src05/v_inst_merge_laundering.sql | 86 +- .../src05/whs_org_laundering.sql | 59 +- 10 files changed, 629 insertions(+), 601 deletions(-) diff --git a/ecs/jskult-batch-daily/.env.example b/ecs/jskult-batch-daily/.env.example index 95aef7fe..7463e0d2 100644 --- a/ecs/jskult-batch-daily/.env.example +++ b/ecs/jskult-batch-daily/.env.example @@ -11,3 +11,9 @@ ULTMARC_BACKUP_FOLDER=ultmarc JSKULT_CONFIG_BUCKET=********************** JSKULT_CONFIG_CALENDAR_FOLDER=jskult/calendar JSKULT_CONFIG_CALENDAR_HOLIDAY_LIST_FILE_NAME=jskult_holiday_list.txt +# 連携データ抽出期間 +SALES_LAUNDERING_EXTRACT_DATE_PERIOD=0 +# 洗替対象テーブル名 +SALES_LAUNDERING_TARGET_TABLE_NAME=src05.sales_lau +# 卸実績洗替で作成するデータの期間(年単位) +SALES_LAUNDERING_TARGET_YEAR_OFFSET=5 \ No newline at end of file diff --git a/ecs/jskult-batch-daily/src/batch/laundering/sales_laundering.py b/ecs/jskult-batch-daily/src/batch/laundering/sales_laundering.py index 3862177e..8264f4bd 100644 --- a/ecs/jskult-batch-daily/src/batch/laundering/sales_laundering.py +++ b/ecs/jskult-batch-daily/src/batch/laundering/sales_laundering.py @@ -1,5 +1,7 @@ from src.batch.common.batch_context import BatchContext -from src.batch.laundering import create_inst_merge_for_laundering, emp_chg_inst_laundering, ult_ident_presc_laundering +from src.batch.laundering import ( + create_inst_merge_for_laundering, emp_chg_inst_laundering, + ult_ident_presc_laundering, sales_results_laundering) from src.logging.get_logger import get_logger batch_context = BatchContext.get_instance() @@ -21,7 +23,7 @@ def exec(): # 納入先処方元マスタ洗替 ult_ident_presc_laundering.exec() # 卸販売洗替 - + sales_results_laundering.exec() # # 並列処理のテスト用コード # import time diff --git a/ecs/jskult-batch-daily/src/batch/laundering/sales_results_laundering.py b/ecs/jskult-batch-daily/src/batch/laundering/sales_results_laundering.py index 979f1042..4fe4126a 100644 --- a/ecs/jskult-batch-daily/src/batch/laundering/sales_results_laundering.py +++ b/ecs/jskult-batch-daily/src/batch/laundering/sales_results_laundering.py @@ -2,6 +2,7 @@ from src.db.database import Database from src.error.exceptions import BatchOperationException from src.logging.get_logger import get_logger from src.batch.batch_functions import logging_sql +from src.system_var import environment logger = get_logger('卸実績洗替') @@ -12,15 +13,15 @@ def exec(): db.connect() logger.debug('処理開始') # 卸販売実績テーブル(洗替後)過去5年以前のデータ削除 - _call_sales_lau_delete(db, 'sales_lau', 5) + _call_sales_lau_delete(db) # 卸販売実績テーブル(洗替後)作成 - _call_sales_lau_upsert(db, 'sales_lau', '', '') + _call_sales_lau_upsert(db) # 1:卸組織洗替 - _call_whs_org_laundering(db, 'sales_lau') + _call_whs_org_laundering(db) # 3:HCO施設コードの洗替 - _update_sales_lau_from_vop_hco_merge_v(db, 'sales_lau') + _update_sales_lau_from_vop_hco_merge_v(db) # 4:メルク施設コードの洗替 - _update_mst_inst_laundering(db, 'sales_lau') + _update_mst_inst_laundering(db) logger.debug('処理終了') except Exception as e: raise BatchOperationException(e) @@ -28,35 +29,49 @@ def exec(): db.disconnect() -def _call_sales_lau_delete(db: Database, target_table: str, set_year: int): +def _call_sales_lau_delete(db: Database): # 卸販売実績テーブル(洗替後)過去5年以前のデータ削除 logger.info('sales_lau_delete(プロシージャ―) 開始') - db.execute(f'CALL src05.sales_lau_delete("{target_table}", {set_year})') + db.execute(f""" + CALL src05.sales_lau_delete( + '{environment.SALES_LAUNDERING_TARGET_TABLE_NAME}', + {environment.SALES_LAUNDERING_TARGET_YEAR_OFFSET} + ) + """) logger.info('sales_lau_delete(プロシージャ―) 終了') return -def _call_sales_lau_upsert(db: Database, target_table: str, extract_from_date: str, - extract_to_date: str): +def _call_sales_lau_upsert(db: Database): # 卸販売実績テーブル(洗替後)作成 - logger.info('sales_lau_delete(プロシージャ―) 開始') - db.execute(f'CALL src05.sales_lau_delete("{target_table}", "{extract_from_date}", "{extract_to_date}")') - logger.info('sales_lau_delete(プロシージャ―) 終了') + logger.info('sales_lau_upsert(プロシージャ―) 開始') + db.execute(f""" + CALL src05.sales_lau_upsert( + '{environment.SALES_LAUNDERING_TARGET_TABLE_NAME}', + (src05.get_syor_date() - {environment.SALES_LAUNDERING_EXTRACT_DATE_PERIOD}), + src05.get_syor_date() + ) + """) + logger.info('sales_lau_upsert(プロシージャ―) 終了') return -def _call_whs_org_laundering(db: Database, target_table: str): +def _call_whs_org_laundering(db: Database): # 卸組織洗替 logger.info('whs_org_laundering(プロシージャ―) 開始') - db.execute(f'CALL src05.whs_org_laundering("{target_table}")') + db.execute(f""" + CALL src05.whs_org_laundering( + '{environment.SALES_LAUNDERING_TARGET_TABLE_NAME}' + ) + """) logger.info('whs_org_laundering(プロシージャ―) 終了') return -def _update_sales_lau_from_vop_hco_merge_v(db: Database, target_table: str): +def _update_sales_lau_from_vop_hco_merge_v(db: Database): # HCO施設コードの洗替 if _count_vop_hco_merge_v(db) >= 1: - _call_v_inst_merge_laundering(db, target_table) + _call_v_inst_merge_laundering(db) return logger.info('V施設統合マスタにデータは存在しません') return @@ -81,32 +96,40 @@ def _count_vop_hco_merge_v(db: Database) -> int: return result[0]['cnt'] -def _call_v_inst_merge_laundering(db: Database, target_table: str): - # HCO施設コードの洗替(テーブル更新) +def _call_v_inst_merge_laundering(db: Database): + # HCO施設コードの洗替(プロシージャ―の呼び出し) logger.info('v_inst_merge_laundering(プロシージャ―) 開始') - db.execute(f'CALL src05.v_inst_merge_laundering("{target_table}")') + db.execute(f""" + CALL src05.v_inst_merge_laundering( + '{environment.SALES_LAUNDERING_TARGET_TABLE_NAME}' + ) + """) logger.info('v_inst_merge_laundering(プロシージャ―) 終了') return -def _update_mst_inst_laundering(db: Database, target_table: str): +def _update_mst_inst_laundering(db: Database): # メルク施設コードの洗替 - _call_hco_to_mdb_laundering(db, target_table) - _update_sales_lau_from_dcf_inst_merge(db, target_table) + _call_hco_to_mdb_laundering(db) + _update_sales_lau_from_dcf_inst_merge(db) -def _call_hco_to_mdb_laundering(db: Database, target_table: str): +def _call_hco_to_mdb_laundering(db: Database): # A:医療機関のデータはMDB変換表からHCO⇒DCFへ変換 logger.info('hco_to_mdb_laundering(プロシージャ―) 開始') - db.execute(f'CALL src05.hco_to_mdb_laundering("{target_table}")') + db.execute(f""" + CALL src05.hco_to_mdb_laundering( + '{environment.SALES_LAUNDERING_TARGET_TABLE_NAME}' + ) + """) logger.info('hco_to_mdb_laundering(プロシージャ―) 終了') return -def _update_sales_lau_from_dcf_inst_merge(db: Database, target_table: str): +def _update_sales_lau_from_dcf_inst_merge(db: Database): # B:DCF施設統合マスタがある場合は、コードを変換し、住所等をSETする if _count_dcf_inst_merge(db) >= 1: - _call_inst_merge_laundering(db, target_table) + _call_inst_merge_laundering(db) return logger.info('DCF施設統合マスタにデータは存在しません') return @@ -131,9 +154,13 @@ def _count_dcf_inst_merge(db: Database) -> int: return result[0]['cnt'] -def _call_inst_merge_laundering(db: Database, target_table: str): - # B:DCF施設統合マスタがある場合は、コードを変換し、住所等をSETする(テーブル更新) +def _call_inst_merge_laundering(db: Database): + # B:DCF施設統合マスタがある場合は、コードを変換し、住所等をSETする(プロシージャ―の呼び出し) logger.info('inst_merge_laundering(プロシージャ―) 開始') - db.execute(f'CALL src05.inst_merge_laundering("{target_table}")') + db.execute(f""" + CALL src05.inst_merge_laundering( + '{environment.SALES_LAUNDERING_TARGET_TABLE_NAME}' + ) + """) logger.info('inst_merge_laundering(プロシージャ―) 終了') return diff --git a/ecs/jskult-batch-daily/src/system_var/environment.py b/ecs/jskult-batch-daily/src/system_var/environment.py index b1730224..a51ab519 100644 --- a/ecs/jskult-batch-daily/src/system_var/environment.py +++ b/ecs/jskult-batch-daily/src/system_var/environment.py @@ -22,3 +22,10 @@ DB_CONNECTION_MAX_RETRY_ATTEMPT = int(os.environ.get('DB_CONNECTION_MAX_RETRY_AT DB_CONNECTION_RETRY_INTERVAL_INIT = int(os.environ.get('DB_CONNECTION_RETRY_INTERVAL', 5)) DB_CONNECTION_RETRY_INTERVAL_MIN_SECONDS = int(os.environ.get('DB_CONNECTION_RETRY_MIN_SECONDS', 5)) DB_CONNECTION_RETRY_INTERVAL_MAX_SECONDS = int(os.environ.get('DB_CONNECTION_RETRY_MAX_SECONDS', 50)) + +# 連携データ抽出期間 +SALES_LAUNDERING_EXTRACT_DATE_PERIOD = int(os.environ['SALES_LAUNDERING_EXTRACT_DATE_PERIOD']) +# 洗替対象テーブル名 +SALES_LAUNDERING_TARGET_TABLE_NAME = os.environ['SALES_LAUNDERING_TARGET_TABLE_NAME'] +# 卸実績洗替で作成するデータの期間(年単位) +SALES_LAUNDERING_TARGET_YEAR_OFFSET = os.environ['SALES_LAUNDERING_TARGET_YEAR_OFFSET'] diff --git a/rds_mysql/stored_procedure/src05/hco_to_mdb_laundering.sql b/rds_mysql/stored_procedure/src05/hco_to_mdb_laundering.sql index 03402001..b3cbfc6e 100644 --- a/rds_mysql/stored_procedure/src05/hco_to_mdb_laundering.sql +++ b/rds_mysql/stored_procedure/src05/hco_to_mdb_laundering.sql @@ -1,5 +1,5 @@ -- A5M2で実行時に[SQL] - [スラッシュ(/)のみの行でSQLを区切る]に変えてから実行する -CREATE PROCEDURE src05.hco_to_mdb_laundering(@target_table VARCHAR(64)) +CREATE PROCEDURE src05.hco_to_mdb_laundering(target_table VARCHAR(255)) SQL SECURITY INVOKER BEGIN -- スキーマ名 @@ -7,10 +7,10 @@ BEGIN -- プロシージャ名 DECLARE procedure_name VARCHAR(100) DEFAULT 'hco_to_mdb_laundering'; -- プロシージャの引数 - DECLARE procedure_args JSON DEFAULT JSON_OBJECT(); + DECLARE procedure_args JSON DEFAULT JSON_OBJECT(); -- 例外処理 - DECLARE EXIT HANDLER FOR SQLEXCEPTION + DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN GET DIAGNOSTICS CONDITION 1 @error_state = RETURNED_SQLSTATE, @error_msg = MESSAGE_TEXT; @@ -23,7 +23,7 @@ BEGIN SET @error_state = NULL, @error_msg = NULL; call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, - '【洗替】4:メルク施設コードの洗替_A① 開始'); + '【洗替】4:メルク施設コードの洗替_A① 開始'); TRUNCATE TABLE internal05.hco_cnv_mdb_t; @@ -31,11 +31,11 @@ BEGIN '【洗替】4:メルク施設コードの洗替_A① 終了'); call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, - '【洗替】4:メルク施設コードの洗替_A② 開始'); + '【洗替】4:メルク施設コードの洗替_A② 開始'); INSERT INTO internal05.hco_cnv_mdb_t ( - hco_vod_v, + hco_vid_v, mdb_cd, form_inst_name_kana, form_inst_name_kanji, @@ -78,19 +78,23 @@ BEGIN '【洗替】4:メルク施設コードの洗替_A② 終了'); call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, - '【洗替】4:メルク施設コードの洗替_A③ 開始'); + '【洗替】4:メルク施設コードの洗替_A③ 開始'); - UPDATE src05.@target_table AS tt, internal05.hco_cnv_mdb_t AS hcmt - SET - tt.inst_cd = hcmt.mdb_cd, - tt.inst_name_kana = hcmt.form_inst_name_kana, - tt.inst_name = hcmt.form_inst_name_kanji, - tt.address = hcmt.inst_addr, - tt.pref_cd = hcmt.prefc_cd - WHERE - tt.v_inst_cd = hcmt.hco_vid_v - AND tt.inst_clas_cd = '1' - ; + SET @update_institution = " + UPDATE $$target_table$$ AS tt, internal05.hco_cnv_mdb_t AS hcmt + SET + tt.inst_cd = hcmt.mdb_cd, + tt.inst_name_kana = hcmt.form_inst_name_kana, + tt.inst_name = hcmt.form_inst_name_kanji, + tt.address = hcmt.inst_addr, + tt.pref_cd = hcmt.prefc_cd + WHERE + tt.v_inst_cd = hcmt.hco_vid_v + AND tt.inst_clas_cd = '1' + "; + SET @update_institution = REPLACE(@update_institution, "$$target_table$$", target_table); + PREPARE update_institution_stmt from @update_institution; + EXECUTE update_institution_stmt; call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, '【洗替】4:メルク施設コードの洗替_A③ 終了'); diff --git a/rds_mysql/stored_procedure/src05/inst_merge_laundering.sql b/rds_mysql/stored_procedure/src05/inst_merge_laundering.sql index 92ff79a9..6a0642a9 100644 --- a/rds_mysql/stored_procedure/src05/inst_merge_laundering.sql +++ b/rds_mysql/stored_procedure/src05/inst_merge_laundering.sql @@ -1,5 +1,5 @@ -- A5M2で実行時に[SQL] - [スラッシュ(/)のみの行でSQLを区切る]に変えてから実行する -CREATE PROCEDURE src05.inst_merge_laundering(@target_table VARCHAR(64)) +CREATE PROCEDURE src05.inst_merge_laundering(target_table VARCHAR(255)) SQL SECURITY INVOKER BEGIN -- スキーマ名 @@ -7,10 +7,10 @@ BEGIN -- プロシージャ名 DECLARE procedure_name VARCHAR(100) DEFAULT 'inst_merge_laundering'; -- プロシージャの引数 - DECLARE procedure_args JSON DEFAULT JSON_OBJECT(); + DECLARE procedure_args JSON DEFAULT JSON_OBJECT(); -- 例外処理 - DECLARE EXIT HANDLER FOR SQLEXCEPTION + DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN GET DIAGNOSTICS CONDITION 1 @error_state = RETURNED_SQLSTATE, @error_msg = MESSAGE_TEXT; @@ -25,28 +25,35 @@ BEGIN call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, '【洗替】4:メルク施設コードの洗替_B① 開始'); - UPDATE ( - SELECT - dcf_dsf_inst_cd, - dup_opp_cd, - form_inst_name_kanji, - form_inst_name_kana, - inst_addr, - prefc_cd - FROM - internal05.inst_merge_t - ) AS imt, - src05.@target_table AS tt - SET - tt.inst_cd = imt.dup_opp_cd, - tt.inst_name = imt.form_inst_name_kanji, - tt.inst_name_kana = imt.form_inst_name_kana, - tt.address = imt.inst_addr, - tt.prefc_cd = imt.prefc_cd - WHERE - tt.inst_cd = imt.dcf_dsf_inst_cd - ; + SET @update_institution = " + UPDATE ( + SELECT + dcf_dsf_inst_cd, + dup_opp_cd, + form_inst_name_kanji, + form_inst_name_kana, + inst_addr, + prefc_cd + FROM + internal05.inst_merge_t + ) AS imt, + $$target_table$$ AS tt + SET + tt.inst_cd = imt.dup_opp_cd, + tt.inst_name = imt.form_inst_name_kanji, + tt.inst_name_kana = imt.form_inst_name_kana, + tt.address = imt.inst_addr, + tt.pref_cd = imt.prefc_cd, + tt.dwh_upd_dt = SYSDATE() + WHERE + tt.inst_cd = imt.dcf_dsf_inst_cd + AND tt.inst_clas_cd = '1' + "; + SET @update_institution = REPLACE(@update_institution, "$$target_table$$", target_table); + PREPARE update_institution_stmt from @update_institution; + EXECUTE update_institution_stmt; call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, - '【洗替】4:メルク施設コードの洗替_B① 終了'); + '【洗替】4:メルク施設コードの洗替_B① 終了'); +END \ No newline at end of file diff --git a/rds_mysql/stored_procedure/src05/sales_lau_delete.sql b/rds_mysql/stored_procedure/src05/sales_lau_delete.sql index 652db718..c1610435 100644 --- a/rds_mysql/stored_procedure/src05/sales_lau_delete.sql +++ b/rds_mysql/stored_procedure/src05/sales_lau_delete.sql @@ -1,5 +1,5 @@ -- A5M2で実行時に[SQL] - [スラッシュ(/)のみの行でSQLを区切る]に変えてから実行する -CREATE PROCEDURE src05.sales_lau_delete(@target_table VARCHAR(64), @laundering_period_year INT) +CREATE PROCEDURE src05.sales_lau_delete(target_table VARCHAR(255), laundering_period_year INT) SQL SECURITY INVOKER BEGIN -- スキーマ名 @@ -7,10 +7,10 @@ BEGIN -- プロシージャ名 DECLARE procedure_name VARCHAR(100) DEFAULT 'sales_lau_delete'; -- プロシージャの引数 - DECLARE procedure_args JSON DEFAULT JSON_OBJECT(); + DECLARE procedure_args JSON DEFAULT JSON_OBJECT(); -- 例外処理 - DECLARE EXIT HANDLER FOR SQLEXCEPTION + DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN GET DIAGNOSTICS CONDITION 1 @error_state = RETURNED_SQLSTATE, @error_msg = MESSAGE_TEXT; @@ -25,11 +25,15 @@ BEGIN call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, '卸販売実績テーブル(洗替後)過去5年以前のデータ削除① 開始'); - DELETE FROM - src05.@target_table - WHERE - kjyo_ym < DATE_FORMAT((src05.get_syor_date() - INTERVAL @laundering_period_year YEAR), '%Y%m') - ; + SET @delete_data = " + DELETE FROM + $$target_table$$ + WHERE + kjyo_ym < DATE_FORMAT((src05.get_syor_date() - INTERVAL ? YEAR), '%Y%m') + "; + SET @delete_data = REPLACE(@delete_data, "$$target_table$$", target_table); + PREPARE delete_data_stmt from @delete_data; + EXECUTE delete_data_stmt USING @laundering_period_year; call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, '卸販売実績テーブル(洗替後)過去5年以前のデータ削除① 終了'); diff --git a/rds_mysql/stored_procedure/src05/sales_lau_upsert.sql b/rds_mysql/stored_procedure/src05/sales_lau_upsert.sql index 270495e7..ecb2b671 100644 --- a/rds_mysql/stored_procedure/src05/sales_lau_upsert.sql +++ b/rds_mysql/stored_procedure/src05/sales_lau_upsert.sql @@ -1,6 +1,6 @@ -- A5M2で実行時に[SQL] - [スラッシュ(/)のみの行でSQLを区切る]に変えてから実行する -CREATE PROCEDURE src05.sales_lau_upsert(@target_table VARCHAR(64), @extract_from_date DATETIME, - @extract_to_date DATETIME) +CREATE PROCEDURE src05.sales_lau_upsert(target_table VARCHAR(255), extract_from_date date, + extract_to_date date) SQL SECURITY INVOKER BEGIN -- スキーマ名 @@ -8,10 +8,10 @@ BEGIN -- プロシージャ名 DECLARE procedure_name VARCHAR(100) DEFAULT 'sales_lau_upsert'; -- プロシージャの引数 - DECLARE procedure_args JSON DEFAULT JSON_OBJECT(); + DECLARE procedure_args JSON DEFAULT JSON_OBJECT(); -- 例外処理 - DECLARE EXIT HANDLER FOR SQLEXCEPTION + DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN GET DIAGNOSTICS CONDITION 1 @error_state = RETURNED_SQLSTATE, @error_msg = MESSAGE_TEXT; @@ -24,7 +24,7 @@ BEGIN SET @error_state = NULL, @error_msg = NULL; call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, - '卸販売実績テーブル(洗替後)作成① 開始' + '卸販売実績テーブル(洗替後)作成① 開始' ); TRUNCATE TABLE internal05.bu_prd_name_contrast_t; @@ -36,7 +36,7 @@ BEGIN call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, '卸販売実績テーブル(洗替後)作成② 開始' ); - + INSERT INTO internal05.bu_prd_name_contrast_t ( prd_cd, @@ -46,15 +46,15 @@ BEGIN pp_end_date, update_date, bp_start_date, - bp_end_date - ) + bp_end_date + ) SELECT ppmv.prd_cd, bpnc.bu_cd, ppmv.phm_itm_cd, ppmv.start_date AS pp_start_date, ppmv.end_date AS pp_end_date, - bpnc.update_date AS update_date + bpnc.update_date AS update_date, bpnc.start_date AS bp_start_date, bpnc.end_date AS bp_end_date FROM @@ -63,7 +63,7 @@ BEGIN ON ppmv.phm_itm_cd = bpnc.phm_itm_cd WHERE ppmv.rec_sts_kbn != '9' - ; + ; call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, '卸販売実績テーブル(洗替後)作成② 終了' @@ -71,46 +71,47 @@ BEGIN call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, - '卸販売実績テーブル(洗替後)作成③ 開始' + '卸販売実績テーブル(洗替後)作成③ 開始' ); TRUNCATE TABLE internal05.fcl_mst_v_t; call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, - '卸販売実績テーブル(洗替後)作成③ 終了' - ); + '卸販売実績テーブル(洗替後)作成③ 終了' + ); call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, - '卸販売実績テーブル(洗替後)作成④ 開始' + '卸販売実績テーブル(洗替後)作成④ 開始' ); INSERT INTO - internal05.internal05.fcl_mst_v_t + internal05.fcl_mst_v_t SELECT - v_inst_cd, - sub_num, - start_date, - end_date, - closed_dt, - fcl_name, - fcl_kn_name, - fcl_abb_name, - mkr_cd, - jsk_proc_kbn, - fmt_addr, - fmt_kn_addr, - postal_cd, - prft_cd, - prft_name, - city_name, - addr_line_1, - tel_num, - admin_kbn, - fcl_type, - rec_sts_kbn, - ins_dt, - upd_dt, - dwh_upd_dt + fmv1.v_inst_cd, + fmv1.sub_num, + fmv1.start_date, + fmv1.end_date, + fmv1.closed_dt, + fmv1.fcl_name, + fmv1.fcl_kn_name, + fmv1.fcl_abb_name, + fmv1.fcl_abb_kn_name, + fmv1.mkr_cd, + fmv1.jsk_proc_kbn, + fmv1.fmt_addr, + fmv1.fmt_kn_addr, + fmv1.postal_cd, + fmv1.prft_cd, + fmv1.prft_name, + fmv1.city_name, + fmv1.addr_line_1, + fmv1.tel_num, + fmv1.admin_kbn, + fmv1.fcl_type, + fmv1.rec_sts_kbn, + fmv1.ins_dt, + fmv1.upd_dt, + fmv1.dwh_upd_dt FROM src05.fcl_mst_v AS fmv1 INNER JOIN ( @@ -129,334 +130,176 @@ BEGIN ; call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, - '卸販売実績テーブル(洗替後)作成④ 終了' + '卸販売実績テーブル(洗替後)作成④ 終了' ); call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, - '卸販売実績テーブル(洗替後)作成⑤ 開始' - ); + '卸販売実績テーブル(洗替後)作成⑤ 開始' + ); - INSERT INTO - src05.@target_table ( - rec_whs_cd, - rec_whs_sub_cd, - rec_whs_org_cd, - rec_cust_cd, - rec_comm_cd, - rec_tran_kbn, - rev_hsdnymd_wrk, - rev_hsdnymd_srk, - rec_urag_num, - rec_qty, - rec_nonyu_price, - rec_nonyu_amt, - rec_comm_name, - rec_nonyu_fcl_name, - free_item, - rec_nonyu_fcl_addr, - rec_nonyu_fcl_post, - rec_nonyu_fcl_tel, - rec_bef_hsdn_ymd, - rec_bef_slip_num, - rec_ymd, - sale_data_cat, - slip_file_name, - slip_mgt_num, - row_num, - hsdn_ymd, - exec_dt, - v_tran_cd, - tran_kbn_name, - whs_org_cd, - v_whsorg_cd, - whs_org_name, - whs_org_kn, - v_whs_cd, - whs_name, - nonyu_fcl_cd, - inst_name, - inst_name_kana, - address, - comm_cd, - comm_name, - nonyu_qty, - nonyu_price, - nonyu_amt, - shikiri_price, - shikiri_amt, - nhi_price, - nhi_amt, - v_inst_cd, - inst_clas_cd, - bu_cd, - item_cd, - item_name, - item_english_name, - pref_cd, - whspos_err_kbn, - htdnymd_err_kbn, - prd_exis_kbn, - fcl_exis_kbn, - bef_hsdn_ymd, - bef_slip_num, - slip_org_kbn, - kjyo_ym, - tksnbk_kbn, - fcl_exec_kbn, - rec_sts_kbn, - ins_dt, - ins_usr, - dwh_upd_dt - ) - SELECT - s.rec_whs_cd, - s.rec_whs_sub_cd, - s.rec_whs_org_cd, - s.rec_cust_cd, - s.rec_comm_cd, - s.rec_tran_kbn, - s.rev_hsdnymd_wrk, - s.rev_hsdnymd_srk, - s.rec_urag_num, - s.rec_qty, - s.rec_nonyu_price, - s.rec_nonyu_amt, - s.rec_comm_name, - s.rec_nonyu_fcl_name, - s.free_item, - s.rec_nonyu_fcl_addr, - s.rec_nonyu_fcl_post, - s.rec_nonyu_fcl_tel, - s.rec_bef_hsdn_ymd, - s.rec_bef_slip_num, - s.rec_ymd, - s.sale_data_cat, - s.slip_file_name, - s.slip_mgt_num, - s.row_num, - s.hsdn_ymd, - s.exec_dt, - s.v_tran_cd, - s.tran_kbn_name, - s.whs_org_cd, - s.v_whsorg_cd, - s.whs_org_name, - s.whs_org_kn, - s.v_whs_cd, - s.whs_name, - s.nonyu_fcl_cd, - s.v_inst_name, - s.v_inst_kn, - s.v_inst_addr, - s.comm_cd, - s.comm_name, - CASE - WHEN - (LEFT(s.v_tran_cd, 1) = 2 AND (s.err_flg20 IS NULL OR s.err_flg20 != 'M')) - THEN - (s.nonyu_qty * -1) - ELSE - s.nonyu_qty - END AS nonyu_qty, - s.nonyu_price, - CASE - WHEN - (LEFT(s.v_tran_cd, 1) = 2 AND (s.err_flg20 IS NULL OR s.err_flg20 != 'M')) - THEN - (s.nonyu_amt * -1) - ELSE - s.nonyu_amt - END AS nonyu_amt, - s.shikiri_price, - CASE - WHEN - (LEFT(s.v_tran_cd, 1) = 2 AND (s.err_flg20 IS NULL OR s.err_flg20 != 'M')) - THEN - (s.shikiri_amt * -1) - ELSE - s.shikiri_amt - END AS shikiri_amt, - s.nhi_price, - CASE - WHEN - (LEFT(s.v_tran_cd,1) = 2 AND (s.err_flg20 IS NULL OR s.err_flg20 != 'M')) - THEN - (s.nhi_amt * -1) - ELSE - s.nhi_amt - END AS nhi_amt, - s.v_inst_cd, - CASE - WHEN - (fmvt.fcl_type = 'A1' or fmvt.fcl_type = 'A0') THEN '3' - WHEN - fmvt.fcl_type BETWEEN '20' AND '29' THEN '2' - ELSE - '1' - END AS inst_clas_cd, - bpnct.bu_cd, - ppmv.mkr_cd, - ppmv.mkr_inf_1, - ppmv.mkr_inf_2, - CASE - WHEN - s.v_inst_cd LIKE '00%' - THEN - ci.prefc_cd - ELSE - fmvt.prft_cd - END AS prft_cd, - s.whspos_err_kbn, - s.htdnymd_err_kbn, - s.prd_exis_kbn, - s.fcl_exis_kbn, - s.bef_hsdn_ymd, - s.bef_slip_num, - s.slip_org_kbn, - s.kjyo_ym, - s.tksnbk_kbn, - s.fcl_exec_kbn, - s.rec_sts_kbn, - s.ins_dt, - s.ins_usr, - SYSDATE() - FROM ( + SET @insert_sales_laundering = " + INSERT INTO + $$target_table$$ ( + rec_whs_cd, + rec_whs_sub_cd, + rec_whs_org_cd, + rec_cust_cd, + rec_comm_cd, + rec_tran_kbn, + rev_hsdnymd_wrk, + rev_hsdnymd_srk, + rec_urag_num, + rec_qty, + rec_nonyu_price, + rec_nonyu_amt, + rec_comm_name, + rec_nonyu_fcl_name, + free_item, + rec_nonyu_fcl_addr, + rec_nonyu_fcl_post, + rec_nonyu_fcl_tel, + rec_bef_hsdn_ymd, + rec_bef_slip_num, + rec_ymd, + sale_data_cat, + slip_file_name, + slip_mgt_num, + row_num, + hsdn_ymd, + exec_dt, + v_tran_cd, + tran_kbn_name, + whs_org_cd, + v_whsorg_cd, + whs_org_name, + whs_org_kn, + v_whs_cd, + whs_name, + nonyu_fcl_cd, + inst_name, + inst_name_kana, + address, + comm_cd, + comm_name, + nonyu_qty, + nonyu_price, + nonyu_amt, + shikiri_price, + shikiri_amt, + nhi_price, + nhi_amt, + v_inst_cd, + inst_clas_cd, + bu_cd, + item_cd, + item_name, + item_english_name, + pref_cd, + whspos_err_kbn, + htdnymd_err_kbn, + prd_exis_kbn, + fcl_exis_kbn, + bef_hsdn_ymd, + bef_slip_num, + slip_org_kbn, + kjyo_ym, + tksnbk_kbn, + fcl_exec_kbn, + rec_sts_kbn, + ins_dt, + ins_usr, + dwh_upd_dt + ) SELECT - CAST(SYSDATE() AS DATE) AS today - ) AS sub - INNER JOIN src05.sales AS s - ON sub.today = CAST(s.dwh_upd_dt AS DATE) - LEFT OUTER JOIN src05.phm_prd_mst_v AS ppmv - ON s.comm_cd = ppmv.prd_cd - AND STR_TO_DATE(s.hsdn_ymd,'%Y%m%d') BETWEEN ppmv.start_date AND ppmv.end_date - AND ppmv.rec_sts_kbn != '9' - LEFT OUTER JOIN src05.fcl_mst_v_t AS fmvt - ON s.v_inst_cd = fmvt.v_inst_cd - LEFT OUTER JOIN src05.bu_prd_name_contrast_t AS bpnct - ON s.comm_cd = bpnct.prd_cd - AND STR_TO_DATE(s.hsdn_ymd, '%Y%m%d') BETWEEN bpnct.pp_start_date AND bpnct.pp_end_date - AND STR_TO_DATE(s.hsdn_ymd, '%Y%m%d') BETWEEN bpnct.bp_start_date AND bpnct.bp_end_date - LEFT OUTER JOIN src05.com_inst AS ci - ON s.v_inst_cd = ci.dcf_dsf_inst_cd - WHERE - (s.rec_sts_kbn = '0' AND s.err_flg20 = 'M') - OR ( - s.rec_sts_kbn = '0' - AND s.err_flg20 != 'M' - AND s.v_tran_cd IN (110, 120, 210, 220) - AND ( - ( - s.fcl_exec_kbn NOT IN ('2', '5') - AND (s.fcl_exec_kbn != '6' OR ppmv.prd_sale_kbn <> 1) - ) - OR s.fcl_exec_kbn IS NULL - ) - ) - - ON DUPLICATE KEY UPDATE - rec_whs_cd = s.rec_whs_cd, - rec_whs_sub_cd = s.rec_whs_sub_cd, - rec_whs_org_cd = s.rec_whs_org_cd, - rec_cust_cd = s.rec_cust_cd, - rec_comm_cd = s.rec_comm_cd, - rec_tran_kbn = s.rec_tran_kbn, - rev_hsdnymd_wrk = s.rev_hsdnymd_wrk, - rev_hsdnymd_srk = s.rev_hsdnymd_srk, - rec_urag_num = s.rec_urag_num, - rec_qty = s.rec_qty, - rec_nonyu_price = s.rec_nonyu_price, - rec_nonyu_amt = s.rec_nonyu_amt, - rec_comm_name = s.rec_comm_name, - rec_nonyu_fcl_name = s.rec_nonyu_fcl_name, - free_item = s.free_item, - rec_nonyu_fcl_addr = s.rec_nonyu_fcl_addr, - rec_nonyu_fcl_post = s.rec_nonyu_fcl_post, - rec_nonyu_fcl_tel = s.rec_nonyu_fcl_tel, - rec_bef_hsdn_ymd = s.rec_bef_hsdn_ymd, - rec_bef_slip_num = s.rec_bef_slip_num, - rec_ymd = s.rec_ymd, - sale_data_cat = s.sale_data_cat, - slip_file_name = s.slip_file_name, - row_num = s.row_num, - hsdn_ymd = s.hsdn_ymd, - exec_dt = s.exec_dt, - v_tran_cd = s.v_tran_cd, - tran_kbn_name = s.tran_kbn_name, - whs_org_cd = s.whs_org_cd, - v_whsorg_cd = s.v_whsorg_cd, - whs_org_name = s.whs_org_name, - whs_org_kn = s.whs_org_kn, - v_whs_cd = s.v_whs_cd, - whs_name = s.whs_name, - nonyu_fcl_cd = s.nonyu_fcl_cd, - inst_name = s.v_inst_name, - inst_name_kana = s.v_inst_kn, - address = s.v_inst_addr, - comm_cd = s.comm_cd, - comm_name = s.comm_name, - nonyu_qty = ( - CASE - WHEN - (LEFT(s.v_tran_cd, 1) = 2 AND (s.err_flg20 IS NULL OR s.err_flg20 != 'M')) - THEN - (s.nonyu_qty * -1) - ELSE - s.nonyu_qty - END - ), - nonyu_price = s.nonyu_price, - nonyu_amt = ( - CASE - WHEN - (LEFT(s.v_tran_cd, 1) = 2 AND (s.err_flg20 IS NULL OR s.err_flg20 != 'M')) - THEN - (s.nonyu_amt * -1) - ELSE - s.nonyu_amt - END - ), - shikiri_price = s.shikiri_price, - shikiri_amt = ( - CASE - WHEN - (LEFT(s.v_tran_cd, 1) = 2 AND (s.err_flg20 IS NULL OR s.err_flg20 != 'M')) - THEN - (s.shikiri_amt * -1) - ELSE - s.shikiri_amt - END - ), - nhi_price = s.nhi_price, - nhi_amt = ( - CASE - WHEN - (LEFT(s.v_tran_cd, 1) = 2 AND (s.err_flg20 IS NULL OR s.err_flg20 != 'M')) - THEN - (s.nhi_amt * -1) - ELSE - s.nhi_amt - END - ), - v_inst_cd = s.v_inst_cd, - inst_clas_cd = ( - CASE - WHEN - (fmvt.fcl_type = 'A1' OR fmvt.fcl_type = 'A0') - THEN - '3' - WHEN - fmvt.fcl_type BETWEEN '20' AND '29' - THEN - '2' - ELSE - '1' - END - ), - bu_cd = bpnct.bu_cd, - item_cd = ppmv.mkr_cd, - item_name = ppmv.mkr_inf_1, - item_english_name = ppmv.mkr_inf_2, - pref_cd = ( + s.rec_whs_cd, + s.rec_whs_sub_cd, + s.rec_whs_org_cd, + s.rec_cust_cd, + s.rec_comm_cd, + s.rec_tran_kbn, + s.rev_hsdnymd_wrk, + s.rev_hsdnymd_srk, + s.rec_urag_num, + s.rec_qty, + s.rec_nonyu_price, + s.rec_nonyu_amt, + s.rec_comm_name, + s.rec_nonyu_fcl_name, + s.free_item, + s.rec_nonyu_fcl_addr, + s.rec_nonyu_fcl_post, + s.rec_nonyu_fcl_tel, + s.rec_bef_hsdn_ymd, + s.rec_bef_slip_num, + s.rec_ymd, + s.sale_data_cat, + s.slip_file_name, + s.slip_mgt_num, + s.row_num, + s.hsdn_ymd, + s.exec_dt, + s.v_tran_cd, + s.tran_kbn_name, + s.whs_org_cd, + s.v_whsorg_cd, + s.whs_org_name, + s.whs_org_kn, + s.v_whs_cd, + s.whs_name, + s.nonyu_fcl_cd, + s.v_inst_name, + s.v_inst_kn, + s.v_inst_addr, + s.comm_cd, + s.comm_name, + CASE + WHEN + (LEFT(s.v_tran_cd, 1) = 2 AND (s.err_flg20 IS NULL OR s.err_flg20 != 'M')) + THEN + (s.nonyu_qty * -1) + ELSE + s.nonyu_qty + END AS nonyu_qty, + s.nonyu_price, + CASE + WHEN + (LEFT(s.v_tran_cd, 1) = 2 AND (s.err_flg20 IS NULL OR s.err_flg20 != 'M')) + THEN + (s.nonyu_amt * -1) + ELSE + s.nonyu_amt + END AS nonyu_amt, + s.shikiri_price, + CASE + WHEN + (LEFT(s.v_tran_cd, 1) = 2 AND (s.err_flg20 IS NULL OR s.err_flg20 != 'M')) + THEN + (s.shikiri_amt * -1) + ELSE + s.shikiri_amt + END AS shikiri_amt, + s.nhi_price, + CASE + WHEN + (LEFT(s.v_tran_cd,1) = 2 AND (s.err_flg20 IS NULL OR s.err_flg20 != 'M')) + THEN + (s.nhi_amt * -1) + ELSE + s.nhi_amt + END AS nhi_amt, + s.v_inst_cd, + CASE + WHEN + (fmvt.fcl_type = 'A1' or fmvt.fcl_type = 'A0') THEN '3' + WHEN + fmvt.fcl_type BETWEEN '20' AND '29' THEN '2' + ELSE + '1' + END AS inst_clas_cd, + bpnct.bu_cd, + ppmv.mkr_cd, + ppmv.mkr_inf_1, + ppmv.mkr_inf_2, CASE WHEN s.v_inst_cd LIKE '00%' @@ -464,105 +307,224 @@ BEGIN ci.prefc_cd ELSE fmvt.prft_cd - END - ), - whspos_err_kbn = s.whspos_err_kbn, - htdnymd_err_kbn = s.htdnymd_err_kbn, - prd_exis_kbn = s.prd_exis_kbn, - fcl_exis_kbn = s.fcl_exis_kbn, - bef_hsdn_ymd = s.bef_hsdn_ymd, - bef_slip_num = s.bef_slip_num, - slip_org_kbn = s.slip_org_kbn, - kjyo_ym = s.kjyo_ym, - tksnbk_kbn = s.tksnbk_kbn, - fcl_exec_kbn = s.fcl_exec_kbn, - rec_sts_kbn = s.rec_sts_kbn, - ins_dt = s.ins_dt, - ins_usr = s.ins_usr, - dwh_upd_dt = SYSDATE() - ; - - call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, - '卸販売実績テーブル(洗替後)作成⑤ 終了' - ); - - call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, - '卸販売実績テーブル(洗替後)作成⑥ 開始' - ); - - UPDATE ( + END AS prft_cd, + s.whspos_err_kbn, + s.htdnymd_err_kbn, + s.prd_exis_kbn, + s.fcl_exis_kbn, + s.bef_hsdn_ymd, + s.bef_slip_num, + s.slip_org_kbn, + s.kjyo_ym, + s.tksnbk_kbn, + s.fcl_exec_kbn, + s.rec_sts_kbn, + s.ins_dt, + s.ins_usr, + SYSDATE() + FROM ( SELECT - fmvt.v_inst_cd AS v_inst_cd, - fmvt.fcl_type AS fcl_type, - fmvt.prft_cd AS prft_cd, - ci.prefc_cd AS prefc_cd - FROM - (SELECT CAST(SYSDATE() AS DATE) AS today) AS sub - INNER JOIN src05.fcl_mst_v_t AS fmvt - ON sub.today = CAST(fmvt.dwh_upd_dt AS DATE) - LEFT OUTER JOIN src05.com_inst AS ci - ON fmvt.v_inst_cd = ci.dcf_dsf_inst_cd - ) AS t3t5, - src05.sales_lau AS sl - SET - sl.inst_clas_cd = ( - CASE - WHEN - (t3t5.fcl_type = 'A1' OR t3t5.fcl_type = 'A0') - THEN - '3' - WHEN - t3t5.fcl_type BETWEEN '20' AND '29' - THEN - '2' - ELSE - '1' - END - ), - sl.pref_cd = ( - CASE - WHEN - sl.v_inst_cd LIKE '00%' - THEN - t3t5.prefc_cd - ELSE - t3t5.prft_cd - END - ) - WHERE sl.v_inst_cd = t3t5.v_inst_cd - ; + CAST(SYSDATE() AS DATE) AS today + ) AS sub + INNER JOIN src05.sales AS s + ON sub.today = CAST(s.dwh_upd_dt AS DATE) + LEFT OUTER JOIN src05.phm_prd_mst_v AS ppmv + ON s.comm_cd = ppmv.prd_cd + AND STR_TO_DATE(s.hsdn_ymd,'%Y%m%d') BETWEEN ppmv.start_date AND ppmv.end_date + AND ppmv.rec_sts_kbn != '9' + LEFT OUTER JOIN internal05.fcl_mst_v_t AS fmvt + ON s.v_inst_cd = fmvt.v_inst_cd + LEFT OUTER JOIN internal05.bu_prd_name_contrast_t AS bpnct + ON s.comm_cd = bpnct.prd_cd + AND STR_TO_DATE(s.hsdn_ymd, '%Y%m%d') BETWEEN bpnct.pp_start_date AND bpnct.pp_end_date + AND STR_TO_DATE(s.hsdn_ymd, '%Y%m%d') BETWEEN bpnct.bp_start_date AND bpnct.bp_end_date + LEFT OUTER JOIN src05.com_inst AS ci + ON s.v_inst_cd = ci.dcf_dsf_inst_cd + WHERE + (? <= s.dwh_upd_dt AND s.dwh_upd_dt <= ?) + AND ( + (s.rec_sts_kbn = '0' AND s.err_flg20 = 'M') + OR ( + s.rec_sts_kbn = '0' + AND s.err_flg20 != 'M' + AND s.v_tran_cd IN (110, 120, 210, 220) + AND ( + ( + s.fcl_exec_kbn NOT IN ('2', '5') + AND (s.fcl_exec_kbn != '6' OR ppmv.prd_sale_kbn <> 1) + ) + OR s.fcl_exec_kbn IS NULL + ) + ) + ) + + ON DUPLICATE KEY UPDATE + rec_whs_cd = s.rec_whs_cd, + rec_whs_sub_cd = s.rec_whs_sub_cd, + rec_whs_org_cd = s.rec_whs_org_cd, + rec_cust_cd = s.rec_cust_cd, + rec_comm_cd = s.rec_comm_cd, + rec_tran_kbn = s.rec_tran_kbn, + rev_hsdnymd_wrk = s.rev_hsdnymd_wrk, + rev_hsdnymd_srk = s.rev_hsdnymd_srk, + rec_urag_num = s.rec_urag_num, + rec_qty = s.rec_qty, + rec_nonyu_price = s.rec_nonyu_price, + rec_nonyu_amt = s.rec_nonyu_amt, + rec_comm_name = s.rec_comm_name, + rec_nonyu_fcl_name = s.rec_nonyu_fcl_name, + free_item = s.free_item, + rec_nonyu_fcl_addr = s.rec_nonyu_fcl_addr, + rec_nonyu_fcl_post = s.rec_nonyu_fcl_post, + rec_nonyu_fcl_tel = s.rec_nonyu_fcl_tel, + rec_bef_hsdn_ymd = s.rec_bef_hsdn_ymd, + rec_bef_slip_num = s.rec_bef_slip_num, + rec_ymd = s.rec_ymd, + sale_data_cat = s.sale_data_cat, + slip_file_name = s.slip_file_name, + row_num = s.row_num, + hsdn_ymd = s.hsdn_ymd, + exec_dt = s.exec_dt, + v_tran_cd = s.v_tran_cd, + tran_kbn_name = s.tran_kbn_name, + whs_org_cd = s.whs_org_cd, + v_whsorg_cd = s.v_whsorg_cd, + whs_org_name = s.whs_org_name, + whs_org_kn = s.whs_org_kn, + v_whs_cd = s.v_whs_cd, + whs_name = s.whs_name, + nonyu_fcl_cd = s.nonyu_fcl_cd, + inst_name = s.v_inst_name, + inst_name_kana = s.v_inst_kn, + address = s.v_inst_addr, + comm_cd = s.comm_cd, + comm_name = s.comm_name, + nonyu_qty = ( + CASE + WHEN + (LEFT(s.v_tran_cd, 1) = 2 AND (s.err_flg20 IS NULL OR s.err_flg20 != 'M')) + THEN + (s.nonyu_qty * -1) + ELSE + s.nonyu_qty + END + ), + nonyu_price = s.nonyu_price, + nonyu_amt = ( + CASE + WHEN + (LEFT(s.v_tran_cd, 1) = 2 AND (s.err_flg20 IS NULL OR s.err_flg20 != 'M')) + THEN + (s.nonyu_amt * -1) + ELSE + s.nonyu_amt + END + ), + shikiri_price = s.shikiri_price, + shikiri_amt = ( + CASE + WHEN + (LEFT(s.v_tran_cd, 1) = 2 AND (s.err_flg20 IS NULL OR s.err_flg20 != 'M')) + THEN + (s.shikiri_amt * -1) + ELSE + s.shikiri_amt + END + ), + nhi_price = s.nhi_price, + nhi_amt = ( + CASE + WHEN + (LEFT(s.v_tran_cd, 1) = 2 AND (s.err_flg20 IS NULL OR s.err_flg20 != 'M')) + THEN + (s.nhi_amt * -1) + ELSE + s.nhi_amt + END + ), + v_inst_cd = s.v_inst_cd, + inst_clas_cd = ( + CASE + WHEN + (fmvt.fcl_type = 'A1' OR fmvt.fcl_type = 'A0') + THEN + '3' + WHEN + fmvt.fcl_type BETWEEN '20' AND '29' + THEN + '2' + ELSE + '1' + END + ), + bu_cd = bpnct.bu_cd, + item_cd = ppmv.mkr_cd, + item_name = ppmv.mkr_inf_1, + item_english_name = ppmv.mkr_inf_2, + pref_cd = ( + CASE + WHEN + s.v_inst_cd LIKE '00%' + THEN + ci.prefc_cd + ELSE + fmvt.prft_cd + END + ), + whspos_err_kbn = s.whspos_err_kbn, + htdnymd_err_kbn = s.htdnymd_err_kbn, + prd_exis_kbn = s.prd_exis_kbn, + fcl_exis_kbn = s.fcl_exis_kbn, + bef_hsdn_ymd = s.bef_hsdn_ymd, + bef_slip_num = s.bef_slip_num, + slip_org_kbn = s.slip_org_kbn, + kjyo_ym = s.kjyo_ym, + tksnbk_kbn = s.tksnbk_kbn, + fcl_exec_kbn = s.fcl_exec_kbn, + rec_sts_kbn = s.rec_sts_kbn, + ins_dt = s.ins_dt, + ins_usr = s.ins_usr, + dwh_upd_dt = SYSDATE() + "; + SET @insert_sales_laundering = REPLACE(@insert_sales_laundering, "$$target_table$$", target_table); + PREPARE insert_sales_laundering_stmt from @insert_sales_laundering; + EXECUTE insert_sales_laundering_stmt USING @extract_from_date, @extract_to_date; call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, - '卸販売実績テーブル(洗替後)作成⑥ 終了' + '卸販売実績テーブル(洗替後)作成⑤ 終了' ); call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, - '卸販売実績テーブル(洗替後)作成⑦ 開始' + '卸販売実績テーブル(洗替後)作成⑥ 開始' ); - UPDATE - ( SELECT CAST(SYSDATE() AS DATE) AS today ) AS sub, - src05.sales_lau AS sl, - src05.sales AS s - SET - sl.inst_cd = ( - CASE - WHEN - (s.err_flg20 != 'M' AND sl.inst_clas_cd IN ('2', '3')) OR (s.err_flg20 = 'M') - THEN - s.v_inst_cd - ELSE - NULL - END - ) - WHERE - sub.today = CAST(s.dwh_upd_dt AS DATE) - AND sl.slip_mgt_num = s.slip_mgt_num - AND sl.row_num = s.row_num - ; + SET @update_institution_code = " + UPDATE + ( SELECT CAST(SYSDATE() AS DATE) AS today ) AS sub, + $$target_table$$ AS tt, + src05.sales AS s + SET + tt.inst_cd = ( + CASE + WHEN + (s.err_flg20 != 'M' AND tt.inst_clas_cd IN ('2', '3')) OR (s.err_flg20 = 'M') + THEN + s.v_inst_cd + ELSE + NULL + END + ) + WHERE + sub.today = CAST(s.dwh_upd_dt AS DATE) + AND tt.slip_mgt_num = s.slip_mgt_num + AND tt.row_num = s.row_num + "; + SET @update_institution_code = REPLACE(@update_institution_code, "$$target_table$$", target_table); + PREPARE update_institution_code_stmt from @update_institution_code; + EXECUTE update_institution_code_stmt; call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, - '卸販売実績テーブル(洗替後)作成⑦ 終了' + '卸販売実績テーブル(洗替後)作成⑥ 終了' ); END \ No newline at end of file diff --git a/rds_mysql/stored_procedure/src05/v_inst_merge_laundering.sql b/rds_mysql/stored_procedure/src05/v_inst_merge_laundering.sql index 4ef2075e..35c4a700 100644 --- a/rds_mysql/stored_procedure/src05/v_inst_merge_laundering.sql +++ b/rds_mysql/stored_procedure/src05/v_inst_merge_laundering.sql @@ -1,5 +1,5 @@ -- A5M2で実行時に[SQL] - [スラッシュ(/)のみの行でSQLを区切る]に変えてから実行する -CREATE PROCEDURE src05.v_inst_merge_laundering(@target_table VARCHAR(64)) +CREATE PROCEDURE src05.v_inst_merge_laundering(target_table VARCHAR(255)) SQL SECURITY INVOKER BEGIN -- スキーマ名 @@ -7,10 +7,10 @@ BEGIN -- プロシージャ名 DECLARE procedure_name VARCHAR(100) DEFAULT 'v_inst_merge_laundering'; -- プロシージャの引数 - DECLARE procedure_args JSON DEFAULT JSON_OBJECT(); + DECLARE procedure_args JSON DEFAULT JSON_OBJECT(); -- 例外処理 - DECLARE EXIT HANDLER FOR SQLEXCEPTION + DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN GET DIAGNOSTICS CONDITION 1 @error_state = RETURNED_SQLSTATE, @error_msg = MESSAGE_TEXT; @@ -23,46 +23,50 @@ BEGIN SET @error_state = NULL, @error_msg = NULL; call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, - '【洗替】3:HCO施設コードの洗替① 開始' + '【洗替】3:HCO施設コードの洗替① 開始' ); - UPDATE ( - SELECT - v_inst_cd, - v_inst_cd_merge, - fcl_name, - fcl_kn_name, - fmt_addr, - prft_cd - FROM - internal05.v_inst_merge_t - WHERE - (fcl_type IN ('A1', 'A0')) OR fcl_type BETWEEN '20' AND '29' - ) AS vimt, - src05.@target_table AS tt - SET - tt.inst_cd = ( - CASE - WHEN - tt.inst_clas_cd = '1' - THEN - tt.inst_cd - WHEN - (tt.inst_clas_cd = '2' OR tt.inst_clas_cd = '3') - THEN - vimt.v_inst_cd_merge - END - ) - tt.v_inst_cd = vimt.v_inst_cd_merge, - tt.inst_name = vimt.fcl_name, - tt.inst_name_kana = vimt.fcl_kn_name, - tt.address = vimt.fmt_addr, - tt.prefc_cd = vimt.prft_cd, - tt.dwh_upd_dt = SYSDATE() - WHERE - tt.v_inst_cd = vimt.v_inst_cd - AND (tt.inst_clas_cd IN ('1', '2', '3')) - ; + SET @update_institution = " + UPDATE ( + SELECT + v_inst_cd, + v_inst_cd_merge, + fcl_name, + fcl_kn_name, + fmt_addr, + prft_cd + FROM + internal05.v_inst_merge_t + WHERE + (fcl_type IN ('A1', 'A0')) OR fcl_type BETWEEN '20' AND '29' + ) AS vimt, + $$target_table$$ AS tt + SET + tt.inst_cd = ( + CASE + WHEN + tt.inst_clas_cd = '1' + THEN + tt.inst_cd + WHEN + (tt.inst_clas_cd = '2' OR tt.inst_clas_cd = '3') + THEN + vimt.v_inst_cd_merge + END + ), + tt.v_inst_cd = vimt.v_inst_cd_merge, + tt.inst_name = vimt.fcl_name, + tt.inst_name_kana = vimt.fcl_kn_name, + tt.address = vimt.fmt_addr, + tt.pref_cd = vimt.prft_cd, + tt.dwh_upd_dt = SYSDATE() + WHERE + tt.v_inst_cd = vimt.v_inst_cd + AND (tt.inst_clas_cd IN ('1', '2', '3')) + "; + SET @update_institution = REPLACE(@update_institution, "$$target_table$$", target_table); + PREPARE update_institution_stmt from @update_institution; + EXECUTE update_institution_stmt; call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, '【洗替】3:HCO施設コードの洗替① 終了' diff --git a/rds_mysql/stored_procedure/src05/whs_org_laundering.sql b/rds_mysql/stored_procedure/src05/whs_org_laundering.sql index e3ce53c7..4b5835ee 100644 --- a/rds_mysql/stored_procedure/src05/whs_org_laundering.sql +++ b/rds_mysql/stored_procedure/src05/whs_org_laundering.sql @@ -1,5 +1,5 @@ -- A5M2で実行時に[SQL] - [スラッシュ(/)のみの行でSQLを区切る]に変えてから実行する -CREATE PROCEDURE src05.whs_org_laundering(@target_table VARCHAR(64)) +CREATE PROCEDURE src05.whs_org_laundering(target_table VARCHAR(255)) SQL SECURITY INVOKER BEGIN -- スキーマ名 @@ -7,10 +7,10 @@ BEGIN -- プロシージャ名 DECLARE procedure_name VARCHAR(100) DEFAULT 'whs_org_laundering'; -- プロシージャの引数 - DECLARE procedure_args JSON DEFAULT JSON_OBJECT(); + DECLARE procedure_args JSON DEFAULT JSON_OBJECT(); -- 例外処理 - DECLARE EXIT HANDLER FOR SQLEXCEPTION + DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN GET DIAGNOSTICS CONDITION 1 @error_state = RETURNED_SQLSTATE, @error_msg = MESSAGE_TEXT; @@ -29,11 +29,11 @@ BEGIN TRUNCATE TABLE internal05.whs_customer_org_t; call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, - '【洗替】1.卸組織洗替① 終了' + '【洗替】1.卸組織洗替① 終了' ); call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, - '【洗替】1.卸組織洗替② 開始' + '【洗替】1.卸組織洗替② 開始' ); INSERT INTO @@ -43,7 +43,7 @@ BEGIN customer_cd, whs_org_cd, v_org_cd, - nm_2 + name_2 ) SELECT wcmv.whs_cd, @@ -89,30 +89,35 @@ BEGIN ON ocmv.v_org_cd = mohv2.v_cd_2 WHERE wcmv.rec_sts_kbn != '9' - AND src05.get_syor_date() BETWEEN wcmv.start_date AND wcmv.end_date; - - call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, - '【洗替】1.卸組織洗替② 終了' - ); - - call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, - '【洗替】1.卸組織洗替③ 開始' - ); - - UPDATE - src05.sales_lau AS sl, src05.@target_table AS tt - SET - sl.whs_org_cd = tt.whs_org_cd, - sl.v_whsorg_cd = tt.v_org_cd, - sl.whs_org_name = tt.nm_2 - WHERE - st.whs_cd = tt.whs_cd - AND st.whs_sub_cd = tt.whs_sub_cd - AND st.customer_cd = tt.customer_cd + AND src05.get_syor_date() BETWEEN wcmv.start_date AND wcmv.end_date ; call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, - '【洗替】1.卸組織洗替③ 終了' + '【洗替】1.卸組織洗替② 終了' + ); + + call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, + '【洗替】1.卸組織洗替③ 開始' + ); + + SET @update_organization = " + UPDATE + $$target_table$$ AS tt, internal05.whs_customer_org_t AS wcot + SET + tt.whs_org_cd = wcot.whs_org_cd, + tt.v_whsorg_cd = wcot.v_org_cd, + tt.whs_org_name = wcot.name_2 + WHERE + wcot.whs_cd = tt.rec_whs_cd + AND wcot.whs_sub_cd = tt.rec_whs_sub_cd + AND wcot.customer_cd = tt.rec_cust_cd + "; + SET @update_organization = REPLACE(@update_organization, "$$target_table$$", target_table); + PREPARE update_organization_stmt from @update_organization; + EXECUTE update_organization_stmt; + + call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, + '【洗替】1.卸組織洗替③ 終了' ); END \ No newline at end of file