feat: 出身校ファイル取り込み追加

This commit is contained in:
shimoda.m@nds-tyo.co.jp 2023-04-05 17:20:01 +09:00
parent 3fa5f03588
commit 66760c398f
5 changed files with 108 additions and 2 deletions

View File

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

View File

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

View File

@ -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] # 当モジュール名(現行から変わっている)

View File

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

View File

@ -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,
# 都道府県マスタ