From 66760c398fd1bd034bfb673b3ab589ddd5455107 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Wed, 5 Apr 2023 17:20:01 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=87=BA=E8=BA=AB=E6=A0=A1=E3=83=95?= =?UTF-8?q?=E3=82=A1=E3=82=A4=E3=83=AB=E5=8F=96=E3=82=8A=E8=BE=BC=E3=81=BF?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/batch/ultmarc/dat_insert.py | 1 + .../table_mapper/concrete/com_alma_mapper.py | 90 +++++++++++++++++++ .../concrete/com_hamtec_mapper.py | 1 + .../ultmarc/utmp_tables/tables/com_alma.py | 14 +++ .../ultmarc_table_mapper_factory.py | 4 +- 5 files changed, 108 insertions(+), 2 deletions(-) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_alma_mapper.py create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_alma.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/dat_insert.py b/ecs/jskult-batch-daily/src/batch/ultmarc/dat_insert.py index 025db42f..2975b5ae 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/dat_insert.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/dat_insert.py @@ -67,6 +67,7 @@ def dat_insert_control(): logger.info(f'Count: {log_count}') except Exception as e: # TODO: ログちゃんとする + logger.warning(e) record = line.record log_message = ','.join([f'"{r}"' for r in record]) logger.warning(log_message) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_alma_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_alma_mapper.py new file mode 100644 index 00000000..52008ec5 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_alma_mapper.py @@ -0,0 +1,90 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_alma import ComAlma + + +class ComAlmaMapper(UltmarcTableMapper): + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_alma + WHERE + alma_cd = :alma_cd + """ + # データ登録・更新用のSQL + INSERT_QUERY = """\ + INSERT INTO src05.com_alma + ( + alma_cd, + alma, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :alma_cd, + :alma, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + UPDATE_QUERY = """\ + UPDATE + src05.com_alma + SET + alma = :alma, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + alma_cd = :alma_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_alma + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_date_str_ymd, + update_prgm_id = :program_name + WHERE + alma_cd = :alma_cd + """ + record: ComAlma + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComAlma) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameters[0]['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameters[0] = {**self.query_parameters[0], **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameters[0]) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合はUpdate + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_hamtec_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_hamtec_mapper.py index 8dd8f463..1221965a 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_hamtec_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_hamtec_mapper.py @@ -63,6 +63,7 @@ class ComHamtecMapper(UltmarcTableMapper): hamtec_cd = :hamtec_cd """ record: ComHamtec + def __init__(self, record: list[str], db) -> None: super().__init__(record, db, ComHamtec) program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_alma.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_alma.py new file mode 100644 index 00000000..0ea65397 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_alma.py @@ -0,0 +1,14 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComAlma(UltmarcTable): + + maint_flag: str # 修正区分 + alma_cd: str # 出身校コード + alma: str # 出身校 + + def __init__(self, record: list[str]): + super().__init__(record) + self.maint_flag = record[2] + self.alma_cd = record[1] + self.alma = record[5] diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/ultmarc_table_mapper_factory.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/ultmarc_table_mapper_factory.py index 0b5748c0..7f1ee24e 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/ultmarc_table_mapper_factory.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/ultmarc_table_mapper_factory.py @@ -1,5 +1,5 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete import ( - com_hamtec_mapper, com_inst_mapper, null_mapper) + com_alma_mapper, com_hamtec_mapper, com_inst_mapper, null_mapper) from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ UltmarcTableMapper from src.db.database import Database @@ -42,7 +42,7 @@ COM_TABLE_LIST = { # COM_出身校学部識別 "003": null_mapper.NullMapper, # COM_出身校 - "004": null_mapper.NullMapper, + "004": com_alma_mapper.ComAlmaMapper, # COM_役職 "005": null_mapper.NullMapper, # 都道府県マスタ