From 4bde68a27c631c4e7c16e1fd4bdc98193c000504 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=9C=A8=E8=A6=81?= Date: Wed, 21 Jun 2023 18:11:32 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=E3=83=AC=E3=83=93=E3=83=A5=E3=83=BC?= =?UTF-8?q?=E6=8C=87=E6=91=98=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../laundering/sales_results_laundering.py | 37 ++--- .../src05/sales_lau_upsert.sql | 131 +++++------------- .../src05/whs_org_laundering.sql | 1 - 3 files changed, 56 insertions(+), 113 deletions(-) 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 4fe4126a..04d0dcaa 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 @@ -4,7 +4,7 @@ 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('卸実績洗替') +logger = get_logger('卸卸販売洗替') def exec(): @@ -48,7 +48,7 @@ def _call_sales_lau_upsert(db: Database): 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() - interval {environment.SALES_LAUNDERING_EXTRACT_DATE_PERIOD} day), src05.get_syor_date() ) """) @@ -70,27 +70,28 @@ def _call_whs_org_laundering(db: Database): 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) + if _count_v_inst_merge_t(db) == 0: + logger.info('V施設統合マスタ(洗替処理一時テーブル)にデータは存在しません') return - logger.info('V施設統合マスタにデータは存在しません') + + _call_v_inst_merge_laundering(db) return -def _count_vop_hco_merge_v(db: Database) -> int: - # V施設統合マスタのデータ件数の取得 +def _count_v_inst_merge_t(db: Database) -> int: + # V施設統合マスタ(洗替処理一時テーブル)のデータ件数の取得 try: sql = """ SELECT COUNT(v_inst_cd) AS cnt FROM - src05.vop_hco_merge_v + internal05.v_inst_merge_t """ result = db.execute_select(sql) logging_sql(logger, sql) - logger.info('V施設統合マスタのデータ件数の取得 成功') + logger.info('V施設統合マスタ(洗替処理一時テーブル)のデータ件数の取得 成功') except Exception as e: - logger.debug('V施設統合マスタのデータ件数の取得 失敗') + logger.debug('V施設統合マスタ(洗替処理一時テーブル)のデータ件数の取得 失敗') raise e return result[0]['cnt'] @@ -128,27 +129,27 @@ def _call_hco_to_mdb_laundering(db: Database): 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) + if _count_inst_merge_t(db) == 0: + logger.info('アルトマーク施設統合マスタ(洗替処理一時テーブル)にデータは存在しません') return - logger.info('DCF施設統合マスタにデータは存在しません') + _call_inst_merge_laundering(db) return -def _count_dcf_inst_merge(db: Database) -> int: - # DCF施設統合マスタのデータ件数の取得 +def _count_inst_merge_t(db: Database) -> int: + # アルトマーク施設統合マスタ(洗替処理一時テーブル)のデータ件数の取得 try: sql = """ SELECT COUNT(dcf_inst_cd) AS cnt FROM - src05.dcf_inst_merge + internal05.inst_merge_t """ result = db.execute_select(sql) logging_sql(logger, sql) - logger.info('DCF施設統合マスタのデータ件数の取得 成功') + logger.info('アルトマーク施設統合マスタ(洗替処理一時テーブル)のデータ件数の取得 成功') except Exception as e: - logger.debug('DCF施設統合マスタのデータ件数の取得 失敗') + logger.debug('アルトマーク施設統合マスタ(洗替処理一時テーブル)のデータ件数の取得 失敗') raise e return result[0]['cnt'] diff --git a/rds_mysql/stored_procedure/src05/sales_lau_upsert.sql b/rds_mysql/stored_procedure/src05/sales_lau_upsert.sql index ecb2b671..182c3b3a 100644 --- a/rds_mysql/stored_procedure/src05/sales_lau_upsert.sql +++ b/rds_mysql/stored_procedure/src05/sales_lau_upsert.sql @@ -137,7 +137,10 @@ BEGIN '卸販売実績テーブル(洗替後)作成⑤ 開始' ); - SET @insert_sales_laundering = " + SET @extract_from_datetime = CAST(extract_from_date AS DATETIME); + SET @extract_to_datetime = CAST(extract_to_date AS DATETIME); + + SET @upsert_sales_launderning = " INSERT INTO $$target_table$$ ( rec_whs_cd, @@ -256,7 +259,7 @@ BEGIN WHEN (LEFT(s.v_tran_cd, 1) = 2 AND (s.err_flg20 IS NULL OR s.err_flg20 != 'M')) THEN - (s.nonyu_qty * -1) + -s.nonyu_qty ELSE s.nonyu_qty END AS nonyu_qty, @@ -265,7 +268,7 @@ BEGIN WHEN (LEFT(s.v_tran_cd, 1) = 2 AND (s.err_flg20 IS NULL OR s.err_flg20 != 'M')) THEN - (s.nonyu_amt * -1) + -s.nonyu_amt ELSE s.nonyu_amt END AS nonyu_amt, @@ -274,7 +277,7 @@ BEGIN WHEN (LEFT(s.v_tran_cd, 1) = 2 AND (s.err_flg20 IS NULL OR s.err_flg20 != 'M')) THEN - (s.shikiri_amt * -1) + -s.shikiri_amt ELSE s.shikiri_amt END AS shikiri_amt, @@ -283,7 +286,7 @@ BEGIN WHEN (LEFT(s.v_tran_cd,1) = 2 AND (s.err_flg20 IS NULL OR s.err_flg20 != 'M')) THEN - (s.nhi_amt * -1) + -s.nhi_amt ELSE s.nhi_amt END AS nhi_amt, @@ -307,7 +310,7 @@ BEGIN ci.prefc_cd ELSE fmvt.prft_cd - END AS prft_cd, + END AS pref_cd, s.whspos_err_kbn, s.htdnymd_err_kbn, s.prd_exis_kbn, @@ -324,10 +327,11 @@ BEGIN SYSDATE() FROM ( SELECT - CAST(SYSDATE() AS DATE) AS today + ? AS extract_from_datetime, + ? AS extract_to_datetime ) AS sub INNER JOIN src05.sales AS s - ON sub.today = CAST(s.dwh_upd_dt AS DATE) + ON s.dwh_upd_dt BETWEEN sub.extract_from_datetime AND sub.extract_to_datetime 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 @@ -341,21 +345,15 @@ BEGIN 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 - ) - ) + (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 @@ -399,78 +397,20 @@ BEGIN 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_qty = VALUES(nonyu_qty), 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 - ), + nonyu_amt = VALUES(nonyu_amt), 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 - ), + shikiri_amt = VALUES(shikiri_amt), 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 - ), + nhi_amt = VALUES(nhi_amt), 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 - ), + inst_clas_cd = VALUES(inst_clas_cd), 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 - ), + pref_cd = VALUES(pref_cd), whspos_err_kbn = s.whspos_err_kbn, htdnymd_err_kbn = s.htdnymd_err_kbn, prd_exis_kbn = s.prd_exis_kbn, @@ -486,9 +426,9 @@ BEGIN 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; + SET @upsert_sales_launderning = REPLACE(@upsert_sales_launderning, "$$target_table$$", target_table); + PREPARE upsert_sales_launderning_stmt from @upsert_sales_launderning; + EXECUTE upsert_sales_launderning_stmt USING @extract_from_datetime, @extract_to_datetime; call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, '卸販売実績テーブル(洗替後)作成⑤ 終了' @@ -499,8 +439,11 @@ BEGIN ); SET @update_institution_code = " - UPDATE - ( SELECT CAST(SYSDATE() AS DATE) AS today ) AS sub, + UPDATE ( + SELECT + ? AS extract_from_datetime, + ? AS extract_to_datetime + ) AS sub, $$target_table$$ AS tt, src05.sales AS s SET @@ -515,13 +458,13 @@ BEGIN END ) WHERE - sub.today = CAST(s.dwh_upd_dt AS DATE) + s.dwh_upd_dt BETWEEN sub.extract_from_datetime AND sub.extract_to_datetime 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; + EXECUTE update_institution_code_stmt USING @extract_from_datetime, @extract_to_datetime; call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, '卸販売実績テーブル(洗替後)作成⑥ 終了' diff --git a/rds_mysql/stored_procedure/src05/whs_org_laundering.sql b/rds_mysql/stored_procedure/src05/whs_org_laundering.sql index 4b5835ee..65dc9e30 100644 --- a/rds_mysql/stored_procedure/src05/whs_org_laundering.sql +++ b/rds_mysql/stored_procedure/src05/whs_org_laundering.sql @@ -67,7 +67,6 @@ BEGIN FROM src05.mkr_org_horizon_v AS mohv INNER JOIN ( SELECT - count(1) AS c, v_cd_2, MAX(dwh_upd_dt) AS dwh_upd_dt_latest FROM