diff --git a/ecs/jskult-webapp/src/controller/master_mainte.py b/ecs/jskult-webapp/src/controller/master_mainte.py index 87b16978..89313271 100644 --- a/ecs/jskult-webapp/src/controller/master_mainte.py +++ b/ecs/jskult-webapp/src/controller/master_mainte.py @@ -1,371 +1,372 @@ -from io import BytesIO, TextIOWrapper -from typing import Optional +# # ファイル削除予定 +# from io import BytesIO, TextIOWrapper +# from typing import Optional -from fastapi import APIRouter, Depends, HTTPException, Request -from fastapi.responses import HTMLResponse -from starlette import status +# from fastapi import APIRouter, Depends, HTTPException, Request +# from fastapi.responses import HTMLResponse +# from starlette import status -from src.depends.services import get_service -from src.logging.get_logger import get_logger -from src.model.internal.session import UserSession -from src.model.request.master_mainte_csvdl import MasterMainteCsvDlModel -from src.model.request.master_mainte_csvup import MasterMainteCsvUpModel -from src.model.view.inst_emp_csv_download_view_model import \ - InstEmpCsvDownloadViewModel -from src.model.view.inst_emp_csv_upload_view_model import \ - InstEmpCsvUploadViewModel -from src.model.view.master_mainte_menu_view_model import \ - MasterMainteMenuViewModel -from src.model.view.table_override_view_model import TableOverrideViewModel -from src.router.session_router import AuthenticatedRoute -from src.services.batch_status_service import BatchStatusService -from src.services.login_service import LoginService -from src.services.master_mainte_service import MasterMainteService -from src.system_var import constants -from src.templates import templates +# from src.depends.services import get_service +# from src.logging.get_logger import get_logger +# from src.model.internal.session import UserSession +# from src.model.request.master_mainte_csvdl import MasterMainteCsvDlModel +# from src.model.request.master_mainte_csvup import MasterMainteCsvUpModel +# from src.model.view.inst_emp_csv_download_view_model import \ +# InstEmpCsvDownloadViewModel +# from src.model.view.inst_emp_csv_upload_view_model import \ +# InstEmpCsvUploadViewModel +# from src.model.view.master_mainte_menu_view_model import \ +# MasterMainteMenuViewModel +# from src.model.view.table_override_view_model import TableOverrideViewModel +# from src.router.session_router import AuthenticatedRoute +# from src.services.batch_status_service import BatchStatusService +# from src.services.login_service import LoginService +# from src.services.master_mainte_service import MasterMainteService +# from src.system_var import constants +# from src.templates import templates -logger = get_logger('マスターメンテ') +# logger = get_logger('マスターメンテ') -router = APIRouter() -router.route_class = AuthenticatedRoute +# router = APIRouter() +# router.route_class = AuthenticatedRoute -######################### -# Views # -######################### +# ######################### +# # Views # +# ######################### -@router.get('/masterMainteMenu', response_class=HTMLResponse) -def menu_view( - request: Request, - batch_status_service: BatchStatusService = Depends(get_service(BatchStatusService)) -): - session: UserSession = request.session +# @router.get('/masterMainteMenu', response_class=HTMLResponse) +# def menu_view( +# request: Request, +# batch_status_service: BatchStatusService = Depends(get_service(BatchStatusService)) +# ): +# session: UserSession = request.session - # マスタメンテメニューへのアクセス権がない場合、ログアウトさせる - if session.master_mainte_flg == constants.PERMISSION_DISABLED: - raise HTTPException(status_code=status.HTTP_403_FORBIDDEN) +# # マスタメンテメニューへのアクセス権がない場合、ログアウトさせる +# if session.master_mainte_flg == constants.PERMISSION_DISABLED: +# raise HTTPException(status_code=status.HTTP_403_FORBIDDEN) - # バッチ処理中の場合、ログアウトさせる - if batch_status_service.is_batch_processing(): - raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, - detail=constants.LOGOUT_REASON_BATCH_PROCESSING_FOR_MAINTE) - # dump処理中の場合、ログアウトさせる - if batch_status_service.is_dump_processing(): - raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=constants.LOGOUT_REASON_BACKUP_PROCESSING) +# # バッチ処理中の場合、ログアウトさせる +# if batch_status_service.is_batch_processing(): +# raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, +# detail=constants.LOGOUT_REASON_BATCH_PROCESSING_FOR_MAINTE) +# # dump処理中の場合、ログアウトさせる +# if batch_status_service.is_dump_processing(): +# raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=constants.LOGOUT_REASON_BACKUP_PROCESSING) - # 画面表示用のモデル - menu = MasterMainteMenuViewModel() +# # 画面表示用のモデル +# menu = MasterMainteMenuViewModel() - # レスポンス - session_key = session.session_key - templates_response = templates.TemplateResponse( - 'masterMainteMenu.html', - { - 'request': request, - 'menu': menu - }, - headers={'session_key': session_key} - ) - return templates_response +# # レスポンス +# session_key = session.session_key +# templates_response = templates.TemplateResponse( +# 'masterMainteMenu.html', +# { +# 'request': request, +# 'menu': menu +# }, +# headers={'session_key': session_key} +# ) +# return templates_response -@router.get('/instEmpCsvUL', response_class=HTMLResponse) -def inst_emp_csv_upload_view( - request: Request, - batch_status_service: BatchStatusService = Depends(get_service(BatchStatusService)) -): - session: UserSession = request.session +# @router.get('/instEmpCsvUL', response_class=HTMLResponse) +# def inst_emp_csv_upload_view( +# request: Request, +# batch_status_service: BatchStatusService = Depends(get_service(BatchStatusService)) +# ): +# session: UserSession = request.session - # マスタメンテメニューへのアクセス権がない場合、ログアウトさせる - if session.master_mainte_flg == constants.PERMISSION_DISABLED: - raise HTTPException(status_code=status.HTTP_403_FORBIDDEN) +# # マスタメンテメニューへのアクセス権がない場合、ログアウトさせる +# if session.master_mainte_flg == constants.PERMISSION_DISABLED: +# raise HTTPException(status_code=status.HTTP_403_FORBIDDEN) - # バッチ処理中の場合、ログアウトさせる - if batch_status_service.is_batch_processing(): - raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, - detail=constants.LOGOUT_REASON_BATCH_PROCESSING_FOR_MAINTE) - # dump処理中の場合、ログアウトさせる - if batch_status_service.is_dump_processing(): - raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=constants.LOGOUT_REASON_BACKUP_PROCESSING) +# # バッチ処理中の場合、ログアウトさせる +# if batch_status_service.is_batch_processing(): +# raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, +# detail=constants.LOGOUT_REASON_BATCH_PROCESSING_FOR_MAINTE) +# # dump処理中の場合、ログアウトさせる +# if batch_status_service.is_dump_processing(): +# raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=constants.LOGOUT_REASON_BACKUP_PROCESSING) - # 画面表示用のモデル - mainte_csv_up = InstEmpCsvUploadViewModel() +# # 画面表示用のモデル +# mainte_csv_up = InstEmpCsvUploadViewModel() - # レスポンス - session_key = session.session_key - templates_response = templates.TemplateResponse( - 'instEmpCsvUL.html', - { - 'request': request, - 'mainte_csv_up': mainte_csv_up - }, - headers={'session_key': session_key} - ) - return templates_response +# # レスポンス +# session_key = session.session_key +# templates_response = templates.TemplateResponse( +# 'instEmpCsvUL.html', +# { +# 'request': request, +# 'mainte_csv_up': mainte_csv_up +# }, +# headers={'session_key': session_key} +# ) +# return templates_response -@router.post('/instEmpCsvUL', response_class=HTMLResponse) -async def inst_emp_csv_upload( - request: Request, - csv_upload_form: MasterMainteCsvUpModel = Depends(MasterMainteCsvUpModel.as_form), - master_mainte_service: MasterMainteService = Depends(get_service(MasterMainteService)), - batch_status_service: BatchStatusService = Depends(get_service(BatchStatusService)) -): - session: UserSession = request.session +# @router.post('/instEmpCsvUL', response_class=HTMLResponse) +# async def inst_emp_csv_upload( +# request: Request, +# csv_upload_form: MasterMainteCsvUpModel = Depends(MasterMainteCsvUpModel.as_form), +# master_mainte_service: MasterMainteService = Depends(get_service(MasterMainteService)), +# batch_status_service: BatchStatusService = Depends(get_service(BatchStatusService)) +# ): +# session: UserSession = request.session - # マスタメンテメニューへのアクセス権がない場合、ログアウトさせる - if session.master_mainte_flg == constants.PERMISSION_DISABLED: - raise HTTPException(status_code=status.HTTP_403_FORBIDDEN) +# # マスタメンテメニューへのアクセス権がない場合、ログアウトさせる +# if session.master_mainte_flg == constants.PERMISSION_DISABLED: +# raise HTTPException(status_code=status.HTTP_403_FORBIDDEN) - # バッチ処理中の場合、ログアウトさせる - if batch_status_service.is_batch_processing(): - raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, - detail=constants.LOGOUT_REASON_BATCH_PROCESSING_FOR_MAINTE) - # dump処理中の場合、ログアウトさせる - if batch_status_service.is_dump_processing(): - raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=constants.LOGOUT_REASON_BACKUP_PROCESSING) +# # バッチ処理中の場合、ログアウトさせる +# if batch_status_service.is_batch_processing(): +# raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, +# detail=constants.LOGOUT_REASON_BATCH_PROCESSING_FOR_MAINTE) +# # dump処理中の場合、ログアウトさせる +# if batch_status_service.is_dump_processing(): +# raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=constants.LOGOUT_REASON_BACKUP_PROCESSING) - # 画面表示用のモデル - error_message_list = [] - csv_filename: str = csv_upload_form.csv_file.filename - if csv_upload_form.csv_file.size == 0: - error_message_list.append('選択されたファイルが見つかりませんでした。') - elif not csv_filename.endswith('.csv'): - error_message_list.append('選択されたファイル形式が"csv"ではありません。') - elif csv_upload_form.csv_file.size >= constants.MENTE_CSV_UPLOAD_MAX_FILE_SIZE_BYTE: - error_message_list.append('選択されたCSVファイルサイズが大きいです。20MB未満にしてください。') - else: - mainte_csv_up = master_mainte_service.prepare_mainte_csv_up_view( - TextIOWrapper(BytesIO(await csv_upload_form.csv_file.read()), encoding='utf-8'), - csv_upload_form.csv_file.filename, - csv_upload_form) +# # 画面表示用のモデル +# error_message_list = [] +# csv_filename: str = csv_upload_form.csv_file.filename +# if csv_upload_form.csv_file.size == 0: +# error_message_list.append('選択されたファイルが見つかりませんでした。') +# elif not csv_filename.endswith('.csv'): +# error_message_list.append('選択されたファイル形式が"csv"ではありません。') +# elif csv_upload_form.csv_file.size >= constants.MENTE_CSV_UPLOAD_MAX_FILE_SIZE_BYTE: +# error_message_list.append('選択されたCSVファイルサイズが大きいです。20MB未満にしてください。') +# else: +# mainte_csv_up = master_mainte_service.prepare_mainte_csv_up_view( +# TextIOWrapper(BytesIO(await csv_upload_form.csv_file.read()), encoding='utf-8'), +# csv_upload_form.csv_file.filename, +# csv_upload_form) - if len(error_message_list) > 0: - mainte_csv_up = InstEmpCsvUploadViewModel( - is_verified=True, - error_message_list=error_message_list, - select_function=csv_upload_form.select_function, - select_table=csv_upload_form.select_table) +# if len(error_message_list) > 0: +# mainte_csv_up = InstEmpCsvUploadViewModel( +# is_verified=True, +# error_message_list=error_message_list, +# select_function=csv_upload_form.select_function, +# select_table=csv_upload_form.select_table) - # レスポンス - session_key = session.session_key - templates_response = templates.TemplateResponse( - 'instEmpCsvUL.html', - { - 'request': request, - 'mainte_csv_up': mainte_csv_up - }, - headers={'session_key': session_key} - ) - return templates_response +# # レスポンス +# session_key = session.session_key +# templates_response = templates.TemplateResponse( +# 'instEmpCsvUL.html', +# { +# 'request': request, +# 'mainte_csv_up': mainte_csv_up +# }, +# headers={'session_key': session_key} +# ) +# return templates_response -@router.post('/newInst', response_class=HTMLResponse) -def new_inst_result_view( - request: Request, - csv_upload_form: Optional[MasterMainteCsvUpModel] = Depends(MasterMainteCsvUpModel.as_form), - master_mainte_service: MasterMainteService = Depends(get_service(MasterMainteService)), - batch_status_service: BatchStatusService = Depends(get_service(BatchStatusService)), - login_service: LoginService = Depends(get_service(LoginService)) -): - session: UserSession = request.session +# @router.post('/newInst', response_class=HTMLResponse) +# def new_inst_result_view( +# request: Request, +# csv_upload_form: Optional[MasterMainteCsvUpModel] = Depends(MasterMainteCsvUpModel.as_form), +# master_mainte_service: MasterMainteService = Depends(get_service(MasterMainteService)), +# batch_status_service: BatchStatusService = Depends(get_service(BatchStatusService)), +# login_service: LoginService = Depends(get_service(LoginService)) +# ): +# session: UserSession = request.session - # マスタメンテメニューへのアクセス権がない場合、ログアウトさせる - if session.master_mainte_flg == constants.PERMISSION_DISABLED: - raise HTTPException(status_code=status.HTTP_403_FORBIDDEN) +# # マスタメンテメニューへのアクセス権がない場合、ログアウトさせる +# if session.master_mainte_flg == constants.PERMISSION_DISABLED: +# raise HTTPException(status_code=status.HTTP_403_FORBIDDEN) - # バッチ処理中の場合、ログアウトさせる - if batch_status_service.is_batch_processing(): - raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, - detail=constants.LOGOUT_REASON_BATCH_PROCESSING_FOR_MAINTE) - # dump処理中の場合、ログアウトさせる - if batch_status_service.is_dump_processing(): - raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=constants.LOGOUT_REASON_BACKUP_PROCESSING) - # ユーザIDからユーザ名を取得 - user_name = login_service.logged_in_user(session.user_id).user_name - # CSVデータを登録し、登録完了画面のモデルを返却する - mainte_csv_up = master_mainte_service.prepare_mainte_new_inst_view(user_name, csv_upload_form) +# # バッチ処理中の場合、ログアウトさせる +# if batch_status_service.is_batch_processing(): +# raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, +# detail=constants.LOGOUT_REASON_BATCH_PROCESSING_FOR_MAINTE) +# # dump処理中の場合、ログアウトさせる +# if batch_status_service.is_dump_processing(): +# raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=constants.LOGOUT_REASON_BACKUP_PROCESSING) +# # ユーザIDからユーザ名を取得 +# user_name = login_service.logged_in_user(session.user_id).user_name +# # CSVデータを登録し、登録完了画面のモデルを返却する +# mainte_csv_up = master_mainte_service.prepare_mainte_new_inst_view(user_name, csv_upload_form) - # レスポンス - session_key = session.session_key - templates_response = templates.TemplateResponse( - 'instEmpCsvUL.html', - { - 'request': request, - 'mainte_csv_up': mainte_csv_up - }, - headers={'session_key': session_key} - ) - return templates_response +# # レスポンス +# session_key = session.session_key +# templates_response = templates.TemplateResponse( +# 'instEmpCsvUL.html', +# { +# 'request': request, +# 'mainte_csv_up': mainte_csv_up +# }, +# headers={'session_key': session_key} +# ) +# return templates_response -@router.get('/instEmpCsvDL', response_class=HTMLResponse) -def inst_emp_csv_download_view( - request: Request, - batch_status_service: BatchStatusService = Depends(get_service(BatchStatusService)) -): - session: UserSession = request.session +# @router.get('/instEmpCsvDL', response_class=HTMLResponse) +# def inst_emp_csv_download_view( +# request: Request, +# batch_status_service: BatchStatusService = Depends(get_service(BatchStatusService)) +# ): +# session: UserSession = request.session - # マスタメンテメニューへのアクセス権がない場合、ログアウトさせる - if session.master_mainte_flg == constants.PERMISSION_DISABLED: - raise HTTPException(status_code=status.HTTP_403_FORBIDDEN) +# # マスタメンテメニューへのアクセス権がない場合、ログアウトさせる +# if session.master_mainte_flg == constants.PERMISSION_DISABLED: +# raise HTTPException(status_code=status.HTTP_403_FORBIDDEN) - # バッチ処理中の場合、ログアウトさせる - if batch_status_service.is_batch_processing(): - raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, - detail=constants.LOGOUT_REASON_BATCH_PROCESSING_FOR_MAINTE) - # dump処理中の場合、ログアウトさせる - if batch_status_service.is_dump_processing(): - raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=constants.LOGOUT_REASON_BACKUP_PROCESSING) +# # バッチ処理中の場合、ログアウトさせる +# if batch_status_service.is_batch_processing(): +# raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, +# detail=constants.LOGOUT_REASON_BATCH_PROCESSING_FOR_MAINTE) +# # dump処理中の場合、ログアウトさせる +# if batch_status_service.is_dump_processing(): +# raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=constants.LOGOUT_REASON_BACKUP_PROCESSING) - # 画面表示用のモデル - mainte_csv_dl = InstEmpCsvDownloadViewModel( - is_search=False - ) +# # 画面表示用のモデル +# mainte_csv_dl = InstEmpCsvDownloadViewModel( +# is_search=False +# ) - # レスポンス - session_key = session.session_key - templates_response = templates.TemplateResponse( - 'instEmpCsvDL.html', - { - 'request': request, - 'mainte_csv_dl': mainte_csv_dl - }, - headers={'session_key': session_key} - ) - return templates_response +# # レスポンス +# session_key = session.session_key +# templates_response = templates.TemplateResponse( +# 'instEmpCsvDL.html', +# { +# 'request': request, +# 'mainte_csv_dl': mainte_csv_dl +# }, +# headers={'session_key': session_key} +# ) +# return templates_response -@router.post('/download', response_class=HTMLResponse) -def inst_emp_csv_download( - request: Request, - csv_download_form: Optional[MasterMainteCsvDlModel] = Depends(MasterMainteCsvDlModel.as_form), - master_mainte_service: MasterMainteService = Depends(get_service(MasterMainteService)), - batch_status_service: BatchStatusService = Depends(get_service(BatchStatusService)) -): - session: UserSession = request.session +# @router.post('/download', response_class=HTMLResponse) +# def inst_emp_csv_download( +# request: Request, +# csv_download_form: Optional[MasterMainteCsvDlModel] = Depends(MasterMainteCsvDlModel.as_form), +# master_mainte_service: MasterMainteService = Depends(get_service(MasterMainteService)), +# batch_status_service: BatchStatusService = Depends(get_service(BatchStatusService)) +# ): +# session: UserSession = request.session - # マスタメンテメニューへのアクセス権がない場合、ログアウトさせる - if session.master_mainte_flg == constants.PERMISSION_DISABLED: - raise HTTPException(status_code=status.HTTP_403_FORBIDDEN) +# # マスタメンテメニューへのアクセス権がない場合、ログアウトさせる +# if session.master_mainte_flg == constants.PERMISSION_DISABLED: +# raise HTTPException(status_code=status.HTTP_403_FORBIDDEN) - # バッチ処理中の場合、ログアウトさせる - if batch_status_service.is_batch_processing(): - raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, - detail=constants.LOGOUT_REASON_BATCH_PROCESSING_FOR_MAINTE) - # dump処理中の場合、ログアウトさせる - if batch_status_service.is_dump_processing(): - raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=constants.LOGOUT_REASON_BACKUP_PROCESSING) +# # バッチ処理中の場合、ログアウトさせる +# if batch_status_service.is_batch_processing(): +# raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, +# detail=constants.LOGOUT_REASON_BATCH_PROCESSING_FOR_MAINTE) +# # dump処理中の場合、ログアウトさせる +# if batch_status_service.is_dump_processing(): +# raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=constants.LOGOUT_REASON_BACKUP_PROCESSING) - search_result_df = master_mainte_service.search_emp_chg_inst_data(csv_download_form) +# search_result_df = master_mainte_service.search_emp_chg_inst_data(csv_download_form) - (result_msg, download_file_url) = master_mainte_service.upload_emp_chg_inst_data_file( - search_result_df, - session.user_id, - csv_download_form.select_table) +# (result_msg, download_file_url) = master_mainte_service.upload_emp_chg_inst_data_file( +# search_result_df, +# session.user_id, +# csv_download_form.select_table) - # 画面表示用のモデル - mainte_csv_dl = InstEmpCsvDownloadViewModel( - is_search=True, - ta_cd=csv_download_form.ta_cd, - inst_cd=csv_download_form.inst_cd, - emp_cd=csv_download_form.emp_cd, - emp_chg_type_cd=csv_download_form.emp_chg_type_cd, - apply_date_from=csv_download_form.apply_date_from, - start_date_from=csv_download_form.start_date_from, - start_date_to=csv_download_form.start_date_to, - end_date_from=csv_download_form.end_date_from, - end_date_to=csv_download_form.end_date_to, - create_date_from=csv_download_form.create_date_from, - create_date_to=csv_download_form.create_date_to, - update_date_from=csv_download_form.update_date_from, - update_date_to=csv_download_form.update_date_to, - select_table=csv_download_form.select_table, - data_count=search_result_df.shape[0], - download_file_url=download_file_url, - file_name=constants.MENTE_CSV_DOWNLOAD_FILE_NAME, - result_msg=result_msg - ) +# # 画面表示用のモデル +# mainte_csv_dl = InstEmpCsvDownloadViewModel( +# is_search=True, +# ta_cd=csv_download_form.ta_cd, +# inst_cd=csv_download_form.inst_cd, +# emp_cd=csv_download_form.emp_cd, +# emp_chg_type_cd=csv_download_form.emp_chg_type_cd, +# apply_date_from=csv_download_form.apply_date_from, +# start_date_from=csv_download_form.start_date_from, +# start_date_to=csv_download_form.start_date_to, +# end_date_from=csv_download_form.end_date_from, +# end_date_to=csv_download_form.end_date_to, +# create_date_from=csv_download_form.create_date_from, +# create_date_to=csv_download_form.create_date_to, +# update_date_from=csv_download_form.update_date_from, +# update_date_to=csv_download_form.update_date_to, +# select_table=csv_download_form.select_table, +# data_count=search_result_df.shape[0], +# download_file_url=download_file_url, +# file_name=constants.MENTE_CSV_DOWNLOAD_FILE_NAME, +# result_msg=result_msg +# ) - # レスポンス - session_key = session.session_key - templates_response = templates.TemplateResponse( - 'instEmpCsvDL.html', - { - 'request': request, - 'mainte_csv_dl': mainte_csv_dl - }, - headers={'session_key': session_key} - ) - return templates_response +# # レスポンス +# session_key = session.session_key +# templates_response = templates.TemplateResponse( +# 'instEmpCsvDL.html', +# { +# 'request': request, +# 'mainte_csv_dl': mainte_csv_dl +# }, +# headers={'session_key': session_key} +# ) +# return templates_response -@router.get('/tableOverride', response_class=HTMLResponse) -def table_override_view( - request: Request, - batch_status_service: BatchStatusService = Depends(get_service(BatchStatusService)) -): - session: UserSession = request.session +# @router.get('/tableOverride', response_class=HTMLResponse) +# def table_override_view( +# request: Request, +# batch_status_service: BatchStatusService = Depends(get_service(BatchStatusService)) +# ): +# session: UserSession = request.session - # マスタメンテメニューへのアクセス権がない場合、ログアウトさせる - if session.master_mainte_flg == constants.PERMISSION_DISABLED: - raise HTTPException(status_code=status.HTTP_403_FORBIDDEN) +# # マスタメンテメニューへのアクセス権がない場合、ログアウトさせる +# if session.master_mainte_flg == constants.PERMISSION_DISABLED: +# raise HTTPException(status_code=status.HTTP_403_FORBIDDEN) - # バッチ処理中の場合、ログアウトさせる - if batch_status_service.is_batch_processing(): - raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, - detail=constants.LOGOUT_REASON_BATCH_PROCESSING_FOR_MAINTE) - # dump処理中の場合、ログアウトさせる - if batch_status_service.is_dump_processing(): - raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=constants.LOGOUT_REASON_BACKUP_PROCESSING) +# # バッチ処理中の場合、ログアウトさせる +# if batch_status_service.is_batch_processing(): +# raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, +# detail=constants.LOGOUT_REASON_BATCH_PROCESSING_FOR_MAINTE) +# # dump処理中の場合、ログアウトさせる +# if batch_status_service.is_dump_processing(): +# raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=constants.LOGOUT_REASON_BACKUP_PROCESSING) - # 画面表示用のモデル - table_override = TableOverrideViewModel() +# # 画面表示用のモデル +# table_override = TableOverrideViewModel() - # レスポンス - session_key = session.session_key - templates_response = templates.TemplateResponse( - 'tableOverride.html', - { - 'request': request, - 'table_override': table_override - }, - headers={'session_key': session_key} - ) - return templates_response +# # レスポンス +# session_key = session.session_key +# templates_response = templates.TemplateResponse( +# 'tableOverride.html', +# { +# 'request': request, +# 'table_override': table_override +# }, +# headers={'session_key': session_key} +# ) +# return templates_response -@router.post('/tableOverride', response_class=HTMLResponse) -def table_override_result_view( - request: Request, - master_mainte_service: MasterMainteService = Depends(get_service(MasterMainteService)), - batch_status_service: BatchStatusService = Depends(get_service(BatchStatusService)) -): - session: UserSession = request.session +# @router.post('/tableOverride', response_class=HTMLResponse) +# def table_override_result_view( +# request: Request, +# master_mainte_service: MasterMainteService = Depends(get_service(MasterMainteService)), +# batch_status_service: BatchStatusService = Depends(get_service(BatchStatusService)) +# ): +# session: UserSession = request.session - # マスタメンテメニューへのアクセス権がない場合、ログアウトさせる - if session.master_mainte_flg == constants.PERMISSION_DISABLED: - raise HTTPException(status_code=status.HTTP_403_FORBIDDEN) +# # マスタメンテメニューへのアクセス権がない場合、ログアウトさせる +# if session.master_mainte_flg == constants.PERMISSION_DISABLED: +# raise HTTPException(status_code=status.HTTP_403_FORBIDDEN) - # バッチ処理中の場合、ログアウトさせる - if batch_status_service.is_batch_processing(): - raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, - detail=constants.LOGOUT_REASON_BATCH_PROCESSING_FOR_MAINTE) - # dump処理中の場合、ログアウトさせる - if batch_status_service.is_dump_processing(): - raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=constants.LOGOUT_REASON_BACKUP_PROCESSING) +# # バッチ処理中の場合、ログアウトさせる +# if batch_status_service.is_batch_processing(): +# raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, +# detail=constants.LOGOUT_REASON_BATCH_PROCESSING_FOR_MAINTE) +# # dump処理中の場合、ログアウトさせる +# if batch_status_service.is_dump_processing(): +# raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=constants.LOGOUT_REASON_BACKUP_PROCESSING) - # 画面表示用のモデル - table_override = master_mainte_service.copy_data_real_to_dummy() +# # 画面表示用のモデル +# table_override = master_mainte_service.copy_data_real_to_dummy() - # レスポンス - session_key = session.session_key - templates_response = templates.TemplateResponse( - 'tableOverride.html', - { - 'request': request, - 'table_override': table_override - }, - headers={'session_key': session_key} - ) - return templates_response +# # レスポンス +# session_key = session.session_key +# templates_response = templates.TemplateResponse( +# 'tableOverride.html', +# { +# 'request': request, +# 'table_override': table_override +# }, +# headers={'session_key': session_key} +# ) +# return templates_response diff --git a/ecs/jskult-webapp/src/main.py b/ecs/jskult-webapp/src/main.py index f0e1807d..129a7593 100644 --- a/ecs/jskult-webapp/src/main.py +++ b/ecs/jskult-webapp/src/main.py @@ -32,7 +32,7 @@ app.include_router(ultmarc.router, prefix='/ultmarc') # クライアントから非同期呼出しされるため、共通ルーターとは異なる扱いとする。 app.include_router(bio_api.router, prefix='/bio') # マスタメンテ -app.include_router(master_mainte.router, prefix='/masterMainte') +# 削除予定app.include_router(master_mainte.router, prefix='/masterMainte') # ヘルスチェック用のルーター app.include_router(healthcheck.router, prefix='/healthcheck') diff --git a/ecs/jskult-webapp/src/model/db/master_mente_count.py b/ecs/jskult-webapp/src/model/db/master_mente_count.py index a3837819..a426f43b 100644 --- a/ecs/jskult-webapp/src/model/db/master_mente_count.py +++ b/ecs/jskult-webapp/src/model/db/master_mente_count.py @@ -1,9 +1,10 @@ -from typing import Optional +# ファイル削除予定 +# from typing import Optional -from src.model.db.base_db_model import BaseDBModel -from src.util.sanitize import sanitize +# from src.model.db.base_db_model import BaseDBModel +# from src.util.sanitize import sanitize -@sanitize -class MasterMenteCountModel(BaseDBModel): - count: Optional[int] +# @sanitize +# class MasterMenteCountModel(BaseDBModel): +# count: Optional[int] 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 a6146731..93cc3bca 100644 --- a/ecs/jskult-webapp/src/model/internal/master_mainte_csv.py +++ b/ecs/jskult-webapp/src/model/internal/master_mainte_csv.py @@ -1,707 +1,708 @@ -import csv -import json -from abc import ABCMeta, abstractmethod -from datetime import datetime -from io import TextIOWrapper - -from src.logging.get_logger import get_logger -from src.repositories.bu_master_cd_repository import BuMasterRepository -from src.repositories.emp_chg_inst_repository import EmpChgInstRepository -from src.repositories.emp_master_repository import EmpMasterRepository -from src.repositories.generic_kbn_mst_repository import GenericKbnMstRepository -from src.repositories.mst_inst_repository import MstInstRepository -from src.system_var import constants -from src.util.string_util import is_not_empty - -logger = get_logger('マスターメンテ') - - -class MasterMainteCSVItem(metaclass=ABCMeta): - - csv_row: list[str] - table_name: str - line_num: str - mst_inst_repository: MstInstRepository - emp_master_repository: EmpMasterRepository - bu_master_repository: BuMasterRepository - emp_chginst_repository: EmpChgInstRepository - generic_kbn_mst_repository: GenericKbnMstRepository - - def __init__( - self, - csv_row: list[str], - table_name: str, - line_num: str, - mst_inst_repository: MstInstRepository, - emp_master_repository: EmpMasterRepository, - bu_master_repository: BuMasterRepository, - emp_chginst_repository: EmpChgInstRepository, - generic_kbn_mst_repository: GenericKbnMstRepository - ): - self.csv_row = csv_row - self.table_name = table_name - self.line_num = line_num - self.mst_inst_repository = mst_inst_repository - 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]: - """ - 項目のバリデーションを行うテンプレートメソッド\n - 各チェックロジックはサブクラスで実装する - エラーが有る場合、[行数、項目名: エラー内容]のリストを返す - """ - error_list = [] - # 項目数チェック - error_list.extend(self.check_item_count()) - if len(error_list) == 0: - # 必須チェック 及び コメントエラーチェック - error_list.extend(self.check_require()) - # 施設コード存在チェック - error_list.extend(self.check_inst_cd_exists()) - # 領域コード存在チェック - error_list.extend(self.check_ta_cd_exists()) - # 担当者種別コード存在チェック - error_list.extend(self.check_emp_chg_type_cd_exists()) - # MUID存在チェック - error_list.extend(self.check_emp_cd_exists()) - # BuCd存在チェック - error_list.extend(self.check_bu_cd_exists()) - # 適用開始日 < 適用終了日、実在日チェック - error_list.extend(self.check_existing_date()) - # データ存在チェック - error_list.extend(self.check_data_exists()) - - # エラーのないリストを省いて返す - error_list = [error for error in error_list if len(error) != 0] - return error_list - - def check_csv_item_count(self, item_count: int) -> list[str]: - error_list = [] - - if not len(self.csv_row) == item_count: - error_list.append(f'{self.line_num}行目の項目数が一致しません。項目数を確認してください。') - - return error_list - - def emp_chg_inst_count(self, start_date: str): - return self.emp_chginst_repository.fetch_count(self.inst_cd, self.ta_cd, self.emp_chg_type_cd, start_date, self.table_name) - - def is_exist_emp_cd(self, start_date: str) -> bool: - if start_date is None or len(start_date) == 0: - return False - if self.emp_master_repository.fetch_count(self.emp_cd, start_date) == 0: - return True - return False - - def is_exist_inst_cd(self) -> bool: - return True if self.mst_inst_repository.fetch_count(self.inst_cd) > 0 else False - - def is_exist_emp_chg_type_cd(self, start_date: str) -> bool: - if start_date is None or len(start_date) == 0: - return False - if self.generic_kbn_mst_repository.fetch_count('emp_chg_type_cd', self.emp_chg_type_cd, start_date) > 0: - return True - return False - - def is_exist_ta_cd(self, start_date: str) -> bool: - if start_date is None or len(start_date) == 0: - return False - if self.generic_kbn_mst_repository.fetch_count('ta_cd', self.ta_cd, start_date) > 0: - return True - return False - - def is_exist_bu_cd(self) -> bool: - return True if self.bu_master_repository.fetch_count(self.bu_cd) > 0 else False - - def make_require_error_message(self, line_num: str, col_name: str) -> str: - return f'{line_num}行目の{col_name}が入力されておりません。' - - def make_data_exist_error_message(self, line_num: str, primary_key_col_names: list[str]) -> str: - return self.__make_check_data_exists_error_message(line_num, primary_key_col_names, 'がすべて同一のデータが既に登録されています。') - - def make_data_not_exist_error_message(self, line_num: str, primary_key_col_names: list[str]) -> str: - return self.__make_check_data_exists_error_message(line_num, primary_key_col_names, 'がすべて同一のデータが存在しないため更新できません。') - - def __make_check_data_exists_error_message(self, line_num: str, primary_key_col_names: list[str], suffix_message: str) -> str: - primary_key_logical_names = '、'.join(primary_key_col_names) - return f'{line_num}行目の{primary_key_logical_names}{suffix_message}' - - def __parse_str_to_date(self, check_date: str) -> tuple[bool, datetime]: - try: - check_date_time: datetime = datetime.strptime(check_date, '%Y%m%d') - except Exception as e: - logger.debug(f'適用期間の日付が不正{e}') - return (False, None) - - try: - reverse_check_date: str = check_date_time.strftime('%Y%m%d') - except Exception as e: - logger.debug(f'適用期間の日付が不正{e}') - return (False, None) - - if check_date != reverse_check_date: - return (False, None) - - return (True, check_date_time) - - def check_term_date(self, - start_date: str, - end_date: str, - start_date_col_name: str, - end_date_col_name: str) -> tuple[list[str], datetime, datetime]: - error_list = [] - - start_date_time: datetime = None - end_date_time: datetime = None - if is_not_empty(start_date): - (result, start_date_time) = self.__parse_str_to_date(start_date) - if result is False: - error_list.append(f'{self.line_num}行目の{start_date_col_name}が実在しない日付になっています。') - if is_not_empty(end_date): - (result, end_date_time) = self.__parse_str_to_date(end_date) - if result is False: - error_list.append(f'{self.line_num}行目の{end_date_col_name}が実在しない日付になっています。') - - return (error_list, start_date_time, end_date_time) - - def get_csv_value(self, column_no: int): - try: - column_value = self.csv_row[column_no] - except IndexError: - column_value = '' - - return column_value - - @abstractmethod - def csv_row_data(self) -> dict: - pass - ... - - @abstractmethod - def check_require(self) -> list[str]: - """必須チェック""" - pass - ... - - @abstractmethod - def check_inst_cd_exists(self) -> list[str]: - """InstCD存在チェック""" - pass - ... - - @abstractmethod - def check_emp_chg_type_cd_exists(self) -> list[str]: - """担当者種別コード存在チェック""" - pass - ... - - @abstractmethod - def check_ta_cd_exists(self) -> list[str]: - """領域コード存在チェック""" - pass - ... - - @abstractmethod - def check_emp_cd_exists(self) -> list[str]: - """MUID存在チェック""" - pass - ... - - @abstractmethod - def check_bu_cd_exists(self) -> list[str]: - """BuCd存在チェック""" - pass - ... - - @abstractmethod - def check_existing_date(self) -> list[str]: - """適用開始日 < 適用終了日、実在日チェック""" - - @abstractmethod - def check_item_count(self) -> list[str]: - """項目数チェック""" - pass - ... - - @abstractmethod - def check_data_exists(self) -> list[str]: - """データ存在チェック""" - pass - ... - - -class MasterMainteNewInstEmpCSVItem(MasterMainteCSVItem): - """新規施設担当者登録CSV""" - inst_name: str - emp_name_family: str - emp_name_first: str - start_date: str - end_date: str - - def __init__( - self, - csv_row: list[str], - table_name: str, - line_num: str, - mst_inst_repository: MstInstRepository, - emp_master_repository: EmpMasterRepository, - bu_master_repository: BuMasterRepository, - emp_chginst_repository: EmpChgInstRepository, - generic_kbn_mst_repository: GenericKbnMstRepository - ): - super().__init__( - csv_row, - table_name, - line_num, - mst_inst_repository, - emp_master_repository, - bu_master_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) - self.ta_cd = super().get_csv_value(constants.CSV_NEW_TA_CD_COL_NO) - self.emp_chg_type_cd = super().get_csv_value(constants.CSV_NEW_EMP_CHG_TYPE_CD_COL_NO) - self.emp_cd = super().get_csv_value(constants.CSV_NEW_EMP_CD_COL_NO) - self.emp_name_family = super().get_csv_value(constants.CSV_NEW_EMP_NAME_FAMILY_COL_NO) - self.emp_name_first = super().get_csv_value(constants.CSV_NEW_EMP_NAME_FIRST_COL_NO) - self.bu_cd = super().get_csv_value(constants.CSV_NEW_BU_CD_COL_NO) - self.start_date = super().get_csv_value(constants.CSV_NEW_START_DATE) - self.end_date = super().get_csv_value(constants.CSV_NEW_END_DATE) - - def csv_row_data(self) -> dict: - return {constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[i]: self.csv_row[i] for i in range(len(self.csv_row))} - - def check_require(self) -> list[str]: - error_list = [] - if len(self.inst_cd) == 0: - error_list.append(self.make_require_error_message( - self.line_num, constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_INST_CD_COL_NO])) - if len(self.ta_cd) == 0: - error_list.append(self.make_require_error_message( - self.line_num, constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_TA_CD_COL_NO])) - if len(self.emp_chg_type_cd) == 0: - error_list.append(self.make_require_error_message( - self.line_num, constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_EMP_CHG_TYPE_CD_COL_NO])) - if len(self.emp_cd) == 0: - error_list.append(self.make_require_error_message( - self.line_num, constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_EMP_CD_COL_NO])) - if len(self.bu_cd) == 0: - error_list.append(self.make_require_error_message( - self.line_num, constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_BU_CD_COL_NO])) - if len(self.start_date) == 0: - error_list.append(self.make_require_error_message( - self.line_num, constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_START_DATE])) - if len(self.end_date) == 0: - error_list.append(self.make_require_error_message( - self.line_num, constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_END_DATE])) - - return error_list - - def check_inst_cd_exists(self) -> list[str]: - error_list = [] - - if is_not_empty(self.inst_cd) and super().is_exist_inst_cd() is False: - error_list.append( - f'{self.line_num}行目の{constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_INST_CD_COL_NO]}\ -は施設マスタに存在しないコードです。') - return error_list - - def check_emp_cd_exists(self) -> list[str]: - error_list = [] - if not self.start_date or not self.emp_cd: - return error_list - - if super().is_exist_emp_cd(self.start_date) is True: - 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 = [] - if not self.start_date or not self.emp_chg_type_cd: - return error_list - - if is_not_empty(self.emp_chg_type_cd) and super().is_exist_emp_chg_type_cd(self.start_date) 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_ta_cd_exists(self) -> list[str]: - error_list = [] - if not self.start_date or not self.ta_cd: - return error_list - - if is_not_empty(self.ta_cd) and super().is_exist_ta_cd(self.start_date) is False: - error_list.append(f'{self.line_num}行目の{constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_TA_CD_COL_NO]}\ -は汎用区分マスタに存在しない もしくは 適用期間外のコードです。') - return error_list - - def check_bu_cd_exists(self) -> list[str]: - error_list = [] - - if is_not_empty(self.bu_cd) and super().is_exist_bu_cd() is False: - error_list.append(f'{self.line_num}行目の{constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_BU_CD_COL_NO]}\ -はビジネスユニットマスタに存在しないコードです。') - return error_list - - def check_existing_date(self) -> list[str]: - error_list = [] - if not self.start_date or not self.end_date: - return error_list - - (error_list, start_date_time, end_date_time) = super().check_term_date( - self.start_date, - self.end_date, - constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_START_DATE], - constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_END_DATE]) - if len(error_list) > 0: - return error_list - - if start_date_time > end_date_time: - error_list.append(f'{self.line_num}行目の{constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_START_DATE]}\ -が{constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_END_DATE]}よりも後の日付になっています。') - return error_list - - def check_item_count(self) -> list[str]: - return super().check_csv_item_count(len(constants.NEW_INST_EMP_CSV_LOGICAL_NAMES)) - - def check_data_exists(self) -> list[str]: - error_list = [] - if super().emp_chg_inst_count(self.start_date) > 0: - error_list.append(super().make_data_exist_error_message( - self.line_num, - primary_key_col_names=[ - constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_INST_CD_COL_NO], - constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_TA_CD_COL_NO], - constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_EMP_CHG_TYPE_CD_COL_NO], - constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_START_DATE] - ] - )) - - return error_list - - -class MasterMainteChangeInstEmpCSVItem(MasterMainteCSVItem): - """施設担当者変更登録CSV""" - bu_name: str - org_cd: str - org_short_name: str - inst_name: str - explain: str - emp_full_name: str - inst_emp_start_date: str - inst_emp_end_date: str - change_end_date: str - comment: str - - def __init__( - self, - csv_row: list[str], - table_name: str, - line_num: str, - mst_inst_repository: MstInstRepository, - emp_master_repository: EmpMasterRepository, - bu_master_repository: BuMasterRepository, - emp_chginst_repository: EmpChgInstRepository, - generic_kbn_mst_repository: GenericKbnMstRepository - ): - super().__init__( - csv_row, - table_name, - line_num, - mst_inst_repository, - emp_master_repository, - bu_master_repository, - emp_chginst_repository, - generic_kbn_mst_repository - ) - self.bu_cd = super().get_csv_value(constants.CSV_CHANGE_BU_CD_COL_NO) - self.bu_name = super().get_csv_value(constants.CSV_CHANGE_BU_NAME_COL_NO) - self.org_cd = super().get_csv_value(constants.CSV_CHANGE_ORG_CD_COL_NO) - self.org_short_name = super().get_csv_value(constants.CSV_CHANGE_ORG_SHORT_NAME_COL_NO) - self.inst_cd = super().get_csv_value(constants.CSV_CHANGE_INST_CD_COL_NO) - self.inst_name = super().get_csv_value(constants.CSV_CHANGE_INST_NAME_COL_NO) - self.ta_cd = super().get_csv_value(constants.CSV_CHANGE_TA_CD_COL_NO) - self.explain = super().get_csv_value(constants.CSV_CHANGE_EXPLAIN_COL_NO) - self.emp_chg_type_cd = super().get_csv_value(constants.CSV_CHANGE_EMP_CHG_TYPE_CD_COL_NO) - self.emp_cd = super().get_csv_value(constants.CSV_CHANGE_EMP_CD_COL_NO) - self.emp_full_name = super().get_csv_value(constants.CSV_CHANGE_EMP_FULL_NAME_COL_NO) - self.inst_emp_start_date = super().get_csv_value(constants.CSV_CHANGE_INST_EMP_START_DATE_COL_NO) - self.inst_emp_end_date = super().get_csv_value(constants.CSV_CHANGE_INST_EMP_END_DATE_COL_NO) - self.change_end_date = super().get_csv_value(constants.CSV_CHANGE_CHANGE_END_DATE_COL_NO) - self.comment = super().get_csv_value(constants.CSV_CHANGE_COMMENT) - - def csv_row_data(self) -> dict: - return {constants.CHANGE_INST_CSV_LOGICAL_NAMES[i]: self.csv_row[i] for i in range(len(self.csv_row))} - - def check_require(self) -> list[str]: - error_list = [] - if self.comment == '追加': - if len(self.bu_cd) == 0: - error_list.append(self.make_require_error_message( - self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_BU_CD_COL_NO])) - if len(self.inst_cd) == 0: - error_list.append(self.make_require_error_message( - self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_INST_CD_COL_NO])) - if len(self.ta_cd) == 0: - error_list.append(self.make_require_error_message( - self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_TA_CD_COL_NO])) - if len(self.emp_chg_type_cd) == 0: - error_list.append(self.make_require_error_message( - self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_EMP_CHG_TYPE_CD_COL_NO])) - if len(self.emp_cd) == 0: - error_list.append(self.make_require_error_message( - self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_EMP_CD_COL_NO])) - if len(self.inst_emp_start_date) == 0: - error_list.append(self.make_require_error_message( - self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[ - constants.CSV_CHANGE_INST_EMP_START_DATE_COL_NO])) - if len(self.inst_emp_end_date) == 0: - error_list.append(self.make_require_error_message( - self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[ - constants.CSV_CHANGE_INST_EMP_END_DATE_COL_NO])) - elif self.comment == '終了': - if len(self.inst_cd) == 0: - error_list.append(self.make_require_error_message( - self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_INST_CD_COL_NO])) - if len(self.ta_cd) == 0: - error_list.append(self.make_require_error_message( - self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_TA_CD_COL_NO])) - if len(self.emp_chg_type_cd) == 0: - error_list.append(self.make_require_error_message( - self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_EMP_CHG_TYPE_CD_COL_NO])) - if len(self.inst_emp_start_date) == 0: - error_list.append(self.make_require_error_message( - self.line_num, - constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_INST_EMP_START_DATE_COL_NO])) - if len(self.change_end_date) == 0: - error_list.append(self.make_require_error_message(self.line_num, - constants.CHANGE_INST_CSV_LOGICAL_NAMES[ - constants.CSV_CHANGE_CHANGE_END_DATE_COL_NO])) - elif self.comment == '担当者修正': - if len(self.inst_cd) == 0: - error_list.append(self.make_require_error_message( - self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_INST_CD_COL_NO])) - if len(self.ta_cd) == 0: - error_list.append(self.make_require_error_message( - self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_TA_CD_COL_NO])) - if len(self.emp_chg_type_cd) == 0: - error_list.append(self.make_require_error_message( - self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_EMP_CHG_TYPE_CD_COL_NO])) - - if len(self.emp_cd) == 0: - error_list.append(self.make_require_error_message( - self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_EMP_CD_COL_NO])) - if len(self.inst_emp_start_date) == 0: - error_list.append(self.make_require_error_message(self.line_num, - constants.CHANGE_INST_CSV_LOGICAL_NAMES[ - constants.CSV_CHANGE_INST_EMP_START_DATE_COL_NO])) - else: - error_list.append(f'{self.line_num}行目のコメントが不正です。 「追加」「終了」「担当者修正」のいずれかを入力してください。') - return error_list - - def check_inst_cd_exists(self) -> list[str]: - error_list = [] - - if is_not_empty(self.inst_cd) and super().is_exist_inst_cd() is False: - error_list.append(f'{self.line_num}行目の{constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_INST_CD_COL_NO]}\ -は施設マスタに存在しないコードです。') - return error_list - - def check_emp_cd_exists(self) -> list[str]: - error_list = [] - if not self.inst_emp_start_date or not self.emp_cd: - return error_list - - if self.comment != '追加' and self.comment != '担当者修正': - return error_list - - if super().is_exist_emp_cd(self.inst_emp_start_date) is True: - 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 = [] - - if not self.inst_emp_start_date or not self.emp_chg_type_cd: - return error_list - - if is_not_empty(self.emp_chg_type_cd) and super().is_exist_emp_chg_type_cd(self.inst_emp_start_date) is False: - error_list.append(f'{self.line_num}行目の{constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_EMP_CHG_TYPE_CD_COL_NO]}\ -は汎用区分マスタに存在しない もしくは 適用期間外のコードです。') - return error_list - - def check_ta_cd_exists(self) -> list[str]: - error_list = [] - - if not self.inst_emp_start_date or not self.ta_cd: - return error_list - - if is_not_empty(self.ta_cd) and super().is_exist_ta_cd(self.inst_emp_start_date) is False: - error_list.append(f'{self.line_num}行目の{constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_TA_CD_COL_NO]}\ -は汎用区分マスタに存在しない もしくは 適用期間外のコードです。') - return error_list - - def check_bu_cd_exists(self) -> list[str]: - error_list = [] - - if is_not_empty(self.bu_cd) and self.comment == '追加'\ - and super().is_exist_bu_cd() is False: - error_list.append(f'{self.line_num}行目の{constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_BU_CD_COL_NO]}\ -はビジネスユニットマスタに存在しないコードです。') - return error_list - - def check_existing_date(self) -> list[str]: - error_list = [] - start_date = self.inst_emp_start_date - if self.comment == '追加' or self.comment == '終了': - if self.comment == '追加': - end_date = self.inst_emp_end_date - end_date_col_name = constants.CHANGE_INST_CSV_LOGICAL_NAMES[ - constants.CSV_CHANGE_INST_EMP_END_DATE_COL_NO] - compare_error_message = f'\ -{constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_INST_EMP_START_DATE_COL_NO]}が\ -{end_date_col_name}よりも後の日付になっています。' - else: - end_date = self.change_end_date - end_date_col_name = constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_CHANGE_END_DATE_COL_NO] - compare_error_message = f'\ -{constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_INST_EMP_START_DATE_COL_NO]}が\ -{end_date_col_name}よりも後の日付になっています。' - - if not start_date or not end_date: - return error_list - - (error_list, start_date_time, end_date_time) = super().check_term_date( - start_date, - end_date, - constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_INST_EMP_START_DATE_COL_NO], - end_date_col_name) - if len(error_list) > 0: - return error_list - - if start_date_time > end_date_time: - error_list.append(f'{self.line_num}行目の{compare_error_message}') - return error_list - - def check_item_count(self) -> list[str]: - return super().check_csv_item_count(len(constants.CHANGE_INST_CSV_LOGICAL_NAMES)) - - def check_data_exists(self) -> list[str]: - error_list = [] - emp_chg_inst_count = super().emp_chg_inst_count(self.inst_emp_start_date) - if self.comment == '追加' and emp_chg_inst_count > 0: - error_list.append(super().make_data_exist_error_message( - self.line_num, - primary_key_col_names=[ - constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_INST_CD_COL_NO], - constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_TA_CD_COL_NO], - constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_EMP_CHG_TYPE_CD_COL_NO], - constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_INST_EMP_START_DATE_COL_NO] - ] - )) - - elif (self.comment == '終了' or self.comment == '担当者修正') and emp_chg_inst_count == 0: - error_list.append(super().make_data_not_exist_error_message( - self.line_num, - primary_key_col_names=[ - constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_INST_CD_COL_NO], - constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_TA_CD_COL_NO], - constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_EMP_CHG_TYPE_CD_COL_NO], - constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_INST_EMP_START_DATE_COL_NO] - ] - )) - - return error_list - - -class MasterMainteCSVItems: - """施設担当者CSVをループで回すためのもの""" - lines: list[MasterMainteCSVItem] - __i: int = 0 - - def to_json(self): - # CSVをjsonに変換 - csv_row_dict_list: list[dict] = self.to_dict() - - # json作成 - return json.dumps(csv_row_dict_list, ensure_ascii=False) - - def to_dict(self): - return [row_item.csv_row_data() for row_item in self.lines] - - def __iter__(self): - return self - - def __next__(self) -> MasterMainteCSVItem: - if self.__i == len(self.lines): - raise StopIteration() - line = self.lines[self.__i] - self.__i += 1 - return line - - def __init__( - self, - file: TextIOWrapper, - select_function: str, - table_name: str, - mst_inst_repository: MstInstRepository, - emp_master_repository: EmpMasterRepository, - bu_master_repository: BuMasterRepository, - emp_chginst_repository: EmpChgInstRepository, - generic_kbn_mst_repository: GenericKbnMstRepository - ) -> None: - reader = csv.reader(file) - csv_rows = [] - for line_num, row in enumerate(reader, start=0): - if line_num == 0: - continue - csv_rows.append(self.__select_function( - select_function, - row, - table_name, - line_num, - mst_inst_repository, - emp_master_repository, - bu_master_repository, - emp_chginst_repository, - generic_kbn_mst_repository - )) - self.lines = csv_rows - - def __select_function(self, - function_type: str, - row: list[str], - table_name: str, - line_num: int, - mst_inst_repository: MstInstRepository, - emp_master_repository: EmpMasterRepository, - bu_master_repository: BuMasterRepository, - emp_chginst_repository: EmpChgInstRepository, - generic_kbn_mst_repository: GenericKbnMstRepository) -> MasterMainteCSVItem: - if function_type == 'new': - return MasterMainteNewInstEmpCSVItem( - row, - table_name, - str(line_num), - mst_inst_repository, - emp_master_repository, - bu_master_repository, - emp_chginst_repository, - generic_kbn_mst_repository) - elif function_type == 'change': - return MasterMainteChangeInstEmpCSVItem( - row, - table_name, - str(line_num), - mst_inst_repository, - emp_master_repository, - bu_master_repository, - emp_chginst_repository, - generic_kbn_mst_repository) +# # ファイル削除予定 +# import csv +# import json +# from abc import ABCMeta, abstractmethod +# from datetime import datetime +# from io import TextIOWrapper + +# from src.logging.get_logger import get_logger +# from src.repositories.bu_master_cd_repository import BuMasterRepository +# from src.repositories.emp_chg_inst_repository import EmpChgInstRepository +# from src.repositories.emp_master_repository import EmpMasterRepository +# from src.repositories.generic_kbn_mst_repository import GenericKbnMstRepository +# from src.repositories.mst_inst_repository import MstInstRepository +# from src.system_var import constants +# from src.util.string_util import is_not_empty + +# logger = get_logger('マスターメンテ') + + +# class MasterMainteCSVItem(metaclass=ABCMeta): + +# csv_row: list[str] +# table_name: str +# line_num: str +# mst_inst_repository: MstInstRepository +# emp_master_repository: EmpMasterRepository +# bu_master_repository: BuMasterRepository +# emp_chginst_repository: EmpChgInstRepository +# generic_kbn_mst_repository: GenericKbnMstRepository + +# def __init__( +# self, +# csv_row: list[str], +# table_name: str, +# line_num: str, +# mst_inst_repository: MstInstRepository, +# emp_master_repository: EmpMasterRepository, +# bu_master_repository: BuMasterRepository, +# emp_chginst_repository: EmpChgInstRepository, +# generic_kbn_mst_repository: GenericKbnMstRepository +# ): +# self.csv_row = csv_row +# self.table_name = table_name +# self.line_num = line_num +# self.mst_inst_repository = mst_inst_repository +# 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]: +# """ +# 項目のバリデーションを行うテンプレートメソッド\n +# 各チェックロジックはサブクラスで実装する +# エラーが有る場合、[行数、項目名: エラー内容]のリストを返す +# """ +# error_list = [] +# # 項目数チェック +# error_list.extend(self.check_item_count()) +# if len(error_list) == 0: +# # 必須チェック 及び コメントエラーチェック +# error_list.extend(self.check_require()) +# # 施設コード存在チェック +# error_list.extend(self.check_inst_cd_exists()) +# # 領域コード存在チェック +# error_list.extend(self.check_ta_cd_exists()) +# # 担当者種別コード存在チェック +# error_list.extend(self.check_emp_chg_type_cd_exists()) +# # MUID存在チェック +# error_list.extend(self.check_emp_cd_exists()) +# # BuCd存在チェック +# error_list.extend(self.check_bu_cd_exists()) +# # 適用開始日 < 適用終了日、実在日チェック +# error_list.extend(self.check_existing_date()) +# # データ存在チェック +# error_list.extend(self.check_data_exists()) + +# # エラーのないリストを省いて返す +# error_list = [error for error in error_list if len(error) != 0] +# return error_list + +# def check_csv_item_count(self, item_count: int) -> list[str]: +# error_list = [] + +# if not len(self.csv_row) == item_count: +# error_list.append(f'{self.line_num}行目の項目数が一致しません。項目数を確認してください。') + +# return error_list + +# def emp_chg_inst_count(self, start_date: str): +# return self.emp_chginst_repository.fetch_count(self.inst_cd, self.ta_cd, self.emp_chg_type_cd, start_date, self.table_name) + +# def is_exist_emp_cd(self, start_date: str) -> bool: +# if start_date is None or len(start_date) == 0: +# return False +# if self.emp_master_repository.fetch_count(self.emp_cd, start_date) == 0: +# return True +# return False + +# def is_exist_inst_cd(self) -> bool: +# return True if self.mst_inst_repository.fetch_count(self.inst_cd) > 0 else False + +# def is_exist_emp_chg_type_cd(self, start_date: str) -> bool: +# if start_date is None or len(start_date) == 0: +# return False +# if self.generic_kbn_mst_repository.fetch_count('emp_chg_type_cd', self.emp_chg_type_cd, start_date) > 0: +# return True +# return False + +# def is_exist_ta_cd(self, start_date: str) -> bool: +# if start_date is None or len(start_date) == 0: +# return False +# if self.generic_kbn_mst_repository.fetch_count('ta_cd', self.ta_cd, start_date) > 0: +# return True +# return False + +# def is_exist_bu_cd(self) -> bool: +# return True if self.bu_master_repository.fetch_count(self.bu_cd) > 0 else False + +# def make_require_error_message(self, line_num: str, col_name: str) -> str: +# return f'{line_num}行目の{col_name}が入力されておりません。' + +# def make_data_exist_error_message(self, line_num: str, primary_key_col_names: list[str]) -> str: +# return self.__make_check_data_exists_error_message(line_num, primary_key_col_names, 'がすべて同一のデータが既に登録されています。') + +# def make_data_not_exist_error_message(self, line_num: str, primary_key_col_names: list[str]) -> str: +# return self.__make_check_data_exists_error_message(line_num, primary_key_col_names, 'がすべて同一のデータが存在しないため更新できません。') + +# def __make_check_data_exists_error_message(self, line_num: str, primary_key_col_names: list[str], suffix_message: str) -> str: +# primary_key_logical_names = '、'.join(primary_key_col_names) +# return f'{line_num}行目の{primary_key_logical_names}{suffix_message}' + +# def __parse_str_to_date(self, check_date: str) -> tuple[bool, datetime]: +# try: +# check_date_time: datetime = datetime.strptime(check_date, '%Y%m%d') +# except Exception as e: +# logger.debug(f'適用期間の日付が不正{e}') +# return (False, None) + +# try: +# reverse_check_date: str = check_date_time.strftime('%Y%m%d') +# except Exception as e: +# logger.debug(f'適用期間の日付が不正{e}') +# return (False, None) + +# if check_date != reverse_check_date: +# return (False, None) + +# return (True, check_date_time) + +# def check_term_date(self, +# start_date: str, +# end_date: str, +# start_date_col_name: str, +# end_date_col_name: str) -> tuple[list[str], datetime, datetime]: +# error_list = [] + +# start_date_time: datetime = None +# end_date_time: datetime = None +# if is_not_empty(start_date): +# (result, start_date_time) = self.__parse_str_to_date(start_date) +# if result is False: +# error_list.append(f'{self.line_num}行目の{start_date_col_name}が実在しない日付になっています。') +# if is_not_empty(end_date): +# (result, end_date_time) = self.__parse_str_to_date(end_date) +# if result is False: +# error_list.append(f'{self.line_num}行目の{end_date_col_name}が実在しない日付になっています。') + +# return (error_list, start_date_time, end_date_time) + +# def get_csv_value(self, column_no: int): +# try: +# column_value = self.csv_row[column_no] +# except IndexError: +# column_value = '' + +# return column_value + +# @abstractmethod +# def csv_row_data(self) -> dict: +# pass +# ... + +# @abstractmethod +# def check_require(self) -> list[str]: +# """必須チェック""" +# pass +# ... + +# @abstractmethod +# def check_inst_cd_exists(self) -> list[str]: +# """InstCD存在チェック""" +# pass +# ... + +# @abstractmethod +# def check_emp_chg_type_cd_exists(self) -> list[str]: +# """担当者種別コード存在チェック""" +# pass +# ... + +# @abstractmethod +# def check_ta_cd_exists(self) -> list[str]: +# """領域コード存在チェック""" +# pass +# ... + +# @abstractmethod +# def check_emp_cd_exists(self) -> list[str]: +# """MUID存在チェック""" +# pass +# ... + +# @abstractmethod +# def check_bu_cd_exists(self) -> list[str]: +# """BuCd存在チェック""" +# pass +# ... + +# @abstractmethod +# def check_existing_date(self) -> list[str]: +# """適用開始日 < 適用終了日、実在日チェック""" + +# @abstractmethod +# def check_item_count(self) -> list[str]: +# """項目数チェック""" +# pass +# ... + +# @abstractmethod +# def check_data_exists(self) -> list[str]: +# """データ存在チェック""" +# pass +# ... + + +# class MasterMainteNewInstEmpCSVItem(MasterMainteCSVItem): +# """新規施設担当者登録CSV""" +# inst_name: str +# emp_name_family: str +# emp_name_first: str +# start_date: str +# end_date: str + +# def __init__( +# self, +# csv_row: list[str], +# table_name: str, +# line_num: str, +# mst_inst_repository: MstInstRepository, +# emp_master_repository: EmpMasterRepository, +# bu_master_repository: BuMasterRepository, +# emp_chginst_repository: EmpChgInstRepository, +# generic_kbn_mst_repository: GenericKbnMstRepository +# ): +# super().__init__( +# csv_row, +# table_name, +# line_num, +# mst_inst_repository, +# emp_master_repository, +# bu_master_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) +# self.ta_cd = super().get_csv_value(constants.CSV_NEW_TA_CD_COL_NO) +# self.emp_chg_type_cd = super().get_csv_value(constants.CSV_NEW_EMP_CHG_TYPE_CD_COL_NO) +# self.emp_cd = super().get_csv_value(constants.CSV_NEW_EMP_CD_COL_NO) +# self.emp_name_family = super().get_csv_value(constants.CSV_NEW_EMP_NAME_FAMILY_COL_NO) +# self.emp_name_first = super().get_csv_value(constants.CSV_NEW_EMP_NAME_FIRST_COL_NO) +# self.bu_cd = super().get_csv_value(constants.CSV_NEW_BU_CD_COL_NO) +# self.start_date = super().get_csv_value(constants.CSV_NEW_START_DATE) +# self.end_date = super().get_csv_value(constants.CSV_NEW_END_DATE) + +# def csv_row_data(self) -> dict: +# return {constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[i]: self.csv_row[i] for i in range(len(self.csv_row))} + +# def check_require(self) -> list[str]: +# error_list = [] +# if len(self.inst_cd) == 0: +# error_list.append(self.make_require_error_message( +# self.line_num, constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_INST_CD_COL_NO])) +# if len(self.ta_cd) == 0: +# error_list.append(self.make_require_error_message( +# self.line_num, constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_TA_CD_COL_NO])) +# if len(self.emp_chg_type_cd) == 0: +# error_list.append(self.make_require_error_message( +# self.line_num, constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_EMP_CHG_TYPE_CD_COL_NO])) +# if len(self.emp_cd) == 0: +# error_list.append(self.make_require_error_message( +# self.line_num, constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_EMP_CD_COL_NO])) +# if len(self.bu_cd) == 0: +# error_list.append(self.make_require_error_message( +# self.line_num, constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_BU_CD_COL_NO])) +# if len(self.start_date) == 0: +# error_list.append(self.make_require_error_message( +# self.line_num, constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_START_DATE])) +# if len(self.end_date) == 0: +# error_list.append(self.make_require_error_message( +# self.line_num, constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_END_DATE])) + +# return error_list + +# def check_inst_cd_exists(self) -> list[str]: +# error_list = [] + +# if is_not_empty(self.inst_cd) and super().is_exist_inst_cd() is False: +# error_list.append( +# f'{self.line_num}行目の{constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_INST_CD_COL_NO]}\ +# は施設マスタに存在しないコードです。') +# return error_list + +# def check_emp_cd_exists(self) -> list[str]: +# error_list = [] +# if not self.start_date or not self.emp_cd: +# return error_list + +# if super().is_exist_emp_cd(self.start_date) is True: +# 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 = [] +# if not self.start_date or not self.emp_chg_type_cd: +# return error_list + +# if is_not_empty(self.emp_chg_type_cd) and super().is_exist_emp_chg_type_cd(self.start_date) 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_ta_cd_exists(self) -> list[str]: +# error_list = [] +# if not self.start_date or not self.ta_cd: +# return error_list + +# if is_not_empty(self.ta_cd) and super().is_exist_ta_cd(self.start_date) is False: +# error_list.append(f'{self.line_num}行目の{constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_TA_CD_COL_NO]}\ +# は汎用区分マスタに存在しない もしくは 適用期間外のコードです。') +# return error_list + +# def check_bu_cd_exists(self) -> list[str]: +# error_list = [] + +# if is_not_empty(self.bu_cd) and super().is_exist_bu_cd() is False: +# error_list.append(f'{self.line_num}行目の{constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_BU_CD_COL_NO]}\ +# はビジネスユニットマスタに存在しないコードです。') +# return error_list + +# def check_existing_date(self) -> list[str]: +# error_list = [] +# if not self.start_date or not self.end_date: +# return error_list + +# (error_list, start_date_time, end_date_time) = super().check_term_date( +# self.start_date, +# self.end_date, +# constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_START_DATE], +# constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_END_DATE]) +# if len(error_list) > 0: +# return error_list + +# if start_date_time > end_date_time: +# error_list.append(f'{self.line_num}行目の{constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_START_DATE]}\ +# が{constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_END_DATE]}よりも後の日付になっています。') +# return error_list + +# def check_item_count(self) -> list[str]: +# return super().check_csv_item_count(len(constants.NEW_INST_EMP_CSV_LOGICAL_NAMES)) + +# def check_data_exists(self) -> list[str]: +# error_list = [] +# if super().emp_chg_inst_count(self.start_date) > 0: +# error_list.append(super().make_data_exist_error_message( +# self.line_num, +# primary_key_col_names=[ +# constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_INST_CD_COL_NO], +# constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_TA_CD_COL_NO], +# constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_EMP_CHG_TYPE_CD_COL_NO], +# constants.NEW_INST_EMP_CSV_LOGICAL_NAMES[constants.CSV_NEW_START_DATE] +# ] +# )) + +# return error_list + + +# class MasterMainteChangeInstEmpCSVItem(MasterMainteCSVItem): +# """施設担当者変更登録CSV""" +# bu_name: str +# org_cd: str +# org_short_name: str +# inst_name: str +# explain: str +# emp_full_name: str +# inst_emp_start_date: str +# inst_emp_end_date: str +# change_end_date: str +# comment: str + +# def __init__( +# self, +# csv_row: list[str], +# table_name: str, +# line_num: str, +# mst_inst_repository: MstInstRepository, +# emp_master_repository: EmpMasterRepository, +# bu_master_repository: BuMasterRepository, +# emp_chginst_repository: EmpChgInstRepository, +# generic_kbn_mst_repository: GenericKbnMstRepository +# ): +# super().__init__( +# csv_row, +# table_name, +# line_num, +# mst_inst_repository, +# emp_master_repository, +# bu_master_repository, +# emp_chginst_repository, +# generic_kbn_mst_repository +# ) +# self.bu_cd = super().get_csv_value(constants.CSV_CHANGE_BU_CD_COL_NO) +# self.bu_name = super().get_csv_value(constants.CSV_CHANGE_BU_NAME_COL_NO) +# self.org_cd = super().get_csv_value(constants.CSV_CHANGE_ORG_CD_COL_NO) +# self.org_short_name = super().get_csv_value(constants.CSV_CHANGE_ORG_SHORT_NAME_COL_NO) +# self.inst_cd = super().get_csv_value(constants.CSV_CHANGE_INST_CD_COL_NO) +# self.inst_name = super().get_csv_value(constants.CSV_CHANGE_INST_NAME_COL_NO) +# self.ta_cd = super().get_csv_value(constants.CSV_CHANGE_TA_CD_COL_NO) +# self.explain = super().get_csv_value(constants.CSV_CHANGE_EXPLAIN_COL_NO) +# self.emp_chg_type_cd = super().get_csv_value(constants.CSV_CHANGE_EMP_CHG_TYPE_CD_COL_NO) +# self.emp_cd = super().get_csv_value(constants.CSV_CHANGE_EMP_CD_COL_NO) +# self.emp_full_name = super().get_csv_value(constants.CSV_CHANGE_EMP_FULL_NAME_COL_NO) +# self.inst_emp_start_date = super().get_csv_value(constants.CSV_CHANGE_INST_EMP_START_DATE_COL_NO) +# self.inst_emp_end_date = super().get_csv_value(constants.CSV_CHANGE_INST_EMP_END_DATE_COL_NO) +# self.change_end_date = super().get_csv_value(constants.CSV_CHANGE_CHANGE_END_DATE_COL_NO) +# self.comment = super().get_csv_value(constants.CSV_CHANGE_COMMENT) + +# def csv_row_data(self) -> dict: +# return {constants.CHANGE_INST_CSV_LOGICAL_NAMES[i]: self.csv_row[i] for i in range(len(self.csv_row))} + +# def check_require(self) -> list[str]: +# error_list = [] +# if self.comment == '追加': +# if len(self.bu_cd) == 0: +# error_list.append(self.make_require_error_message( +# self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_BU_CD_COL_NO])) +# if len(self.inst_cd) == 0: +# error_list.append(self.make_require_error_message( +# self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_INST_CD_COL_NO])) +# if len(self.ta_cd) == 0: +# error_list.append(self.make_require_error_message( +# self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_TA_CD_COL_NO])) +# if len(self.emp_chg_type_cd) == 0: +# error_list.append(self.make_require_error_message( +# self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_EMP_CHG_TYPE_CD_COL_NO])) +# if len(self.emp_cd) == 0: +# error_list.append(self.make_require_error_message( +# self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_EMP_CD_COL_NO])) +# if len(self.inst_emp_start_date) == 0: +# error_list.append(self.make_require_error_message( +# self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[ +# constants.CSV_CHANGE_INST_EMP_START_DATE_COL_NO])) +# if len(self.inst_emp_end_date) == 0: +# error_list.append(self.make_require_error_message( +# self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[ +# constants.CSV_CHANGE_INST_EMP_END_DATE_COL_NO])) +# elif self.comment == '終了': +# if len(self.inst_cd) == 0: +# error_list.append(self.make_require_error_message( +# self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_INST_CD_COL_NO])) +# if len(self.ta_cd) == 0: +# error_list.append(self.make_require_error_message( +# self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_TA_CD_COL_NO])) +# if len(self.emp_chg_type_cd) == 0: +# error_list.append(self.make_require_error_message( +# self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_EMP_CHG_TYPE_CD_COL_NO])) +# if len(self.inst_emp_start_date) == 0: +# error_list.append(self.make_require_error_message( +# self.line_num, +# constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_INST_EMP_START_DATE_COL_NO])) +# if len(self.change_end_date) == 0: +# error_list.append(self.make_require_error_message(self.line_num, +# constants.CHANGE_INST_CSV_LOGICAL_NAMES[ +# constants.CSV_CHANGE_CHANGE_END_DATE_COL_NO])) +# elif self.comment == '担当者修正': +# if len(self.inst_cd) == 0: +# error_list.append(self.make_require_error_message( +# self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_INST_CD_COL_NO])) +# if len(self.ta_cd) == 0: +# error_list.append(self.make_require_error_message( +# self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_TA_CD_COL_NO])) +# if len(self.emp_chg_type_cd) == 0: +# error_list.append(self.make_require_error_message( +# self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_EMP_CHG_TYPE_CD_COL_NO])) + +# if len(self.emp_cd) == 0: +# error_list.append(self.make_require_error_message( +# self.line_num, constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_EMP_CD_COL_NO])) +# if len(self.inst_emp_start_date) == 0: +# error_list.append(self.make_require_error_message(self.line_num, +# constants.CHANGE_INST_CSV_LOGICAL_NAMES[ +# constants.CSV_CHANGE_INST_EMP_START_DATE_COL_NO])) +# else: +# error_list.append(f'{self.line_num}行目のコメントが不正です。 「追加」「終了」「担当者修正」のいずれかを入力してください。') +# return error_list + +# def check_inst_cd_exists(self) -> list[str]: +# error_list = [] + +# if is_not_empty(self.inst_cd) and super().is_exist_inst_cd() is False: +# error_list.append(f'{self.line_num}行目の{constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_INST_CD_COL_NO]}\ +# は施設マスタに存在しないコードです。') +# return error_list + +# def check_emp_cd_exists(self) -> list[str]: +# error_list = [] +# if not self.inst_emp_start_date or not self.emp_cd: +# return error_list + +# if self.comment != '追加' and self.comment != '担当者修正': +# return error_list + +# if super().is_exist_emp_cd(self.inst_emp_start_date) is True: +# 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 = [] + +# if not self.inst_emp_start_date or not self.emp_chg_type_cd: +# return error_list + +# if is_not_empty(self.emp_chg_type_cd) and super().is_exist_emp_chg_type_cd(self.inst_emp_start_date) is False: +# error_list.append(f'{self.line_num}行目の{constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_EMP_CHG_TYPE_CD_COL_NO]}\ +# は汎用区分マスタに存在しない もしくは 適用期間外のコードです。') +# return error_list + +# def check_ta_cd_exists(self) -> list[str]: +# error_list = [] + +# if not self.inst_emp_start_date or not self.ta_cd: +# return error_list + +# if is_not_empty(self.ta_cd) and super().is_exist_ta_cd(self.inst_emp_start_date) is False: +# error_list.append(f'{self.line_num}行目の{constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_TA_CD_COL_NO]}\ +# は汎用区分マスタに存在しない もしくは 適用期間外のコードです。') +# return error_list + +# def check_bu_cd_exists(self) -> list[str]: +# error_list = [] + +# if is_not_empty(self.bu_cd) and self.comment == '追加'\ +# and super().is_exist_bu_cd() is False: +# error_list.append(f'{self.line_num}行目の{constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_BU_CD_COL_NO]}\ +# はビジネスユニットマスタに存在しないコードです。') +# return error_list + +# def check_existing_date(self) -> list[str]: +# error_list = [] +# start_date = self.inst_emp_start_date +# if self.comment == '追加' or self.comment == '終了': +# if self.comment == '追加': +# end_date = self.inst_emp_end_date +# end_date_col_name = constants.CHANGE_INST_CSV_LOGICAL_NAMES[ +# constants.CSV_CHANGE_INST_EMP_END_DATE_COL_NO] +# compare_error_message = f'\ +# {constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_INST_EMP_START_DATE_COL_NO]}が\ +# {end_date_col_name}よりも後の日付になっています。' +# else: +# end_date = self.change_end_date +# end_date_col_name = constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_CHANGE_END_DATE_COL_NO] +# compare_error_message = f'\ +# {constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_INST_EMP_START_DATE_COL_NO]}が\ +# {end_date_col_name}よりも後の日付になっています。' + +# if not start_date or not end_date: +# return error_list + +# (error_list, start_date_time, end_date_time) = super().check_term_date( +# start_date, +# end_date, +# constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_INST_EMP_START_DATE_COL_NO], +# end_date_col_name) +# if len(error_list) > 0: +# return error_list + +# if start_date_time > end_date_time: +# error_list.append(f'{self.line_num}行目の{compare_error_message}') +# return error_list + +# def check_item_count(self) -> list[str]: +# return super().check_csv_item_count(len(constants.CHANGE_INST_CSV_LOGICAL_NAMES)) + +# def check_data_exists(self) -> list[str]: +# error_list = [] +# emp_chg_inst_count = super().emp_chg_inst_count(self.inst_emp_start_date) +# if self.comment == '追加' and emp_chg_inst_count > 0: +# error_list.append(super().make_data_exist_error_message( +# self.line_num, +# primary_key_col_names=[ +# constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_INST_CD_COL_NO], +# constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_TA_CD_COL_NO], +# constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_EMP_CHG_TYPE_CD_COL_NO], +# constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_INST_EMP_START_DATE_COL_NO] +# ] +# )) + +# elif (self.comment == '終了' or self.comment == '担当者修正') and emp_chg_inst_count == 0: +# error_list.append(super().make_data_not_exist_error_message( +# self.line_num, +# primary_key_col_names=[ +# constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_INST_CD_COL_NO], +# constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_TA_CD_COL_NO], +# constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_EMP_CHG_TYPE_CD_COL_NO], +# constants.CHANGE_INST_CSV_LOGICAL_NAMES[constants.CSV_CHANGE_INST_EMP_START_DATE_COL_NO] +# ] +# )) + +# return error_list + + +# class MasterMainteCSVItems: +# """施設担当者CSVをループで回すためのもの""" +# lines: list[MasterMainteCSVItem] +# __i: int = 0 + +# def to_json(self): +# # CSVをjsonに変換 +# csv_row_dict_list: list[dict] = self.to_dict() + +# # json作成 +# return json.dumps(csv_row_dict_list, ensure_ascii=False) + +# def to_dict(self): +# return [row_item.csv_row_data() for row_item in self.lines] + +# def __iter__(self): +# return self + +# def __next__(self) -> MasterMainteCSVItem: +# if self.__i == len(self.lines): +# raise StopIteration() +# line = self.lines[self.__i] +# self.__i += 1 +# return line + +# def __init__( +# self, +# file: TextIOWrapper, +# select_function: str, +# table_name: str, +# mst_inst_repository: MstInstRepository, +# emp_master_repository: EmpMasterRepository, +# bu_master_repository: BuMasterRepository, +# emp_chginst_repository: EmpChgInstRepository, +# generic_kbn_mst_repository: GenericKbnMstRepository +# ) -> None: +# reader = csv.reader(file) +# csv_rows = [] +# for line_num, row in enumerate(reader, start=0): +# if line_num == 0: +# continue +# csv_rows.append(self.__select_function( +# select_function, +# row, +# table_name, +# line_num, +# mst_inst_repository, +# emp_master_repository, +# bu_master_repository, +# emp_chginst_repository, +# generic_kbn_mst_repository +# )) +# self.lines = csv_rows + +# def __select_function(self, +# function_type: str, +# row: list[str], +# table_name: str, +# line_num: int, +# mst_inst_repository: MstInstRepository, +# emp_master_repository: EmpMasterRepository, +# bu_master_repository: BuMasterRepository, +# emp_chginst_repository: EmpChgInstRepository, +# generic_kbn_mst_repository: GenericKbnMstRepository) -> MasterMainteCSVItem: +# if function_type == 'new': +# return MasterMainteNewInstEmpCSVItem( +# row, +# table_name, +# str(line_num), +# mst_inst_repository, +# emp_master_repository, +# bu_master_repository, +# emp_chginst_repository, +# generic_kbn_mst_repository) +# elif function_type == 'change': +# return MasterMainteChangeInstEmpCSVItem( +# row, +# table_name, +# str(line_num), +# mst_inst_repository, +# emp_master_repository, +# bu_master_repository, +# emp_chginst_repository, +# generic_kbn_mst_repository) diff --git a/ecs/jskult-webapp/src/model/internal/master_mainte_emp_chg_inst_function.py b/ecs/jskult-webapp/src/model/internal/master_mainte_emp_chg_inst_function.py index 1c79b75e..546d4a80 100644 --- a/ecs/jskult-webapp/src/model/internal/master_mainte_emp_chg_inst_function.py +++ b/ecs/jskult-webapp/src/model/internal/master_mainte_emp_chg_inst_function.py @@ -1,166 +1,167 @@ -from abc import ABCMeta, abstractmethod -from src.repositories.emp_chg_inst_repository import EmpChgInstRepository -from src.logging.get_logger import get_logger +# # ファイル削除予定 +# from abc import ABCMeta, abstractmethod +# from src.repositories.emp_chg_inst_repository import EmpChgInstRepository +# from src.logging.get_logger import get_logger -logger = get_logger('マスターメンテ') +# logger = get_logger('マスターメンテ') -class MasterMainteEmpChgInstFunction(metaclass=ABCMeta): - insert_data: list[dict] - table_name: str - select_table_message: str - user_name: str - emp_chginst_repository: EmpChgInstRepository +# class MasterMainteEmpChgInstFunction(metaclass=ABCMeta): +# insert_data: list[dict] +# table_name: str +# select_table_message: str +# user_name: str +# emp_chginst_repository: EmpChgInstRepository - def __init__( - self, - insert_data, - table_name: str, - select_table_message: str, - user_name: str, - emp_chginst_repository: EmpChgInstRepository - ): - self.insert_data = insert_data - self.table_name = table_name - self.select_table_message = select_table_message - self.user_name = user_name - self.emp_chginst_repository = emp_chginst_repository +# def __init__( +# self, +# insert_data, +# table_name: str, +# select_table_message: str, +# user_name: str, +# emp_chginst_repository: EmpChgInstRepository +# ): +# self.insert_data = insert_data +# self.table_name = table_name +# self.select_table_message = select_table_message +# self.user_name = user_name +# self.emp_chginst_repository = emp_chginst_repository - def save(self): - error_list = [] - try: - self.emp_chginst_repository.begin() - self.emp_chginst_repository.to_jst() - (result_message, error_list) = self.write_emp_chg_inst_table() - if len(error_list) > 0: - self.emp_chginst_repository.rollback() - else: - self.emp_chginst_repository.commit() - except Exception as e: - self.emp_chginst_repository.rollback() - raise e +# def save(self): +# error_list = [] +# try: +# self.emp_chginst_repository.begin() +# self.emp_chginst_repository.to_jst() +# (result_message, error_list) = self.write_emp_chg_inst_table() +# if len(error_list) > 0: +# self.emp_chginst_repository.rollback() +# else: +# self.emp_chginst_repository.commit() +# except Exception as e: +# self.emp_chginst_repository.rollback() +# raise e - return (result_message, error_list) +# return (result_message, error_list) - def add_emp_chg_inst_table(self, data, start_date, end_date): - self.emp_chginst_repository.insert_emp_chg_inst( - data['施設コード'], - data['領域コード'], - data['担当者種別コード'], - data['MUID'], - data['ビジネスユニットコード'], - start_date, - end_date, - self.user_name, - self.table_name) +# def add_emp_chg_inst_table(self, data, start_date, end_date): +# self.emp_chginst_repository.insert_emp_chg_inst( +# data['施設コード'], +# data['領域コード'], +# data['担当者種別コード'], +# data['MUID'], +# data['ビジネスユニットコード'], +# start_date, +# end_date, +# self.user_name, +# self.table_name) - @abstractmethod - def write_emp_chg_inst_table(self): - pass +# @abstractmethod +# def write_emp_chg_inst_table(self): +# pass -class NewEmpChgInstFunction(MasterMainteEmpChgInstFunction): +# class NewEmpChgInstFunction(MasterMainteEmpChgInstFunction): - def __init__( - self, - insert_data_list: list[dict], - table_name: str, - select_table_message: str, - user_name: str, - emp_chginst_repository: EmpChgInstRepository - ): - super().__init__( - insert_data_list, - table_name, - select_table_message, - user_name, - emp_chginst_repository - ) +# def __init__( +# self, +# insert_data_list: list[dict], +# table_name: str, +# select_table_message: str, +# user_name: str, +# emp_chginst_repository: EmpChgInstRepository +# ): +# super().__init__( +# insert_data_list, +# table_name, +# select_table_message, +# user_name, +# emp_chginst_repository +# ) - def write_emp_chg_inst_table(self): - error_list = [] +# def write_emp_chg_inst_table(self): +# error_list = [] - add_count = 0 - for row_no, data in enumerate(self.insert_data, start=1): - try: - self.add_emp_chg_inst_table(data, data['適用開始日'], data['適用終了日']) - add_count += 1 - except Exception as e: - error_list.append(f'{str(row_no)}行目がSQL実行エラーです。CSVファイルを確認してください。') - logger.info(f'新規施設登録時に{row_no}行目でエラーが発生しました: {e}') +# add_count = 0 +# for row_no, data in enumerate(self.insert_data, start=1): +# try: +# self.add_emp_chg_inst_table(data, data['適用開始日'], data['適用終了日']) +# add_count += 1 +# except Exception as e: +# error_list.append(f'{str(row_no)}行目がSQL実行エラーです。CSVファイルを確認してください。') +# logger.info(f'新規施設登録時に{row_no}行目でエラーが発生しました: {e}') - result_message_list = [] - if len(error_list) == 0: - result_message_list.append('新規施設登録を行いました') - result_message_list.append('対象:' + self.select_table_message) - result_message_list.append('追加:' + str(add_count) + '件') - return (result_message_list, error_list) +# result_message_list = [] +# if len(error_list) == 0: +# result_message_list.append('新規施設登録を行いました') +# result_message_list.append('対象:' + self.select_table_message) +# result_message_list.append('追加:' + str(add_count) + '件') +# return (result_message_list, error_list) -class ChangeEmpChgInstFunction(MasterMainteEmpChgInstFunction): +# class ChangeEmpChgInstFunction(MasterMainteEmpChgInstFunction): - def __init__( - self, - insert_data: list[dict], - table_name: str, - select_table_message: str, - user_name: str, - emp_chginst_repository: EmpChgInstRepository +# def __init__( +# self, +# insert_data: list[dict], +# table_name: str, +# select_table_message: str, +# user_name: str, +# emp_chginst_repository: EmpChgInstRepository - ): - super().__init__( - insert_data, - table_name, - select_table_message, - user_name, - emp_chginst_repository - ) +# ): +# super().__init__( +# insert_data, +# table_name, +# select_table_message, +# user_name, +# emp_chginst_repository +# ) - def write_emp_chg_inst_table(self): - add_count = 0 - end_count = 0 - modify_count = 0 - error_list = [] - for row_no, data in enumerate(self.insert_data, start=1): - try: - if data['コメント'] == '追加': - self.add_emp_chg_inst_table(data, data['施設担当_開始日'], data['施設担当_終了日']) - add_count += 1 - elif data['コメント'] == '終了': - self.__end_emp_chg_inst(data) - end_count += 1 - elif data['コメント'] == '担当者修正': - self.__modify_emp_chg_inst(data) - modify_count += 1 - except Exception as e: - error_list.append(f'{str(row_no)}行目がSQL実行エラーです。CSVファイルを確認してください。') - logger.info(f'施設担当者変更時に{row_no}行目でエラーが発生しました: {e}') +# def write_emp_chg_inst_table(self): +# add_count = 0 +# end_count = 0 +# modify_count = 0 +# error_list = [] +# for row_no, data in enumerate(self.insert_data, start=1): +# try: +# if data['コメント'] == '追加': +# self.add_emp_chg_inst_table(data, data['施設担当_開始日'], data['施設担当_終了日']) +# add_count += 1 +# elif data['コメント'] == '終了': +# self.__end_emp_chg_inst(data) +# end_count += 1 +# elif data['コメント'] == '担当者修正': +# self.__modify_emp_chg_inst(data) +# modify_count += 1 +# except Exception as e: +# error_list.append(f'{str(row_no)}行目がSQL実行エラーです。CSVファイルを確認してください。') +# logger.info(f'施設担当者変更時に{row_no}行目でエラーが発生しました: {e}') - result_message_list = [] - if len(error_list) == 0: - result_message_list.append('施設担当者変更を行いました') - result_message_list.append('対象:' + self.select_table_message) - result_message_list.append('追加:' + str(add_count) + '件') - result_message_list.append('修正:' + str(modify_count) + '件') - result_message_list.append('終了:' + str(end_count) + '件') - return (result_message_list, error_list) +# result_message_list = [] +# if len(error_list) == 0: +# result_message_list.append('施設担当者変更を行いました') +# result_message_list.append('対象:' + self.select_table_message) +# result_message_list.append('追加:' + str(add_count) + '件') +# result_message_list.append('修正:' + str(modify_count) + '件') +# result_message_list.append('終了:' + str(end_count) + '件') +# return (result_message_list, error_list) - def __end_emp_chg_inst(self, data: dict): - self.emp_chginst_repository.end_emp_chg_inst( - data['施設コード'], - data['領域コード'], - data['担当者種別コード'], - data['施設担当_開始日'], - data['終了日の変更'], - self.user_name, - self.table_name) +# def __end_emp_chg_inst(self, data: dict): +# self.emp_chginst_repository.end_emp_chg_inst( +# data['施設コード'], +# data['領域コード'], +# data['担当者種別コード'], +# data['施設担当_開始日'], +# data['終了日の変更'], +# self.user_name, +# self.table_name) - def __modify_emp_chg_inst(self, data: dict): - self.emp_chginst_repository.modify_emp_chg_inst( - data['施設コード'], - data['領域コード'], - data['施設担当_開始日'], - data['担当者種別コード'], - data['MUID'], - self.user_name, - self.table_name) +# def __modify_emp_chg_inst(self, data: dict): +# self.emp_chginst_repository.modify_emp_chg_inst( +# data['施設コード'], +# data['領域コード'], +# data['施設担当_開始日'], +# data['担当者種別コード'], +# data['MUID'], +# self.user_name, +# self.table_name) diff --git a/ecs/jskult-webapp/src/model/request/master_mainte_csvdl.py b/ecs/jskult-webapp/src/model/request/master_mainte_csvdl.py index 0ec43a10..450c7bfb 100644 --- a/ecs/jskult-webapp/src/model/request/master_mainte_csvdl.py +++ b/ecs/jskult-webapp/src/model/request/master_mainte_csvdl.py @@ -1,177 +1,178 @@ -from typing import Optional +# ファイル削除予定 +# from typing import Optional -from fastapi import Form +# from fastapi import Form -from src.model.request.request_base_model import RequestBaseModel -from src.util.sanitize import sanitize -from src.util.string_util import is_not_empty +# from src.model.request.request_base_model import RequestBaseModel +# from src.util.sanitize import sanitize +# from src.util.string_util import is_not_empty -@sanitize -class MasterMainteCsvDlModel(RequestBaseModel): - # adaptは検索に使用する値 - ta_cd: Optional[str] - adapt_ta_cd: Optional[str] - inst_cd: Optional[str] - adapt_inst_cd: Optional[str] - emp_cd: Optional[str] - adapt_emp_cd: Optional[str] - emp_chg_type_cd: Optional[str] - adapt_emp_chg_type_cd: Optional[str] - apply_date_from: Optional[str] - adapt_apply_date_from: Optional[str] - start_date_from: Optional[str] - adapt_start_date_from: Optional[str] - start_date_to: Optional[str] - adapt_start_date_to: Optional[str] - end_date_from: Optional[str] - adapt_end_date_from: Optional[str] - end_date_to: Optional[str] - adapt_end_date_to: Optional[str] - select_table: Optional[str] - create_date_from: Optional[str] - adapt_create_date_from: Optional[str] - create_date_to: Optional[str] - adapt_create_date_to: Optional[str] - update_date_from: Optional[str] - adapt_update_date_from: Optional[str] - update_date_to: Optional[str] - adapt_update_date_to: Optional[str] +# @sanitize +# class MasterMainteCsvDlModel(RequestBaseModel): +# # adaptは検索に使用する値 +# ta_cd: Optional[str] +# adapt_ta_cd: Optional[str] +# inst_cd: Optional[str] +# adapt_inst_cd: Optional[str] +# emp_cd: Optional[str] +# adapt_emp_cd: Optional[str] +# emp_chg_type_cd: Optional[str] +# adapt_emp_chg_type_cd: Optional[str] +# apply_date_from: Optional[str] +# adapt_apply_date_from: Optional[str] +# start_date_from: Optional[str] +# adapt_start_date_from: Optional[str] +# start_date_to: Optional[str] +# adapt_start_date_to: Optional[str] +# end_date_from: Optional[str] +# adapt_end_date_from: Optional[str] +# end_date_to: Optional[str] +# adapt_end_date_to: Optional[str] +# select_table: Optional[str] +# create_date_from: Optional[str] +# adapt_create_date_from: Optional[str] +# create_date_to: Optional[str] +# adapt_create_date_to: Optional[str] +# update_date_from: Optional[str] +# adapt_update_date_from: Optional[str] +# update_date_to: Optional[str] +# adapt_update_date_to: Optional[str] - @classmethod - def as_form( - cls, - ctrl_ta_cd: Optional[str] = Form(None), - ctrl_inst_cd: Optional[str] = Form(None), - ctrl_emp_cd: Optional[str] = Form(None), - ctrl_emp_chg_type_cd: Optional[str] = Form(None), - ctrl_apply_date_from: Optional[str] = Form(None), - ctrl_start_date_from: Optional[str] = Form(None), - ctrl_start_date_to: Optional[str] = Form(None), - ctrl_end_date_from: Optional[str] = Form(None), - ctrl_end_date_to: Optional[str] = Form(None), - radio_select_table: Optional[str] = Form(None), - ctrl_create_date_from: Optional[str] = Form(None), - ctrl_create_date_to: Optional[str] = Form(None), - ctrl_update_date_from: Optional[str] = Form(None), - ctrl_update_date_to: Optional[str] = Form(None) - ): - return cls.__convert_request_param( - cls, - ctrl_ta_cd, - ctrl_inst_cd, - ctrl_emp_cd, - ctrl_emp_chg_type_cd, - ctrl_apply_date_from, - ctrl_start_date_from, - ctrl_start_date_to, - ctrl_end_date_from, - ctrl_end_date_to, - radio_select_table, - ctrl_create_date_from, - ctrl_create_date_to, - ctrl_update_date_from, - ctrl_update_date_to - ) +# @classmethod +# def as_form( +# cls, +# ctrl_ta_cd: Optional[str] = Form(None), +# ctrl_inst_cd: Optional[str] = Form(None), +# ctrl_emp_cd: Optional[str] = Form(None), +# ctrl_emp_chg_type_cd: Optional[str] = Form(None), +# ctrl_apply_date_from: Optional[str] = Form(None), +# ctrl_start_date_from: Optional[str] = Form(None), +# ctrl_start_date_to: Optional[str] = Form(None), +# ctrl_end_date_from: Optional[str] = Form(None), +# ctrl_end_date_to: Optional[str] = Form(None), +# radio_select_table: Optional[str] = Form(None), +# ctrl_create_date_from: Optional[str] = Form(None), +# ctrl_create_date_to: Optional[str] = Form(None), +# ctrl_update_date_from: Optional[str] = Form(None), +# ctrl_update_date_to: Optional[str] = Form(None) +# ): +# return cls.__convert_request_param( +# cls, +# ctrl_ta_cd, +# ctrl_inst_cd, +# ctrl_emp_cd, +# ctrl_emp_chg_type_cd, +# ctrl_apply_date_from, +# ctrl_start_date_from, +# ctrl_start_date_to, +# ctrl_end_date_from, +# ctrl_end_date_to, +# radio_select_table, +# ctrl_create_date_from, +# ctrl_create_date_to, +# ctrl_update_date_from, +# ctrl_update_date_to +# ) - def __convert_request_param( - cls, - ctrl_ta_cd: str, - ctrl_inst_cd: str, - ctrl_emp_cd: str, - ctrl_emp_chg_type_cd, - ctrl_apply_date_from: str, - ctrl_start_date_from: str, - ctrl_start_date_to: str, - ctrl_end_date_from: str, - ctrl_end_date_to: str, - radio_select_table: str, - ctrl_create_date_from: str, - ctrl_create_date_to: str, - ctrl_update_date_from: str, - ctrl_update_date_to: str - ): - ctrl_ta_cd = ctrl_ta_cd if is_not_empty(ctrl_ta_cd) else '' - ctrl_inst_cd = ctrl_inst_cd if is_not_empty(ctrl_inst_cd) else '' - ctrl_emp_cd = ctrl_emp_cd if is_not_empty(ctrl_emp_cd) else '' - ctrl_emp_chg_type_cd = ctrl_emp_chg_type_cd if is_not_empty(ctrl_emp_chg_type_cd) else '' +# def __convert_request_param( +# cls, +# ctrl_ta_cd: str, +# ctrl_inst_cd: str, +# ctrl_emp_cd: str, +# ctrl_emp_chg_type_cd, +# ctrl_apply_date_from: str, +# ctrl_start_date_from: str, +# ctrl_start_date_to: str, +# ctrl_end_date_from: str, +# ctrl_end_date_to: str, +# radio_select_table: str, +# ctrl_create_date_from: str, +# ctrl_create_date_to: str, +# ctrl_update_date_from: str, +# ctrl_update_date_to: str +# ): +# ctrl_ta_cd = ctrl_ta_cd if is_not_empty(ctrl_ta_cd) else '' +# ctrl_inst_cd = ctrl_inst_cd if is_not_empty(ctrl_inst_cd) else '' +# ctrl_emp_cd = ctrl_emp_cd if is_not_empty(ctrl_emp_cd) else '' +# ctrl_emp_chg_type_cd = ctrl_emp_chg_type_cd if is_not_empty(ctrl_emp_chg_type_cd) else '' - adapt_apply_date_from = '' - if is_not_empty(ctrl_apply_date_from): - adapt_apply_date_from = ctrl_apply_date_from.replace('/', '') - else: - ctrl_apply_date_from = '' +# adapt_apply_date_from = '' +# if is_not_empty(ctrl_apply_date_from): +# adapt_apply_date_from = ctrl_apply_date_from.replace('/', '') +# else: +# ctrl_apply_date_from = '' - adapt_start_date_from = '' - adapt_start_date_to = '' - if is_not_empty(ctrl_start_date_from): - adapt_start_date_from = ctrl_start_date_from.replace('/', '') - else: - ctrl_start_date_from = '' - if is_not_empty(ctrl_start_date_to): - adapt_start_date_to = ctrl_start_date_to.replace('/', '') - else: - ctrl_start_date_to = '' +# adapt_start_date_from = '' +# adapt_start_date_to = '' +# if is_not_empty(ctrl_start_date_from): +# adapt_start_date_from = ctrl_start_date_from.replace('/', '') +# else: +# ctrl_start_date_from = '' +# if is_not_empty(ctrl_start_date_to): +# adapt_start_date_to = ctrl_start_date_to.replace('/', '') +# else: +# ctrl_start_date_to = '' - adapt_end_date_from = '' - adapt_end_date_to = '' - if is_not_empty(ctrl_end_date_from): - adapt_end_date_from = ctrl_end_date_from.replace('/', '') - else: - ctrl_end_date_from = '' - if is_not_empty(ctrl_end_date_to): - adapt_end_date_to = ctrl_end_date_to.replace('/', '') - else: - ctrl_end_date_to = '' +# adapt_end_date_from = '' +# adapt_end_date_to = '' +# if is_not_empty(ctrl_end_date_from): +# adapt_end_date_from = ctrl_end_date_from.replace('/', '') +# else: +# ctrl_end_date_from = '' +# if is_not_empty(ctrl_end_date_to): +# adapt_end_date_to = ctrl_end_date_to.replace('/', '') +# else: +# ctrl_end_date_to = '' - adapt_create_date_from = '' - adapt_create_date_to = '' - if is_not_empty(ctrl_create_date_from): - adapt_create_date_from = ctrl_create_date_from.replace('/', '-') + ' 00:00:00' - else: - ctrl_create_date_from = '' - if is_not_empty(ctrl_create_date_to): - adapt_create_date_to = ctrl_create_date_to.replace('/', '-') + ' 23:59:59' - else: - ctrl_create_date_to = '' +# adapt_create_date_from = '' +# adapt_create_date_to = '' +# if is_not_empty(ctrl_create_date_from): +# adapt_create_date_from = ctrl_create_date_from.replace('/', '-') + ' 00:00:00' +# else: +# ctrl_create_date_from = '' +# if is_not_empty(ctrl_create_date_to): +# adapt_create_date_to = ctrl_create_date_to.replace('/', '-') + ' 23:59:59' +# else: +# ctrl_create_date_to = '' - adapt_update_date_from = '' - adapt_update_date_to = '' - if is_not_empty(ctrl_update_date_from): - adapt_update_date_from = ctrl_update_date_from.replace('/', '-') + ' 00:00:00' - else: - ctrl_update_date_from = '' - if is_not_empty(ctrl_update_date_to): - adapt_update_date_to = ctrl_update_date_to.replace('/', '-') + ' 23:59:59' - else: - ctrl_update_date_to = '' +# adapt_update_date_from = '' +# adapt_update_date_to = '' +# if is_not_empty(ctrl_update_date_from): +# adapt_update_date_from = ctrl_update_date_from.replace('/', '-') + ' 00:00:00' +# else: +# ctrl_update_date_from = '' +# if is_not_empty(ctrl_update_date_to): +# adapt_update_date_to = ctrl_update_date_to.replace('/', '-') + ' 23:59:59' +# else: +# ctrl_update_date_to = '' - return cls( - ta_cd=ctrl_ta_cd, - adapt_ta_cd=ctrl_ta_cd, - inst_cd=ctrl_inst_cd, - adapt_inst_cd=ctrl_inst_cd, - emp_cd=ctrl_emp_cd, - adapt_emp_cd=ctrl_emp_cd, - emp_chg_type_cd=ctrl_emp_chg_type_cd, - adapt_emp_chg_type_cd=ctrl_emp_chg_type_cd, - apply_date_from=ctrl_apply_date_from, - adapt_apply_date_from=adapt_apply_date_from, - start_date_from=ctrl_start_date_from, - adapt_start_date_from=adapt_start_date_from, - start_date_to=ctrl_start_date_to, - adapt_start_date_to=adapt_start_date_to, - select_table=radio_select_table, - end_date_from=ctrl_end_date_from, - adapt_end_date_from=adapt_end_date_from, - end_date_to=ctrl_end_date_to, - adapt_end_date_to=adapt_end_date_to, - create_date_from=ctrl_create_date_from, - adapt_create_date_from=adapt_create_date_from, - create_date_to=ctrl_create_date_to, - adapt_create_date_to=adapt_create_date_to, - update_date_from=ctrl_update_date_from, - adapt_update_date_from=adapt_update_date_from, - update_date_to=ctrl_update_date_to, - adapt_update_date_to=adapt_update_date_to - ) +# return cls( +# ta_cd=ctrl_ta_cd, +# adapt_ta_cd=ctrl_ta_cd, +# inst_cd=ctrl_inst_cd, +# adapt_inst_cd=ctrl_inst_cd, +# emp_cd=ctrl_emp_cd, +# adapt_emp_cd=ctrl_emp_cd, +# emp_chg_type_cd=ctrl_emp_chg_type_cd, +# adapt_emp_chg_type_cd=ctrl_emp_chg_type_cd, +# apply_date_from=ctrl_apply_date_from, +# adapt_apply_date_from=adapt_apply_date_from, +# start_date_from=ctrl_start_date_from, +# adapt_start_date_from=adapt_start_date_from, +# start_date_to=ctrl_start_date_to, +# adapt_start_date_to=adapt_start_date_to, +# select_table=radio_select_table, +# end_date_from=ctrl_end_date_from, +# adapt_end_date_from=adapt_end_date_from, +# end_date_to=ctrl_end_date_to, +# adapt_end_date_to=adapt_end_date_to, +# create_date_from=ctrl_create_date_from, +# adapt_create_date_from=adapt_create_date_from, +# create_date_to=ctrl_create_date_to, +# adapt_create_date_to=adapt_create_date_to, +# update_date_from=ctrl_update_date_from, +# adapt_update_date_from=adapt_update_date_from, +# update_date_to=ctrl_update_date_to, +# adapt_update_date_to=adapt_update_date_to +# ) diff --git a/ecs/jskult-webapp/src/model/request/master_mainte_csvup.py b/ecs/jskult-webapp/src/model/request/master_mainte_csvup.py index 2f24bd8b..26de9648 100644 --- a/ecs/jskult-webapp/src/model/request/master_mainte_csvup.py +++ b/ecs/jskult-webapp/src/model/request/master_mainte_csvup.py @@ -1,31 +1,32 @@ -from typing import Optional, Annotated +# # ファイル削除予定 +# from typing import Optional, Annotated -from fastapi import Form +# from fastapi import Form -from src.util.sanitize import sanitize -from fastapi import File, UploadFile +# from src.util.sanitize import sanitize +# from fastapi import File, UploadFile -from src.model.request.request_base_model import RequestBaseModel +# from src.model.request.request_base_model import RequestBaseModel -@sanitize -class MasterMainteCsvUpModel(RequestBaseModel): - csv_file: Optional[Annotated[UploadFile, File()]] - select_function: Optional[str] - select_table: Optional[str] - json_upload_data: Optional[str] +# @sanitize +# class MasterMainteCsvUpModel(RequestBaseModel): +# csv_file: Optional[Annotated[UploadFile, File()]] +# select_function: Optional[str] +# select_table: Optional[str] +# json_upload_data: Optional[str] - @classmethod - def as_form( - cls, - ctrl_csv_file: UploadFile = Form(None), - ctrl_select_function: Optional[str] = Form(None), - ctrl_select_table: Optional[str] = Form(None), - ctrl_json_upload_data: Optional[str] = Form(None) - ): - return cls( - csv_file=ctrl_csv_file, - select_function=ctrl_select_function, - select_table=ctrl_select_table, - json_upload_data=ctrl_json_upload_data - ) +# @classmethod +# def as_form( +# cls, +# ctrl_csv_file: UploadFile = Form(None), +# ctrl_select_function: Optional[str] = Form(None), +# ctrl_select_table: Optional[str] = Form(None), +# ctrl_json_upload_data: Optional[str] = Form(None) +# ): +# return cls( +# csv_file=ctrl_csv_file, +# select_function=ctrl_select_function, +# select_table=ctrl_select_table, +# json_upload_data=ctrl_json_upload_data +# ) diff --git a/ecs/jskult-webapp/src/model/view/inst_emp_csv_download_view_model.py b/ecs/jskult-webapp/src/model/view/inst_emp_csv_download_view_model.py index e7ac331a..4bbc8ec5 100644 --- a/ecs/jskult-webapp/src/model/view/inst_emp_csv_download_view_model.py +++ b/ecs/jskult-webapp/src/model/view/inst_emp_csv_download_view_model.py @@ -1,32 +1,33 @@ -from pydantic import BaseModel +#ファイル削除予定 +# from pydantic import BaseModel -from src.util.string_util import is_not_empty +# from src.util.string_util import is_not_empty -class InstEmpCsvDownloadViewModel(BaseModel): - subtitle: str = '施設担当者データCSVダウンロード' - is_search: bool = False - ta_cd: str = '' - inst_cd: str = '' - emp_cd: str = '' - emp_chg_type_cd: str = '' - apply_date_from: str = '' - start_date_from: str = '' - start_date_to: str = '' - end_date_from: str = '' - end_date_to: str = '' - create_date_from: str = '' - create_date_to: str = '' - update_date_from: str = '' - update_date_to: str = '' - select_table: str = '' - data_count: int = 0 - result_msg: str = '' - download_file_url: str = '' - file_name: str = '' +# class InstEmpCsvDownloadViewModel(BaseModel): +# subtitle: str = '施設担当者データCSVダウンロード' +# is_search: bool = False +# ta_cd: str = '' +# inst_cd: str = '' +# emp_cd: str = '' +# emp_chg_type_cd: str = '' +# apply_date_from: str = '' +# start_date_from: str = '' +# start_date_to: str = '' +# end_date_from: str = '' +# end_date_to: str = '' +# create_date_from: str = '' +# create_date_to: str = '' +# update_date_from: str = '' +# update_date_to: str = '' +# select_table: str = '' +# data_count: int = 0 +# result_msg: str = '' +# download_file_url: str = '' +# file_name: str = '' - def is_select_table_empty(self): - return not is_not_empty(self.select_table) +# def is_select_table_empty(self): +# return not is_not_empty(self.select_table) - def is_download_file_url_empty(self): - return not is_not_empty(self.download_file_url) +# def is_download_file_url_empty(self): +# return not is_not_empty(self.download_file_url) diff --git a/ecs/jskult-webapp/src/model/view/inst_emp_csv_upload_view_model.py b/ecs/jskult-webapp/src/model/view/inst_emp_csv_upload_view_model.py index f7d40c00..4ceadd31 100644 --- a/ecs/jskult-webapp/src/model/view/inst_emp_csv_upload_view_model.py +++ b/ecs/jskult-webapp/src/model/view/inst_emp_csv_upload_view_model.py @@ -1,48 +1,49 @@ -from pydantic import BaseModel +#ファイル削除予定 +# from pydantic import BaseModel -from src.system_var import constants +# from src.system_var import constants -class InstEmpCsvUploadViewModel(BaseModel): - subtitle: str = '施設担当者データCSVアップロード' - is_verified: bool = False - is_insert: bool = False - error_message_list: list[str] = None - select_function: str = None - select_table: str = None - csv_file_name: str = None - csv_upload_list: list[dict] = None - json_upload_data: str = None - result_message_list: list[str] = None - select_function_message: str = None +# class InstEmpCsvUploadViewModel(BaseModel): +# subtitle: str = '施設担当者データCSVアップロード' +# is_verified: bool = False +# is_insert: bool = False +# error_message_list: list[str] = None +# select_function: str = None +# select_table: str = None +# csv_file_name: str = None +# csv_upload_list: list[dict] = None +# json_upload_data: str = None +# result_message_list: list[str] = None +# select_function_message: str = None - def select_table_message(self): - return self.__dummy_table() if self.select_table == 'dummy' else self.__real_table() +# def select_table_message(self): +# return self.__dummy_table() if self.select_table == 'dummy' else self.__real_table() - def upload_data_columns(self) -> list[str]: - return self.__inst_emp_columns() +# def upload_data_columns(self) -> list[str]: +# return self.__inst_emp_columns() - def is_select_function_empty(self): - return self.select_function is None or len(self.select_function) == 0 +# def is_select_function_empty(self): +# return self.select_function is None or len(self.select_function) == 0 - def is_select_table_empty(self): - return self.select_table is None or len(self.select_table) == 0 +# def is_select_table_empty(self): +# return self.select_table is None or len(self.select_table) == 0 - def is_error_message_list_empty(self): - return self.error_message_list is None or len(self.error_message_list) == 0 +# def is_error_message_list_empty(self): +# return self.error_message_list is None or len(self.error_message_list) == 0 - def csv_data_count(self): - return 0 if self.csv_upload_list is None else len(self.csv_upload_list) +# def csv_data_count(self): +# return 0 if self.csv_upload_list is None else len(self.csv_upload_list) - def __inst_emp_columns(self) -> list[str]: - if self.select_function == 'new': - return constants.NEW_INST_EMP_CSV_LOGICAL_NAMES - if self.select_function == 'change': - return constants.CHANGE_INST_CSV_LOGICAL_NAMES - return [] +# def __inst_emp_columns(self) -> list[str]: +# if self.select_function == 'new': +# return constants.NEW_INST_EMP_CSV_LOGICAL_NAMES +# if self.select_function == 'change': +# return constants.CHANGE_INST_CSV_LOGICAL_NAMES +# return [] - def __real_table(self): - return constants.CSV_REAL_TABLE_NAME +# def __real_table(self): +# return constants.CSV_REAL_TABLE_NAME - def __dummy_table(self): - return constants.CSV_CHANGE_TABLE_NAME +# def __dummy_table(self): +# return constants.CSV_CHANGE_TABLE_NAME diff --git a/ecs/jskult-webapp/src/model/view/master_mainte_menu_view_model.py b/ecs/jskult-webapp/src/model/view/master_mainte_menu_view_model.py index 2b1629b1..68da3996 100644 --- a/ecs/jskult-webapp/src/model/view/master_mainte_menu_view_model.py +++ b/ecs/jskult-webapp/src/model/view/master_mainte_menu_view_model.py @@ -1,5 +1,6 @@ -from pydantic import BaseModel +# ファイル削除予定 +# from pydantic import BaseModel -class MasterMainteMenuViewModel(BaseModel): - subtitle: str = 'MeDaCA マスターメンテメニュー' +# class MasterMainteMenuViewModel(BaseModel): +# subtitle: str = 'MeDaCA マスターメンテメニュー' diff --git a/ecs/jskult-webapp/src/model/view/menu_view_model.py b/ecs/jskult-webapp/src/model/view/menu_view_model.py index 06d62ab9..468ec5ec 100644 --- a/ecs/jskult-webapp/src/model/view/menu_view_model.py +++ b/ecs/jskult-webapp/src/model/view/menu_view_model.py @@ -13,8 +13,8 @@ class MenuViewModel(BaseModel): def is_batch_processing(self): return self.batch_status == constants.BATCH_STATUS_PROCESSING - def is_backup_processing(self): - return self.dump_status != constants.DUMP_STATUS_UNPROCESSED + #TODO 削除予定 def is_backup_processing(self): + # return self.dump_status != constants.DUMP_STATUS_UNPROCESSED def is_available_ult_doctor_menu(self): return self.user_model.has_ult_doctor_permission() @@ -24,6 +24,7 @@ class MenuViewModel(BaseModel): def is_available_bio_menu(self): return self.user_model.has_bio_permission() + + #TODO 削除予定 def is_available_master_maintenance_menu(self): + # return self.user_model.has_master_maintenance_permission() - def is_available_master_maintenance_menu(self): - return self.user_model.has_master_maintenance_permission() diff --git a/ecs/jskult-webapp/src/model/view/table_override_view_model.py b/ecs/jskult-webapp/src/model/view/table_override_view_model.py index 2301527a..1ef3d6ac 100644 --- a/ecs/jskult-webapp/src/model/view/table_override_view_model.py +++ b/ecs/jskult-webapp/src/model/view/table_override_view_model.py @@ -1,7 +1,8 @@ -from pydantic import BaseModel +# ファイル削除予定 +# from pydantic import BaseModel -class TableOverrideViewModel(BaseModel): - subtitle: str = 'テーブル上書きコピー' +# class TableOverrideViewModel(BaseModel): +# subtitle: str = 'テーブル上書きコピー' - is_override: bool = False +# is_override: bool = False diff --git a/ecs/jskult-webapp/src/model/view/user_view_model.py b/ecs/jskult-webapp/src/model/view/user_view_model.py index 0dcf401d..bae3af73 100644 --- a/ecs/jskult-webapp/src/model/view/user_view_model.py +++ b/ecs/jskult-webapp/src/model/view/user_view_model.py @@ -19,6 +19,7 @@ class UserViewModel(BaseModel): def has_bio_permission(self): return self.bio_flg == constants.PERMISSION_ENABLED + + #TODO 削除予定 def has_master_maintenance_permission(self): + # return self.master_mainte_flg == constants.PERMISSION_ENABLED - def has_master_maintenance_permission(self): - return self.master_mainte_flg == constants.PERMISSION_ENABLED diff --git a/ecs/jskult-webapp/src/repositories/bu_master_cd_repository.py b/ecs/jskult-webapp/src/repositories/bu_master_cd_repository.py index 319918e0..3580d2f7 100644 --- a/ecs/jskult-webapp/src/repositories/bu_master_cd_repository.py +++ b/ecs/jskult-webapp/src/repositories/bu_master_cd_repository.py @@ -1,29 +1,30 @@ -from src.repositories.base_repository import BaseRepository -from src.model.db.master_mente_count import MasterMenteCountModel -from src.logging.get_logger import get_logger +# # file削除予定 +# from src.repositories.base_repository import BaseRepository +# from src.model.db.master_mente_count import MasterMenteCountModel +# from src.logging.get_logger import get_logger -logger = get_logger('ビジネスユニットマスタ') +# logger = get_logger('ビジネスユニットマスタ') -class BuMasterRepository(BaseRepository): +# class BuMasterRepository(BaseRepository): - FETCH_COUNT_SQL = """\ - SELECT - COUNT(*) AS count - FROM - src05.bu - WHERE - bu.bu_cd = :bu_cd - """ +# FETCH_COUNT_SQL = """\ +# SELECT +# COUNT(*) AS count +# FROM +# src05.bu +# WHERE +# bu.bu_cd = :bu_cd +# """ - def fetch_count(self, bu_cd) -> MasterMenteCountModel: - try: - query = self.FETCH_COUNT_SQL - result = self._database.execute_select(query, {'bu_cd': bu_cd}) - models = [MasterMenteCountModel(**r) for r in result] - if len(models) == 0: - return 0 - return models[0].count - except Exception as e: - logger.exception(f"DB Error : Exception={e.args}") - raise e +# def fetch_count(self, bu_cd) -> MasterMenteCountModel: +# try: +# query = self.FETCH_COUNT_SQL +# result = self._database.execute_select(query, {'bu_cd': bu_cd}) +# models = [MasterMenteCountModel(**r) for r in result] +# if len(models) == 0: +# return 0 +# return models[0].count +# except Exception as e: +# logger.exception(f"DB Error : Exception={e.args}") +# raise e 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 fe5329f2..64097cb1 100644 --- a/ecs/jskult-webapp/src/repositories/emp_chg_inst_repository.py +++ b/ecs/jskult-webapp/src/repositories/emp_chg_inst_repository.py @@ -1,289 +1,290 @@ -from src.db import sql_condition as condition -from src.db.sql_condition import SQLCondition -from src.logging.get_logger import get_logger -from src.model.db.master_mente_count import MasterMenteCountModel -from src.model.request.master_mainte_csvdl import MasterMainteCsvDlModel -from src.repositories.base_repository import BaseRepository -from src.util.string_util import is_not_empty +# ファイル削除予定 +# from src.db import sql_condition as condition +# from src.db.sql_condition import SQLCondition +# from src.logging.get_logger import get_logger +# from src.model.db.master_mente_count import MasterMenteCountModel +# from src.model.request.master_mainte_csvdl import MasterMainteCsvDlModel +# from src.repositories.base_repository import BaseRepository +# from src.util.string_util import is_not_empty -logger = get_logger('従業員担当施設マスタ') +# logger = get_logger('従業員担当施設マスタ') -class EmpChgInstRepository(BaseRepository): +# class EmpChgInstRepository(BaseRepository): - def to_jst(self): - self._database.to_jst() +# def to_jst(self): +# self._database.to_jst() - def begin(self): - self._database.begin() +# def begin(self): +# self._database.begin() - def commit(self): - self._database.commit() +# def commit(self): +# self._database.commit() - def rollback(self): - self._database.rollback() +# def rollback(self): +# self._database.rollback() - INSERT_SQL = """\ - INSERT INTO {table_name} - ( - inst_cd, - ta_cd, - emp_chg_type_cd, - emp_cd, - bu_cd, - start_date, - end_date, - main_chg_flg, - enabled_flg, - creater, - create_date, - updater, - update_date - ) - VALUES ( - :inst_cd, - :ta_cd, - :emp_chg_type_cd, - :emp_cd, - :bu_cd, - :start_date, - :end_date, - '1', - 'Y', - :create_user_name, - NOW(), - :update_user_name, - NOW() - ) - """ +# INSERT_SQL = """\ +# INSERT INTO {table_name} +# ( +# inst_cd, +# ta_cd, +# emp_chg_type_cd, +# emp_cd, +# bu_cd, +# start_date, +# end_date, +# main_chg_flg, +# enabled_flg, +# creater, +# create_date, +# updater, +# update_date +# ) +# VALUES ( +# :inst_cd, +# :ta_cd, +# :emp_chg_type_cd, +# :emp_cd, +# :bu_cd, +# :start_date, +# :end_date, +# '1', +# 'Y', +# :create_user_name, +# NOW(), +# :update_user_name, +# NOW() +# ) +# """ - def insert_emp_chg_inst(self, inst_cd, ta_cd, emp_chg_type_cd, emp_cd, bu_cd, start_date, - end_date, create_user_name, table_name): - try: - query = self.INSERT_SQL.format(table_name=table_name) - self._database.execute(query, { - 'inst_cd': inst_cd, - 'ta_cd': ta_cd, - 'emp_chg_type_cd': emp_chg_type_cd, - 'emp_cd': emp_cd, - 'bu_cd': bu_cd, - 'start_date': start_date, - 'end_date': end_date, - 'create_user_name': create_user_name, - 'update_user_name': create_user_name - }) - except Exception as e: - logger.exception(f'DB Error : Exception={e.args}') - raise e +# def insert_emp_chg_inst(self, inst_cd, ta_cd, emp_chg_type_cd, emp_cd, bu_cd, start_date, +# end_date, create_user_name, table_name): +# try: +# query = self.INSERT_SQL.format(table_name=table_name) +# self._database.execute(query, { +# 'inst_cd': inst_cd, +# 'ta_cd': ta_cd, +# 'emp_chg_type_cd': emp_chg_type_cd, +# 'emp_cd': emp_cd, +# 'bu_cd': bu_cd, +# 'start_date': start_date, +# 'end_date': end_date, +# 'create_user_name': create_user_name, +# 'update_user_name': create_user_name +# }) +# except Exception as e: +# logger.exception(f'DB Error : Exception={e.args}') +# raise e - UPDATE_END_DATE_SQL = """\ - UPDATE - {table_name} - SET - end_date = :end_date, - updater = :update_user_name, - update_date = NOW() - WHERE - inst_cd = :inst_cd - AND ta_cd = :ta_cd - AND emp_chg_type_cd = :emp_chg_type_cd - AND start_date = :start_date - """ +# UPDATE_END_DATE_SQL = """\ +# UPDATE +# {table_name} +# SET +# end_date = :end_date, +# updater = :update_user_name, +# update_date = NOW() +# WHERE +# inst_cd = :inst_cd +# AND ta_cd = :ta_cd +# AND emp_chg_type_cd = :emp_chg_type_cd +# AND start_date = :start_date +# """ - def end_emp_chg_inst(self, inst_cd, ta_cd, emp_chg_type_cd, start_date, - end_date, update_user_name, table_name): - try: - query = self.UPDATE_END_DATE_SQL.format(table_name=table_name) - self._database.execute(query, { - 'inst_cd': inst_cd, - 'ta_cd': ta_cd, - 'emp_chg_type_cd': emp_chg_type_cd, - 'start_date': start_date, - 'end_date': end_date, - 'update_user_name': update_user_name - }) - except Exception as e: - logger.exception(f'DB Error : Exception={e.args}') - raise e +# def end_emp_chg_inst(self, inst_cd, ta_cd, emp_chg_type_cd, start_date, +# end_date, update_user_name, table_name): +# try: +# query = self.UPDATE_END_DATE_SQL.format(table_name=table_name) +# self._database.execute(query, { +# 'inst_cd': inst_cd, +# 'ta_cd': ta_cd, +# 'emp_chg_type_cd': emp_chg_type_cd, +# 'start_date': start_date, +# 'end_date': end_date, +# 'update_user_name': update_user_name +# }) +# except Exception as e: +# logger.exception(f'DB Error : Exception={e.args}') +# raise e - UPDATE_EMP_CD_SQL = """\ - UPDATE - {table_name} - SET - emp_cd = :emp_cd, - updater = :update_user_name, - update_date = NOW() - where - inst_cd = :inst_cd - AND ta_cd = :ta_cd - AND emp_chg_type_cd = :emp_chg_type_cd - AND start_date = :start_date - """ +# UPDATE_EMP_CD_SQL = """\ +# UPDATE +# {table_name} +# SET +# emp_cd = :emp_cd, +# updater = :update_user_name, +# update_date = NOW() +# where +# inst_cd = :inst_cd +# AND ta_cd = :ta_cd +# AND emp_chg_type_cd = :emp_chg_type_cd +# AND start_date = :start_date +# """ - def modify_emp_chg_inst(self, inst_cd, ta_cd, start_date, emp_chg_type_cd, emp_cd, update_user_name, table_name): - try: - query = self.UPDATE_EMP_CD_SQL.format(table_name=table_name) - self._database.execute(query, { - 'inst_cd': inst_cd, - 'ta_cd': ta_cd, - 'emp_chg_type_cd': emp_chg_type_cd, - 'start_date': start_date, - 'emp_cd': emp_cd, - 'update_user_name': update_user_name - }) - except Exception as e: - logger.exception(f'DB Error : Exception={e.args}') - raise e +# def modify_emp_chg_inst(self, inst_cd, ta_cd, start_date, emp_chg_type_cd, emp_cd, update_user_name, table_name): +# try: +# query = self.UPDATE_EMP_CD_SQL.format(table_name=table_name) +# self._database.execute(query, { +# 'inst_cd': inst_cd, +# 'ta_cd': ta_cd, +# 'emp_chg_type_cd': emp_chg_type_cd, +# 'start_date': start_date, +# 'emp_cd': emp_cd, +# 'update_user_name': update_user_name +# }) +# except Exception as e: +# logger.exception(f'DB Error : Exception={e.args}') +# raise e - FETCH_COUNT_SQL = """\ - SELECT - COUNT(*) AS count - FROM - {table_name} - WHERE - inst_cd = :inst_cd - AND ta_cd = :ta_cd - AND emp_chg_type_cd = :emp_chg_type_cd - AND start_date = :start_date - """ +# FETCH_COUNT_SQL = """\ +# SELECT +# COUNT(*) AS count +# FROM +# {table_name} +# WHERE +# inst_cd = :inst_cd +# AND ta_cd = :ta_cd +# AND emp_chg_type_cd = :emp_chg_type_cd +# AND start_date = :start_date +# """ - def fetch_count(self, inst_cd, ta_cd, emp_chg_type_cd, start_date, table_name) -> MasterMenteCountModel: - try: - query = self.FETCH_COUNT_SQL.format(table_name=table_name) - result = self._database.execute_select(query, {'inst_cd': inst_cd, 'ta_cd': ta_cd, - 'emp_chg_type_cd': emp_chg_type_cd, 'start_date': start_date}) - models = [MasterMenteCountModel(**r) for r in result] - if len(models) == 0: - return 0 - return models[0].count - except Exception as e: - logger.exception(f'DB Error : Exception={e.args}') - raise e +# def fetch_count(self, inst_cd, ta_cd, emp_chg_type_cd, start_date, table_name) -> MasterMenteCountModel: +# try: +# query = self.FETCH_COUNT_SQL.format(table_name=table_name) +# result = self._database.execute_select(query, {'inst_cd': inst_cd, 'ta_cd': ta_cd, +# 'emp_chg_type_cd': emp_chg_type_cd, 'start_date': start_date}) +# models = [MasterMenteCountModel(**r) for r in result] +# if len(models) == 0: +# return 0 +# return models[0].count +# except Exception as e: +# logger.exception(f'DB Error : Exception={e.args}') +# raise e - FETCH_SQL = """\ - SELECT DISTINCT - eci.inst_cd AS inst_cd, - mi.inst_name AS inst_name, - eci.ta_cd AS ta_cd, - eci.emp_chg_type_cd AS emp_chg_type_cd, - eci.emp_cd AS emp_cd, - CONCAT(emp.emp_name_family, " ", emp.emp_name_first) AS emp_name_full, - eci.bu_cd AS bu_cd, - bu.bu_name AS bu_name, - eci.start_date AS start_date, - eci.end_date AS end_date, - eci.creater AS creater, - eci.create_date AS create_date, - eci.updater AS updater, - eci.update_date AS update_date - FROM - {table_name} AS eci - LEFT JOIN mst_inst AS mi - ON eci.inst_cd = mi.inst_cd - LEFT JOIN emp - ON eci.emp_cd = emp.emp_cd - LEFT JOIN bu - ON eci.bu_cd = bu.bu_cd - WHERE - {where_clause} - """ +# FETCH_SQL = """\ +# SELECT DISTINCT +# eci.inst_cd AS inst_cd, +# mi.inst_name AS inst_name, +# eci.ta_cd AS ta_cd, +# eci.emp_chg_type_cd AS emp_chg_type_cd, +# eci.emp_cd AS emp_cd, +# CONCAT(emp.emp_name_family, " ", emp.emp_name_first) AS emp_name_full, +# eci.bu_cd AS bu_cd, +# bu.bu_name AS bu_name, +# eci.start_date AS start_date, +# eci.end_date AS end_date, +# eci.creater AS creater, +# eci.create_date AS create_date, +# eci.updater AS updater, +# eci.update_date AS update_date +# FROM +# {table_name} AS eci +# LEFT JOIN mst_inst AS mi +# ON eci.inst_cd = mi.inst_cd +# LEFT JOIN emp +# ON eci.emp_cd = emp.emp_cd +# LEFT JOIN bu +# ON eci.bu_cd = bu.bu_cd +# WHERE +# {where_clause} +# """ - def fetch_as_data_frame(self, table_name: str, parameter: MasterMainteCsvDlModel): - try: - where_clause = self.__build_condition(parameter) - query = self.FETCH_SQL.format(table_name=table_name, where_clause=where_clause) - logger.debug(f'SQL: {query}') - df = self._to_data_frame(query, parameter) - logger.debug(f'count= {df.shape[0]}') - return df - except Exception as e: - logger.exception(f'DB Error : Exception={e.args}') - raise e +# def fetch_as_data_frame(self, table_name: str, parameter: MasterMainteCsvDlModel): +# try: +# where_clause = self.__build_condition(parameter) +# query = self.FETCH_SQL.format(table_name=table_name, where_clause=where_clause) +# logger.debug(f'SQL: {query}') +# df = self._to_data_frame(query, parameter) +# logger.debug(f'count= {df.shape[0]}') +# return df +# except Exception as e: +# logger.exception(f'DB Error : Exception={e.args}') +# raise e - def __build_condition(self, parameter: MasterMainteCsvDlModel): - where_clauses: list[SQLCondition] = [] +# def __build_condition(self, parameter: MasterMainteCsvDlModel): +# where_clauses: list[SQLCondition] = [] - # 検索条件が指定されずにSQLが壊れることを予防するため、常に真の固定条件を追加しておく - where_clauses.append(SQLCondition('', '', '1 = 1', literal=True)) +# # 検索条件が指定されずにSQLが壊れることを予防するため、常に真の固定条件を追加しておく +# where_clauses.append(SQLCondition('', '', '1 = 1', literal=True)) - # 領域コードが入力されていた場合 - if is_not_empty(parameter.ta_cd): - parameter.adapt_ta_cd = f'%{parameter.ta_cd}%' - where_clauses.append(SQLCondition('eci.ta_cd', condition.LIKE, 'adapt_ta_cd')) +# # 領域コードが入力されていた場合 +# if is_not_empty(parameter.ta_cd): +# parameter.adapt_ta_cd = f'%{parameter.ta_cd}%' +# where_clauses.append(SQLCondition('eci.ta_cd', condition.LIKE, 'adapt_ta_cd')) - # 施設コードが入力されていた場合 - if is_not_empty(parameter.inst_cd): - parameter.adapt_inst_cd = f'%{parameter.inst_cd}%' - where_clauses.append(SQLCondition('eci.inst_cd', condition.LIKE, 'adapt_inst_cd')) +# # 施設コードが入力されていた場合 +# if is_not_empty(parameter.inst_cd): +# parameter.adapt_inst_cd = f'%{parameter.inst_cd}%' +# where_clauses.append(SQLCondition('eci.inst_cd', condition.LIKE, 'adapt_inst_cd')) - # MUIDが入力されていた場合 - if is_not_empty(parameter.emp_cd): - parameter.adapt_emp_cd = f'%{parameter.emp_cd}%' - where_clauses.append(SQLCondition('eci.emp_cd', condition.LIKE, 'adapt_emp_cd')) +# # MUIDが入力されていた場合 +# if is_not_empty(parameter.emp_cd): +# parameter.adapt_emp_cd = f'%{parameter.emp_cd}%' +# where_clauses.append(SQLCondition('eci.emp_cd', condition.LIKE, 'adapt_emp_cd')) - # 担当者種別コードが入力されていた場合 - if is_not_empty(parameter.emp_chg_type_cd): - parameter.adapt_emp_chg_type_cd = f'%{parameter.emp_chg_type_cd}%' - where_clauses.append(SQLCondition('eci.emp_chg_type_cd', condition.LIKE, 'adapt_emp_chg_type_cd')) +# # 担当者種別コードが入力されていた場合 +# if is_not_empty(parameter.emp_chg_type_cd): +# parameter.adapt_emp_chg_type_cd = f'%{parameter.emp_chg_type_cd}%' +# where_clauses.append(SQLCondition('eci.emp_chg_type_cd', condition.LIKE, 'adapt_emp_chg_type_cd')) - # 適用期間内が入力されていた場合 - 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')) +# # 適用期間内が入力されていた場合 +# 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')) - # 適用開始日(FROM)が入力されていた場合 - if is_not_empty(parameter.adapt_start_date_from): - where_clauses.append(SQLCondition('eci.start_date', condition.GE, 'adapt_start_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')) - # 適用開始日(TO)が入力されていた場合 - if is_not_empty(parameter.adapt_start_date_to): - where_clauses.append(SQLCondition('eci.start_date', condition.LE, 'adapt_start_date_to')) +# # 適用開始日(TO)が入力されていた場合 +# if is_not_empty(parameter.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')) +# # 適用終了日(FROM)が入力されていた場合 +# if is_not_empty(parameter.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')) +# # 適用終了日(TO)が入力されていた場合 +# if is_not_empty(parameter.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')) +# # データ作成日(FROM)が入力されていた場合 +# if is_not_empty(parameter.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')) +# # データ作成日(TO)が入力されていた場合 +# if is_not_empty(parameter.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')) +# # データ更新日(FROM)が入力されていた場合 +# if is_not_empty(parameter.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')) +# # データ更新日(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_str = ' AND '.join([condition.apply() for condition in where_clauses]) +# where_clauses_str = ' AND '.join([condition.apply() for condition in where_clauses]) - logger.debug(f'条件設定終了:{where_clauses_str}') - return where_clauses_str +# logger.debug(f'条件設定終了:{where_clauses_str}') +# return where_clauses_str - DELETE_SQL = "DELETE FROM emp_chg_inst_wrk" +# DELETE_SQL = "DELETE FROM emp_chg_inst_wrk" - def delete_dummy_table(self): - try: - query = self.DELETE_SQL - self._database.execute(query) - except Exception as e: - logger.exception(f'DB Error : Exception={e.args}') - raise e +# def delete_dummy_table(self): +# try: +# query = self.DELETE_SQL +# self._database.execute(query) +# except Exception as e: +# logger.exception(f'DB Error : Exception={e.args}') +# raise e - COPY_TABLE_SQL = "INSERT INTO emp_chg_inst_wrk SELECT * FROM emp_chg_inst" +# COPY_TABLE_SQL = "INSERT INTO emp_chg_inst_wrk SELECT * FROM emp_chg_inst" - def copy_real_to_dummy(self): - try: - query = self.COPY_TABLE_SQL - self._database.execute(query) - except Exception as e: - logger.exception(f'DB Error : Exception={e.args}') - raise e +# def copy_real_to_dummy(self): +# try: +# query = self.COPY_TABLE_SQL +# self._database.execute(query) +# except Exception as e: +# logger.exception(f'DB Error : Exception={e.args}') +# raise e diff --git a/ecs/jskult-webapp/src/repositories/emp_master_repository.py b/ecs/jskult-webapp/src/repositories/emp_master_repository.py index 9ef6aa4a..c3f567c1 100644 --- a/ecs/jskult-webapp/src/repositories/emp_master_repository.py +++ b/ecs/jskult-webapp/src/repositories/emp_master_repository.py @@ -1,31 +1,32 @@ -from src.repositories.base_repository import BaseRepository -from src.model.db.master_mente_count import MasterMenteCountModel -from src.logging.get_logger import get_logger +# ファイル削除予定 +# from src.repositories.base_repository import BaseRepository +# from src.model.db.master_mente_count import MasterMenteCountModel +# from src.logging.get_logger import get_logger -logger = get_logger('従業員マスタ') +# logger = get_logger('従業員マスタ') -class EmpMasterRepository(BaseRepository): +# class EmpMasterRepository(BaseRepository): - FETCH_COUNT_SQL = """\ - SELECT - COUNT(*) AS count - FROM - src05.emp - WHERE - emp.emp_cd = :emp_cd - AND str_to_date(emp.start_date, '%Y%m%d') <= str_to_date(:start_work_date, '%Y%m%d') - AND str_to_date(:start_work_date, '%Y%m%d') <= str_to_date(emp.end_date ,'%Y%m%d') - """ +# FETCH_COUNT_SQL = """\ +# SELECT +# COUNT(*) AS count +# FROM +# src05.emp +# WHERE +# emp.emp_cd = :emp_cd +# AND str_to_date(emp.start_date, '%Y%m%d') <= str_to_date(:start_work_date, '%Y%m%d') +# AND str_to_date(:start_work_date, '%Y%m%d') <= str_to_date(emp.end_date ,'%Y%m%d') +# """ - def fetch_count(self, emp_cd, start_work_date) -> MasterMenteCountModel: - try: - query = self.FETCH_COUNT_SQL - result = self._database.execute_select(query, {'emp_cd': emp_cd, 'start_work_date': start_work_date}) - models = [MasterMenteCountModel(**r) for r in result] - if len(models) == 0: - return 0 - return models[0].count - except Exception as e: - logger.exception(f"DB Error : Exception={e.args}") - raise e +# def fetch_count(self, emp_cd, start_work_date) -> MasterMenteCountModel: +# try: +# query = self.FETCH_COUNT_SQL +# result = self._database.execute_select(query, {'emp_cd': emp_cd, 'start_work_date': start_work_date}) +# models = [MasterMenteCountModel(**r) for r in result] +# if len(models) == 0: +# return 0 +# return models[0].count +# except Exception as e: +# logger.exception(f"DB Error : Exception={e.args}") +# raise e diff --git a/ecs/jskult-webapp/src/repositories/generic_kbn_mst_repository.py b/ecs/jskult-webapp/src/repositories/generic_kbn_mst_repository.py index e2d210c4..7e4dc0dc 100644 --- a/ecs/jskult-webapp/src/repositories/generic_kbn_mst_repository.py +++ b/ecs/jskult-webapp/src/repositories/generic_kbn_mst_repository.py @@ -1,33 +1,34 @@ -from src.repositories.base_repository import BaseRepository -from src.model.db.master_mente_count import MasterMenteCountModel -from src.logging.get_logger import get_logger +# ファイル削除予定 +# from src.repositories.base_repository import BaseRepository +# from src.model.db.master_mente_count import MasterMenteCountModel +# from src.logging.get_logger import get_logger -logger = get_logger('汎用区分マスタ') +# logger = get_logger('汎用区分マスタ') -class GenericKbnMstRepository(BaseRepository): +# class GenericKbnMstRepository(BaseRepository): - FETCH_SQL = """\ - SELECT - COUNT(*) AS count - FROM - src05.generic_kbn_mst - WHERE - generic_kbn_mst.generic_kbn_cd = :generic_kbn_cd - AND - generic_kbn_mst.kbn_cd = :kbn_cd - AND - STR_TO_DATE( :start_date , '%Y%m%d') BETWEEN generic_kbn_mst.start_date AND generic_kbn_mst.end_date\ - """ +# FETCH_SQL = """\ +# SELECT +# COUNT(*) AS count +# FROM +# src05.generic_kbn_mst +# WHERE +# generic_kbn_mst.generic_kbn_cd = :generic_kbn_cd +# AND +# generic_kbn_mst.kbn_cd = :kbn_cd +# AND +# STR_TO_DATE( :start_date , '%Y%m%d') BETWEEN generic_kbn_mst.start_date AND generic_kbn_mst.end_date\ +# """ - def fetch_count(self, generic_kbn_cd: str, kbn_cd: str, start_date: str) -> MasterMenteCountModel: - try: - query = self.FETCH_SQL - result = self._database.execute_select(query, {'generic_kbn_cd': generic_kbn_cd, 'kbn_cd': kbn_cd, 'start_date' : start_date}) - models = [MasterMenteCountModel(**r) for r in result] - if len(models) == 0: - return 0 - return models[0].count - except Exception as e: - logger.error(f"DB Error : Exception={e.args}") - raise e \ No newline at end of file +# def fetch_count(self, generic_kbn_cd: str, kbn_cd: str, start_date: str) -> MasterMenteCountModel: +# try: +# query = self.FETCH_SQL +# result = self._database.execute_select(query, {'generic_kbn_cd': generic_kbn_cd, 'kbn_cd': kbn_cd, 'start_date' : start_date}) +# models = [MasterMenteCountModel(**r) for r in result] +# if len(models) == 0: +# return 0 +# return models[0].count +# except Exception as e: +# logger.error(f"DB Error : Exception={e.args}") +# raise e \ No newline at end of file diff --git a/ecs/jskult-webapp/src/repositories/mst_inst_repository.py b/ecs/jskult-webapp/src/repositories/mst_inst_repository.py index 6ad64652..44f6e426 100644 --- a/ecs/jskult-webapp/src/repositories/mst_inst_repository.py +++ b/ecs/jskult-webapp/src/repositories/mst_inst_repository.py @@ -1,29 +1,30 @@ -from src.repositories.base_repository import BaseRepository -from src.model.db.master_mente_count import MasterMenteCountModel -from src.logging.get_logger import get_logger +# ファイル削除予定 +# from src.repositories.base_repository import BaseRepository +# from src.model.db.master_mente_count import MasterMenteCountModel +# from src.logging.get_logger import get_logger -logger = get_logger('メルク施設マスタ') +# logger = get_logger('メルク施設マスタ') -class MstInstRepository(BaseRepository): +# class MstInstRepository(BaseRepository): - FETCH_COUNT_SQL = """\ - SELECT - COUNT(*) AS count - FROM - src05.mst_inst - WHERE - mst_inst.inst_cd = :inst_cd - """ +# FETCH_COUNT_SQL = """\ +# SELECT +# COUNT(*) AS count +# FROM +# src05.mst_inst +# WHERE +# mst_inst.inst_cd = :inst_cd +# """ - def fetch_count(self, inst_cd) -> MasterMenteCountModel: - try: - query = self.FETCH_COUNT_SQL - result = self._database.execute_select(query, {'inst_cd': inst_cd}) - models = [MasterMenteCountModel(**r) for r in result] - if len(models) == 0: - return 0 - return models[0].count - except Exception as e: - logger.exception(f"DB Error : Exception={e.args}") - raise e +# def fetch_count(self, inst_cd) -> MasterMenteCountModel: +# try: +# query = self.FETCH_COUNT_SQL +# result = self._database.execute_select(query, {'inst_cd': inst_cd}) +# models = [MasterMenteCountModel(**r) for r in result] +# if len(models) == 0: +# return 0 +# return models[0].count +# except Exception as e: +# logger.exception(f"DB Error : Exception={e.args}") +# raise e diff --git a/ecs/jskult-webapp/src/services/batch_status_service.py b/ecs/jskult-webapp/src/services/batch_status_service.py index ffb57af0..0d7fa372 100644 --- a/ecs/jskult-webapp/src/services/batch_status_service.py +++ b/ecs/jskult-webapp/src/services/batch_status_service.py @@ -40,12 +40,13 @@ class BatchStatusService(BaseService): self.__assert_record_exists() return self.hdke_table_record.bch_actf == constants.BATCH_STATUS_PROCESSING - def is_dump_processing(self): - """dump処理処理中かどうかを判定する""" + # 削除予定 + # def is_dump_processing(self): + # """dump処理処理中かどうかを判定する""" - # 日付マスタのレコードがあることを確認 - self.__assert_record_exists() - return self.hdke_table_record.dump_sts_kbn != constants.DUMP_STATUS_UNPROCESSED + # # 日付マスタのレコードがあることを確認 + # self.__assert_record_exists() + # return self.hdke_table_record.dump_sts_kbn != constants.DUMP_STATUS_UNPROCESSED def __assert_record_exists(self): """日付テーブルが有ることを保証する""" diff --git a/ecs/jskult-webapp/src/services/master_mainte_service.py b/ecs/jskult-webapp/src/services/master_mainte_service.py index 6f612a87..513a4008 100644 --- a/ecs/jskult-webapp/src/services/master_mainte_service.py +++ b/ecs/jskult-webapp/src/services/master_mainte_service.py @@ -1,265 +1,266 @@ -import os -import json -import html -import csv +# # ファイル削除予定 +# import os +# import json +# import html +# import csv -import pandas as pd +# import pandas as pd -from fastapi import HTTPException -from io import TextIOWrapper -from src.aws.aws_api_client import AWSAPIClient -from src.aws.s3 import S3Client -from src.error.exceptions import DBException -from starlette import status -from datetime import datetime -from src.services.base_service import BaseService -from src.system_var import constants, environment -from src.repositories.base_repository import BaseRepository -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 -from src.model.view.inst_emp_csv_upload_view_model import InstEmpCsvUploadViewModel -from src.model.view.table_override_view_model import TableOverrideViewModel -from src.model.request.master_mainte_csvup import MasterMainteCsvUpModel -from src.model.request.master_mainte_csvdl import MasterMainteCsvDlModel -from src.logging.get_logger import get_logger +# from fastapi import HTTPException +# from io import TextIOWrapper +# from src.aws.aws_api_client import AWSAPIClient +# from src.aws.s3 import S3Client +# from src.error.exceptions import DBException +# from starlette import status +# from datetime import datetime +# from src.services.base_service import BaseService +# from src.system_var import constants, environment +# from src.repositories.base_repository import BaseRepository +# 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 +# from src.model.view.inst_emp_csv_upload_view_model import InstEmpCsvUploadViewModel +# from src.model.view.table_override_view_model import TableOverrideViewModel +# from src.model.request.master_mainte_csvup import MasterMainteCsvUpModel +# from src.model.request.master_mainte_csvdl import MasterMainteCsvDlModel +# from src.logging.get_logger import get_logger -logger = get_logger('マスターメンテ') +# logger = get_logger('マスターメンテ') -class MasterMainteService(BaseService): - REPOSITORIES = { - 'mst_inst_repository': MstInstRepository, - 'emp_master_repository': EmpMasterRepository, - 'bu_master_repository': BuMasterRepository, - 'emp_chginst_repository': EmpChgInstRepository, - 'generic_kbn_mst_repository': GenericKbnMstRepository, - } +# class MasterMainteService(BaseService): +# REPOSITORIES = { +# 'mst_inst_repository': MstInstRepository, +# 'emp_master_repository': EmpMasterRepository, +# 'bu_master_repository': BuMasterRepository, +# 'emp_chginst_repository': EmpChgInstRepository, +# 'generic_kbn_mst_repository': GenericKbnMstRepository, +# } - CLIENTS = { - 's3_client': S3Client - } +# CLIENTS = { +# 's3_client': S3Client +# } - mst_inst_repository: MstInstRepository - emp_master_repository: EmpMasterRepository - bu_master_repository: BuMasterRepository - emp_chginst_repository: EmpChgInstRepository - generic_kbn_mst_repository: GenericKbnMstRepository - s3_client: S3Client +# mst_inst_repository: MstInstRepository +# 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: - super().__init__(repositories, clients) - self.mst_inst_repository = repositories['mst_inst_repository'] - 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 __init__(self, repositories: dict[str, BaseRepository], clients: dict[str, AWSAPIClient]) -> None: +# super().__init__(repositories, clients) +# self.mst_inst_repository = repositories['mst_inst_repository'] +# 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, - file: TextIOWrapper, - csv_file_name: str, - csv_upload_form: MasterMainteCsvUpModel) -> InstEmpCsvUploadViewModel: +# def prepare_mainte_csv_up_view(self, +# file: TextIOWrapper, +# csv_file_name: str, +# csv_upload_form: MasterMainteCsvUpModel) -> InstEmpCsvUploadViewModel: - if csv_upload_form.select_function != 'new' and csv_upload_form.select_function != 'change': - raise Exception(f'機能の選択値が不正です: {csv_upload_form.select_function}') - if csv_upload_form.select_table != 'dummy' and csv_upload_form.select_table != 'real': - raise Exception(f'登録テーブルの選択値が不正です: {csv_upload_form.select_table}') +# if csv_upload_form.select_function != 'new' and csv_upload_form.select_function != 'change': +# raise Exception(f'機能の選択値が不正です: {csv_upload_form.select_function}') +# if csv_upload_form.select_table != 'dummy' and csv_upload_form.select_table != 'real': +# raise Exception(f'登録テーブルの選択値が不正です: {csv_upload_form.select_table}') - (table_name, selected_table_msg) = self.__choose_target_table(csv_upload_form.select_table) +# (table_name, selected_table_msg) = self.__choose_target_table(csv_upload_form.select_table) - csv_items = MasterMainteCSVItems( - file, - csv_upload_form.select_function, - table_name, - self.mst_inst_repository, - self.emp_master_repository, - self.bu_master_repository, - self.emp_chginst_repository, - self.generic_kbn_mst_repository - ) +# csv_items = MasterMainteCSVItems( +# file, +# csv_upload_form.select_function, +# table_name, +# self.mst_inst_repository, +# self.emp_master_repository, +# self.bu_master_repository, +# self.emp_chginst_repository, +# self.generic_kbn_mst_repository +# ) - error_message_list = [] - # CSVファイル0件(ヘッダ行のみ)チェック - if len(csv_items.lines) == 0: - error_message_list.append('選択されたCSVファイルの2行目以降に値が記入されておりません。') - else: - for row_item in csv_items: - error_message_list.extend([data for data in row_item.validate()]) +# error_message_list = [] +# # CSVファイル0件(ヘッダ行のみ)チェック +# if len(csv_items.lines) == 0: +# error_message_list.append('選択されたCSVファイルの2行目以降に値が記入されておりません。') +# else: +# for row_item in csv_items: +# error_message_list.extend([data for data in row_item.validate()]) - csv_upload_list = [] - json_upload_data = '' - if len(error_message_list) == 0: - csv_upload_list: list[dict] = csv_items.to_dict() - # json作成 - json_upload_data = csv_items.to_json() +# csv_upload_list = [] +# json_upload_data = '' +# if len(error_message_list) == 0: +# csv_upload_list: list[dict] = csv_items.to_dict() +# # json作成 +# json_upload_data = csv_items.to_json() - mainte_csv_up = InstEmpCsvUploadViewModel( - is_verified=True, - error_message_list=error_message_list, - select_function=csv_upload_form.select_function, - select_table=csv_upload_form.select_table, - csv_upload_list=csv_upload_list, - json_upload_data=json_upload_data, - csv_file_name=csv_file_name, - select_function_message=self.__make_dialog_confirm_message( - csv_upload_form.select_function, - selected_table_msg) - ) - return mainte_csv_up +# mainte_csv_up = InstEmpCsvUploadViewModel( +# is_verified=True, +# error_message_list=error_message_list, +# select_function=csv_upload_form.select_function, +# select_table=csv_upload_form.select_table, +# csv_upload_list=csv_upload_list, +# json_upload_data=json_upload_data, +# csv_file_name=csv_file_name, +# select_function_message=self.__make_dialog_confirm_message( +# csv_upload_form.select_function, +# selected_table_msg) +# ) +# return mainte_csv_up - def prepare_mainte_new_inst_view(self, - user_name: str, - csv_upload_form: MasterMainteCsvUpModel) -> InstEmpCsvUploadViewModel: +# def prepare_mainte_new_inst_view(self, +# user_name: str, +# csv_upload_form: MasterMainteCsvUpModel) -> InstEmpCsvUploadViewModel: - (table_name, selected_table_msg) = self.__choose_target_table(csv_upload_form.select_table) +# (table_name, selected_table_msg) = self.__choose_target_table(csv_upload_form.select_table) - csv_data_list = json.loads(html.unescape(csv_upload_form.unescape().json_upload_data)) +# csv_data_list = json.loads(html.unescape(csv_upload_form.unescape().json_upload_data)) - if csv_upload_form.select_function == 'new': - emp_chg_inst = NewEmpChgInstFunction( - csv_data_list, - table_name, - selected_table_msg, - user_name, - self.emp_chginst_repository) - elif csv_upload_form.select_function == 'change': - emp_chg_inst = ChangeEmpChgInstFunction( - csv_data_list, - table_name, - selected_table_msg, - user_name, - self.emp_chginst_repository) - else: - raise Exception(f'機能の選択値が不正です: {csv_upload_form.select_function}') +# if csv_upload_form.select_function == 'new': +# emp_chg_inst = NewEmpChgInstFunction( +# csv_data_list, +# table_name, +# selected_table_msg, +# user_name, +# self.emp_chginst_repository) +# elif csv_upload_form.select_function == 'change': +# emp_chg_inst = ChangeEmpChgInstFunction( +# csv_data_list, +# table_name, +# selected_table_msg, +# user_name, +# self.emp_chginst_repository) +# else: +# raise Exception(f'機能の選択値が不正です: {csv_upload_form.select_function}') - (result_message_list, raw_error_list) = emp_chg_inst.save() +# (result_message_list, raw_error_list) = emp_chg_inst.save() - error_message_list = [] - error_message_list.extend(raw_error_list) +# error_message_list = [] +# error_message_list.extend(raw_error_list) - mainte_csv_up = InstEmpCsvUploadViewModel( - is_insert=True, - result_message_list=result_message_list, - error_message_list=error_message_list - ) - return mainte_csv_up +# mainte_csv_up = InstEmpCsvUploadViewModel( +# is_insert=True, +# result_message_list=result_message_list, +# error_message_list=error_message_list +# ) +# return mainte_csv_up - def copy_data_real_to_dummy(self) -> TableOverrideViewModel: - try: - self.emp_chginst_repository.begin() - self.emp_chginst_repository.to_jst() - self.emp_chginst_repository.delete_dummy_table() - self.emp_chginst_repository.copy_real_to_dummy() - self.emp_chginst_repository.commit() - except Exception as e: - self.emp_chginst_repository.rollback() - raise e +# def copy_data_real_to_dummy(self) -> TableOverrideViewModel: +# try: +# self.emp_chginst_repository.begin() +# self.emp_chginst_repository.to_jst() +# self.emp_chginst_repository.delete_dummy_table() +# self.emp_chginst_repository.copy_real_to_dummy() +# self.emp_chginst_repository.commit() +# except Exception as e: +# self.emp_chginst_repository.rollback() +# raise e - # コピー完了をマークして画面に返却 - table_override = TableOverrideViewModel( - is_override=True - ) - return table_override +# # コピー完了をマークして画面に返却 +# table_override = TableOverrideViewModel( +# is_override=True +# ) +# return table_override - def search_emp_chg_inst_data(self, csv_download_form: MasterMainteCsvDlModel) -> pd.DataFrame: - try: - csv_download_form.unescape() - # 施設担当者データを検索 - search_result_df = self.search_download_emp_chg_inst_data(csv_download_form) - except DBException as e: - raise HTTPException( - status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, - detail={'error': 'db_error', 'message': e.args} - ) +# def search_emp_chg_inst_data(self, csv_download_form: MasterMainteCsvDlModel) -> pd.DataFrame: +# try: +# csv_download_form.unescape() +# # 施設担当者データを検索 +# search_result_df = self.search_download_emp_chg_inst_data(csv_download_form) +# except DBException as e: +# raise HTTPException( +# status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, +# detail={'error': 'db_error', 'message': e.args} +# ) - return search_result_df +# return search_result_df - def search_download_emp_chg_inst_data(self, csv_download_form: MasterMainteCsvDlModel): - (table_name, _) = self.__choose_target_table(csv_download_form.select_table) - search_result_df = self.emp_chginst_repository.fetch_as_data_frame(table_name, csv_download_form) - return search_result_df +# def search_download_emp_chg_inst_data(self, csv_download_form: MasterMainteCsvDlModel): +# (table_name, _) = self.__choose_target_table(csv_download_form.select_table) +# search_result_df = self.emp_chginst_repository.fetch_as_data_frame(table_name, csv_download_form) +# return search_result_df - def write_csv_file(self, data_frame: pd.DataFrame, header: list[str], download_file_name: str): - # csvに書き込み - output_file_path = os.path.join(constants.MENTE_CSV_TEMPORARY_FILE_DIR_PATH, download_file_name) - # 横長のDataFrameとするため、ヘッダーの加工処理 - header_data = {} - for df_column, header_column in zip(data_frame.columns, header): - header_data[df_column] = header_column +# def write_csv_file(self, data_frame: pd.DataFrame, header: list[str], download_file_name: str): +# # csvに書き込み +# output_file_path = os.path.join(constants.MENTE_CSV_TEMPORARY_FILE_DIR_PATH, download_file_name) +# # 横長のDataFrameとするため、ヘッダーの加工処理 +# header_data = {} +# for df_column, header_column in zip(data_frame.columns, header): +# header_data[df_column] = header_column - header_df = pd.DataFrame([header_data], index=None) - output_df = pd.concat([header_df, data_frame]) - # ヘッダー行としてではなく、1レコードとして出力する - output_df.to_csv(output_file_path, encoding="utf-8_sig", quoting=csv.QUOTE_ALL, index=False, header=False) +# header_df = pd.DataFrame([header_data], index=None) +# output_df = pd.concat([header_df, data_frame]) +# # ヘッダー行としてではなく、1レコードとして出力する +# output_df.to_csv(output_file_path, encoding="utf-8_sig", quoting=csv.QUOTE_ALL, index=False, header=False) - return output_file_path +# return output_file_path - def upload_emp_chg_inst_data_file(self, df: pd.DataFrame, user_id: str, select_table: str) -> tuple[str, str]: - if df.shape[0] == 0: - return '該当データが存在しないためCSVファイルを出力しませんでした', '' +# def upload_emp_chg_inst_data_file(self, df: pd.DataFrame, user_id: str, select_table: str) -> tuple[str, str]: +# if df.shape[0] == 0: +# return '該当データが存在しないためCSVファイルを出力しませんでした', '' - # ファイル名に使用するタイムスタンプを初期化しておく - current_timestamp = datetime.now() - download_file_name = f'Result_{user_id}_{current_timestamp:%Y%m%d%H%M%S%f}.csv' +# # ファイル名に使用するタイムスタンプを初期化しておく +# current_timestamp = datetime.now() +# download_file_name = f'Result_{user_id}_{current_timestamp:%Y%m%d%H%M%S%f}.csv' - # ファイルを書き出し(CSV) - local_file_path = self.__write_emp_chg_inst_data_to_file(df, download_file_name) +# # ファイルを書き出し(CSV) +# local_file_path = self.__write_emp_chg_inst_data_to_file(df, download_file_name) - # ローカルファイルからS3にアップロードし、ダウンロード用URLを取得する - download_file_url = '' - try: - bucket_name = environment.MASTER_MAINTENANCE_BUCKET - file_key = f'data/{os.path.basename(local_file_path)}' - self.s3_client.upload_file(local_file_path, bucket_name, file_key) - # アップロード後、ローカルからは削除する - self.delete_local_file(local_file_path) - download_file_url = self.generate_download_file_url(local_file_path) - except Exception as e: - logger.exception(f'S3 アクセスエラー{e}') - raise HTTPException( - status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, - detail={'error': 'aws_error', 'message': e.args} - ) - if select_table == 'dummy': - result_msg = f'ダミーテーブルのデータ{df.shape[0]}件をCSVファイルに出力しました' - else: - result_msg = f'本番テーブルのデータ{df.shape[0]}件をCSVファイルに出力しました' +# # ローカルファイルからS3にアップロードし、ダウンロード用URLを取得する +# download_file_url = '' +# try: +# bucket_name = environment.MASTER_MAINTENANCE_BUCKET +# file_key = f'data/{os.path.basename(local_file_path)}' +# self.s3_client.upload_file(local_file_path, bucket_name, file_key) +# # アップロード後、ローカルからは削除する +# self.delete_local_file(local_file_path) +# download_file_url = self.generate_download_file_url(local_file_path) +# except Exception as e: +# logger.exception(f'S3 アクセスエラー{e}') +# raise HTTPException( +# status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, +# detail={'error': 'aws_error', 'message': e.args} +# ) +# if select_table == 'dummy': +# result_msg = f'ダミーテーブルのデータ{df.shape[0]}件をCSVファイルに出力しました' +# else: +# result_msg = f'本番テーブルのデータ{df.shape[0]}件をCSVファイルに出力しました' - return result_msg, download_file_url +# return result_msg, download_file_url - def generate_download_file_url(self, local_file_path: str) -> str: - bucket_name = environment.MASTER_MAINTENANCE_BUCKET - file_key = f'data/{os.path.basename(local_file_path)}' - return self.s3_client.generate_presigned_url(bucket_name, file_key, constants.MENTE_CSV_DOWNLOAD_FILE_NAME) +# def generate_download_file_url(self, local_file_path: str) -> str: +# bucket_name = environment.MASTER_MAINTENANCE_BUCKET +# file_key = f'data/{os.path.basename(local_file_path)}' +# return self.s3_client.generate_presigned_url(bucket_name, file_key, constants.MENTE_CSV_DOWNLOAD_FILE_NAME) - def __write_emp_chg_inst_data_to_file(self, df: pd.DataFrame, download_file_name: str) -> str: - logger.info('CSVファイルを出力する') - local_file_path = self.write_csv_file( - df, header=constants.MENTE_CSV_DOWNLOAD_HEADER, download_file_name=download_file_name) +# def __write_emp_chg_inst_data_to_file(self, df: pd.DataFrame, download_file_name: str) -> str: +# logger.info('CSVファイルを出力する') +# local_file_path = self.write_csv_file( +# df, header=constants.MENTE_CSV_DOWNLOAD_HEADER, download_file_name=download_file_name) - return local_file_path +# return local_file_path - def __choose_target_table(self, select_table: str): - if select_table == 'dummy': - table_name = 'src05.emp_chg_inst_wrk' - selected_table_msg = constants.CSV_CHANGE_TABLE_NAME - elif select_table == 'real': - table_name = 'src05.emp_chg_inst' - selected_table_msg = constants.CSV_REAL_TABLE_NAME - else: - raise Exception(f'登録テーブルの選択値が不正です: {select_table}') - return (table_name, selected_table_msg) +# def __choose_target_table(self, select_table: str): +# if select_table == 'dummy': +# table_name = 'src05.emp_chg_inst_wrk' +# selected_table_msg = constants.CSV_CHANGE_TABLE_NAME +# elif select_table == 'real': +# table_name = 'src05.emp_chg_inst' +# selected_table_msg = constants.CSV_REAL_TABLE_NAME +# else: +# raise Exception(f'登録テーブルの選択値が不正です: {select_table}') +# return (table_name, selected_table_msg) - def __make_dialog_confirm_message(self, select_function: str, selected_table_msg: str) -> str: - select_function_msg = '新規施設登録' if select_function == 'new' else '施設担当者変更' - return f'{selected_table_msg}に{select_function_msg}を行いますか?' +# def __make_dialog_confirm_message(self, select_function: str, selected_table_msg: str) -> str: +# select_function_msg = '新規施設登録' if select_function == 'new' else '施設担当者変更' +# return f'{selected_table_msg}に{select_function_msg}を行いますか?' - def delete_local_file(self, local_file_path: str): - os.remove(local_file_path) +# def delete_local_file(self, local_file_path: str): +# os.remove(local_file_path) diff --git a/ecs/jskult-webapp/src/static/css/masterMainte.css b/ecs/jskult-webapp/src/static/css/masterMainte.css index dd760425..ae8eb63e 100644 --- a/ecs/jskult-webapp/src/static/css/masterMainte.css +++ b/ecs/jskult-webapp/src/static/css/masterMainte.css @@ -1,3 +1,4 @@ +/* ファイル削除予定 */ /* Bootstrap 5.10以降、box-sizingのデフォルト値によってテーブルがずれるため、このページ限定的にリセット */ /* @see https://bootstrap-guide.com/content/reboot#page-defaults */ table { diff --git a/ecs/jskult-webapp/src/static/function/businessLogicScript.js b/ecs/jskult-webapp/src/static/function/businessLogicScript.js index 1ca36656..15783b66 100644 --- a/ecs/jskult-webapp/src/static/function/businessLogicScript.js +++ b/ecs/jskult-webapp/src/static/function/businessLogicScript.js @@ -289,31 +289,32 @@ function checkNumberOnlyForm($this) $this.value=str; } +// TODO 削除予定 // メニューへボタンの関数 // 機能概要:マスターメンテメニュー画面に遷移する -function backToMainteMenu(loadingElemId = '_loading'){ - sessionStorage.clear(); - // ローディング表示 - showLoading(loadingElemId); - location.href = "/masterMainte/masterMainteMenu"; -} +// function backToMainteMenu(loadingElemId = '_loading'){ +// sessionStorage.clear(); +// // ローディング表示 +// showLoading(loadingElemId); +// location.href = "/masterMainte/masterMainteMenu"; +// } -// 確認ダイアログ -function confirmDialog(strMesssage) { - var result = confirm(strMesssage); - return result; -} +// // 確認ダイアログ +// function confirmDialog(strMesssage) { +// var result = confirm(strMesssage); +// return result; +// } -function formInsertBtDisabled(){ - var validFlg = false; - if(document.getElementById("csvFile").value === ""){ - validFlg = true; - } +// TODO 削除予定 function formInsertBtDisabled(){ +// var validFlg = false; +// if(document.getElementById("csvFile").value === ""){ +// validFlg = true; +// } - if (validFlg == true) { - document.getElementById("confirm").disabled = true; - } - else { - document.getElementById("confirm").disabled = false; - } -} +// if (validFlg == true) { +// document.getElementById("confirm").disabled = true; +// } +// else { +// document.getElementById("confirm").disabled = false; +// } +// } diff --git a/ecs/jskult-webapp/src/system_var/constants.py b/ecs/jskult-webapp/src/system_var/constants.py index c3d5f4ec..8a321898 100644 --- a/ecs/jskult-webapp/src/system_var/constants.py +++ b/ecs/jskult-webapp/src/system_var/constants.py @@ -7,8 +7,9 @@ PERMISSION_DISABLED = 0 # 日付テーブル.バッチ処理ステータス:未処理 BATCH_STATUS_PROCESSING = '1' +# 削除予定 # 日付テーブル.dump取得状態区分:未処理 -DUMP_STATUS_UNPROCESSED = '0' +# DUMP_STATUS_UNPROCESSED = '0' # 生物由来照会 @@ -76,134 +77,136 @@ LOGOUT_REASON_MESSAGE_MAP = { LOGOUT_REASON_UNEXPECTED: '予期しないエラーが発生しました。
再度Loginするか、
管理者に問い合わせてください。', LOGOUT_REASON_LOGIN_FAILED_LIMIT_EXCEEDED: 'ログイン失敗回数の上限を超えましたので
アカウントをロックしました。
管理者に連絡してください' } - +#削除予定 # 新規施設担当者登録CSV(マスターメンテ) -NEW_INST_EMP_CSV_LOGICAL_NAMES = [ - '施設コード', - '施設名', - '領域コード', - '担当者種別コード', - 'MUID', - '担当者名(姓)', - '担当者名(名)', - 'ビジネスユニットコード', - '適用開始日', - '適用終了日' -] +# NEW_INST_EMP_CSV_LOGICAL_NAMES = [ +# '施設コード', +# '施設名', +# '領域コード', +# '担当者種別コード', +# 'MUID', +# '担当者名(姓)', +# '担当者名(名)', +# 'ビジネスユニットコード', +# '適用開始日', +# '適用終了日' +# ] # 施設コードの列No -CSV_NEW_INST_CD_COL_NO = 0 +# CSV_NEW_INST_CD_COL_NO = 0 # 施設名の列No -CSV_NEW_INST_NAME_COL_NO = 1 +# CSV_NEW_INST_NAME_COL_NO = 1 # 領域コードの列No -CSV_NEW_TA_CD_COL_NO = 2 +# CSV_NEW_TA_CD_COL_NO = 2 # 担当者種別コードの列No -CSV_NEW_EMP_CHG_TYPE_CD_COL_NO = 3 +# CSV_NEW_EMP_CHG_TYPE_CD_COL_NO = 3 # MUIDの列No -CSV_NEW_EMP_CD_COL_NO = 4 +# CSV_NEW_EMP_CD_COL_NO = 4 # 担当者名(姓)の列No -CSV_NEW_EMP_NAME_FAMILY_COL_NO = 5 +# CSV_NEW_EMP_NAME_FAMILY_COL_NO = 5 # 担当者名(名)の列No -CSV_NEW_EMP_NAME_FIRST_COL_NO = 6 +# CSV_NEW_EMP_NAME_FIRST_COL_NO = 6 # ビジネスユニットコードの列No -CSV_NEW_BU_CD_COL_NO = 7 +# CSV_NEW_BU_CD_COL_NO = 7 # 適用開始日の列No -CSV_NEW_START_DATE = 8 +# CSV_NEW_START_DATE = 8 # 適用終了日の列No -CSV_NEW_END_DATE = 9 +# CSV_NEW_END_DATE = 9 +#削除予定 # 施設担当者変更登録CSV(マスターメンテ) -CHANGE_INST_CSV_LOGICAL_NAMES = [ - 'ビジネスユニットコード', - 'ビジネスユニット名', - '組織コード', - '組織名略称', - '施設コード', - '施設名', - '領域コード', - '説明', - '担当者種別コード', - 'MUID', - '担当者名', - '施設担当_開始日', - '施設担当_終了日', - '終了日の変更', - 'コメント' -] +# CHANGE_INST_CSV_LOGICAL_NAMES = [ +# 'ビジネスユニットコード', +# 'ビジネスユニット名', +# '組織コード', +# '組織名略称', +# '施設コード', +# '施設名', +# '領域コード', +# '説明', +# '担当者種別コード', +# 'MUID', +# '担当者名', +# '施設担当_開始日', +# '施設担当_終了日', +# '終了日の変更', +# 'コメント' +# ] # ビジネスユニットコードの列No -CSV_CHANGE_BU_CD_COL_NO = 0 -# ビジネスユニット名の列No -CSV_CHANGE_BU_NAME_COL_NO = 1 -# 組織コードの列No -CSV_CHANGE_ORG_CD_COL_NO = 2 -# 組織名略称の列No -CSV_CHANGE_ORG_SHORT_NAME_COL_NO = 3 -# 施設コードの列No -CSV_CHANGE_INST_CD_COL_NO = 4 -# 施設名の列No -CSV_CHANGE_INST_NAME_COL_NO = 5 -# 領域コードの列No -CSV_CHANGE_TA_CD_COL_NO = 6 -# 説明の列No -CSV_CHANGE_EXPLAIN_COL_NO = 7 -# 担当者種別コード -CSV_CHANGE_EMP_CHG_TYPE_CD_COL_NO = 8 -# MUIDの列No -CSV_CHANGE_EMP_CD_COL_NO = 9 -# 担当者名の列No -CSV_CHANGE_EMP_FULL_NAME_COL_NO = 10 -# 施設担当_開始日の列No -CSV_CHANGE_INST_EMP_START_DATE_COL_NO = 11 -# 施設担当_終了日の列No -CSV_CHANGE_INST_EMP_END_DATE_COL_NO = 12 -# 終了日の変更の列No -CSV_CHANGE_CHANGE_END_DATE_COL_NO = 13 -# コメントの列No -CSV_CHANGE_COMMENT = 14 +# CSV_CHANGE_BU_CD_COL_NO = 0 +# # ビジネスユニット名の列No +# CSV_CHANGE_BU_NAME_COL_NO = 1 +# # 組織コードの列No +# CSV_CHANGE_ORG_CD_COL_NO = 2 +# # 組織名略称の列No +# CSV_CHANGE_ORG_SHORT_NAME_COL_NO = 3 +# # 施設コードの列No +# CSV_CHANGE_INST_CD_COL_NO = 4 +# # 施設名の列No +# CSV_CHANGE_INST_NAME_COL_NO = 5 +# # 領域コードの列No +# CSV_CHANGE_TA_CD_COL_NO = 6 +# # 説明の列No +# CSV_CHANGE_EXPLAIN_COL_NO = 7 +# # 担当者種別コード +# CSV_CHANGE_EMP_CHG_TYPE_CD_COL_NO = 8 +# # MUIDの列No +# CSV_CHANGE_EMP_CD_COL_NO = 9 +# # 担当者名の列No +# CSV_CHANGE_EMP_FULL_NAME_COL_NO = 10 +# # 施設担当_開始日の列No +# CSV_CHANGE_INST_EMP_START_DATE_COL_NO = 11 +# # 施設担当_終了日の列No +# CSV_CHANGE_INST_EMP_END_DATE_COL_NO = 12 +# # 終了日の変更の列No +# CSV_CHANGE_CHANGE_END_DATE_COL_NO = 13 +# # コメントの列No +# CSV_CHANGE_COMMENT = 14 +# 削除予定 # CSVアップロードテーブル名(マスターメンテ) -CSV_REAL_TABLE_NAME = '本番テーブル' -CSV_CHANGE_TABLE_NAME = 'ダミーテーブル' +# CSV_REAL_TABLE_NAME = '本番テーブル' +# CSV_CHANGE_TABLE_NAME = 'ダミーテーブル' -MENTE_CSV_TEMPORARY_FILE_DIR_PATH = path.join(path.curdir, 'src', 'data') +# MENTE_CSV_TEMPORARY_FILE_DIR_PATH = path.join(path.curdir, 'src', 'data') -MENTE_CSV_DOWNLOAD_EXTRACT_COLUMNS = [ - 'inst_cd', - 'inst_name', - 'ta_cd', - 'emp_chg_type_cd', - 'emp_cd', - 'emp_name_full', - 'bu_cd', - 'bu_name', - 'start_date', - 'end_date', - 'creater', - 'create_date', - 'updater', - 'update_date' -] +# MENTE_CSV_DOWNLOAD_EXTRACT_COLUMNS = [ +# 'inst_cd', +# 'inst_name', +# 'ta_cd', +# 'emp_chg_type_cd', +# 'emp_cd', +# 'emp_name_full', +# 'bu_cd', +# 'bu_name', +# 'start_date', +# 'end_date', +# 'creater', +# 'create_date', +# 'updater', +# 'update_date' +# ] -MENTE_CSV_DOWNLOAD_HEADER = [ - '施設コード', - '施設名', - '領域コード', - '担当者種別コード', - 'MUID', - '担当者名', - 'ビジネスユニットコード', - 'ビジネスユニット名', - '適用開始日', - '適用終了日', - '作成者', - '作成日', - '更新者', - '更新日' -] +# MENTE_CSV_DOWNLOAD_HEADER = [ +# '施設コード', +# '施設名', +# '領域コード', +# '担当者種別コード', +# 'MUID', +# '担当者名', +# 'ビジネスユニットコード', +# 'ビジネスユニット名', +# '適用開始日', +# '適用終了日', +# '作成者', +# '作成日', +# '更新者', +# '更新日' +# ] -MENTE_CSV_DOWNLOAD_FILE_NAME = 'instEmpData.csv' +# MENTE_CSV_DOWNLOAD_FILE_NAME = 'instEmpData.csv' # CSVアップロードの制限サイズ=20MB -MENTE_CSV_UPLOAD_MAX_FILE_SIZE_BYTE = 20971520 +# MENTE_CSV_UPLOAD_MAX_FILE_SIZE_BYTE = 20971520 # 利用停止区分 DISPLAY_USER_STOP_DIV = { diff --git a/ecs/jskult-webapp/src/system_var/environment.py b/ecs/jskult-webapp/src/system_var/environment.py index a03b02d5..23034fdf 100644 --- a/ecs/jskult-webapp/src/system_var/environment.py +++ b/ecs/jskult-webapp/src/system_var/environment.py @@ -11,7 +11,7 @@ COGNITO_CLIENT_SECRET = os.environ['COGNITO_CLIENT_SECRET'] AWS_REGION = os.environ['AWS_REGION'] SESSION_TABLE_NAME = os.environ['SESSION_TABLE_NAME'] BIO_ACCESS_LOG_BUCKET = os.environ['BIO_ACCESS_LOG_BUCKET'] -MASTER_MAINTENANCE_BUCKET = os.environ['MASTER_MAINTENANCE_BUCKET'] +# 削除予定 MASTER_MAINTENANCE_BUCKET = os.environ['MASTER_MAINTENANCE_BUCKET'] DB_HOST = os.environ['DB_HOST'] DB_PORT = int(os.environ['DB_PORT']) diff --git a/ecs/jskult-webapp/src/templates/instEmpCsvDL.html b/ecs/jskult-webapp/src/templates/instEmpCsvDL.html index b0b50fe8..6dac963e 100644 --- a/ecs/jskult-webapp/src/templates/instEmpCsvDL.html +++ b/ecs/jskult-webapp/src/templates/instEmpCsvDL.html @@ -1,3 +1,4 @@ + diff --git a/ecs/jskult-webapp/src/templates/instEmpCsvUL.html b/ecs/jskult-webapp/src/templates/instEmpCsvUL.html index bf1bf845..6525e6f0 100644 --- a/ecs/jskult-webapp/src/templates/instEmpCsvUL.html +++ b/ecs/jskult-webapp/src/templates/instEmpCsvUL.html @@ -1,3 +1,4 @@ + @@ -210,4 +211,4 @@ {% include '_loading.html' %} {% endwith %} - + \ No newline at end of file diff --git a/ecs/jskult-webapp/src/templates/masterMainteMenu.html b/ecs/jskult-webapp/src/templates/masterMainteMenu.html index fe0f7a93..610e6ad4 100644 --- a/ecs/jskult-webapp/src/templates/masterMainteMenu.html +++ b/ecs/jskult-webapp/src/templates/masterMainteMenu.html @@ -1,3 +1,4 @@ + diff --git a/ecs/jskult-webapp/src/templates/menu.html b/ecs/jskult-webapp/src/templates/menu.html index 8b920198..26c53ca1 100644 --- a/ecs/jskult-webapp/src/templates/menu.html +++ b/ecs/jskult-webapp/src/templates/menu.html @@ -23,7 +23,7 @@
生物由来データ参照は
日次バッチ処理中のため利用出来ません
{% endif %} {% endif %} - {% if menu.is_available_master_maintenance_menu() %} + +

Logout diff --git a/ecs/jskult-webapp/src/templates/tableOverride.html b/ecs/jskult-webapp/src/templates/tableOverride.html index b5fe6a58..2303efc9 100644 --- a/ecs/jskult-webapp/src/templates/tableOverride.html +++ b/ecs/jskult-webapp/src/templates/tableOverride.html @@ -1,3 +1,4 @@ + @@ -62,4 +63,4 @@ {% include '_loading.html' %} {% endwith %} - + \ No newline at end of file