From 9576dc054a085c4c072ad2b58dd1023c8717641f Mon Sep 17 00:00:00 2001 From: "nik.n" Date: Tue, 16 Apr 2024 16:57:35 +0900 Subject: [PATCH] =?UTF-8?q?=E4=B8=AD=E9=80=94=E3=83=97=E3=83=83=E3=82=B7?= =?UTF-8?q?=E3=83=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/model/db/generic_kbn_mst.py | 19 +++++++++ .../src/model/internal/master_mainte_csv.py | 42 +++++++++++++++---- .../generic_kbn_mst_repository.py | 29 +++++++++++++ .../src/services/master_mainte_service.py | 7 +++- 4 files changed, 88 insertions(+), 9 deletions(-) create mode 100644 ecs/jskult-webapp/src/model/db/generic_kbn_mst.py create mode 100644 ecs/jskult-webapp/src/repositories/generic_kbn_mst_repository.py diff --git a/ecs/jskult-webapp/src/model/db/generic_kbn_mst.py b/ecs/jskult-webapp/src/model/db/generic_kbn_mst.py new file mode 100644 index 00000000..ee189cd6 --- /dev/null +++ b/ecs/jskult-webapp/src/model/db/generic_kbn_mst.py @@ -0,0 +1,19 @@ +from datetime import datetime +from typing import Optional + +from src.model.db.base_db_model import BaseDBModel + + +class GenericKbnMstModel(BaseDBModel): + generic_kbn_cd: Optional[str] + kbn_cd: Optional[str] + kbn_fulll_name_jp: Optional[str] + kbn_full_name_en: Optional[str] + kbn_name: Optional[str] + start_date: Optional[datetime] + end_date: Optional[datetime] + creator: Optional[str] + create_date: Optional[datetime] + updater: Optional[str] + update_date: Optional[datetime] + diff --git a/ecs/jskult-webapp/src/model/internal/master_mainte_csv.py b/ecs/jskult-webapp/src/model/internal/master_mainte_csv.py index 619e736e..9910aa3b 100644 --- a/ecs/jskult-webapp/src/model/internal/master_mainte_csv.py +++ b/ecs/jskult-webapp/src/model/internal/master_mainte_csv.py @@ -10,6 +10,7 @@ from src.repositories.mst_inst_repository import MstInstRepository from src.repositories.bu_master_cd_repository import BuMasterRepository from src.repositories.emp_master_repository import EmpMasterRepository from src.repositories.emp_chg_inst_repository import EmpChgInstRepository +from src.repositories.generic_kbn_mst_repository import GenericKbnMstRepository from src.logging.get_logger import get_logger logger = get_logger('マスターメンテ') @@ -24,6 +25,7 @@ class MasterMainteCSVItem(metaclass=ABCMeta): emp_master_repository: EmpMasterRepository bu_master_repository: BuMasterRepository emp_chginst_repository: EmpChgInstRepository + generic_kbn_mst_repository: GenericKbnMstRepository def __init__( self, @@ -33,7 +35,8 @@ class MasterMainteCSVItem(metaclass=ABCMeta): mst_inst_repository: MstInstRepository, emp_master_repository: EmpMasterRepository, bu_master_repository: BuMasterRepository, - emp_chginst_repository: EmpChgInstRepository + emp_chginst_repository: EmpChgInstRepository, + generic_kbn_mst_repository: GenericKbnMstRepository ): self.csv_row = csv_row self.table_name = table_name @@ -42,6 +45,7 @@ class MasterMainteCSVItem(metaclass=ABCMeta): self.emp_master_repository = emp_master_repository self.bu_master_repository = bu_master_repository self.emp_chginst_repository = emp_chginst_repository + self.generic_kbn_mst_repository = generic_kbn_mst_repository def validate(self) -> list[str]: """ @@ -213,7 +217,8 @@ class MasterMainteNewInstEmpCSVItem(MasterMainteCSVItem): mst_inst_repository: MstInstRepository, emp_master_repository: EmpMasterRepository, bu_master_repository: BuMasterRepository, - emp_chginst_repository: EmpChgInstRepository + emp_chginst_repository: EmpChgInstRepository, + generic_kbn_mst_repository: GenericKbnMstRepository ): super().__init__( csv_row, @@ -222,7 +227,8 @@ class MasterMainteNewInstEmpCSVItem(MasterMainteCSVItem): mst_inst_repository, emp_master_repository, bu_master_repository, - emp_chginst_repository + emp_chginst_repository, + generic_kbn_mst_repository ) self.inst_cd = super().get_csv_value(constants.CSV_NEW_INST_CD_COL_NO) self.inst_name = super().get_csv_value(constants.CSV_NEW_INST_NAME_COL_NO) @@ -282,6 +288,14 @@ class MasterMainteNewInstEmpCSVItem(MasterMainteCSVItem): error_list.append(f'{self.line_num}行目の{constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_EMP_CD_COL_NO]}\ は従業員マスタに存在しない もしくは 適用期間外のIDです。') return error_list + + def check_emp_chg_type_cd_exists(self) -> list[str]: + error_list = [] + # TODO + # if is_not_empty(self.emp_chg_type_cd) and super().is_exist_emp_chg_type_cd() is False: + # error_list.append(f'{self.line_num}行目の{constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_EMP_CHG_TYPE_CD_COL_NO]}\ + # は担当者種別マスタに存在しないコードです。') + return error_list def check_bu_cd_exists(self) -> list[str]: error_list = [] @@ -446,6 +460,12 @@ class MasterMainteChangeInstEmpCSVItem(MasterMainteCSVItem): error_list.append(f'{self.line_num}行目の{constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_EMP_CD_COL_NO]}\ は従業員マスタに存在しない もしくは 適用期間外のIDです。') return error_list + + def check_emp_chg_type_cd_exists(self) -> list[str]: + error_list = [] + + # TODO if super().is + return error_list def check_bu_cd_exists(self) -> list[str]: error_list = [] @@ -537,7 +557,8 @@ class MasterMainteCSVItems: mst_inst_repository: MstInstRepository, emp_master_repository: EmpMasterRepository, bu_master_repository: BuMasterRepository, - emp_chginst_repository: EmpChgInstRepository + emp_chginst_repository: EmpChgInstRepository, + generic_kbn_mst_repository: GenericKbnMstRepository ) -> None: reader = csv.reader(file) csv_rows = [] @@ -552,7 +573,9 @@ class MasterMainteCSVItems: mst_inst_repository, emp_master_repository, bu_master_repository, - emp_chginst_repository)) + emp_chginst_repository, + generic_kbn_mst_repository + )) self.lines = csv_rows def __select_function(self, @@ -563,7 +586,8 @@ class MasterMainteCSVItems: mst_inst_repository: MstInstRepository, emp_master_repository: EmpMasterRepository, bu_master_repository: BuMasterRepository, - emp_chginst_repository: EmpChgInstRepository) -> MasterMainteCSVItem: + emp_chginst_repository: EmpChgInstRepository, + generic_kbn_mst_repository: GenericKbnMstRepository) -> MasterMainteCSVItem: if function_type == 'new': return MasterMainteNewInstEmpCSVItem( row, @@ -572,7 +596,8 @@ class MasterMainteCSVItems: mst_inst_repository, emp_master_repository, bu_master_repository, - emp_chginst_repository) + emp_chginst_repository, + generic_kbn_mst_repository) elif function_type == 'change': return MasterMainteChangeInstEmpCSVItem( row, @@ -581,4 +606,5 @@ class MasterMainteCSVItems: mst_inst_repository, emp_master_repository, bu_master_repository, - emp_chginst_repository) + emp_chginst_repository, + generic_kbn_mst_repository) diff --git a/ecs/jskult-webapp/src/repositories/generic_kbn_mst_repository.py b/ecs/jskult-webapp/src/repositories/generic_kbn_mst_repository.py new file mode 100644 index 00000000..278d864a --- /dev/null +++ b/ecs/jskult-webapp/src/repositories/generic_kbn_mst_repository.py @@ -0,0 +1,29 @@ +from src.model.db.base_db_model import BaseDBModel +from src.repositories.base_repository import BaseRepository +from src.model.db.generic_kbn_mst import GenericKbnMstModel +from src.logging.get_logger import get_logger + +logger = get_logger('汎用区分マスタ') + +class GenericKbnMstRepository(BaseRepository): + + FETCH_SQL = """\ + SELECT + * + FROM + src05.generic_kbn_mst + WHERE + generic_kbn_mst.kbn_cd = :kbn_cd\ + """ + + def fetch_all(self, parameter) -> list[BaseDBModel]: + try: + query = self.FETCH_SQL + result = self._database.execute_select(query, parameter) + models = [GenericKbnMstModel(**r) for r in result] + if len(models) == 0: + return None + return models[0] + except Exception as e: + logger.error(f"DB Error : Exception={e}") + raise e \ No newline at end of file diff --git a/ecs/jskult-webapp/src/services/master_mainte_service.py b/ecs/jskult-webapp/src/services/master_mainte_service.py index f3bbdb1a..d7e85638 100644 --- a/ecs/jskult-webapp/src/services/master_mainte_service.py +++ b/ecs/jskult-webapp/src/services/master_mainte_service.py @@ -19,6 +19,7 @@ from src.repositories.mst_inst_repository import MstInstRepository from src.repositories.bu_master_cd_repository import BuMasterRepository from src.repositories.emp_master_repository import EmpMasterRepository from src.repositories.emp_chg_inst_repository import EmpChgInstRepository +from src.repositories.generic_kbn_mst_repository import GenericKbnMstRepository from src.model.internal.master_mainte_csv import MasterMainteCSVItems from src.model.internal.master_mainte_emp_chg_inst_function import NewEmpChgInstFunction from src.model.internal.master_mainte_emp_chg_inst_function import ChangeEmpChgInstFunction @@ -38,6 +39,7 @@ class MasterMainteService(BaseService): 'emp_master_repository': EmpMasterRepository, 'bu_master_repository': BuMasterRepository, 'emp_chginst_repository': EmpChgInstRepository, + 'generic_kbn_mst_repository': GenericKbnMstRepository, } CLIENTS = { @@ -48,6 +50,7 @@ class MasterMainteService(BaseService): emp_master_repository: EmpMasterRepository bu_master_repository: BuMasterRepository emp_chginst_repository: EmpChgInstRepository + generic_kbn_mst_repository: GenericKbnMstRepository s3_client: S3Client def __init__(self, repositories: dict[str, BaseRepository], clients: dict[str, AWSAPIClient]) -> None: @@ -56,6 +59,7 @@ class MasterMainteService(BaseService): self.emp_master_repository = repositories['emp_master_repository'] self.bu_master_repository = repositories['bu_master_repository'] self.emp_chginst_repository = repositories['emp_chginst_repository'] + self.generic_kbn_mst_repository = repositories['generic_kbn_mst_repository'] self.s3_client = clients['s3_client'] def prepare_mainte_csv_up_view(self, @@ -77,7 +81,8 @@ class MasterMainteService(BaseService): self.mst_inst_repository, self.emp_master_repository, self.bu_master_repository, - self.emp_chginst_repository + self.emp_chginst_repository, + self.generic_kbn_mst_repository ) error_message_list = []