feat: リポジトリ修正など
This commit is contained in:
parent
f5b4628f71
commit
e690661168
@ -90,14 +90,7 @@ def inst_emp_csv_upload_view(
|
||||
raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=constants.LOGOUT_REASON_BACKUP_PROCESSING)
|
||||
|
||||
# 画面表示用のモデル
|
||||
mainte_csv_up = InstEmpCsvUploadViewModel(
|
||||
# is_verified=False,
|
||||
# select_function="",
|
||||
# select_table="",
|
||||
# new_inst_emp="",
|
||||
# dialog_msg="",
|
||||
# error_list=[]
|
||||
)
|
||||
mainte_csv_up = InstEmpCsvUploadViewModel()
|
||||
# セッション書き換え
|
||||
session.update(
|
||||
actions=[
|
||||
|
||||
@ -1,54 +1,46 @@
|
||||
import csv
|
||||
from io import TextIOWrapper
|
||||
from datetime import datetime
|
||||
from abc import ABCMeta, abstractmethod
|
||||
from src.system_var import constants
|
||||
from src.repositories.mente_exist_inst_cd_repository import MenteExistInstCdRepository
|
||||
from src.repositories.mente_exist_bu_cd_repository import MenteExistBuCdRepository
|
||||
from src.repositories.mente_exist_emp_cd_repository import MenteExistEmpCdRepository
|
||||
from src.repositories.mente_exist_dummy_data_repository import MenteExistDummyDataRepository
|
||||
from src.repositories.mente_exist_real_data_repository import MenteExistRealDataRepository
|
||||
from src.repositories.mente_exist_emp_chg_inst_repository import MenteExistEmpChgInstRepository
|
||||
from src.model.request.master_mainte_csvup import MasterMainteCsvUpModel
|
||||
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.logging.get_logger import get_logger
|
||||
|
||||
logger = get_logger('マスターメンテ')
|
||||
|
||||
|
||||
class MasterMainteCSVItem(metaclass=ABCMeta):
|
||||
|
||||
select_table: str
|
||||
csv_row: list[str]
|
||||
table_name: str
|
||||
line_num: str
|
||||
csv_row: list[str] # dictで持つかどうかは要検討
|
||||
inst_cd: str
|
||||
ta_cd: str
|
||||
emp_cd: str
|
||||
inst_cd_repository: MenteExistInstCdRepository
|
||||
emp_cd_repository: MenteExistEmpCdRepository
|
||||
bu_cd_repository: MenteExistBuCdRepository
|
||||
dummy_data_repository: MenteExistDummyDataRepository
|
||||
real_data_repository: MenteExistRealDataRepository
|
||||
emp_chg_inst_repository: MenteExistEmpChgInstRepository
|
||||
mst_inst_repository: MstInstRepository
|
||||
emp_master_repository: EmpMasterRepository
|
||||
bu_master_repository: BuMasterRepository
|
||||
emp_chginst_repository: EmpChgInstRepository
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
csv_row: list[str],
|
||||
select_table: str,
|
||||
table_name: str,
|
||||
line_num: str,
|
||||
inst_cd_repository: MenteExistInstCdRepository,
|
||||
emp_cd_repository: MenteExistEmpCdRepository,
|
||||
bu_cd_repository: MenteExistBuCdRepository,
|
||||
dummy_data_repository: MenteExistDummyDataRepository,
|
||||
real_data_repository: MenteExistRealDataRepository,
|
||||
emp_chg_inst_repository: MenteExistEmpChgInstRepository
|
||||
mst_inst_repository: MstInstRepository,
|
||||
emp_master_repository: EmpMasterRepository,
|
||||
bu_master_repository: BuMasterRepository,
|
||||
emp_chginst_repository: EmpChgInstRepository
|
||||
):
|
||||
self.select_table = select_table # ダミー or 本番
|
||||
self.csv_row = csv_row # CSVの1行
|
||||
self.line_num = line_num # CSVの行数
|
||||
self.inst_cd_repository = inst_cd_repository
|
||||
self.emp_cd_repository = emp_cd_repository
|
||||
self.bu_cd_repository = bu_cd_repository
|
||||
self.dummy_data_repository = dummy_data_repository
|
||||
self.real_data_repository = real_data_repository
|
||||
self.emp_chg_inst_repository = emp_chg_inst_repository
|
||||
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
|
||||
|
||||
def validate(self) -> list[list[str]]:
|
||||
def validate(self) -> list[str]:
|
||||
"""
|
||||
項目のバリデーションを行うテンプレートメソッド\n
|
||||
各チェックロジックはサブクラスで実装する
|
||||
@ -64,7 +56,7 @@ class MasterMainteCSVItem(metaclass=ABCMeta):
|
||||
# BuCd存在チェック
|
||||
error_list.extend(self.check_bu_cd_exists())
|
||||
# 適用開始日 < 適用終了日、実在日チェック
|
||||
# error_list.extend(self.check_existing_date())
|
||||
error_list.extend(self.check_existing_date())
|
||||
# 項目数チェック
|
||||
error_list.extend(self.check_item_count())
|
||||
# データ存在チェック
|
||||
@ -74,28 +66,70 @@ class MasterMainteCSVItem(metaclass=ABCMeta):
|
||||
error_list = [error for error in error_list if len(error) != 0]
|
||||
return error_list
|
||||
|
||||
# protected?
|
||||
def check_csv_item_count(self, item_count: int) -> list[str]:
|
||||
error_list = []
|
||||
|
||||
for col_num, row in enumerate(self.csv_row, start=1):
|
||||
if col_num > item_count and row is not None and len(row) > 0:
|
||||
error_list.append([self.line_num, '', constants.CSV_UP_ITEM_CNT_ERR, 'の項目数が一致しません。項目数を確認してください。'])
|
||||
error_list.append(f'{self.line_num}行目の項目数が一致しません。項目数を確認してください。')
|
||||
break
|
||||
return error_list
|
||||
|
||||
def emp_chg_inst_count(self, start_date: str):
|
||||
table_name = 'src05.emp_chg_inst_wrk' if self.select_table == 'dummy' else 'src05.emp_chg_inst'
|
||||
# pythonは子クラスのメンバも親から呼べる?
|
||||
return self.emp_chg_inst_repository.fetch_count(self.inst_cd, self.ta_cd, start_date, table_name)
|
||||
return self.emp_chginst_repository.fetch_count(self.inst_cd, self.ta_cd, start_date, self.table_name)
|
||||
|
||||
def is_error_emp_cd(self, start_date: str) -> bool:
|
||||
if start_date is None or len(start_date) == 0:
|
||||
return False
|
||||
if self.emp_cd_repository.fetch_count(self.emp_cd, start_date, start_date) == 0:
|
||||
if self.emp_master_repository.fetch_count(self.emp_cd, start_date, 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_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 __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.exception(f'適用期間の日付が不正{e}')
|
||||
return (False, None)
|
||||
|
||||
try:
|
||||
reverse_check_date: str = check_date_time.strftime('%Y%m%d')
|
||||
except Exception as e:
|
||||
logger.exception(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 = []
|
||||
|
||||
if start_date is not None:
|
||||
(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 end_date is not None:
|
||||
(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)
|
||||
|
||||
@abstractmethod
|
||||
def csv_row_data(self) -> dict:
|
||||
pass
|
||||
@ -107,34 +141,27 @@ class MasterMainteCSVItem(metaclass=ABCMeta):
|
||||
pass
|
||||
...
|
||||
|
||||
@abstractmethod
|
||||
def check_inst_cd_exists(self) -> list[str]:
|
||||
error_list = []
|
||||
|
||||
inst_cd_count = self.inst_cd_repository.fetch_count(self.inst_cd)
|
||||
if inst_cd_count == 0:
|
||||
# 親クラスに持った方がいいので即値指定
|
||||
error_list.append([self.line_num, '施設コード', constants.CSV_UP_NOT_EXIST_INST_CD_ERR, ''])
|
||||
return error_list
|
||||
"""InstCD存在チェック"""
|
||||
pass
|
||||
...
|
||||
|
||||
@abstractmethod
|
||||
def check_emp_cd_exists(self) -> list[str]:
|
||||
"""MUID存在チェック"""
|
||||
pass
|
||||
...
|
||||
|
||||
@abstractmethod
|
||||
def check_bu_cd_exists(self) -> list[str]:
|
||||
"""BuCd存在チェック"""
|
||||
error_list = []
|
||||
|
||||
bu_cd_count = self.bu_cd_repository.fetch_count(self.bu_cd)
|
||||
if bu_cd_count == 0:
|
||||
# 親クラスに持った方がいいので即値指定
|
||||
error_list.append([self.line_num, 'ビジネスユニットコード', constants.CSV_UP_NOT_EXIST_BU_CD_ERR, ''])
|
||||
return error_list
|
||||
pass
|
||||
...
|
||||
|
||||
@abstractmethod
|
||||
def check_existing_date(self) -> list[str]:
|
||||
"""適用開始日 < 適用終了日、実在日チェック"""
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def check_item_count(self) -> list[str]:
|
||||
@ -146,6 +173,7 @@ class MasterMainteCSVItem(metaclass=ABCMeta):
|
||||
def check_data_exists(self) -> list[str]:
|
||||
"""データ存在チェック"""
|
||||
pass
|
||||
...
|
||||
|
||||
|
||||
class MasterMainteNewInstEmpCSVItem(MasterMainteCSVItem):
|
||||
@ -156,32 +184,28 @@ class MasterMainteNewInstEmpCSVItem(MasterMainteCSVItem):
|
||||
# emp_cd: str # d
|
||||
emp_name_family: str # e
|
||||
emp_name_first: str # f
|
||||
bu_cd: str # g
|
||||
# bu_cd: str # g
|
||||
start_date: str # h
|
||||
end_date: str # i
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
csv_row: list[str],
|
||||
select_table: str,
|
||||
table_name: str,
|
||||
line_num: str,
|
||||
inst_cd_repository: MenteExistInstCdRepository,
|
||||
emp_cd_repository: MenteExistEmpCdRepository,
|
||||
bu_cd_repository: MenteExistBuCdRepository,
|
||||
dummy_data_repository: MenteExistDummyDataRepository,
|
||||
real_data_repository: MenteExistRealDataRepository,
|
||||
emp_chg_inst_repository: MenteExistEmpChgInstRepository
|
||||
mst_inst_repository: MstInstRepository,
|
||||
emp_master_repository: EmpMasterRepository,
|
||||
bu_master_repository: BuMasterRepository,
|
||||
emp_chginst_repository: EmpChgInstRepository
|
||||
):
|
||||
super().__init__(
|
||||
csv_row,
|
||||
select_table,
|
||||
table_name,
|
||||
line_num,
|
||||
inst_cd_repository,
|
||||
emp_cd_repository,
|
||||
bu_cd_repository,
|
||||
dummy_data_repository,
|
||||
real_data_repository,
|
||||
emp_chg_inst_repository
|
||||
mst_inst_repository,
|
||||
emp_master_repository,
|
||||
bu_master_repository,
|
||||
emp_chginst_repository
|
||||
)
|
||||
self.inst_cd = self.csv_row[constants.CSV_NEW_INST_CD_COL_NO] # a
|
||||
self.inst_name = self.csv_row[constants.CSV_NEW_INST_NAME_COL_NO] # b
|
||||
@ -199,45 +223,66 @@ class MasterMainteNewInstEmpCSVItem(MasterMainteCSVItem):
|
||||
def check_require(self) -> list[str]:
|
||||
error_list = []
|
||||
if len(self.inst_cd) == 0:
|
||||
error_list.append([self.line_num, constants.NEW_INST_EMP_CSV_MAP[constants.CSV_NEW_INST_CD_COL_NO],
|
||||
constants.CSV_UP_NULL_ERR, 'が入力されておりません。']) # エラーコードを入れないと、出力制御が難しい。
|
||||
# メッセージの一部を配列に混ぜるかどうか検討
|
||||
error_list.append(self.make_require_error_message(
|
||||
self.line_num, constants.NEW_INST_EMP_CSV_MAP[constants.CSV_NEW_INST_CD_COL_NO]))
|
||||
if len(self.ta_cd) == 0:
|
||||
error_list.append(
|
||||
[self.line_num, constants.NEW_INST_EMP_CSV_MAP[constants.CSV_NEW_TA_CD_COL_NO],
|
||||
constants.CSV_UP_NULL_ERR, 'が入力されておりません。'])
|
||||
|
||||
error_list.append(self.make_require_error_message(
|
||||
self.line_num, constants.NEW_INST_EMP_CSV_MAP[constants.CSV_NEW_TA_CD_COL_NO]))
|
||||
if len(self.emp_cd) == 0:
|
||||
error_list.append(
|
||||
[self.line_num, constants.NEW_INST_EMP_CSV_MAP[constants.CSV_NEW_EMP_CD_COL_NO],
|
||||
constants.CSV_UP_NULL_ERR, 'が入力されておりません。'])
|
||||
|
||||
error_list.append(self.make_require_error_message(
|
||||
self.line_num, constants.NEW_INST_EMP_CSV_MAP[constants.CSV_NEW_EMP_CD_COL_NO]))
|
||||
if len(self.bu_cd) == 0:
|
||||
error_list.append(
|
||||
[self.line_num, constants.NEW_INST_EMP_CSV_MAP[constants.CSV_NEW_BU_CD_COL_NO],
|
||||
constants.CSV_UP_NULL_ERR, 'が入力されておりません。'])
|
||||
|
||||
error_list.append(self.make_require_error_message(
|
||||
self.line_num, constants.NEW_INST_EMP_CSV_MAP[constants.CSV_NEW_BU_CD_COL_NO]))
|
||||
if len(self.start_date) == 0:
|
||||
error_list.append(
|
||||
[self.line_num, constants.NEW_INST_EMP_CSV_MAP[constants.CSV_NEW_START_DATE],
|
||||
constants.CSV_UP_NULL_ERR, 'が入力されておりません。'])
|
||||
|
||||
error_list.append(self.make_require_error_message(
|
||||
self.line_num, constants.NEW_INST_EMP_CSV_MAP[constants.CSV_NEW_START_DATE]))
|
||||
if len(self.end_date) == 0:
|
||||
error_list.append(
|
||||
[self.line_num, constants.NEW_INST_EMP_CSV_MAP[constants.CSV_NEW_END_DATE],
|
||||
constants.CSV_UP_NULL_ERR, 'が入力されておりません。'])
|
||||
error_list.append(self.make_require_error_message(
|
||||
self.line_num, constants.NEW_INST_EMP_CSV_MAP[constants.CSV_NEW_END_DATE]))
|
||||
|
||||
return error_list
|
||||
|
||||
def check_inst_cd_exists(self) -> list[str]:
|
||||
error_list = []
|
||||
|
||||
if super().is_exist_inst_cd() is False:
|
||||
error_list.append(
|
||||
f'{self.line_num}行目の{constants.NEW_INST_EMP_CSV_MAP[constants.CSV_NEW_INST_CD_COL_NO]}\
|
||||
は施設マスタに存在しないコードです。')
|
||||
return error_list
|
||||
|
||||
def check_emp_cd_exists(self) -> list[str]:
|
||||
error_list = []
|
||||
if self.start_date is None or len(self.start_date) == 0:
|
||||
return error_list
|
||||
|
||||
if super().is_error_emp_cd(self.start_date) is True:
|
||||
error_list.append([self.line_num, constants.NEW_INST_EMP_CSV_MAP[constants.CSV_NEW_EMP_CD_COL_NO],
|
||||
constants.CSV_UP_NOT_EXIST_EMP_CD_ERR, ''])
|
||||
error_list.append(f'{self.line_num}行目の{constants.NEW_INST_EMP_CSV_MAP[constants.CSV_NEW_EMP_CD_COL_NO]}\
|
||||
は従業員マスタに存在しない もしくは 適用期間外のIDです。')
|
||||
return error_list
|
||||
|
||||
def check_bu_cd_exists(self) -> list[str]:
|
||||
error_list = []
|
||||
|
||||
if super().is_exist_bu_cd() is False:
|
||||
error_list.append(f'{self.line_num}行目の{constants.NEW_INST_EMP_CSV_MAP[constants.CSV_NEW_BU_CD_COL_NO]}\
|
||||
はビジネスユニットマスタに存在しないコードです。')
|
||||
return error_list
|
||||
|
||||
def check_existing_date(self) -> list[str]:
|
||||
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_MAP[constants.CSV_NEW_START_DATE],
|
||||
constants.NEW_INST_EMP_CSV_MAP[constants.CSV_NEW_END_DATE])
|
||||
if len(error_list) > 0 or self.start_date is None or self.end_date is None:
|
||||
return error_list
|
||||
|
||||
if start_date_time > end_date_time:
|
||||
error_list.append(f'{self.line_num}行目の{constants.NEW_INST_EMP_CSV_MAP[constants.CSV_NEW_START_DATE]}\
|
||||
が{constants.NEW_INST_EMP_CSV_MAP[constants.CSV_NEW_END_DATE]}よりも後の日付になっています。')
|
||||
return error_list
|
||||
|
||||
def check_item_count(self) -> list[str]:
|
||||
@ -246,17 +291,14 @@ class MasterMainteNewInstEmpCSVItem(MasterMainteCSVItem):
|
||||
def check_data_exists(self) -> list[str]:
|
||||
error_list = []
|
||||
if super().emp_chg_inst_count(self.start_date) > 0:
|
||||
error_list.append([self.line_num, '', constants.CSV_UP_NEW_DATA_DUP_ERR, ''])
|
||||
error_list.append(f'{self.line_num}行目の施設コード、領域コード、適用開始日がすべて同一のデータが既に登録されています。')
|
||||
|
||||
return error_list
|
||||
|
||||
def check_existing_date(self) -> list[str]:
|
||||
return []
|
||||
|
||||
|
||||
class MasterMainteChangeInstEmpCSVItem(MasterMainteCSVItem):
|
||||
"""施設担当者変更登録CSV"""
|
||||
bu_cd: str # a
|
||||
# bu_cd: str # a
|
||||
bu_name: str # b
|
||||
org_cd: str # c
|
||||
org_short_name: str # d
|
||||
@ -274,25 +316,21 @@ class MasterMainteChangeInstEmpCSVItem(MasterMainteCSVItem):
|
||||
def __init__(
|
||||
self,
|
||||
csv_row: list[str],
|
||||
select_table: str,
|
||||
table_name: str,
|
||||
line_num: str,
|
||||
inst_cd_repository: MenteExistInstCdRepository,
|
||||
emp_cd_repository: MenteExistEmpCdRepository,
|
||||
bu_cd_repository: MenteExistBuCdRepository,
|
||||
dummy_data_repository: MenteExistDummyDataRepository,
|
||||
real_data_repository: MenteExistRealDataRepository,
|
||||
emp_chg_inst_repository: MenteExistEmpChgInstRepository
|
||||
mst_inst_repository: MstInstRepository,
|
||||
emp_master_repository: EmpMasterRepository,
|
||||
bu_master_repository: BuMasterRepository,
|
||||
emp_chginst_repository: EmpChgInstRepository
|
||||
):
|
||||
super().__init__(
|
||||
csv_row,
|
||||
select_table,
|
||||
table_name,
|
||||
line_num,
|
||||
inst_cd_repository,
|
||||
emp_cd_repository,
|
||||
bu_cd_repository,
|
||||
dummy_data_repository,
|
||||
real_data_repository,
|
||||
emp_chg_inst_repository
|
||||
mst_inst_repository,
|
||||
emp_master_repository,
|
||||
bu_master_repository,
|
||||
emp_chginst_repository
|
||||
)
|
||||
|
||||
self.bu_cd = self.csv_row[constants.CSV_CHANGE_BU_CD_COL_NO]
|
||||
@ -317,69 +355,59 @@ class MasterMainteChangeInstEmpCSVItem(MasterMainteCSVItem):
|
||||
error_list = []
|
||||
if self.comment == '追加':
|
||||
if len(self.bu_cd) == 0:
|
||||
error_list.append([self.line_num, constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_BU_CD_COL_NO],
|
||||
constants.CSV_UP_NULL_ERR, 'が入力されておりません。'])
|
||||
error_list.append(self.make_require_error_message(
|
||||
self.line_num, constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_BU_CD_COL_NO]))
|
||||
if len(self.inst_cd) == 0:
|
||||
error_list.append([self.line_num, constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_INST_CD_COL_NO],
|
||||
constants.CSV_UP_NULL_ERR, 'が入力されておりません。'])
|
||||
error_list.append(self.make_require_error_message(
|
||||
self.line_num, constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_INST_CD_COL_NO]))
|
||||
if len(self.ta_cd) == 0:
|
||||
error_list.append([self.line_num, constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_TA_CD_COL_NO],
|
||||
constants.CSV_UP_NULL_ERR, 'が入力されておりません。'])
|
||||
error_list.append(self.make_require_error_message(
|
||||
self.line_num, constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_TA_CD_COL_NO]))
|
||||
if len(self.emp_cd) == 0:
|
||||
error_list.append([self.line_num, constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_EMP_CD_COL_NO],
|
||||
constants.CSV_UP_NULL_ERR, 'が入力されておりません。'])
|
||||
error_list.append(self.make_require_error_message(
|
||||
self.line_num, constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_EMP_CD_COL_NO]))
|
||||
if len(self.inst_emp_start_date) == 0:
|
||||
error_list.append([self.line_num, constants.
|
||||
CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_INST_EMP_START_DATE_COL_NO],
|
||||
constants.CSV_UP_NULL_ERR,
|
||||
'が入力されておりません。'])
|
||||
error_list.append(self.make_require_error_message(
|
||||
self.line_num, constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_INST_EMP_START_DATE_COL_NO]))
|
||||
if len(self.inst_emp_end_date) == 0:
|
||||
error_list.append([self.line_num, constants.CHANGE_INST_EMP_MAP[
|
||||
constants.CSV_CHANGE_INST_EMP_END_DATE_COL_NO],
|
||||
constants.CSV_UP_NULL_ERR,
|
||||
'が入力されておりません。'])
|
||||
error_list.append(self.make_require_error_message(
|
||||
self.line_num, constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_INST_EMP_END_DATE_COL_NO]))
|
||||
elif self.comment == '終了':
|
||||
if len(self.inst_cd) == 0:
|
||||
error_list.append([self.line_num, constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_INST_CD_COL_NO],
|
||||
constants.CSV_UP_NULL_ERR,
|
||||
'が入力されておりません。'])
|
||||
error_list.append(self.make_require_error_message(
|
||||
self.line_num, constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_INST_CD_COL_NO]))
|
||||
if len(self.ta_cd) == 0:
|
||||
error_list.append([self.line_num, constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_TA_CD_COL_NO],
|
||||
constants.CSV_UP_NULL_ERR,
|
||||
'が入力されておりません。'])
|
||||
error_list.append(self.make_require_error_message(
|
||||
self.line_num, constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_TA_CD_COL_NO]))
|
||||
if len(self.inst_emp_start_date) == 0:
|
||||
error_list.append([self.line_num, constants.CHANGE_INST_EMP_MAP[
|
||||
constants.CSV_CHANGE_INST_EMP_START_DATE_COL_NO],
|
||||
constants.CSV_UP_NULL_ERR,
|
||||
'が入力されておりません。'])
|
||||
error_list.append(self.make_require_error_message(
|
||||
self.line_num, constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_INST_EMP_START_DATE_COL_NO]))
|
||||
if len(self.change_end_date) == 0:
|
||||
error_list.append([self.line_num, constants.CHANGE_INST_EMP_MAP[
|
||||
constants.CSV_CHANGE_INST_EMP_END_DATE_COL_NO],
|
||||
constants.CSV_UP_NULL_ERR,
|
||||
'が入力されておりません。'])
|
||||
error_list.append(self.make_require_error_message(self.line_num, constants.CHANGE_INST_EMP_MAP[
|
||||
constants.CSV_CHANGE_INST_EMP_END_DATE_COL_NO]))
|
||||
elif self.comment == '担当者修正':
|
||||
if len(self.inst_cd) == 0:
|
||||
error_list.append([self.line_num, constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_INST_CD_COL_NO],
|
||||
constants.CSV_UP_NULL_ERR,
|
||||
'が入力されておりません。'])
|
||||
error_list.append(self.make_require_error_message(
|
||||
self.line_num, constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_INST_CD_COL_NO]))
|
||||
if len(self.ta_cd) == 0:
|
||||
error_list.append([self.line_num, constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_TA_CD_COL_NO],
|
||||
constants.CSV_UP_NULL_ERR,
|
||||
'が入力されておりません。'])
|
||||
error_list.append(self.make_require_error_message(
|
||||
self.line_num, constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_TA_CD_COL_NO]))
|
||||
if len(self.emp_cd) == 0:
|
||||
error_list.append([self.line_num, constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_EMP_CD_COL_NO],
|
||||
constants.CSV_UP_NULL_ERR,
|
||||
'が入力されておりません。'])
|
||||
error_list.append(self.make_require_error_message(
|
||||
self.line_num, constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_EMP_CD_COL_NO]))
|
||||
if len(self.inst_emp_start_date) == 0:
|
||||
error_list.append([self.line_num, constants.
|
||||
CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_INST_EMP_START_DATE_COL_NO],
|
||||
constants.CSV_UP_NULL_ERR,
|
||||
'が入力されておりません。'])
|
||||
error_list.append(self.make_require_error_message(
|
||||
self.line_num, constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_INST_EMP_START_DATE_COL_NO]))
|
||||
else:
|
||||
error_list.append([self.line_num, constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_COMMENT],
|
||||
constants.CSV_UP_COMMENT_ERR,
|
||||
'のコメントが不正です。 「追加」「終了」「担当者修正」のいずれかを入力してください。'])
|
||||
error_list.append(f'{self.line_num}行目のコメントが不正です。 「追加」「終了」「担当者修正」のいずれかを入力してください。')
|
||||
return error_list
|
||||
|
||||
def check_inst_cd_exists(self) -> list[str]:
|
||||
error_list = []
|
||||
|
||||
if super().is_exist_inst_cd() is False:
|
||||
error_list.append(f'{self.line_num}行目の{constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_INST_CD_COL_NO]}\
|
||||
は施設マスタに存在しないコードです。')
|
||||
return error_list
|
||||
|
||||
def check_emp_cd_exists(self) -> list[str]:
|
||||
@ -389,8 +417,45 @@ class MasterMainteChangeInstEmpCSVItem(MasterMainteCSVItem):
|
||||
return error_list
|
||||
|
||||
if super().is_error_emp_cd(self.inst_emp_start_date) is True:
|
||||
error_list.append([self.line_num, constants.NEW_INST_EMP_CSV_MAP[constants.CSV_NEW_EMP_CD_COL_NO],
|
||||
constants.CSV_UP_NOT_EXIST_EMP_CD_ERR, ''])
|
||||
error_list.append(f'{self.line_num}行目の{constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_EMP_CD_COL_NO]}\
|
||||
は従業員マスタに存在しない もしくは 適用期間外のIDです。')
|
||||
return error_list
|
||||
|
||||
def check_bu_cd_exists(self) -> list[str]:
|
||||
"""BuCd存在チェック"""
|
||||
error_list = []
|
||||
|
||||
if super().is_exist_bu_cd() is False:
|
||||
|
||||
error_list.append(f'{self.line_num}行目の{constants.CHANGE_INST_EMP_MAP[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_EMP_MAP[constants.CSV_CHANGE_INST_EMP_END_DATE_COL_NO]
|
||||
compare_error_message = f'\
|
||||
{constants.CHANGE_INST_EMP_MAP[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_EMP_MAP[constants.CSV_CHANGE_CHANGE_END_DATE_COL_NO]
|
||||
compare_error_message = f'\
|
||||
{constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_INST_EMP_START_DATE_COL_NO]}が{end_date_col_name}よりも後の日付になっています。'
|
||||
|
||||
(error_list, start_date_time, end_date_time) = super().check_term_date(
|
||||
start_date,
|
||||
end_date,
|
||||
constants.CHANGE_INST_EMP_MAP[constants.CSV_CHANGE_INST_EMP_START_DATE_COL_NO],
|
||||
end_date_col_name)
|
||||
if len(error_list) > 0 or self.start_date is None or self.end_date is None:
|
||||
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]:
|
||||
@ -400,15 +465,13 @@ class MasterMainteChangeInstEmpCSVItem(MasterMainteCSVItem):
|
||||
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([self.line_num, '', constants.CSV_UP_ADD_DATA_DUP_ERR, ''])
|
||||
error_list.append(f'{self.line_num}行目の施設コード、領域コード、施設担当_開始日がすべて同一のデータが既に登録されています。')
|
||||
|
||||
elif (self.comment == '終了' or self.comment == '担当者修正') and emp_chg_inst_count == 0:
|
||||
error_list.append([self.line_num, '', constants.CSV_UP_UPDATE_DATA_DUP_ERR, ''])
|
||||
error_list.append(f'{self.line_num}行目の施設コード、領域コード、施設担当_開始日がすべて同一のデータが存在しないため更新できません。')
|
||||
|
||||
return error_list
|
||||
|
||||
def check_existing_date(self) -> list[str]:
|
||||
return []
|
||||
|
||||
|
||||
class MasterMainteCSVItems:
|
||||
"""施設担当者CSVをループで回すためのもの"""
|
||||
@ -432,46 +495,39 @@ class MasterMainteCSVItems:
|
||||
def __init__(
|
||||
self,
|
||||
file: TextIOWrapper,
|
||||
csv_upload_form: MasterMainteCsvUpModel,
|
||||
inst_cd_repository: MenteExistInstCdRepository,
|
||||
emp_cd_repository: MenteExistEmpCdRepository,
|
||||
bu_cd_repository: MenteExistBuCdRepository,
|
||||
dummy_data_repository: MenteExistDummyDataRepository,
|
||||
real_data_repository: MenteExistRealDataRepository,
|
||||
emp_chg_inst_repository: MenteExistEmpChgInstRepository
|
||||
select_function: str,
|
||||
table_name: str,
|
||||
mst_inst_repository: MstInstRepository,
|
||||
emp_master_repository: EmpMasterRepository,
|
||||
bu_master_repository: BuMasterRepository,
|
||||
emp_chginst_repository: EmpChgInstRepository
|
||||
) -> None:
|
||||
# self.header = file.readline().strip('\n').replace('"', '').split(',')
|
||||
# reader = csv.DictReader(file, fieldnames=self.header)
|
||||
reader = csv.reader(file)
|
||||
csv_rows = []
|
||||
if csv_upload_form.select_function == 'new':
|
||||
if select_function == 'new':
|
||||
for line_num, row in enumerate(reader, start=0):
|
||||
if line_num == 0:
|
||||
continue
|
||||
csv_rows.append(MasterMainteNewInstEmpCSVItem(
|
||||
row,
|
||||
csv_upload_form.select_table,
|
||||
table_name,
|
||||
str(line_num),
|
||||
inst_cd_repository,
|
||||
emp_cd_repository,
|
||||
bu_cd_repository,
|
||||
dummy_data_repository,
|
||||
real_data_repository,
|
||||
emp_chg_inst_repository)
|
||||
mst_inst_repository,
|
||||
emp_master_repository,
|
||||
bu_master_repository,
|
||||
emp_chginst_repository)
|
||||
)
|
||||
elif csv_upload_form.select_function == 'change':
|
||||
elif select_function == 'change':
|
||||
for line_num, row in enumerate(reader, start=0):
|
||||
if line_num == 0:
|
||||
continue
|
||||
csv_rows.append(MasterMainteChangeInstEmpCSVItem(
|
||||
row,
|
||||
csv_upload_form.select_table,
|
||||
table_name,
|
||||
str(line_num),
|
||||
inst_cd_repository,
|
||||
emp_cd_repository,
|
||||
bu_cd_repository,
|
||||
dummy_data_repository,
|
||||
real_data_repository,
|
||||
emp_chg_inst_repository)
|
||||
mst_inst_repository,
|
||||
emp_master_repository,
|
||||
bu_master_repository,
|
||||
emp_chginst_repository)
|
||||
)
|
||||
self.lines = csv_rows
|
||||
|
||||
166
ecs/jskult-webapp/src/model/internal/master_mainte_emp_chg.py
Normal file
166
ecs/jskult-webapp/src/model/internal/master_mainte_emp_chg.py
Normal file
@ -0,0 +1,166 @@
|
||||
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('マスターメンテ')
|
||||
|
||||
|
||||
class MasterMainteEmpChg(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 save(self):
|
||||
error_list = []
|
||||
try:
|
||||
self.emp_chginst_repository.connect()
|
||||
self.emp_chginst_repository.begin()
|
||||
(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
|
||||
finally:
|
||||
self.emp_chginst_repository.disconnect()
|
||||
|
||||
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['MUID'],
|
||||
data['ビジネスユニットコード'],
|
||||
start_date,
|
||||
end_date,
|
||||
self.user_name,
|
||||
self.user_name,
|
||||
self.table_name)
|
||||
|
||||
@abstractmethod
|
||||
def write_emp_chg_inst_table(self):
|
||||
pass
|
||||
|
||||
|
||||
class MasterMainteNewEmpChg(MasterMainteEmpChg):
|
||||
|
||||
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 = []
|
||||
|
||||
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実行エラーです。Excelファイルを確認してください。')
|
||||
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)
|
||||
|
||||
|
||||
class MasterMainteChangeEmpChg(MasterMainteEmpChg):
|
||||
|
||||
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
|
||||
)
|
||||
|
||||
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実行エラーです。Excelファイルを確認してください。')
|
||||
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)
|
||||
|
||||
def __end_emp_chg_inst(self, data: dict):
|
||||
self.emp_chginst_repository.end_emp_chg_inst(
|
||||
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['MUID'],
|
||||
self.user_name,
|
||||
self.table_name)
|
||||
@ -1,161 +0,0 @@
|
||||
from abc import ABCMeta, abstractmethod
|
||||
from src.repositories.mente_write_emp_chg_inst_repository import MenteWriteEmpChgInstRepository
|
||||
|
||||
from src.system_var import constants
|
||||
|
||||
|
||||
class MasterMainteInsertEmpChg(metaclass=ABCMeta):
|
||||
insert_data: list[dict]
|
||||
table_name: str
|
||||
select_table_message: str
|
||||
user_name: str
|
||||
emp_chg_inst_repository: MenteWriteEmpChgInstRepository
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
insert_data,
|
||||
table_name: str,
|
||||
select_table_message: str,
|
||||
user_name: str,
|
||||
emp_chg_inst_repository: MenteWriteEmpChgInstRepository
|
||||
):
|
||||
self.insert_data = insert_data
|
||||
self.table_name = table_name # ダミー or 本番
|
||||
self.select_table_message = select_table_message
|
||||
self.user_name = user_name
|
||||
self.emp_chg_inst_repository = emp_chg_inst_repository
|
||||
|
||||
def insert_emp_chg_inst(self):
|
||||
error_list = []
|
||||
try:
|
||||
self.emp_chg_inst_repository.connect()
|
||||
self.emp_chg_inst_repository.begin()
|
||||
(result_message, error_list) = self.write_emp_chg_inst_table()
|
||||
if len(error_list) > 0:
|
||||
self.emp_chg_inst_repository.rollback()
|
||||
else:
|
||||
self.emp_chg_inst_repository.commit()
|
||||
except Exception:
|
||||
self.emp_chg_inst_repository.rollback() # 一つでもエラーが発生したら終了するようにする場合はここで
|
||||
|
||||
finally:
|
||||
self.emp_chg_inst_repository.disconnect()
|
||||
|
||||
return (result_message, error_list)
|
||||
|
||||
def insert_emp_chg_inst_table(self, data, start_date, end_date):
|
||||
self.emp_chg_inst_repository.insert_emp_chg_inst(
|
||||
data['施設コード'],
|
||||
data['領域コード'],
|
||||
data['MUID'],
|
||||
data['ビジネスユニットコード'],
|
||||
start_date,
|
||||
end_date,
|
||||
self.user_name,
|
||||
self.user_name,
|
||||
self.table_name)
|
||||
|
||||
@abstractmethod
|
||||
def write_emp_chg_inst_table(self):
|
||||
pass
|
||||
|
||||
|
||||
class MasterMainteNewInsertEmpChg(MasterMainteInsertEmpChg):
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
insert_data_list: list[dict],
|
||||
table_name: str,
|
||||
select_table_message: str,
|
||||
user_name: str,
|
||||
emp_chg_inst_repository: MenteWriteEmpChgInstRepository
|
||||
):
|
||||
super().__init__(
|
||||
insert_data_list,
|
||||
table_name,
|
||||
select_table_message,
|
||||
user_name,
|
||||
emp_chg_inst_repository
|
||||
)
|
||||
|
||||
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.insert_emp_chg_inst_table(data, data['適用開始日'], data['適用終了日'])
|
||||
add_count += 1
|
||||
except Exception:
|
||||
error_list.append([str(row_no), '', constants.CSV_UP_SQL_ERR, '']) # ここをどうする?
|
||||
|
||||
result_message_list = []
|
||||
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 MasterMainteChangeInsertEmpChg(MasterMainteInsertEmpChg):
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
insert_data: list[dict],
|
||||
table_name: str,
|
||||
select_table_message: str,
|
||||
user_name: str,
|
||||
emp_chg_inst_repository: MenteWriteEmpChgInstRepository
|
||||
|
||||
):
|
||||
super().__init__(
|
||||
insert_data,
|
||||
table_name,
|
||||
select_table_message,
|
||||
user_name,
|
||||
emp_chg_inst_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.insert_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_end_emp_chg_inst(data)
|
||||
modify_count += 1
|
||||
except Exception:
|
||||
error_list.append([str(row_no), '', constants.CSV_UP_SQL_ERR, '']) # ここをどうする?
|
||||
|
||||
result_message_list = []
|
||||
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_chg_inst_repository.end_emp_chg_inst(
|
||||
data['施設コード'],
|
||||
data['領域コード'],
|
||||
data['施設担当_開始日'],
|
||||
data['終了日の変更'],
|
||||
self.user_name,
|
||||
self.table_name)
|
||||
|
||||
def __modify_end_emp_chg_inst(self, data: dict):
|
||||
self.emp_chg_inst_repository.modify_end_emp_chg_inst(
|
||||
data['施設コード'],
|
||||
data['領域コード'],
|
||||
data['施設担当_開始日'],
|
||||
data['MUID'],
|
||||
self.user_name,
|
||||
self.table_name)
|
||||
@ -10,7 +10,7 @@ class InstEmpCsvUploadViewModel(BaseModel):
|
||||
subtitle: str = '施設担当者データCSVアップロード'
|
||||
is_verified: Optional[bool]
|
||||
is_insert: Optional[bool]
|
||||
error_list: Optional[list[CsvErrorModel]]
|
||||
error_message_list: Optional[list[CsvErrorModel]]
|
||||
select_function: Optional[str]
|
||||
select_table: Optional[str]
|
||||
csv_file_name: Optional[str]
|
||||
@ -34,8 +34,8 @@ class InstEmpCsvUploadViewModel(BaseModel):
|
||||
def is_select_table_empty(self):
|
||||
return self.select_table is None or len(self.select_table) == 0
|
||||
|
||||
def is_error_list_empty(self):
|
||||
return self.error_list is None or len(self.error_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)
|
||||
|
||||
@ -1,30 +1,9 @@
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional
|
||||
from src.system_var import constants
|
||||
|
||||
|
||||
class CsvErrorModel(BaseModel):
|
||||
row_no: Optional[str]
|
||||
item_name: Optional[str]
|
||||
message: Optional[str]
|
||||
error_code: Optional[str]
|
||||
error_message: Optional[str]
|
||||
|
||||
def __init__(self, row_no: str, item_name: str, error_code: str, message: str) -> None:
|
||||
super().__init__(row_no=row_no, item_name=item_name,
|
||||
error_code=error_code, message=message)
|
||||
|
||||
# 確認のため途中まで実装 エラーコードが無いと、メッセージの編集が適切にできない場合あり
|
||||
|
||||
def error_message(self):
|
||||
error_message: str = ''
|
||||
if self.error_code == constants.CSV_UP_NULL_ERR:
|
||||
error_message = self.row_no + '行目の' + self.item_name + 'が入力されておりません。'
|
||||
elif self.error_code == constants.CSV_UP_NOT_EXIST_INST_CD_ERR:
|
||||
error_message = self.row_no + '行目の施設コードは施設マスタに存在しないコードです。'
|
||||
elif self.error_code == constants.CSV_UP_NOT_EXIST_EMP_CD_ERR:
|
||||
error_message = self.row_no + '行目のMUIDは従業員マスタに存在しない もしくは 適用期間外のIDです。'
|
||||
elif self.error_code == constants.CSV_UP_NOT_EXIST_BU_CD_ERR:
|
||||
error_message = self.row_no + '行目のビジネスユニットコードはビジネスユニットマスタに存在しないコードです。'
|
||||
elif self.error_code == constants.CSV_UP_SQL_ERR:
|
||||
error_message = self.row_no + '行目がSQL実行エラーです。Excelファイルを確認してください。'
|
||||
return error_message
|
||||
def __init__(self, error_message: str) -> None:
|
||||
super().__init__(error_message=error_message)
|
||||
|
||||
@ -2,7 +2,7 @@ from src.repositories.base_repository import BaseRepository
|
||||
from src.model.db.master_mente_count import MasterMenteCountModel
|
||||
|
||||
|
||||
class MenteExistBuCdRepository(BaseRepository):
|
||||
class BuMasterRepository(BaseRepository):
|
||||
|
||||
FETCH_COUNT_SQL = """\
|
||||
SELECT
|
||||
@ -1,7 +1,8 @@
|
||||
from src.repositories.base_repository import BaseRepository
|
||||
from src.model.db.master_mente_count import MasterMenteCountModel
|
||||
|
||||
|
||||
class MenteWriteEmpChgInstRepository(BaseRepository):
|
||||
class EmpChgInstRepository(BaseRepository):
|
||||
|
||||
def connect(self):
|
||||
self._database.connect()
|
||||
@ -109,7 +110,7 @@ class MenteWriteEmpChgInstRepository(BaseRepository):
|
||||
and start_date = :start_date
|
||||
"""
|
||||
|
||||
def modify_end_emp_chg_inst(self, inst_cd, ta_cd, start_date, emp_cd, update_user_name, table_name):
|
||||
def modify_emp_chg_inst(self, inst_cd, ta_cd, start_date, emp_cd, update_user_name, table_name):
|
||||
try:
|
||||
query = self.UPDATE_SQL.format(table_name=table_name)
|
||||
self._database.execute(query, {
|
||||
@ -122,3 +123,30 @@ class MenteWriteEmpChgInstRepository(BaseRepository):
|
||||
except Exception as e:
|
||||
print(f"[ERROR] 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 start_date = :start_date
|
||||
"""
|
||||
|
||||
def fetch_count(self, inst_cd, ta_cd, start_date, table_name) -> MasterMenteCountModel:
|
||||
try:
|
||||
self._database.connect()
|
||||
query = self.FETCH_COUNT_SQL.format(table_name=table_name)
|
||||
result = self._database.execute_select(query, {'inst_cd': inst_cd, 'ta_cd': ta_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:
|
||||
print(f"[ERROR] DB Error : Exception={e.args}")
|
||||
raise e
|
||||
finally:
|
||||
self._database.disconnect()
|
||||
@ -2,7 +2,7 @@ from src.repositories.base_repository import BaseRepository
|
||||
from src.model.db.master_mente_count import MasterMenteCountModel
|
||||
|
||||
|
||||
class MenteExistEmpCdRepository(BaseRepository):
|
||||
class EmpMasterRepository(BaseRepository):
|
||||
|
||||
FETCH_COUNT_SQL = """\
|
||||
SELECT
|
||||
@ -1,34 +0,0 @@
|
||||
from src.repositories.base_repository import BaseRepository
|
||||
from src.model.db.master_mente_count import MasterMenteCountModel
|
||||
|
||||
|
||||
class MenteExistDummyDataRepository(BaseRepository):
|
||||
|
||||
FETCH_COUNT_SQL = """\
|
||||
SELECT
|
||||
COUNT(*) AS count
|
||||
FROM
|
||||
src05.emp_chg_inst_wrk
|
||||
WHERE
|
||||
inst_cd = :instCd
|
||||
AND ta_cd = :taCd
|
||||
AND start_date = :startDate
|
||||
"""
|
||||
|
||||
def fetch_count(self, inst_cd, ta_cd, start_date) -> MasterMenteCountModel:
|
||||
try:
|
||||
self._database.connect()
|
||||
query = self.FETCH_COUNT_SQL
|
||||
result = self._database.execute_select(query,
|
||||
{'instCd': inst_cd,
|
||||
'taCd': ta_cd,
|
||||
'startDate': start_date})
|
||||
models = [MasterMenteCountModel(**r) for r in result]
|
||||
if len(models) == 0:
|
||||
return 0
|
||||
return models[0].count
|
||||
except Exception as e:
|
||||
print(f"[ERROR] DB Error : Exception={e.args}")
|
||||
raise e
|
||||
finally:
|
||||
self._database.disconnect()
|
||||
@ -1,32 +0,0 @@
|
||||
from src.repositories.base_repository import BaseRepository
|
||||
from src.model.db.master_mente_count import MasterMenteCountModel
|
||||
|
||||
|
||||
class MenteExistEmpChgInstRepository(BaseRepository):
|
||||
|
||||
FETCH_COUNT_SQL = """\
|
||||
SELECT
|
||||
COUNT(*) AS count
|
||||
FROM
|
||||
{table_name}
|
||||
WHERE
|
||||
inst_cd = :inst_cd
|
||||
AND ta_cd = :ta_cd
|
||||
AND start_date = :start_date
|
||||
"""
|
||||
|
||||
def fetch_count(self, inst_cd, ta_cd, start_date, table_name) -> MasterMenteCountModel:
|
||||
try:
|
||||
self._database.connect()
|
||||
query = self.FETCH_COUNT_SQL.format(table_name=table_name)
|
||||
result = self._database.execute_select(query, {'inst_cd': inst_cd, 'ta_cd': ta_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:
|
||||
print(f"[ERROR] DB Error : Exception={e.args}")
|
||||
raise e
|
||||
finally:
|
||||
self._database.disconnect()
|
||||
@ -1,34 +0,0 @@
|
||||
from src.repositories.base_repository import BaseRepository
|
||||
from src.model.db.master_mente_count import MasterMenteCountModel
|
||||
|
||||
|
||||
class MenteExistRealDataRepository(BaseRepository):
|
||||
|
||||
FETCH_COUNT_SQL = """\
|
||||
SELECT
|
||||
COUNT(*) AS count
|
||||
FROM
|
||||
src05.emp_chg_inst
|
||||
WHERE
|
||||
inst_cd = :instCd
|
||||
AND ta_cd = :taCd
|
||||
AND start_date = :startDate
|
||||
"""
|
||||
|
||||
def fetch_count(self, inst_cd, ta_cd, start_date) -> MasterMenteCountModel:
|
||||
try:
|
||||
self._database.connect()
|
||||
query = self.FETCH_COUNT_SQL
|
||||
result = self._database.execute_select(query,
|
||||
{'instCd': inst_cd,
|
||||
'taCd': ta_cd,
|
||||
'startDate': start_date})
|
||||
models = [MasterMenteCountModel(**r) for r in result]
|
||||
if len(models) == 0:
|
||||
return 0
|
||||
return models[0].count
|
||||
except Exception as e:
|
||||
print(f"[ERROR] DB Error : Exception={e.args}")
|
||||
raise e
|
||||
finally:
|
||||
self._database.disconnect()
|
||||
@ -2,7 +2,7 @@ from src.repositories.base_repository import BaseRepository
|
||||
from src.model.db.master_mente_count import MasterMenteCountModel
|
||||
|
||||
|
||||
class MenteExistInstCdRepository(BaseRepository):
|
||||
class MstInstRepository(BaseRepository):
|
||||
|
||||
FETCH_COUNT_SQL = """\
|
||||
SELECT
|
||||
@ -5,77 +5,71 @@ from src.aws.aws_api_client import AWSAPIClient
|
||||
from src.repositories.base_repository import BaseRepository
|
||||
from src.services.base_service import BaseService
|
||||
from src.model.internal.master_mainte_csv import MasterMainteCSVItems
|
||||
from src.model.internal.master_mainte_insert_emp_chg import MasterMainteChangeInsertEmpChg
|
||||
from src.model.internal.master_mainte_insert_emp_chg import MasterMainteNewInsertEmpChg
|
||||
from src.model.internal.master_mainte_emp_chg import MasterMainteNewEmpChg
|
||||
from src.model.internal.master_mainte_emp_chg import MasterMainteChangeEmpChg
|
||||
from src.model.view.inst_emp_csv_upload_view_model import InstEmpCsvUploadViewModel
|
||||
from src.model.request.master_mainte_csvup import MasterMainteCsvUpModel
|
||||
from src.logging.get_logger import get_logger
|
||||
from src.model.view.mainte_csv_upload_model import CsvUploadModel
|
||||
from src.model.view.mainte_csv_error_model import CsvErrorModel
|
||||
from src.repositories.mente_exist_inst_cd_repository import MenteExistInstCdRepository
|
||||
from src.repositories.mente_exist_bu_cd_repository import MenteExistBuCdRepository
|
||||
from src.repositories.mente_exist_emp_cd_repository import MenteExistEmpCdRepository
|
||||
from src.repositories.mente_exist_dummy_data_repository import MenteExistDummyDataRepository
|
||||
from src.repositories.mente_exist_real_data_repository import MenteExistRealDataRepository
|
||||
from src.repositories.mente_exist_emp_chg_inst_repository import MenteExistEmpChgInstRepository
|
||||
from src.repositories.mente_write_emp_chg_inst_repository import MenteWriteEmpChgInstRepository
|
||||
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
|
||||
|
||||
logger = get_logger('マスターメンテ')
|
||||
|
||||
|
||||
class MasterMainteService(BaseService):
|
||||
REPOSITORIES = {
|
||||
'inst_cd_repository': MenteExistInstCdRepository,
|
||||
'emp_cd_repository': MenteExistEmpCdRepository,
|
||||
'bu_cd_repository': MenteExistBuCdRepository,
|
||||
'dummy_data_repository': MenteExistDummyDataRepository,
|
||||
'real_data_repository': MenteExistRealDataRepository,
|
||||
'emp_chg_inst_repository': MenteExistEmpChgInstRepository,
|
||||
'write_emp_chg_inst_repository': MenteWriteEmpChgInstRepository
|
||||
'mst_inst_repository': MstInstRepository,
|
||||
'emp_master_repository': EmpMasterRepository,
|
||||
'bu_master_repository': BuMasterRepository,
|
||||
'emp_chginst_repository': EmpChgInstRepository,
|
||||
}
|
||||
|
||||
inst_cd_repository: MenteExistInstCdRepository
|
||||
emp_cd_repository: MenteExistEmpCdRepository
|
||||
bu_cd_repository: MenteExistBuCdRepository
|
||||
dummy_data_repository: MenteExistDummyDataRepository
|
||||
real_data_repository: MenteExistRealDataRepository
|
||||
emp_chg_inst_repository: MenteExistEmpChgInstRepository
|
||||
write_emp_chg_inst_repository: MenteWriteEmpChgInstRepository
|
||||
mst_inst_repository: MstInstRepository
|
||||
emp_master_repository: EmpMasterRepository
|
||||
bu_master_repository: BuMasterRepository
|
||||
emp_chginst_repository: EmpChgInstRepository
|
||||
|
||||
def __init__(self, repositories: dict[str, BaseRepository], clients: dict[str, AWSAPIClient]) -> None:
|
||||
super().__init__(repositories, clients)
|
||||
self.inst_cd_repository = repositories['inst_cd_repository']
|
||||
self.emp_cd_repository = repositories['emp_cd_repository']
|
||||
self.bu_cd_repository = repositories['bu_cd_repository']
|
||||
self.dummy_data_repository = repositories['dummy_data_repository']
|
||||
self.real_data_repository = repositories['real_data_repository']
|
||||
self.emp_chg_inst_repository = repositories['emp_chg_inst_repository']
|
||||
self.write_emp_chg_inst_repository = repositories['write_emp_chg_inst_repository']
|
||||
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']
|
||||
|
||||
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}')
|
||||
|
||||
(table_name, _) = self.__target_table(csv_upload_form.select_table)
|
||||
|
||||
csv_items = MasterMainteCSVItems(
|
||||
file,
|
||||
csv_upload_form,
|
||||
self.inst_cd_repository,
|
||||
self.emp_cd_repository,
|
||||
self.bu_cd_repository,
|
||||
self.dummy_data_repository,
|
||||
self.real_data_repository,
|
||||
self.emp_chg_inst_repository
|
||||
csv_upload_form.select_function,
|
||||
table_name,
|
||||
self.mst_inst_repository,
|
||||
self.emp_master_repository,
|
||||
self.bu_master_repository,
|
||||
self.emp_chginst_repository
|
||||
)
|
||||
|
||||
error_list = []
|
||||
error_message_list = []
|
||||
for row_item in csv_items:
|
||||
error_list.extend([CsvErrorModel(data[0], data[1], data[2], data[3]) for data in row_item.validate()]) # 微妙
|
||||
error_message_list.extend([CsvErrorModel(data) for data in row_item.validate()])
|
||||
|
||||
csv_items.reset()
|
||||
csv_upload_list = []
|
||||
json_upload_data = ''
|
||||
if len(error_list) == 0:
|
||||
if len(error_message_list) == 0:
|
||||
csv_upload_list: list[CsvUploadModel] = [CsvUploadModel(
|
||||
csv_row=row_item.csv_row_data()) for row_item in csv_items]
|
||||
|
||||
@ -84,7 +78,7 @@ class MasterMainteService(BaseService):
|
||||
|
||||
mainte_csv_up = InstEmpCsvUploadViewModel(
|
||||
is_verified=True,
|
||||
error_list=error_list,
|
||||
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,
|
||||
@ -97,46 +91,46 @@ class MasterMainteService(BaseService):
|
||||
user_name: str,
|
||||
csv_upload_form: MasterMainteCsvUpModel) -> InstEmpCsvUploadViewModel:
|
||||
|
||||
if csv_upload_form.select_table == 'dummy':
|
||||
table_name = 'src05.emp_chg_inst_wrk'
|
||||
selected_table_msg = 'ダミーテーブル'
|
||||
elif csv_upload_form.select_table == 'real':
|
||||
table_name = 'src05.emp_chg_inst'
|
||||
selected_table_msg = '本番テーブル'
|
||||
# else:
|
||||
# 例外?
|
||||
(table_name, selected_table_msg) = self.__target_table(csv_upload_form.select_table)
|
||||
|
||||
csv_data_list = json.loads(html.unescape(csv_upload_form.unescape().json_upload_data))
|
||||
|
||||
if csv_upload_form.select_function == 'new':
|
||||
insert_emp_chg = MasterMainteNewInsertEmpChg(
|
||||
emp_chg_inst = MasterMainteNewEmpChg(
|
||||
csv_data_list,
|
||||
table_name,
|
||||
selected_table_msg,
|
||||
user_name,
|
||||
self.write_emp_chg_inst_repository)
|
||||
self.emp_chginst_repository)
|
||||
elif csv_upload_form.select_function == 'change':
|
||||
insert_emp_chg = MasterMainteChangeInsertEmpChg(
|
||||
emp_chg_inst = MasterMainteChangeEmpChg(
|
||||
csv_data_list,
|
||||
table_name,
|
||||
selected_table_msg,
|
||||
user_name,
|
||||
self.write_emp_chg_inst_repository
|
||||
)
|
||||
# else:
|
||||
# 例外を発生させる?
|
||||
self.emp_chginst_repository)
|
||||
else:
|
||||
raise Exception(f'機能の選択値が不正です: {csv_upload_form.select_function}')
|
||||
|
||||
(result_message_list, raw_error_list) = insert_emp_chg.insert_emp_chg_inst()
|
||||
(result_message_list, raw_error_list) = emp_chg_inst.save()
|
||||
|
||||
error_list = []
|
||||
error_list.extend([CsvErrorModel(data[0], data[1], data[2], data[3]) for data in raw_error_list])
|
||||
|
||||
if result_message_list is None:
|
||||
result_message_list.append('DB接続エラー')
|
||||
error_message_list = []
|
||||
error_message_list.extend([CsvErrorModel(data) for data in raw_error_list])
|
||||
|
||||
mainte_csv_up = InstEmpCsvUploadViewModel(
|
||||
is_insert=True,
|
||||
result_message_list=result_message_list,
|
||||
error_list=error_list
|
||||
error_message_list=error_message_list
|
||||
)
|
||||
return mainte_csv_up
|
||||
|
||||
def __target_table(self, select_table: str):
|
||||
if select_table == 'dummy':
|
||||
table_name = 'src05.emp_chg_inst_wrk'
|
||||
selected_table_msg = 'ダミーテーブル'
|
||||
elif select_table == 'real':
|
||||
table_name = 'src05.emp_chg_inst'
|
||||
selected_table_msg = '本番テーブル'
|
||||
else:
|
||||
raise Exception(f'登録テーブルの選択値が不正です: {select_table}')
|
||||
return (table_name, selected_table_msg)
|
||||
|
||||
@ -23,7 +23,7 @@ h1{
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
.buttonSize{
|
||||
.csvup_buttonSize{
|
||||
width: 85px;
|
||||
}
|
||||
|
||||
|
||||
@ -214,30 +214,6 @@ CSV_CHANGE_CHANGE_END_DATE_COL_NO = 12
|
||||
# コメントの列No
|
||||
CSV_CHANGE_COMMENT = 13
|
||||
|
||||
|
||||
# エラーコード
|
||||
CSV_UP_NULL_ERR = 'nullError'
|
||||
CSV_UP_COMMENT_ERR = 'commentError'
|
||||
CSV_UP_NOT_EXIST_INST_CD_ERR = 'instCdErr'
|
||||
CSV_UP_NOT_EXIST_EMP_CD_ERR = 'empCdErr'
|
||||
CSV_UP_NOT_EXIST_BU_CD_ERR = 'buCdErr'
|
||||
CSV_UP_ITEM_CNT_ERR = 'itemCntErr'
|
||||
CSV_UP_FILE_TYPE_ERR = 'fileTypeErr'
|
||||
CSV_UP_FILEN_EXIST_ERR = 'filenExistErr'
|
||||
CSV_UP_SQL_ERR = 'sqlErr'
|
||||
CSV_UP_NEW_COMPARE_DATE_ERR = 'newCompareDateErr'
|
||||
CSV_UP_ADD_COMPARE_DATE_ERR = 'addCompareDateErr'
|
||||
CSV_UP_END_COMPARE_DATE_ERR = 'endCompareDateErr'
|
||||
CSV_UP_START_DATE_REAL_ERR = 'startDateRealErr'
|
||||
CSV_UP_END_DATE_REAL_ERR = 'endDateRealErr'
|
||||
CSV_UP_INST_EMPSTART_DATE_REAL_ERR = 'instEmpStartDateRealErr'
|
||||
CSV_UP_INST_EMP_END_DATE_REAL_ERR = 'instEmpEndDateRealErr'
|
||||
CSV_UP_CHANGE_END_DATE_REAL_ERR = 'changeEndDateRealErr'
|
||||
CSV_UP_NEW_DATA_DUP_ERR = 'newDataDupErr'
|
||||
CSV_UP_ADD_DATA_DUP_ERR = 'addDataDupErr'
|
||||
CSV_UP_UPDATE_DATA_DUP_ERR = 'updateDataDupErr'
|
||||
CSV_UP_INPUT_DATA_ZERO_ERR = 'inputDataZeroErr'
|
||||
|
||||
# CSVの列数
|
||||
CSV_NEW_COL_COUNT = 9
|
||||
CSV_CHANGE_COL_COUNT = 14
|
||||
|
||||
@ -40,19 +40,19 @@
|
||||
<tr>
|
||||
<td class="headerTdLeft">施設担当者データCSVアップロード</td>
|
||||
<td class="headerTdRight">
|
||||
{% if mainte_csv_up.is_verified and mainte_csv_up.is_error_list_empty() %}
|
||||
{% if mainte_csv_up.is_verified and mainte_csv_up.is_error_message_list_empty() %}
|
||||
<input type="button" onclick="location.href='/masterMainte/instEmpCsvUL' " value="戻る">
|
||||
{% else %}
|
||||
<button class="buttonSize" onclick="backToMainteMenu()">メニューへ</button>
|
||||
<button class="csvup_buttonSize" onclick="backToMainteMenu()">メニューへ</button>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</h1>
|
||||
<!-- 選択フォーム -->
|
||||
<form name="input" action="{% if mainte_csv_up.is_verified and mainte_csv_up.is_error_list_empty() %}/masterMainte/newInst{% else %}/masterMainte/instEmpCsvUL{% endif %}"
|
||||
<form name="input" action="{% if mainte_csv_up.is_verified and mainte_csv_up.is_error_message_list_empty() %}/masterMainte/newInst{% else %}/masterMainte/instEmpCsvUL{% endif %}"
|
||||
method="POST" enctype="multipart/form-data"
|
||||
{% if mainte_csv_up.is_verified and mainte_csv_up.is_error_list_empty() %}
|
||||
{% if mainte_csv_up.is_verified and mainte_csv_up.is_error_message_list_empty() %}
|
||||
onsubmit="return Form_Submit_Disp_Dialog();"
|
||||
{% else %}
|
||||
onsubmit="Form_Submit();"
|
||||
@ -68,7 +68,7 @@
|
||||
<label>
|
||||
<input type="radio" name="ctrl_select_function" value="new"
|
||||
{{ "checked " if mainte_csv_up.select_function == 'new' or mainte_csv_up.is_select_function_empty() }}
|
||||
{{ "disabled" if mainte_csv_up.is_verified and mainte_csv_up.is_error_list_empty() }}
|
||||
{{ "disabled" if mainte_csv_up.is_verified and mainte_csv_up.is_error_message_list_empty() }}
|
||||
>
|
||||
新規施設登録
|
||||
</label>
|
||||
@ -77,7 +77,7 @@
|
||||
<label>
|
||||
<input type="radio" name="ctrl_select_function" value="change"
|
||||
{{ "checked " if mainte_csv_up.select_function == 'change' }}
|
||||
{{ "disabled" if mainte_csv_up.is_verified and mainte_csv_up.is_error_list_empty() }}
|
||||
{{ "disabled" if mainte_csv_up.is_verified and mainte_csv_up.is_error_message_list_empty() }}
|
||||
>
|
||||
施設担当者変更
|
||||
</label>
|
||||
@ -91,7 +91,7 @@
|
||||
<label>
|
||||
<input type="radio" name="ctrl_select_table" value="dummy"
|
||||
{{ "checked " if mainte_csv_up.select_table == 'dummy' or mainte_csv_up.is_select_table_empty() }}
|
||||
{{ "disabled" if mainte_csv_up.is_verified and mainte_csv_up.is_error_list_empty() }}
|
||||
{{ "disabled" if mainte_csv_up.is_verified and mainte_csv_up.is_error_message_list_empty() }}
|
||||
>
|
||||
ダミーテーブル
|
||||
</label>
|
||||
@ -100,7 +100,7 @@
|
||||
<label>
|
||||
<input type="radio" name="ctrl_select_table" value="real"
|
||||
{{ "checked " if mainte_csv_up.select_table == 'real' }}
|
||||
{{ "disabled" if mainte_csv_up.is_verified and mainte_csv_up.is_error_list_empty() }}
|
||||
{{ "disabled" if mainte_csv_up.is_verified and mainte_csv_up.is_error_message_list_empty() }}
|
||||
>
|
||||
本番テーブル
|
||||
</label>
|
||||
@ -111,7 +111,7 @@
|
||||
<!-- 登録Excel -->
|
||||
<td class="inputLabelTd">登録Excel:</td>
|
||||
<td class="input_tb" colspan="2">
|
||||
{% if mainte_csv_up.is_verified and mainte_csv_up.is_error_list_empty() %}
|
||||
{% if mainte_csv_up.is_verified and mainte_csv_up.is_error_message_list_empty() %}
|
||||
{{mainte_csv_up.csv_file_name}}
|
||||
{% else %}
|
||||
<input type="file" id="excelFile" size="50" name="ctrl_csv_file" accept=".csv" onchange="formInsertBtDisabled()">
|
||||
@ -119,10 +119,10 @@
|
||||
</td>
|
||||
<!-- ボタン -->
|
||||
<td class="inputButtonTd">
|
||||
{% if mainte_csv_up.is_verified and mainte_csv_up.is_error_list_empty() and mainte_csv_up.select_table == 'real' %}
|
||||
{% if mainte_csv_up.is_verified and mainte_csv_up.is_error_message_list_empty() and mainte_csv_up.select_table == 'real' %}
|
||||
<input name="btName" value="insert_bt" type="hidden">
|
||||
<div class="errorColor">本番テーブルが選択されています<input class="buttonSize" id="insert" name="insert_bt" value="登録" type="submit" ></div>
|
||||
{% elif mainte_csv_up.is_verified and mainte_csv_up.is_error_list_empty() and mainte_csv_up.select_table == 'dummy' %}
|
||||
{% elif mainte_csv_up.is_verified and mainte_csv_up.is_error_message_list_empty() and mainte_csv_up.select_table == 'dummy' %}
|
||||
<input name="btName" value="insert_bt" type="hidden">
|
||||
<input class="buttonSize" id="insert" name="insert_bt" value="登録" type="submit">
|
||||
{% else %}
|
||||
@ -133,8 +133,8 @@
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
{% if mainte_csv_up.is_verified and mainte_csv_up.is_error_list_empty() %}
|
||||
<input name="ctrl_json_upload_data" value="{{mainte_csv_up.json_upload_data}}" type="hidden"> <!-- formの外に移動した方が良さそう -->
|
||||
{% if mainte_csv_up.is_verified and mainte_csv_up.is_error_message_list_empty() %}
|
||||
<input name="ctrl_json_upload_data" value="{{mainte_csv_up.json_upload_data}}" type="hidden">
|
||||
<input name="ctrl_select_function" value="{{mainte_csv_up.select_function}}" type="hidden">
|
||||
<input name="ctrl_select_table" value="{{mainte_csv_up.select_table}}" type="hidden">
|
||||
{% endif %}
|
||||
@ -142,16 +142,15 @@
|
||||
<p>
|
||||
<!-- 処理中メッセージ表示 -->
|
||||
<div id="loading" class="csvOutputMessage" style="display:none;">
|
||||
<!-- <img src="IMG/LOADING.GIF" class="loadimg"> -->
|
||||
<p>処理中...<br>しばらくお待ち下さい。</p>
|
||||
</div>
|
||||
{% if not mainte_csv_up.is_error_list_empty() %}
|
||||
{% if not mainte_csv_up.is_error_message_list_empty() %}
|
||||
<div id="ulMsg" class="footerMsg errorColor">
|
||||
{% for error in mainte_csv_up.error_list %}
|
||||
{{error.error_message()}}<br>
|
||||
{% for error in mainte_csv_up.error_message_list %}
|
||||
{{error.error_message}}<br>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% elif mainte_csv_up.is_verified and mainte_csv_up.is_error_list_empty() %}
|
||||
{% elif mainte_csv_up.is_verified and mainte_csv_up.is_error_message_list_empty() %}
|
||||
<div id="ulMsg">
|
||||
<div class="dataCntDisp">件数:{{mainte_csv_up.csv_data_count()}}件</div>
|
||||
<!-- 登録されるデータのリスト -->
|
||||
@ -179,154 +178,6 @@
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
<!-- <?php
|
||||
// エラーが発生した場合のフッター表示
|
||||
if (!empty($_SESSION['errorList'])) {
|
||||
echo '<div id="ulMsg" class="footerMsg errorColor">';
|
||||
foreach ($_SESSION['errorList'] as $value) {
|
||||
if ($value[2] == $nullErr){
|
||||
echo $value[0],$nullErrMsgFirst,$value[1],$nullErrMsgSecond,"<br>";
|
||||
|
||||
} else if ($value[2] == $notExistInstCdErr){
|
||||
echo $value[0],$notExistInstCdErrMsg,"<br>";
|
||||
|
||||
} else if ($value[2] == $notExistEmpCdErr){
|
||||
echo $value[0],$notExistEmpCdErrMsg,"<br>";
|
||||
|
||||
} else if ($value[2] == $notExistBuCdErr){
|
||||
echo $value[0],$notExistBuCdErrMsg,"<br>";
|
||||
|
||||
} else if ($value[2] == $itemCntErr){
|
||||
echo $value[0],$itemCntErrMsg,"<br>";
|
||||
|
||||
} else if ($value[2] == $fileTypeErr){
|
||||
echo $value[0],$fileTypeErrMsg,"<br>";
|
||||
|
||||
} else if ($value[2] == $filenExistErr){
|
||||
echo $value[0],$filenExistErrMsg,"<br>";
|
||||
|
||||
} else if ($value[2] == $sqlErr){
|
||||
echo $value[0],$sqlErrMsg,"<br>";
|
||||
|
||||
} else if ($value[2] == $commentErr){
|
||||
echo $value[0],$commentErrMsg,"<br>";
|
||||
|
||||
} else if ($value[2] == $newCompareDateErr){
|
||||
echo $value[0],$newCompareDateErrMsg,"<br>";
|
||||
|
||||
} else if ($value[2] == $addCompareDateErr){
|
||||
echo $value[0],$addCompareDateErrMsg,"<br>";
|
||||
|
||||
} else if ($value[2] == $endCompareDateErr){
|
||||
echo $value[0],$endCompareDateErrMsg,"<br>";
|
||||
|
||||
} else if ($value[2] == $startDateRealErr){
|
||||
echo $value[0],$startDateRealErrMsg,"<br>";
|
||||
|
||||
} else if ($value[2] == $endDateRealErr){
|
||||
echo $value[0],$endDateRealErrMsg,"<br>";
|
||||
|
||||
} else if ($value[2] == $instEmpStartDateRealErr){
|
||||
echo $value[0],$instEmpStartDateRealErrMsg,"<br>";
|
||||
|
||||
} else if ($value[2] == $instEmpEndDateRealErr){
|
||||
echo $value[0],$instEmpEndDateRealErrMsg,"<br>";
|
||||
|
||||
} else if ($value[2] == $changeEndDateRealErr){
|
||||
echo $value[0],$changeEndDateRealErrMsg,"<br>";
|
||||
|
||||
} else if ($value[2] == $newDataDupErr){
|
||||
echo $value[0],$newDataDupErrMsg,"<br>";
|
||||
|
||||
} else if ($value[2] == $addDataDupErr){
|
||||
echo $value[0],$addDataDupErrMsg,"<br>";
|
||||
|
||||
} else if ($value[2] == $updateDataDupErr){
|
||||
echo $value[0],$updateDataDupErrMsg,"<br>";
|
||||
|
||||
} else if ($value[2] == $inputDataZeroErr){
|
||||
echo $value[0],$inputDataZeroErrMsg,"<br>";
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
echo '</div>';
|
||||
|
||||
|
||||
// 確認ボタン押下後のフッター表示
|
||||
} else if ($_POST['btName'] == 'input_bt' && empty($_SESSION['errorList'])) {
|
||||
// 確認ボタン押下後
|
||||
echo '<div id="ulMsg">';
|
||||
// 件数表示 ヘッダ行があるため-1件
|
||||
echo '<div class="dataCntDisp">件数:', count($_SESSION['sheetData']) - 1 , '件</div>';
|
||||
// 選択された機能により表示するカラムを切り替え
|
||||
if ($_SESSION['selectFunction'] == 'new') {
|
||||
$inputDataColumns = $newInstEmpColumns;
|
||||
} else if($_SESSION['selectFunction'] == 'change'){
|
||||
$inputDataColumns = $changeInstEmpColumns;
|
||||
}
|
||||
?>
|
||||
|
||||
-->
|
||||
|
||||
<!-- 登録されるデータのリスト -->
|
||||
<!-- <table class="inputData">
|
||||
<tbody>
|
||||
<tr>
|
||||
<?php
|
||||
// ヘッダ行の表示
|
||||
foreach ($inputDataColumns as $value) {
|
||||
echo "<th>",$value,"</th>";
|
||||
}
|
||||
?>
|
||||
</tr>
|
||||
<?php
|
||||
// 登録されるリストを作成 ヘッダ行を飛ばすために$i=2からスタート
|
||||
for ($i = 2; $i <= count($_SESSION['sheetData']); $i++) {
|
||||
echo "<tr>";
|
||||
// ポインタを先頭に戻す
|
||||
reset($_SESSION['sheetData'][$i]);
|
||||
// Excel読み込みで空白部分も読み込んでしまっているため表示したいカラム数だけループ
|
||||
for ($j = 0; $j < count($inputDataColumns); $j++, next($_SESSION['sheetData'][$i])) {
|
||||
echo "<td>", current($_SESSION['sheetData'][$i]),"</td>";
|
||||
}
|
||||
echo "</tr>";
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div> -->
|
||||
<!-- <?php
|
||||
// 登録ボタン押下後のフッター表示
|
||||
} else if ($_POST['btName'] == 'insert_bt') {
|
||||
echo '<div id="ulMsg" class="footerMsg">';
|
||||
if ($dataCnt == false) {
|
||||
// TODO修正が必要
|
||||
echo "DB接続エラー";
|
||||
} else {
|
||||
if ($selectedTable == 'dummy') {
|
||||
$selectedTableMsg = $dummyTable;
|
||||
} else if ($selectedTable == 'real') {
|
||||
$selectedTableMsg = $realTable;
|
||||
}
|
||||
if ($selectedFunction == 'new') {
|
||||
$selectedFunctionMsg = $newInstEmp;
|
||||
echo $selectedFunctionMsg, "を行いました<br>";
|
||||
echo $targetMsg, $selectedTableMsg,"<br>";
|
||||
echo $addMsg, $dataCnt['add'],"件<br>";
|
||||
} else if ($selectedFunction == 'change') {
|
||||
$selectedFunctionMsg = $changeInstEmp;
|
||||
echo $selectedFunctionMsg, "を行いました<br>";
|
||||
echo $targetMsg, $selectedTableMsg,"<br>";
|
||||
echo $addMsg, $dataCnt['add'],"件<br>";
|
||||
echo $modifyMsg, $dataCnt['modify'],"件<br>";
|
||||
echo $endMsg, $dataCnt['end'],"件<br>";
|
||||
}
|
||||
}
|
||||
echo "</div>";
|
||||
}
|
||||
if ($testLogFlg) { error_log(date("Y/m/d H:i:s") . " [INFO] instEmpExcel.php End"."\n", 3, $masetrMainteLogPath);}
|
||||
?> -->
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user