From 67838a754d6df6127d2b368e8e07a7ee333946f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=9C=A8=E8=A6=81?= Date: Wed, 23 Aug 2023 17:57:19 +0900 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=E3=82=A2=E3=83=AB=E3=83=88?= =?UTF-8?q?=E3=83=9E=E3=83=BC=E3=82=AF=E6=96=BD=E8=A8=AD=EF=BC=86=E5=8C=BB?= =?UTF-8?q?=E5=B8=AB=E7=85=A7=E4=BC=9A=E3=81=AE=E6=A4=9C=E7=B4=A2=E4=B8=8A?= =?UTF-8?q?=E9=99=90=E3=82=AA=E3=83=BC=E3=83=90=E3=83=BC=E3=81=AE=E3=83=AC?= =?UTF-8?q?=E3=82=B9=E3=83=9D=E3=83=B3=E3=82=B9=E3=81=8C=E6=82=AA=E3=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/repositories/ultmarc_doctor_repository.py | 5 ++++- .../src/repositories/ultmarc_inst_repository.py | 5 ++++- ecs/jskult-webapp/src/system_var/environment.py | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ecs/jskult-webapp/src/repositories/ultmarc_doctor_repository.py b/ecs/jskult-webapp/src/repositories/ultmarc_doctor_repository.py index 810f045d..a97ec2ee 100644 --- a/ecs/jskult-webapp/src/repositories/ultmarc_doctor_repository.py +++ b/ecs/jskult-webapp/src/repositories/ultmarc_doctor_repository.py @@ -7,6 +7,7 @@ from src.model.db.ultmarc_doctor import UltmarcDoctorDBModel from src.model.db.ultmarc_doctor_info import UltmarcDoctorInfoDBModel from src.model.request.ultmarc_doctor import UltmarcDoctorSearchModel from src.repositories.base_repository import BaseRepository +from src.system_var import environment from src.util.string_util import is_not_empty logger = get_logger('COM_医師取得') @@ -46,6 +47,7 @@ class UltmarcDoctorRepository(BaseRepository): com_dr_wrkplace.dcf_dsf_inst_cd, com_dr_wrkplace.blng_sec_cd, com_dr_trt_course.trt_course_cd + LIMIT {limit} \ """ @@ -55,7 +57,8 @@ class UltmarcDoctorRepository(BaseRepository): # 文字列の検索を部分一致にするため、モデルをコピー。以降はこのコピーを使用する。 clone_parameter = UltmarcDoctorSearchModel(**parameter.model_dump()) where_clause = self.__build_condition(clone_parameter) - query = self.FETCH_SQL.format(where_clause=where_clause) + query = self.FETCH_SQL.format(where_clause=where_clause, limit=environment. + ULTMARC_SEARCH_RESULT_MAX_COUNT + 1) result = self._database.execute_select(query, clone_parameter.model_dump()) models = [UltmarcDoctorDBModel(**r) for r in result] diff --git a/ecs/jskult-webapp/src/repositories/ultmarc_inst_repository.py b/ecs/jskult-webapp/src/repositories/ultmarc_inst_repository.py index f94fae16..d751ba33 100644 --- a/ecs/jskult-webapp/src/repositories/ultmarc_inst_repository.py +++ b/ecs/jskult-webapp/src/repositories/ultmarc_inst_repository.py @@ -7,6 +7,7 @@ from src.model.db.ultmarc_inst import UltmarcInstDBModel from src.model.db.ultmarc_inst_info import UltmarcInstInfoDBModel from src.model.request.ultmarc_inst import UltmarcInstSearchModel from src.repositories.base_repository import BaseRepository +from src.system_var import environment from src.util.string_util import is_not_empty logger = get_logger('COM_施設取得') @@ -32,6 +33,7 @@ class UltmarcInstRepository(BaseRepository): LEFT JOIN src05.com_hp_assrt ON com_inst.hp_assrt_cd = com_hp_assrt.hp_assrt_cd WHERE {where_clause} ORDER BY dcf_dsf_inst_cd + LIMIT {limit} \ """ @@ -41,7 +43,8 @@ class UltmarcInstRepository(BaseRepository): # 文字列の検索を部分一致にするため、モデルをコピー。以降はこのコピーを使用する。 clone_parameter = UltmarcInstSearchModel(**parameter.model_dump()) where_clause = self.__build_condition(clone_parameter) - query = self.FETCH_SQL.format(where_clause=where_clause) + query = self.FETCH_SQL.format(where_clause=where_clause, limit=environment. + ULTMARC_SEARCH_RESULT_MAX_COUNT + 1) result = self._database.execute_select(query, clone_parameter.model_dump()) models = [UltmarcInstDBModel(**r) for r in result] diff --git a/ecs/jskult-webapp/src/system_var/environment.py b/ecs/jskult-webapp/src/system_var/environment.py index 6e7cf79d..ec24aeb9 100644 --- a/ecs/jskult-webapp/src/system_var/environment.py +++ b/ecs/jskult-webapp/src/system_var/environment.py @@ -20,7 +20,7 @@ DB_PASSWORD = os.environ['DB_PASSWORD'] DB_SCHEMA = os.environ['DB_SCHEMA'] BIO_SEARCH_RESULT_MAX_COUNT = int(os.environ.get('BIO_SEARCH_RESULT_MAX_COUNT', 35000)) -ULTMARC_SEARCH_RESULT_MAX_COUNT = int(os.environ['ULTMARC_SEARCH_RESULT_MAX_COUNT']) +ULTMARC_SEARCH_RESULT_MAX_COUNT = int(os.environ.get('ULTMARC_SEARCH_RESULT_MAX_COUNT', 500)) SESSION_EXPIRE_MINUTE = int(os.environ['SESSION_EXPIRE_MINUTE']) LOG_LEVEL = os.environ.get('LOG_LEVEL', 'INFO') From 995ea55da3dea2eee8784d1e45f6973013d20540 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Thu, 24 Aug 2023 09:33:26 +0900 Subject: [PATCH 2/4] =?UTF-8?q?feat:=E6=8C=87=E6=91=98=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/repositories/ultmarc_doctor_repository.py | 6 +++--- .../src/repositories/ultmarc_inst_repository.py | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ecs/jskult-webapp/src/repositories/ultmarc_doctor_repository.py b/ecs/jskult-webapp/src/repositories/ultmarc_doctor_repository.py index a97ec2ee..498733d7 100644 --- a/ecs/jskult-webapp/src/repositories/ultmarc_doctor_repository.py +++ b/ecs/jskult-webapp/src/repositories/ultmarc_doctor_repository.py @@ -57,8 +57,8 @@ class UltmarcDoctorRepository(BaseRepository): # 文字列の検索を部分一致にするため、モデルをコピー。以降はこのコピーを使用する。 clone_parameter = UltmarcDoctorSearchModel(**parameter.model_dump()) where_clause = self.__build_condition(clone_parameter) - query = self.FETCH_SQL.format(where_clause=where_clause, limit=environment. - ULTMARC_SEARCH_RESULT_MAX_COUNT + 1) + query = self.FETCH_SQL.format( + where_clause=where_clause, limit=environment.ULTMARC_SEARCH_RESULT_MAX_COUNT + 1) result = self._database.execute_select(query, clone_parameter.model_dump()) models = [UltmarcDoctorDBModel(**r) for r in result] @@ -152,7 +152,7 @@ class UltmarcDoctorRepository(BaseRepository): '', '', "(com_dr.use_stop_div NOT IN ('01','03','04') OR com_dr.use_stop_div IS NULL)", literal=True)) # 廃業除外 - if where_clauses: + if len(where_clauses) > 0: where_clauses.append(SQLCondition( '', '', '(length(com_inst.abolish_ymd) = 0 OR com_inst.abolish_ymd IS NULL)', literal=True)) where_clauses.append(SQLCondition( diff --git a/ecs/jskult-webapp/src/repositories/ultmarc_inst_repository.py b/ecs/jskult-webapp/src/repositories/ultmarc_inst_repository.py index d751ba33..64eb0796 100644 --- a/ecs/jskult-webapp/src/repositories/ultmarc_inst_repository.py +++ b/ecs/jskult-webapp/src/repositories/ultmarc_inst_repository.py @@ -43,8 +43,8 @@ class UltmarcInstRepository(BaseRepository): # 文字列の検索を部分一致にするため、モデルをコピー。以降はこのコピーを使用する。 clone_parameter = UltmarcInstSearchModel(**parameter.model_dump()) where_clause = self.__build_condition(clone_parameter) - query = self.FETCH_SQL.format(where_clause=where_clause, limit=environment. - ULTMARC_SEARCH_RESULT_MAX_COUNT + 1) + query = self.FETCH_SQL.format( + where_clause=where_clause, limit=environment.ULTMARC_SEARCH_RESULT_MAX_COUNT + 1) result = self._database.execute_select(query, clone_parameter.model_dump()) models = [UltmarcInstDBModel(**r) for r in result] From c90d3e0fecb6a90a431c0de62d513234642d6cd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Thu, 24 Aug 2023 10:45:12 +0900 Subject: [PATCH 3/4] =?UTF-8?q?fix:SQL=E3=82=B7=E3=83=B3=E3=82=BF=E3=83=83?= =?UTF-8?q?=E3=82=AF=E3=82=B9=E3=82=A8=E3=83=A9=E3=83=BC=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repositories/bio_sales_lot_repository.py | 4 ++ .../repositories/emp_chg_inst_repository.py | 52 +++++++------------ .../repositories/ultmarc_doctor_repository.py | 3 ++ .../repositories/ultmarc_inst_repository.py | 3 ++ 4 files changed, 28 insertions(+), 34 deletions(-) diff --git a/ecs/jskult-webapp/src/repositories/bio_sales_lot_repository.py b/ecs/jskult-webapp/src/repositories/bio_sales_lot_repository.py index f3cbab0b..227205e0 100644 --- a/ecs/jskult-webapp/src/repositories/bio_sales_lot_repository.py +++ b/ecs/jskult-webapp/src/repositories/bio_sales_lot_repository.py @@ -101,6 +101,9 @@ class BioSalesLotRepository(BaseRepository): def __build_condition(self, parameter: BioModel): where_clauses: list[SQLCondition] = [] + # 無条件対応(常に真) + where_clauses.append(SQLCondition('', '', '1 = 1', literal=True)) + # 卸(コード/サブコード) if is_not_empty(parameter.rec_whs_cd) and is_not_empty(parameter.rec_whs_sub_cd): where_clauses.append(SQLCondition('rec_whs_cd', condition.EQ, 'rec_whs_cd')) @@ -141,5 +144,6 @@ class BioSalesLotRepository(BaseRepository): where_clauses.append(SQLCondition('LENGTH(TRIM(rec_lot_num))', condition.GT, '0', literal=True)) where_clauses_str = ' AND '.join([condition.apply() for condition in where_clauses]) + logger.debug(f'条件設定終了:{where_clauses_str}') return where_clauses_str diff --git a/ecs/jskult-webapp/src/repositories/emp_chg_inst_repository.py b/ecs/jskult-webapp/src/repositories/emp_chg_inst_repository.py index ce32a244..1de8f825 100644 --- a/ecs/jskult-webapp/src/repositories/emp_chg_inst_repository.py +++ b/ecs/jskult-webapp/src/repositories/emp_chg_inst_repository.py @@ -13,7 +13,7 @@ class EmpChgInstRepository(BaseRepository): def connect(self): self._database.connect() - + def to_jst(self): self._database.to_jst() @@ -179,11 +179,11 @@ class EmpChgInstRepository(BaseRepository): FROM {table_name} AS eci LEFT JOIN mst_inst AS mi - ON eci.inst_cd = mi.inst_cd + ON eci.inst_cd = mi.inst_cd LEFT JOIN emp - ON eci.emp_cd = emp.emp_cd + ON eci.emp_cd = emp.emp_cd LEFT JOIN bu - ON eci.bu_cd = bu.bu_cd + ON eci.bu_cd = bu.bu_cd WHERE {where_clause} """ @@ -206,6 +206,9 @@ class EmpChgInstRepository(BaseRepository): def __build_condition(self, parameter: MasterMainteCsvDlModel): where_clauses: list[SQLCondition] = [] + # 無条件対応(常に真) + where_clauses.append(SQLCondition('', '', '1 = 1', literal=True)) + # 領域コードが入力されていた場合 if is_not_empty(parameter.ta_cd): parameter.adapt_ta_cd = f'%{parameter.ta_cd}%' @@ -223,62 +226,43 @@ class EmpChgInstRepository(BaseRepository): # 適用期間内が入力されていた場合 if is_not_empty(parameter.adapt_apply_date_from): - where_clauses.append(SQLCondition('eci.start_date', - condition.LE, - 'adapt_apply_date_from')) - where_clauses.append(SQLCondition('eci.end_date', - condition.GE, - 'adapt_apply_date_from')) + where_clauses.append(SQLCondition('eci.start_date', condition.LE, 'adapt_apply_date_from')) + where_clauses.append(SQLCondition('eci.end_date', condition.GE, 'adapt_apply_date_from')) # 適用開始日(FROM)が入力されていた場合 if is_not_empty(parameter.adapt_start_date_from): - where_clauses.append(SQLCondition('eci.start_date', - condition.GE, - 'adapt_start_date_from')) + where_clauses.append(SQLCondition('eci.start_date', condition.GE, 'adapt_start_date_from')) # 適用開始日(TO)が入力されていた場合 if is_not_empty(parameter.adapt_start_date_to): - where_clauses.append(SQLCondition('eci.start_date', - condition.LE, - 'adapt_start_date_to')) + where_clauses.append(SQLCondition('eci.start_date', condition.LE, 'adapt_start_date_to')) # 適用終了日(FROM)が入力されていた場合 if is_not_empty(parameter.adapt_end_date_from): - where_clauses.append(SQLCondition('eci.end_date', - condition.GE, - 'adapt_end_date_from')) + where_clauses.append(SQLCondition('eci.end_date', condition.GE, 'adapt_end_date_from')) # 適用終了日(TO)が入力されていた場合 if is_not_empty(parameter.adapt_end_date_to): - where_clauses.append(SQLCondition('eci.end_date', - condition.LE, - 'adapt_end_date_to')) + where_clauses.append(SQLCondition('eci.end_date', condition.LE, 'adapt_end_date_to')) # データ作成日(FROM)が入力されていた場合 if is_not_empty(parameter.adapt_create_date_from): - where_clauses.append(SQLCondition('eci.create_date', - condition.GE, - 'adapt_create_date_from')) + where_clauses.append(SQLCondition('eci.create_date', condition.GE, 'adapt_create_date_from')) # データ作成日(TO)が入力されていた場合 if is_not_empty(parameter.adapt_create_date_to): - where_clauses.append(SQLCondition('eci.create_date', - condition.LE, - 'adapt_create_date_to')) + where_clauses.append(SQLCondition('eci.create_date', condition.LE, 'adapt_create_date_to')) # データ更新日(FROM)が入力されていた場合 if is_not_empty(parameter.adapt_update_date_from): - where_clauses.append(SQLCondition('eci.update_date', - condition.GE, - 'adapt_update_date_from')) + where_clauses.append(SQLCondition('eci.update_date', condition.GE, 'adapt_update_date_from')) # データ更新日(TO)が入力されていた場合 if is_not_empty(parameter.adapt_update_date_to): - where_clauses.append(SQLCondition('eci.update_date', - condition.LE, - 'adapt_update_date_to')) + where_clauses.append(SQLCondition('eci.update_date', condition.LE, 'adapt_update_date_to')) where_clauses_str = ' AND '.join([condition.apply() for condition in where_clauses]) + logger.debug(f'条件設定終了:{where_clauses_str}') return where_clauses_str diff --git a/ecs/jskult-webapp/src/repositories/ultmarc_doctor_repository.py b/ecs/jskult-webapp/src/repositories/ultmarc_doctor_repository.py index 498733d7..493fca99 100644 --- a/ecs/jskult-webapp/src/repositories/ultmarc_doctor_repository.py +++ b/ecs/jskult-webapp/src/repositories/ultmarc_doctor_repository.py @@ -72,6 +72,9 @@ class UltmarcDoctorRepository(BaseRepository): def __build_condition(self, parameter: UltmarcDoctorSearchModel): where_clauses: list[SQLCondition] = [] + # 無条件対応(常に真) + where_clauses.append(SQLCondition('', '', '1 = 1', literal=True)) + # 医師コード if is_not_empty(parameter.dcf_pcf_dr_cd): # 必ず部分一致で検索 diff --git a/ecs/jskult-webapp/src/repositories/ultmarc_inst_repository.py b/ecs/jskult-webapp/src/repositories/ultmarc_inst_repository.py index 64eb0796..9d53c526 100644 --- a/ecs/jskult-webapp/src/repositories/ultmarc_inst_repository.py +++ b/ecs/jskult-webapp/src/repositories/ultmarc_inst_repository.py @@ -58,6 +58,9 @@ class UltmarcInstRepository(BaseRepository): def __build_condition(self, parameter: UltmarcInstSearchModel): where_clauses: list[SQLCondition] = [] + # 無条件対応(常に真) + where_clauses.append(SQLCondition('', '', '1 = 1', literal=True)) + # ULT施設コード if is_not_empty(parameter.dcf_dsf_inst_cd): # 部分一致検索 From 0cdd122879af17d63ecc3de0811de10b867ec131 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Thu, 24 Aug 2023 10:59:01 +0900 Subject: [PATCH 4/4] =?UTF-8?q?fix:=E6=96=87=E8=A8=80=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecs/jskult-webapp/src/repositories/bio_sales_lot_repository.py | 2 +- ecs/jskult-webapp/src/repositories/emp_chg_inst_repository.py | 2 +- ecs/jskult-webapp/src/repositories/ultmarc_doctor_repository.py | 2 +- ecs/jskult-webapp/src/repositories/ultmarc_inst_repository.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ecs/jskult-webapp/src/repositories/bio_sales_lot_repository.py b/ecs/jskult-webapp/src/repositories/bio_sales_lot_repository.py index 227205e0..00dc4b68 100644 --- a/ecs/jskult-webapp/src/repositories/bio_sales_lot_repository.py +++ b/ecs/jskult-webapp/src/repositories/bio_sales_lot_repository.py @@ -101,7 +101,7 @@ class BioSalesLotRepository(BaseRepository): def __build_condition(self, parameter: BioModel): where_clauses: list[SQLCondition] = [] - # 無条件対応(常に真) + # 検索条件が指定されずにSQLが壊れることを予防するため、常に真の固定条件を追加しておく where_clauses.append(SQLCondition('', '', '1 = 1', literal=True)) # 卸(コード/サブコード) diff --git a/ecs/jskult-webapp/src/repositories/emp_chg_inst_repository.py b/ecs/jskult-webapp/src/repositories/emp_chg_inst_repository.py index 1de8f825..fc362257 100644 --- a/ecs/jskult-webapp/src/repositories/emp_chg_inst_repository.py +++ b/ecs/jskult-webapp/src/repositories/emp_chg_inst_repository.py @@ -206,7 +206,7 @@ class EmpChgInstRepository(BaseRepository): def __build_condition(self, parameter: MasterMainteCsvDlModel): where_clauses: list[SQLCondition] = [] - # 無条件対応(常に真) + # 検索条件が指定されずにSQLが壊れることを予防するため、常に真の固定条件を追加しておく where_clauses.append(SQLCondition('', '', '1 = 1', literal=True)) # 領域コードが入力されていた場合 diff --git a/ecs/jskult-webapp/src/repositories/ultmarc_doctor_repository.py b/ecs/jskult-webapp/src/repositories/ultmarc_doctor_repository.py index 493fca99..a60a3583 100644 --- a/ecs/jskult-webapp/src/repositories/ultmarc_doctor_repository.py +++ b/ecs/jskult-webapp/src/repositories/ultmarc_doctor_repository.py @@ -72,7 +72,7 @@ class UltmarcDoctorRepository(BaseRepository): def __build_condition(self, parameter: UltmarcDoctorSearchModel): where_clauses: list[SQLCondition] = [] - # 無条件対応(常に真) + # 検索条件が指定されずにSQLが壊れることを予防するため、常に真の固定条件を追加しておく where_clauses.append(SQLCondition('', '', '1 = 1', literal=True)) # 医師コード diff --git a/ecs/jskult-webapp/src/repositories/ultmarc_inst_repository.py b/ecs/jskult-webapp/src/repositories/ultmarc_inst_repository.py index 9d53c526..3b485402 100644 --- a/ecs/jskult-webapp/src/repositories/ultmarc_inst_repository.py +++ b/ecs/jskult-webapp/src/repositories/ultmarc_inst_repository.py @@ -58,7 +58,7 @@ class UltmarcInstRepository(BaseRepository): def __build_condition(self, parameter: UltmarcInstSearchModel): where_clauses: list[SQLCondition] = [] - # 無条件対応(常に真) + # 検索条件が指定されずにSQLが壊れることを予防するため、常に真の固定条件を追加しておく where_clauses.append(SQLCondition('', '', '1 = 1', literal=True)) # ULT施設コード