feat: レビュー指摘対応

This commit is contained in:
高木要 2023-06-21 18:11:32 +09:00
parent 5f4efd451d
commit 4bde68a27c
3 changed files with 56 additions and 113 deletions

View File

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

View File

@ -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,
'卸販売実績テーブル(洗替後)作成⑥ 終了'

View File

@ -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