feat: 48-1.卸実績洗替

This commit is contained in:
高木要 2023-06-12 10:30:52 +09:00
parent 0bdcc1fc4a
commit 5f4efd451d
10 changed files with 629 additions and 601 deletions

View File

@ -11,3 +11,9 @@ ULTMARC_BACKUP_FOLDER=ultmarc
JSKULT_CONFIG_BUCKET=********************** JSKULT_CONFIG_BUCKET=**********************
JSKULT_CONFIG_CALENDAR_FOLDER=jskult/calendar JSKULT_CONFIG_CALENDAR_FOLDER=jskult/calendar
JSKULT_CONFIG_CALENDAR_HOLIDAY_LIST_FILE_NAME=jskult_holiday_list.txt 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

View File

@ -1,5 +1,7 @@
from src.batch.common.batch_context import BatchContext 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 from src.logging.get_logger import get_logger
batch_context = BatchContext.get_instance() batch_context = BatchContext.get_instance()
@ -21,7 +23,7 @@ def exec():
# 納入先処方元マスタ洗替 # 納入先処方元マスタ洗替
ult_ident_presc_laundering.exec() ult_ident_presc_laundering.exec()
# 卸販売洗替 # 卸販売洗替
sales_results_laundering.exec()
# # 並列処理のテスト用コード # # 並列処理のテスト用コード
# import time # import time

View File

@ -2,6 +2,7 @@ from src.db.database import Database
from src.error.exceptions import BatchOperationException from src.error.exceptions import BatchOperationException
from src.logging.get_logger import get_logger from src.logging.get_logger import get_logger
from src.batch.batch_functions import logging_sql from src.batch.batch_functions import logging_sql
from src.system_var import environment
logger = get_logger('卸実績洗替') logger = get_logger('卸実績洗替')
@ -12,15 +13,15 @@ def exec():
db.connect() db.connect()
logger.debug('処理開始') logger.debug('処理開始')
# 卸販売実績テーブル(洗替後)過去5年以前のデータ削除 # 卸販売実績テーブル(洗替後)過去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:卸組織洗替 # 1:卸組織洗替
_call_whs_org_laundering(db, 'sales_lau') _call_whs_org_laundering(db)
# HCO施設コードの洗替 # HCO施設コードの洗替
_update_sales_lau_from_vop_hco_merge_v(db, 'sales_lau') _update_sales_lau_from_vop_hco_merge_v(db)
# 4:メルク施設コードの洗替 # 4:メルク施設コードの洗替
_update_mst_inst_laundering(db, 'sales_lau') _update_mst_inst_laundering(db)
logger.debug('処理終了') logger.debug('処理終了')
except Exception as e: except Exception as e:
raise BatchOperationException(e) raise BatchOperationException(e)
@ -28,35 +29,49 @@ def exec():
db.disconnect() db.disconnect()
def _call_sales_lau_delete(db: Database, target_table: str, set_year: int): def _call_sales_lau_delete(db: Database):
# 卸販売実績テーブル(洗替後)過去5年以前のデータ削除 # 卸販売実績テーブル(洗替後)過去5年以前のデータ削除
logger.info('sales_lau_delete(プロシージャ―) 開始') 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(プロシージャ―) 終了') logger.info('sales_lau_delete(プロシージャ―) 終了')
return return
def _call_sales_lau_upsert(db: Database, target_table: str, extract_from_date: str, def _call_sales_lau_upsert(db: Database):
extract_to_date: str):
# 卸販売実績テーブル(洗替後)作成 # 卸販売実績テーブル(洗替後)作成
logger.info('sales_lau_delete(プロシージャ―) 開始') logger.info('sales_lau_upsert(プロシージャ―) 開始')
db.execute(f'CALL src05.sales_lau_delete("{target_table}", "{extract_from_date}", "{extract_to_date}")') db.execute(f"""
logger.info('sales_lau_delete(プロシージャ―) 終了') 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 return
def _call_whs_org_laundering(db: Database, target_table: str): def _call_whs_org_laundering(db: Database):
# 卸組織洗替 # 卸組織洗替
logger.info('whs_org_laundering(プロシージャ―) 開始') 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(プロシージャ―) 終了') logger.info('whs_org_laundering(プロシージャ―) 終了')
return 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施設コードの洗替 # HCO施設コードの洗替
if _count_vop_hco_merge_v(db) >= 1: if _count_vop_hco_merge_v(db) >= 1:
_call_v_inst_merge_laundering(db, target_table) _call_v_inst_merge_laundering(db)
return return
logger.info('V施設統合マスタにデータは存在しません') logger.info('V施設統合マスタにデータは存在しません')
return return
@ -81,32 +96,40 @@ def _count_vop_hco_merge_v(db: Database) -> int:
return result[0]['cnt'] return result[0]['cnt']
def _call_v_inst_merge_laundering(db: Database, target_table: str): def _call_v_inst_merge_laundering(db: Database):
# HCO施設コードの洗替(テーブル更新) # HCO施設コードの洗替(プロシージャ―の呼び出し)
logger.info('v_inst_merge_laundering(プロシージャ―) 開始') 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(プロシージャ―) 終了') logger.info('v_inst_merge_laundering(プロシージャ―) 終了')
return 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) _call_hco_to_mdb_laundering(db)
_update_sales_lau_from_dcf_inst_merge(db, target_table) _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へ変換 # A:医療機関のデータはMDB変換表からHCO⇒DCFへ変換
logger.info('hco_to_mdb_laundering(プロシージャ―) 開始') 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(プロシージャ―) 終了') logger.info('hco_to_mdb_laundering(プロシージャ―) 終了')
return 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する # B:DCF施設統合マスタがある場合は、コードを変換し、住所等をSETする
if _count_dcf_inst_merge(db) >= 1: if _count_dcf_inst_merge(db) >= 1:
_call_inst_merge_laundering(db, target_table) _call_inst_merge_laundering(db)
return return
logger.info('DCF施設統合マスタにデータは存在しません') logger.info('DCF施設統合マスタにデータは存在しません')
return return
@ -131,9 +154,13 @@ def _count_dcf_inst_merge(db: Database) -> int:
return result[0]['cnt'] return result[0]['cnt']
def _call_inst_merge_laundering(db: Database, target_table: str): def _call_inst_merge_laundering(db: Database):
# B:DCF施設統合マスタがある場合は、コードを変換し、住所等をSETする(テーブル更新) # B:DCF施設統合マスタがある場合は、コードを変換し、住所等をSETする(プロシージャ―の呼び出し)
logger.info('inst_merge_laundering(プロシージャ―) 開始') 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(プロシージャ―) 終了') logger.info('inst_merge_laundering(プロシージャ―) 終了')
return return

View File

@ -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_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_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)) 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']

View File

@ -1,5 +1,5 @@
-- A5M2で実行時に[SQL] - [スラッシュ(/)のみの行でSQLを区切る]に変えてから実行する -- 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 SQL SECURITY INVOKER
BEGIN BEGIN
-- スキーマ名 -- スキーマ名
@ -35,7 +35,7 @@ BEGIN
INSERT INTO INSERT INTO
internal05.hco_cnv_mdb_t ( internal05.hco_cnv_mdb_t (
hco_vod_v, hco_vid_v,
mdb_cd, mdb_cd,
form_inst_name_kana, form_inst_name_kana,
form_inst_name_kanji, form_inst_name_kanji,
@ -80,7 +80,8 @@ 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,
'【洗替】メルク施設コードの洗替_A③ 開始'); '【洗替】メルク施設コードの洗替_A③ 開始');
UPDATE src05.@target_table AS tt, internal05.hco_cnv_mdb_t AS hcmt SET @update_institution = "
UPDATE $$target_table$$ AS tt, internal05.hco_cnv_mdb_t AS hcmt
SET SET
tt.inst_cd = hcmt.mdb_cd, tt.inst_cd = hcmt.mdb_cd,
tt.inst_name_kana = hcmt.form_inst_name_kana, tt.inst_name_kana = hcmt.form_inst_name_kana,
@ -90,7 +91,10 @@ BEGIN
WHERE WHERE
tt.v_inst_cd = hcmt.hco_vid_v tt.v_inst_cd = hcmt.hco_vid_v
AND tt.inst_clas_cd = '1' 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, call medaca_common.put_info_log(schema_name, procedure_name, procedure_args,
'【洗替】メルク施設コードの洗替_A③ 終了'); '【洗替】メルク施設コードの洗替_A③ 終了');

View File

@ -1,5 +1,5 @@
-- A5M2で実行時に[SQL] - [スラッシュ(/)のみの行でSQLを区切る]に変えてから実行する -- 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 SQL SECURITY INVOKER
BEGIN BEGIN
-- スキーマ名 -- スキーマ名
@ -25,6 +25,7 @@ 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,
'【洗替】メルク施設コードの洗替_B① 開始'); '【洗替】メルク施設コードの洗替_B① 開始');
SET @update_institution = "
UPDATE ( UPDATE (
SELECT SELECT
dcf_dsf_inst_cd, dcf_dsf_inst_cd,
@ -36,17 +37,23 @@ BEGIN
FROM FROM
internal05.inst_merge_t internal05.inst_merge_t
) AS imt, ) AS imt,
src05.@target_table AS tt $$target_table$$ AS tt
SET SET
tt.inst_cd = imt.dup_opp_cd, tt.inst_cd = imt.dup_opp_cd,
tt.inst_name = imt.form_inst_name_kanji, tt.inst_name = imt.form_inst_name_kanji,
tt.inst_name_kana = imt.form_inst_name_kana, tt.inst_name_kana = imt.form_inst_name_kana,
tt.address = imt.inst_addr, tt.address = imt.inst_addr,
tt.prefc_cd = imt.prefc_cd tt.pref_cd = imt.prefc_cd,
tt.dwh_upd_dt = SYSDATE()
WHERE WHERE
tt.inst_cd = imt.dcf_dsf_inst_cd 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, call medaca_common.put_info_log(schema_name, procedure_name, procedure_args,
'【洗替】メルク施設コードの洗替_B① 終了'); '【洗替】メルク施設コードの洗替_B① 終了');
END

View File

@ -1,5 +1,5 @@
-- A5M2で実行時に[SQL] - [スラッシュ(/)のみの行でSQLを区切る]に変えてから実行する -- 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 SQL SECURITY INVOKER
BEGIN BEGIN
-- スキーマ名 -- スキーマ名
@ -25,11 +25,15 @@ 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,
'卸販売実績テーブル(洗替後)過去5年以前のデータ削除① 開始'); '卸販売実績テーブル(洗替後)過去5年以前のデータ削除① 開始');
SET @delete_data = "
DELETE FROM DELETE FROM
src05.@target_table $$target_table$$
WHERE WHERE
kjyo_ym < DATE_FORMAT((src05.get_syor_date() - INTERVAL @laundering_period_year YEAR), '%Y%m') 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, call medaca_common.put_info_log(schema_name, procedure_name, procedure_args,
'卸販売実績テーブル(洗替後)過去5年以前のデータ削除① 終了'); '卸販売実績テーブル(洗替後)過去5年以前のデータ削除① 終了');

View File

@ -1,6 +1,6 @@
-- A5M2で実行時に[SQL] - [スラッシュ(/)のみの行でSQLを区切る]に変えてから実行する -- A5M2で実行時に[SQL] - [スラッシュ(/)のみの行でSQLを区切る]に変えてから実行する
CREATE PROCEDURE src05.sales_lau_upsert(@target_table VARCHAR(64), @extract_from_date DATETIME, CREATE PROCEDURE src05.sales_lau_upsert(target_table VARCHAR(255), extract_from_date date,
@extract_to_date DATETIME) extract_to_date date)
SQL SECURITY INVOKER SQL SECURITY INVOKER
BEGIN BEGIN
-- スキーマ名 -- スキーマ名
@ -54,7 +54,7 @@ BEGIN
ppmv.phm_itm_cd, ppmv.phm_itm_cd,
ppmv.start_date AS pp_start_date, ppmv.start_date AS pp_start_date,
ppmv.end_date AS pp_end_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.start_date AS bp_start_date,
bpnc.end_date AS bp_end_date bpnc.end_date AS bp_end_date
FROM FROM
@ -85,32 +85,33 @@ BEGIN
); );
INSERT INTO INSERT INTO
internal05.internal05.fcl_mst_v_t internal05.fcl_mst_v_t
SELECT SELECT
v_inst_cd, fmv1.v_inst_cd,
sub_num, fmv1.sub_num,
start_date, fmv1.start_date,
end_date, fmv1.end_date,
closed_dt, fmv1.closed_dt,
fcl_name, fmv1.fcl_name,
fcl_kn_name, fmv1.fcl_kn_name,
fcl_abb_name, fmv1.fcl_abb_name,
mkr_cd, fmv1.fcl_abb_kn_name,
jsk_proc_kbn, fmv1.mkr_cd,
fmt_addr, fmv1.jsk_proc_kbn,
fmt_kn_addr, fmv1.fmt_addr,
postal_cd, fmv1.fmt_kn_addr,
prft_cd, fmv1.postal_cd,
prft_name, fmv1.prft_cd,
city_name, fmv1.prft_name,
addr_line_1, fmv1.city_name,
tel_num, fmv1.addr_line_1,
admin_kbn, fmv1.tel_num,
fcl_type, fmv1.admin_kbn,
rec_sts_kbn, fmv1.fcl_type,
ins_dt, fmv1.rec_sts_kbn,
upd_dt, fmv1.ins_dt,
dwh_upd_dt fmv1.upd_dt,
fmv1.dwh_upd_dt
FROM FROM
src05.fcl_mst_v AS fmv1 src05.fcl_mst_v AS fmv1
INNER JOIN ( INNER JOIN (
@ -136,8 +137,9 @@ BEGIN
'卸販売実績テーブル(洗替後)作成⑤ 開始' '卸販売実績テーブル(洗替後)作成⑤ 開始'
); );
SET @insert_sales_laundering = "
INSERT INTO INSERT INTO
src05.@target_table ( $$target_table$$ (
rec_whs_cd, rec_whs_cd,
rec_whs_sub_cd, rec_whs_sub_cd,
rec_whs_org_cd, rec_whs_org_cd,
@ -330,15 +332,17 @@ BEGIN
ON s.comm_cd = ppmv.prd_cd 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 STR_TO_DATE(s.hsdn_ymd,'%Y%m%d') BETWEEN ppmv.start_date AND ppmv.end_date
AND ppmv.rec_sts_kbn != '9' AND ppmv.rec_sts_kbn != '9'
LEFT OUTER JOIN src05.fcl_mst_v_t AS fmvt LEFT OUTER JOIN internal05.fcl_mst_v_t AS fmvt
ON s.v_inst_cd = fmvt.v_inst_cd ON s.v_inst_cd = fmvt.v_inst_cd
LEFT OUTER JOIN src05.bu_prd_name_contrast_t AS bpnct LEFT OUTER JOIN internal05.bu_prd_name_contrast_t AS bpnct
ON s.comm_cd = bpnct.prd_cd 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.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 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 LEFT OUTER JOIN src05.com_inst AS ci
ON s.v_inst_cd = ci.dcf_dsf_inst_cd ON s.v_inst_cd = ci.dcf_dsf_inst_cd
WHERE WHERE
(? <= s.dwh_upd_dt AND s.dwh_upd_dt <= ?)
AND (
(s.rec_sts_kbn = '0' AND s.err_flg20 = 'M') (s.rec_sts_kbn = '0' AND s.err_flg20 = 'M')
OR ( OR (
s.rec_sts_kbn = '0' s.rec_sts_kbn = '0'
@ -352,6 +356,7 @@ BEGIN
OR s.fcl_exec_kbn IS NULL OR s.fcl_exec_kbn IS NULL
) )
) )
)
ON DUPLICATE KEY UPDATE ON DUPLICATE KEY UPDATE
rec_whs_cd = s.rec_whs_cd, rec_whs_cd = s.rec_whs_cd,
@ -480,7 +485,10 @@ BEGIN
ins_dt = s.ins_dt, ins_dt = s.ins_dt,
ins_usr = s.ins_usr, ins_usr = s.ins_usr,
dwh_upd_dt = SYSDATE() 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,
'卸販売実績テーブル(洗替後)作成⑤ 終了' '卸販売実績テーブル(洗替後)作成⑤ 終了'
@ -490,65 +498,16 @@ BEGIN
'卸販売実績テーブル(洗替後)作成⑥ 開始' '卸販売実績テーブル(洗替後)作成⑥ 開始'
); );
UPDATE ( SET @update_institution_code = "
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
;
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 UPDATE
( SELECT CAST(SYSDATE() AS DATE) AS today ) AS sub, ( SELECT CAST(SYSDATE() AS DATE) AS today ) AS sub,
src05.sales_lau AS sl, $$target_table$$ AS tt,
src05.sales AS s src05.sales AS s
SET SET
sl.inst_cd = ( tt.inst_cd = (
CASE CASE
WHEN WHEN
(s.err_flg20 != 'M' AND sl.inst_clas_cd IN ('2', '3')) OR (s.err_flg20 = 'M') (s.err_flg20 != 'M' AND tt.inst_clas_cd IN ('2', '3')) OR (s.err_flg20 = 'M')
THEN THEN
s.v_inst_cd s.v_inst_cd
ELSE ELSE
@ -557,12 +516,15 @@ BEGIN
) )
WHERE WHERE
sub.today = CAST(s.dwh_upd_dt AS DATE) sub.today = CAST(s.dwh_upd_dt AS DATE)
AND sl.slip_mgt_num = s.slip_mgt_num AND tt.slip_mgt_num = s.slip_mgt_num
AND sl.row_num = s.row_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, call medaca_common.put_info_log(schema_name, procedure_name, procedure_args,
'卸販売実績テーブル(洗替後)作成⑦ 終了' '卸販売実績テーブル(洗替後)作成⑥ 終了'
); );
END END

View File

@ -1,5 +1,5 @@
-- A5M2で実行時に[SQL] - [スラッシュ(/)のみの行でSQLを区切る]に変えてから実行する -- 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 SQL SECURITY INVOKER
BEGIN BEGIN
-- スキーマ名 -- スキーマ名
@ -26,6 +26,7 @@ BEGIN
'【洗替】HCO施設コードの洗替① 開始' '【洗替】HCO施設コードの洗替① 開始'
); );
SET @update_institution = "
UPDATE ( UPDATE (
SELECT SELECT
v_inst_cd, v_inst_cd,
@ -39,7 +40,7 @@ BEGIN
WHERE WHERE
(fcl_type IN ('A1', 'A0')) OR fcl_type BETWEEN '20' AND '29' (fcl_type IN ('A1', 'A0')) OR fcl_type BETWEEN '20' AND '29'
) AS vimt, ) AS vimt,
src05.@target_table AS tt $$target_table$$ AS tt
SET SET
tt.inst_cd = ( tt.inst_cd = (
CASE CASE
@ -52,17 +53,20 @@ BEGIN
THEN THEN
vimt.v_inst_cd_merge vimt.v_inst_cd_merge
END END
) ),
tt.v_inst_cd = vimt.v_inst_cd_merge, tt.v_inst_cd = vimt.v_inst_cd_merge,
tt.inst_name = vimt.fcl_name, tt.inst_name = vimt.fcl_name,
tt.inst_name_kana = vimt.fcl_kn_name, tt.inst_name_kana = vimt.fcl_kn_name,
tt.address = vimt.fmt_addr, tt.address = vimt.fmt_addr,
tt.prefc_cd = vimt.prft_cd, tt.pref_cd = vimt.prft_cd,
tt.dwh_upd_dt = SYSDATE() tt.dwh_upd_dt = SYSDATE()
WHERE WHERE
tt.v_inst_cd = vimt.v_inst_cd tt.v_inst_cd = vimt.v_inst_cd
AND (tt.inst_clas_cd IN ('1', '2', '3')) 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, call medaca_common.put_info_log(schema_name, procedure_name, procedure_args,
'【洗替】HCO施設コードの洗替① 終了' '【洗替】HCO施設コードの洗替① 終了'

View File

@ -1,5 +1,5 @@
-- A5M2で実行時に[SQL] - [スラッシュ(/)のみの行でSQLを区切る]に変えてから実行する -- 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 SQL SECURITY INVOKER
BEGIN BEGIN
-- スキーマ名 -- スキーマ名
@ -43,7 +43,7 @@ BEGIN
customer_cd, customer_cd,
whs_org_cd, whs_org_cd,
v_org_cd, v_org_cd,
nm_2 name_2
) )
SELECT SELECT
wcmv.whs_cd, wcmv.whs_cd,
@ -89,7 +89,8 @@ BEGIN
ON ocmv.v_org_cd = mohv2.v_cd_2 ON ocmv.v_org_cd = mohv2.v_cd_2
WHERE WHERE
wcmv.rec_sts_kbn != '9' wcmv.rec_sts_kbn != '9'
AND src05.get_syor_date() BETWEEN wcmv.start_date AND wcmv.end_date; 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, call medaca_common.put_info_log(schema_name, procedure_name, procedure_args,
'【洗替】1.卸組織洗替② 終了' '【洗替】1.卸組織洗替② 終了'
@ -99,17 +100,21 @@ BEGIN
'【洗替】1.卸組織洗替③ 開始' '【洗替】1.卸組織洗替③ 開始'
); );
SET @update_organization = "
UPDATE UPDATE
src05.sales_lau AS sl, src05.@target_table AS tt $$target_table$$ AS tt, internal05.whs_customer_org_t AS wcot
SET SET
sl.whs_org_cd = tt.whs_org_cd, tt.whs_org_cd = wcot.whs_org_cd,
sl.v_whsorg_cd = tt.v_org_cd, tt.v_whsorg_cd = wcot.v_org_cd,
sl.whs_org_name = tt.nm_2 tt.whs_org_name = wcot.name_2
WHERE WHERE
st.whs_cd = tt.whs_cd wcot.whs_cd = tt.rec_whs_cd
AND st.whs_sub_cd = tt.whs_sub_cd AND wcot.whs_sub_cd = tt.rec_whs_sub_cd
AND st.customer_cd = tt.customer_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, call medaca_common.put_info_log(schema_name, procedure_name, procedure_args,
'【洗替】1.卸組織洗替③ 終了' '【洗替】1.卸組織洗替③ 終了'