指摘事項修正

This commit is contained in:
野間 2023-07-05 13:54:11 +09:00
parent 3fa372b5da
commit 819c1543f8
2 changed files with 28 additions and 30 deletions

View File

@ -69,10 +69,7 @@ class ArisjBucket(S3Bucket):
_bucket_name = environment.ARISJ_DATA_BUCKET
_folder = environment.ARISJ_BACKUP_FOLDER
def list_dat_file(self):
return self._s3_client.list_objects(self._bucket_name, self._folder)
def s3_arisj_csv_upload(self, arisj_create_csv: str, csv_file_path: str):
def upload_arisj_csv_file(self, arisj_create_csv: str, csv_file_path: str):
# s3にCSVファイルをUPする
Bucket = environment.ARISJ_DATA_BUCKET
folder = environment.ARISJ_DATA_FOLDER
@ -81,7 +78,7 @@ class ArisjBucket(S3Bucket):
s3_client.upload_file(csv_file_path, Bucket, csv_file_name)
return
def backup_dat_file(self, dat_file_key: str, datetime_key: str):
def backup_arisj_csv_file(self, dat_file_key: str, datetime_key: str):
# バックアップバケットにコピー
arisj_backup_bucket = ArisjBackupBucket()
folder = environment.ARISJ_DATA_FOLDER

View File

@ -12,13 +12,14 @@ import csv
logger = get_logger('ARIS-J連携データ出力')
create_date = datetime.now().strftime('%Y%m%d%H%M%S')
arisj_create_csv = f'D0004_ARIS_M_DCF_{create_date}.csv'
sql_err_msg = "SQL実行エラーです。"
def exec():
""" 実消化&アルトマーク月次バッチ """
create_date = datetime.now().strftime('%Y%m%d%H%M%S')
arisj_csv_file_name = f'D0004_ARIS_M_DCF_{create_date}.csv'
try:
logger.info('バッチ処理を開始しました。')
@ -34,30 +35,30 @@ def exec():
db.begin()
# 正常系データの反映
# 過去分は不要のため、デリート
physical_wk_inst_aris_if_delete(db)
# 前回保管した施設IFワークを削除する
delete_previous_wk_inst_aris_if_record(db)
# 正常系データを取得しWKテーブルに保存する。
wk_inst_aris_if_insert_into(db)
insert_normal_record_into_wk_inst_aris_if(db)
# 正常系データの件数を取得
suc_count = wk_inst_aris_if_count(db)
suc_count = count_wk_inst_aris_if_record(db)
# 警告系データの反映
# 過去分は不要のため、DWH.WK_INST_ARIS_IF_WRNをデリートする。
physical_wk_inst_aris_if_wrn_delete(db)
# 前回保管した施設IF警告ワークを削除する
delete_previous_wk_inst_aris_if_wrn_record(db)
# 異常系データを取得しWKテーブルに保存する。
wk_inst_aris_if_wrn_insert_into(db)
insert_abnormal_record_into_wk_inst_aris_if_wrn(db)
# 異常系データの件数を取得
wrn_count = wk_inst_aris_if_wrn_count(db)
wrn_count = count_wk_inst_aris_if_wrn_record(db)
# CSVファイルの作成用のSQL実行
record_csv = csv_data_select(db)
# CSVファイル作成
csv_file_path = make_csv_data(record_csv)
csv_file_path = make_csv_data(record_csv, arisj_csv_file_name)
# トランザクションの終了
db.commit()
@ -66,18 +67,18 @@ def exec():
sum_count = suc_count + wrn_count
logger.info(f'(対象件数:{sum_count}/正常件数:{suc_count}/警告件数:{wrn_count})')
arisj_bucket = ArisjBucket()
# CSVファイル移動処理
try:
ArisjBucket().s3_arisj_csv_upload(arisj_create_csv, csv_file_path)
arisj_bucket.upload_arisj_csv_file(arisj_csv_file_name, csv_file_path)
except Exception as e:
logger.info('S3バケットArisjへのCSVデータ、移動できませんでした。')
raise e
# 処理後ファイルをバックアップ
try:
arisj_bucket = ArisjBucket()
batch_context = BatchContext.get_instance()
arisj_bucket.backup_dat_file(arisj_create_csv, batch_context.syor_date)
arisj_bucket.backup_arisj_csv_file(arisj_csv_file_name, batch_context.syor_date)
except Exception as e:
logger.info('S3バケットArisjバックアップへCSVデータ、コピーできませんでした。')
raise e
@ -93,8 +94,8 @@ def exec():
db.disconnect()
def physical_wk_inst_aris_if_delete(db):
# 過去分は不要のため、デリート
def delete_previous_wk_inst_aris_if_record(db):
# 前回保管した施設IFワークを削除する
try:
# WKテーブルの過去分削除SQL
sql = """\
@ -107,7 +108,7 @@ def physical_wk_inst_aris_if_delete(db):
raise e
def wk_inst_aris_if_insert_into(db):
def insert_normal_record_into_wk_inst_aris_if(db):
# 正常系データを取得しWKテーブルに保存する。
try:
# 正常系データを取得しWKテーブルに保存SQL
@ -155,7 +156,7 @@ def wk_inst_aris_if_insert_into(db):
raise e
def wk_inst_aris_if_count(db):
def count_wk_inst_aris_if_record(db):
# 正常系データの件数を取得
try:
# 正常系データの件数を取得SQL
@ -169,8 +170,8 @@ def wk_inst_aris_if_count(db):
raise e
def physical_wk_inst_aris_if_wrn_delete(db):
# 過去分は不要のため、DWH.WK_INST_ARIS_IF_WRNをデリートする。
def delete_previous_wk_inst_aris_if_wrn_record(db):
# 前回保管した施設IF警告ワークを削除する
try:
# 異常系WKテーブルの過去分削除SQL
sql = """\
@ -184,7 +185,7 @@ def physical_wk_inst_aris_if_wrn_delete(db):
raise e
def wk_inst_aris_if_wrn_insert_into(db):
def insert_abnormal_record_into_wk_inst_aris_if_wrn(db):
# 異常系データを取得しWKテーブルに保存する。
try:
# 異常系データを取得しWKテーブルに保存SQL
@ -238,7 +239,7 @@ def wk_inst_aris_if_wrn_insert_into(db):
raise e
def wk_inst_aris_if_wrn_count(db):
def count_wk_inst_aris_if_wrn_record(db):
# 異常系データの件数を取得
try:
# 異常系データの件数を取得SQL
@ -271,18 +272,18 @@ def csv_data_select(db):
raise e
def make_csv_data(record_csv: list):
def make_csv_data(record_csv: list, arisj_csv_file_name: str):
# 一時ファイルとして保存する(CSVファイル)
try:
temporary_dir = tempfile.mkdtemp()
csv_file_path = path.join(temporary_dir, arisj_create_csv)
csv_file_path = path.join(temporary_dir, arisj_csv_file_name)
head_str = ['TC_HOSPITAL', 'TJ_HOSPITAL', 'TJ_HOSPITALSHORT', 'TK_HOSPITAL',
'TC_PREFECTURE', 'TJ_PREFECTURE', 'TJ_ZIPCODE', 'TJ_CITY', 'TJ_ADDRESS', 'TJ_DEPARTMENT',
'TJ_TELEPHONENUMBER', 'TC_HOSPITALCAT', 'TC_HOSPITALTYPE', 'TS_UPDATE', 'TD_UPDATE']
with open(csv_file_path, mode='w', encoding='cp932') as csv_file:
# ヘッダ行書き込みくくり文字をつけない為にwriteしています)
# ヘッダ行書き込みくくり文字をつけない為にwriterowではなく、writeを使用しています)
csv_file.write(f"{','.join(head_str)}\n")
# Shift-JIS、CRLF、価囲いありで書き込む