fix: INSERT時の@項目クリアの横展開修正( COM_専門分野)

This commit is contained in:
shimoda.m@nds-tyo.co.jp 2023-11-28 17:25:38 +09:00
parent 2e3c0ec0f9
commit 00b8cca1c4
4 changed files with 28 additions and 12 deletions

View File

@ -104,6 +104,10 @@ class ComSpFieldMapper(UltmarcTableMapper):
# レコードの存在確認
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
# 項目クリアを設定
self.__set_clearing_item()
# 存在しない場合はInsert
if record_count[0]['count_num'] == 0:
return self.INSERT_QUERY
@ -112,26 +116,17 @@ class ComSpFieldMapper(UltmarcTableMapper):
if len(self.record.specialist_maint_div) > 0:
set_clauses.append('specialist_maint_div = :specialist_maint_div')
if len(self.record.specialist_flg) > 0:
if self.record.specialist_flg is not None and len(self.record.specialist_flg) > 0:
set_clauses.append('specialist_flg = :specialist_flg')
set_clauses.append('specialist_publsh_ymd = :specialist_publsh_ymd')
if self.record.specialist_flg == '@':
self.query_parameter['specialist_flg'] = None
self.query_parameter['specialist_publsh_ymd'] = None
if len(self.record.ackn_med_flg) > 0:
if self.record.ackn_med_flg is not None and len(self.record.ackn_med_flg) > 0:
set_clauses.append('ackn_med_flg = :ackn_med_flg')
set_clauses.append('ackn_med_publsh_ymd = :ackn_med_publsh_ymd')
if self.record.ackn_med_flg == '@':
self.query_parameter['ackn_med_flg'] = None
self.query_parameter['ackn_med_publsh_ymd'] = None
if len(self.record.guide_med_flg) > 0:
if self.record.guide_med_flg is not None and len(self.record.guide_med_flg) > 0:
set_clauses.append('guide_med_flg = :guide_med_flg')
set_clauses.append('guide_med_publsh_ymd = :guide_med_publsh_ymd')
if self.record.guide_med_flg == '@':
self.query_parameter['guide_med_flg'] = None
self.query_parameter['guide_med_publsh_ymd'] = None
update_columns = ','.join(set_clauses)
# 何も更新項目が無い場合はNoneとする更新処理は行わない
@ -144,3 +139,20 @@ class ComSpFieldMapper(UltmarcTableMapper):
update_columns=update_columns
)
return update_query
def __set_clearing_item(self):
# 専門医の集合項目クリア
if self.record.specialist_flg == '@':
self.query_parameter['specialist_flg'] = None
self.query_parameter['specialist_publsh_ymd'] = None
# 認定医の集合項目クリア
if self.record.ackn_med_flg == '@':
self.query_parameter['ackn_med_flg'] = None
self.query_parameter['ackn_med_publsh_ymd'] = None
# 指導医の集合項目クリア
if self.record.guide_med_flg == '@':
self.query_parameter['guide_med_flg'] = None
self.query_parameter['guide_med_publsh_ymd'] = None
return

View File

@ -5,3 +5,4 @@
"511","01","999613","00","A","0056","2","20141113","20141114","1","20140706","","","1","20140706"
"511","91","999999","99","B","9999","2","","","1","20220628","1","20230425","1","20230425"
"511","99","999999","99","A","9999","2","","","1","20220628","1","20230425","1","20230425"
"511","01","999988","99","A","9999","2",,,"@","20220628","@","20230425","@","20230425"

1 511 01 994301 00 A 0003 2 20141113 20141114 1 20140401
5 511 01 999613 00 A 0056 2 20141113 20141114 1 20140706 1 20140706
6 511 91 999999 99 B 9999 2 1 20220628 1 20230425 1 20230425
7 511 99 999999 99 A 9999 2 1 20220628 1 20230425 1 20230425
8 511 01 999988 99 A 9999 2 @ 20220628 @ 20230425 @ 20230425

View File

@ -6,3 +6,4 @@
"0199961300","0056","2","1","20140706","","","1","20140706","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2023/01/08 17:05:14","com_sp_field_mapper","2023/01/08 17:05:14","com_sp_field_mapper"
"9199999999","9999","2","1","20220628","1","20230425","1","20230425","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2023/01/08 17:05:14","com_sp_field_mapper","2023/01/08 17:05:14","com_sp_field_mapper"
"9999999999","9999","2","1","20220628","1","20230425","1","20230425","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2023/01/08 17:05:14","com_sp_field_mapper","2023/01/08 17:05:14","com_sp_field_mapper"
"0199998899","9999","2","NULL","NULL","NULL","NULL","NULL","NULL","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2023/01/08 17:05:14","com_sp_field_mapper","2023/01/08 17:05:14","com_sp_field_mapper"

1 dcf_pcf_dr_cd specialist_cd specialist_maint_div specialist_flg specialist_publsh_ymd ackn_med_flg ackn_med_publsh_ymd guide_med_flg guide_med_publsh_ymd regist_ymd update_ymd delete_ymd regist_date create_user update_date update_user sys_regist_date regist_prgm_id sys_update_date update_prgm_id
6 0199961300 0056 2 1 20140706 1 20140706 20230425 NULL NULL NULL NULL NULL NULL 2023/01/08 17:05:14 com_sp_field_mapper 2023/01/08 17:05:14 com_sp_field_mapper
7 9199999999 9999 2 1 20220628 1 20230425 1 20230425 20230425 NULL NULL NULL NULL NULL NULL 2023/01/08 17:05:14 com_sp_field_mapper 2023/01/08 17:05:14 com_sp_field_mapper
8 9999999999 9999 2 1 20220628 1 20230425 1 20230425 20230425 NULL NULL NULL NULL NULL NULL 2023/01/08 17:05:14 com_sp_field_mapper 2023/01/08 17:05:14 com_sp_field_mapper
9 0199998899 9999 2 NULL NULL NULL NULL NULL NULL 20230425 NULL NULL NULL NULL NULL NULL 2023/01/08 17:05:14 com_sp_field_mapper 2023/01/08 17:05:14 com_sp_field_mapper

View File

@ -136,6 +136,8 @@ def is_valid_date_format(date_str: str, date_format):
Returns:
_type_: 正しい日付文字列の場合Trueそれ以外はFalse
"""
if date_str is None:
return False
try:
datetime.strptime(date_str, date_format)
return True