From 00b8cca1c42ba2586d45a2f8f6b94fdcafe9c038 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Tue, 28 Nov 2023 17:25:38 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20INSERT=E6=99=82=E3=81=AE@=E9=A0=85?= =?UTF-8?q?=E7=9B=AE=E3=82=AF=E3=83=AA=E3=82=A2=E3=81=AE=E6=A8=AA=E5=B1=95?= =?UTF-8?q?=E9=96=8B=E4=BF=AE=E6=AD=A3=EF=BC=88=20COM=5F=E5=B0=82=E9=96=80?= =?UTF-8?q?=E5=88=86=E9=87=8E=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../concrete/com_sp_field_mapper.py | 36 ++++++++++++------- .../com_sp_field/com_sp_field_insert.csv | 1 + .../expect_com_sp_field_insert.csv | 1 + .../tests/testing_utility.py | 2 ++ 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py index c84dd089..90b9d9a0 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py @@ -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 diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_insert.csv index b6e91047..b68e46d0 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_insert.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_insert.csv @@ -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" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_insert.csv index b52c8c90..8b5f1ad2 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_insert.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_insert.csv @@ -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" diff --git a/ecs/jskult-batch-daily/tests/testing_utility.py b/ecs/jskult-batch-daily/tests/testing_utility.py index 5a6c3a42..a59a647b 100644 --- a/ecs/jskult-batch-daily/tests/testing_utility.py +++ b/ecs/jskult-batch-daily/tests/testing_utility.py @@ -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