diff --git a/EM-System/bin/src/main/resources/templates/error.html b/EM-System/bin/src/main/resources/templates/error.html
new file mode 100644
index 0000000..3fb4864
--- /dev/null
+++ b/EM-System/bin/src/main/resources/templates/error.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+ エラー
+
+
+エラーが発生しました。
+
+ログインからやり直してください。
+ログイン
+
+
diff --git a/EM-System/bin/src/main/resources/templates/insertDepartmentConfirm.html b/EM-System/bin/src/main/resources/templates/insertDepartmentConfirm.html
new file mode 100644
index 0000000..2e0cbb4
--- /dev/null
+++ b/EM-System/bin/src/main/resources/templates/insertDepartmentConfirm.html
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+
+
+
+
+ 登録内容確認
+
+
+
+登録内容確認
+
+ ログイン者名:
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/EM-System/bin/src/main/resources/templates/insertDepartmentInput.html b/EM-System/bin/src/main/resources/templates/insertDepartmentInput.html
new file mode 100644
index 0000000..e1c14f5
--- /dev/null
+++ b/EM-System/bin/src/main/resources/templates/insertDepartmentInput.html
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+ 部署登録
+
+
+
+
+ 部署登録
+
+ ログイン者名:
+
+
+
+
+メニューに戻る
+
+
\ No newline at end of file
diff --git a/EM-System/bin/src/main/resources/templates/insertDepartmentResult.html b/EM-System/bin/src/main/resources/templates/insertDepartmentResult.html
new file mode 100644
index 0000000..c33da9c
--- /dev/null
+++ b/EM-System/bin/src/main/resources/templates/insertDepartmentResult.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+ 部署登録完了
+
+
+
+部署登録が完了しました
+
+続けて登録する | メニューに戻る
+
+
+
\ No newline at end of file
diff --git a/EM-System/bin/src/main/resources/templates/insertEmployeeConfirm.html b/EM-System/bin/src/main/resources/templates/insertEmployeeConfirm.html
new file mode 100644
index 0000000..55bd6cb
--- /dev/null
+++ b/EM-System/bin/src/main/resources/templates/insertEmployeeConfirm.html
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+
+
+
+
+
+ 登録内容確認
+
+
+
+登録内容確認
+
+ ログイン者名:
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/EM-System/bin/src/main/resources/templates/insertEmployeeInput.html b/EM-System/bin/src/main/resources/templates/insertEmployeeInput.html
new file mode 100644
index 0000000..ff0c02d
--- /dev/null
+++ b/EM-System/bin/src/main/resources/templates/insertEmployeeInput.html
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+
+
+
+
+
+ 社員登録
+
+
+
+
+ 社員登録
+
+ ログイン者名:
+
+
+
+
+メニューに戻る
+
+
\ No newline at end of file
diff --git a/EM-System/bin/src/main/resources/templates/insertEmployeeResult.html b/EM-System/bin/src/main/resources/templates/insertEmployeeResult.html
new file mode 100644
index 0000000..f299b4c
--- /dev/null
+++ b/EM-System/bin/src/main/resources/templates/insertEmployeeResult.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+ 社員登録完了
+
+
+
+社員登録が完了しました
+
+続けて登録する | メニューに戻る
+
+
+
\ No newline at end of file
diff --git a/EM-System/bin/src/main/resources/templates/login.html b/EM-System/bin/src/main/resources/templates/login.html
new file mode 100644
index 0000000..24c68c4
--- /dev/null
+++ b/EM-System/bin/src/main/resources/templates/login.html
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+ ログイン
+
+
+
+ログイン
+
+
+
+
diff --git a/EM-System/bin/src/main/resources/templates/menu.html b/EM-System/bin/src/main/resources/templates/menu.html
new file mode 100644
index 0000000..e058ab2
--- /dev/null
+++ b/EM-System/bin/src/main/resources/templates/menu.html
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+ メニュー
+
+
+
+
+
+ メインメニュー
+
+ ログイン者名:
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/EM-System/bin/src/main/resources/templates/selectDepartment.html b/EM-System/bin/src/main/resources/templates/selectDepartment.html
new file mode 100644
index 0000000..57dbc1f
--- /dev/null
+++ b/EM-System/bin/src/main/resources/templates/selectDepartment.html
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
+
+
+
+
+ 検索
+
+
+
+
+ 検索条件入力
+
+ ログイン者名:
+
+
+
+
+
+メニューに戻る
+
+検索結果
+
+
+
+
+
+
+
+
+
+
+ | 部署ID |
+ 部署名 |
+ 操作 |
+
+
+
+
+ |
+ |
+
+
+
+
+
+ |
+
+
+
+
+
+
+ 検索結果はありません。
+
+
+
+
+
\ No newline at end of file
diff --git a/EM-System/bin/src/main/resources/templates/selectEmployee.html b/EM-System/bin/src/main/resources/templates/selectEmployee.html
new file mode 100644
index 0000000..47cf487
--- /dev/null
+++ b/EM-System/bin/src/main/resources/templates/selectEmployee.html
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+
+
+
+
+
+ 検索
+
+
+
+
+ 検索条件入力
+
+ ログイン者名:
+
+
+
+
+
+メニューに戻る
+
+検索結果
+
+
+
+
+
+
+
+
+
+
+ | 社員ID |
+ 社員名 |
+ フリガナ |
+ メールアドレス |
+ パスワード |
+ 管理者フラグ |
+ 所属部署 |
+ 操作 |
+
+
+
+
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+
+
+
+ |
+
+
+
+
+
+
+ 検索結果はありません。
+
+
+
+
+
\ No newline at end of file
diff --git a/EM-System/bin/src/main/resources/templates/updateDepartmentInput.html b/EM-System/bin/src/main/resources/templates/updateDepartmentInput.html
new file mode 100644
index 0000000..afd470f
--- /dev/null
+++ b/EM-System/bin/src/main/resources/templates/updateDepartmentInput.html
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+ 社員情報更新
+
+
+
+
+ 部署情報更新
+
+ ログイン者名:
+
+
+
+
+一覧に戻る
+
+
+
+
\ No newline at end of file
diff --git a/EM-System/bin/src/main/resources/templates/updateEmployeeInput.html b/EM-System/bin/src/main/resources/templates/updateEmployeeInput.html
new file mode 100644
index 0000000..83d43a5
--- /dev/null
+++ b/EM-System/bin/src/main/resources/templates/updateEmployeeInput.html
@@ -0,0 +1,181 @@
+
+
+
+
+
+
+
+
+
+
+
+ 社員情報更新
+
+
+
+
+ 社員情報更新
+
+ ログイン者名:
+
+
+
+
+一覧に戻る
+
+
+
+
\ No newline at end of file
diff --git a/EM-System/bin/src/main/resources/templates/updatePersonalEmployeeInput.html b/EM-System/bin/src/main/resources/templates/updatePersonalEmployeeInput.html
new file mode 100644
index 0000000..1635ced
--- /dev/null
+++ b/EM-System/bin/src/main/resources/templates/updatePersonalEmployeeInput.html
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+
+
+
+
+ 社員情報更新
+
+
+
+
+ 社員情報更新
+
+ ログイン者名:
+
+
+
+
+
+
\ No newline at end of file
diff --git a/EM-System/bin/src/main/resources/templates/updatePersonalEmployeeResult.html b/EM-System/bin/src/main/resources/templates/updatePersonalEmployeeResult.html
new file mode 100644
index 0000000..9bee911
--- /dev/null
+++ b/EM-System/bin/src/main/resources/templates/updatePersonalEmployeeResult.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+ 更新完了
+
+
+
+更新が完了しました
+
+戻る
+
+
+
+
+
\ No newline at end of file
diff --git a/EM-System/src/main/java/com/example/rhizome/app/domain/model/AllDepartmentInfo.java b/EM-System/src/main/java/com/example/rhizome/app/domain/model/AllDepartmentInfo.java
new file mode 100644
index 0000000..a8a64a7
--- /dev/null
+++ b/EM-System/src/main/java/com/example/rhizome/app/domain/model/AllDepartmentInfo.java
@@ -0,0 +1,21 @@
+package com.example.rhizome.app.domain.model;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public class AllDepartmentInfo {
+ /**
+ * 課情報
+ */
+ private final Division division;
+ /**
+ * 部情報
+ */
+ private final Department department;
+ /**
+ * 本部情報
+ */
+ private final Headquarters headquarters;
+}
diff --git a/EM-System/src/main/java/com/example/rhizome/app/domain/model/AllEmployeeInfo.java b/EM-System/src/main/java/com/example/rhizome/app/domain/model/AllEmployeeInfo.java
new file mode 100644
index 0000000..f128f8d
--- /dev/null
+++ b/EM-System/src/main/java/com/example/rhizome/app/domain/model/AllEmployeeInfo.java
@@ -0,0 +1,25 @@
+package com.example.rhizome.app.domain.model;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public class AllEmployeeInfo {
+ /**
+ * 社員情報
+ */
+ private final Employee employee;
+ /**
+ * 課情報
+ */
+ private final Division division;
+ /**
+ * 部情報
+ */
+ private final Department department;
+ /**
+ * 本部情報
+ */
+ private final Headquarters headquarters;
+}
diff --git a/EM-System/src/main/java/com/example/rhizome/app/domain/model/DepartmentInfo.java b/EM-System/src/main/java/com/example/rhizome/app/domain/model/DepartmentInfo.java
new file mode 100644
index 0000000..62f9e25
--- /dev/null
+++ b/EM-System/src/main/java/com/example/rhizome/app/domain/model/DepartmentInfo.java
@@ -0,0 +1,36 @@
+package com.example.rhizome.app.domain.model;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 部署情報の概念を表現するモデルクラスです。※部情報ではない
+ */
+@Getter
+@AllArgsConstructor
+public class DepartmentInfo {
+ /**
+ * 本部ID
+ */
+ private final Integer idHeadquarters;
+ /**
+ * 本部名
+ */
+ private final String nmHeadquarters;
+ /**
+ * 部ID
+ */
+ private final Integer idDepartment;
+ /**
+ * 部名
+ */
+ private final String nmDepartment;
+ /**
+ * 課ID
+ */
+ private final Integer idDivision;
+ /**
+ * 課名
+ */
+ private final String nmDivision;
+}
diff --git a/EM-System/src/main/java/com/example/rhizome/app/domain/model/Division.java b/EM-System/src/main/java/com/example/rhizome/app/domain/model/Division.java
new file mode 100644
index 0000000..bab7c7e
--- /dev/null
+++ b/EM-System/src/main/java/com/example/rhizome/app/domain/model/Division.java
@@ -0,0 +1,28 @@
+package com.example.rhizome.app.domain.model;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 課を表現するモデルクラスです
+ */
+@Getter
+@AllArgsConstructor
+public class Division {
+ /**
+ * 課ID
+ */
+ private final Integer idDivision;
+ /**
+ * 課名
+ */
+ private final String nmDivision;
+ /**
+ * 表示・非表示フラグ
+ */
+ private final Integer isDisplay;
+ /**
+ * 部ID
+ */
+ private final Integer idDepartment;
+}
diff --git a/EM-System/src/main/java/com/example/rhizome/app/domain/model/Headquarters.java b/EM-System/src/main/java/com/example/rhizome/app/domain/model/Headquarters.java
new file mode 100644
index 0000000..54b2dc1
--- /dev/null
+++ b/EM-System/src/main/java/com/example/rhizome/app/domain/model/Headquarters.java
@@ -0,0 +1,24 @@
+package com.example.rhizome.app.domain.model;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 本部を表現するモデルクラスです
+ */
+@Getter
+@AllArgsConstructor
+public class Headquarters {
+ /**
+ * 本部ID
+ */
+ private final Integer idHeadquarters;
+ /**
+ * 本部名
+ */
+ private final String nmHeadquarters;
+ /**
+ * 表示・非表示フラグ
+ */
+ private final Integer isDisplay;
+}
diff --git a/EM-System/src/main/java/com/example/rhizome/app/domain/service/SearchDepartment.java b/EM-System/src/main/java/com/example/rhizome/app/domain/service/SearchDepartment.java
index c6ff140..5a72689 100644
--- a/EM-System/src/main/java/com/example/rhizome/app/domain/service/SearchDepartment.java
+++ b/EM-System/src/main/java/com/example/rhizome/app/domain/service/SearchDepartment.java
@@ -18,6 +18,11 @@ public interface SearchDepartment {
SearchConditionDepartment searchHeadquartersTable,
SearchConditionDepartment searchDepartmentTable,
SearchConditionDepartment searchDivisionTable);
+
+ boolean searchAllDepartmentTable(
+ Integer idHeadquarters,
+ Integer idDepartment,
+ Integer idDivision);
List searchByHeadquarters(SearchConditionDepartment searchConditionDepartment);
diff --git a/EM-System/src/main/java/com/example/rhizome/app/domain/service/TenureCalc.java b/EM-System/src/main/java/com/example/rhizome/app/domain/service/TenureCalc.java
new file mode 100644
index 0000000..45f9910
--- /dev/null
+++ b/EM-System/src/main/java/com/example/rhizome/app/domain/service/TenureCalc.java
@@ -0,0 +1,8 @@
+package com.example.rhizome.app.domain.service;
+
+import org.springframework.stereotype.Service;
+
+@Service
+public interface TenureCalc {
+ String tenureCalc(String hireDate);
+}
diff --git a/EM-System/src/main/java/com/example/rhizome/app/domain/service/impl/SearchDepartmentImpl.java b/EM-System/src/main/java/com/example/rhizome/app/domain/service/impl/SearchDepartmentImpl.java
index 192d1d9..eb4f739 100644
--- a/EM-System/src/main/java/com/example/rhizome/app/domain/service/impl/SearchDepartmentImpl.java
+++ b/EM-System/src/main/java/com/example/rhizome/app/domain/service/impl/SearchDepartmentImpl.java
@@ -88,6 +88,21 @@ public class SearchDepartmentImpl implements SearchDepartment {
return true;
}
}
+
+ public boolean searchAllDepartmentTable(
+ Integer idHeadquarters,
+ Integer idDepartment,
+ Integer idDivision){
+
+ if(departmentInfoRepository.searchAllDepartmentTable(
+ idHeadquarters,
+ idDepartment,
+ idDivision).isEmpty()) {
+ return false;
+ }else{
+ return true;
+ }
+ }
/**
* searchConditionDepartment の情報を元に Department のレコードを取得
*
diff --git a/EM-System/src/main/java/com/example/rhizome/app/domain/service/impl/TenureCalucImpl.java b/EM-System/src/main/java/com/example/rhizome/app/domain/service/impl/TenureCalucImpl.java
new file mode 100644
index 0000000..d452e00
--- /dev/null
+++ b/EM-System/src/main/java/com/example/rhizome/app/domain/service/impl/TenureCalucImpl.java
@@ -0,0 +1,26 @@
+package com.example.rhizome.app.domain.service.impl;
+
+import java.time.LocalDate;
+import java.time.Period;
+
+import org.springframework.stereotype.Service;
+
+import com.example.rhizome.app.domain.service.TenureCalc;
+@Service
+public class TenureCalucImpl implements TenureCalc {
+ public String tenureCalc(String hireDate){
+ String tenure;
+ LocalDate hiredate = LocalDate.parse(hireDate);
+ LocalDate today = LocalDate.now();
+ Period period = Period.between(hiredate, today);
+
+ if(period.getYears()<=0&&period.getMonths()<=0) {
+ tenure = "0年0ヶ月";
+ return tenure;
+ }else {
+ tenure=period.getYears()+"年"+period.getMonths()+"ヶ月";
+ return tenure;
+ }
+
+ }
+}
diff --git a/EM-System/src/main/java/com/example/rhizome/app/infra/entity/DepartmentInfoEntity.java b/EM-System/src/main/java/com/example/rhizome/app/infra/entity/DepartmentInfoEntity.java
new file mode 100644
index 0000000..6cc30b6
--- /dev/null
+++ b/EM-System/src/main/java/com/example/rhizome/app/infra/entity/DepartmentInfoEntity.java
@@ -0,0 +1,168 @@
+package com.example.rhizome.app.infra.entity;
+
+import java.util.List;
+
+import javax.persistence.NamedEntityGraph;
+
+import com.example.rhizome.app.domain.model.AllDepartmentInfo;
+import com.example.rhizome.app.domain.model.Department;
+import com.example.rhizome.app.domain.model.DepartmentInfo;
+import com.example.rhizome.app.domain.model.Division;
+import com.example.rhizome.app.domain.model.Headquarters;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@NamedEntityGraph(
+ name = "division_with_department_with_headquarters",
+ includeAllAttributes = true
+)
+public class DepartmentInfoEntity {
+
+ private DivisionEntity division;
+
+ private DepartmentEntity department;
+
+ private HeadquartersEntity headquarters;
+
+
+ public static DepartmentInfoEntity convertFrom(DepartmentInfo departmentInfo) {
+ return new DepartmentInfoEntity(
+ new DivisionEntity(
+ departmentInfo.getIdDivision(),
+ departmentInfo.getNmDivision(),
+ 0,
+ new DepartmentEntity(
+ departmentInfo.getIdDepartment(),
+ departmentInfo.getNmDepartment(),
+ 0,
+ new HeadquartersEntity(
+ departmentInfo.getIdHeadquarters(),
+ departmentInfo.getNmHeadquarters(),
+ 0
+ )
+ )
+ ),
+ new DepartmentEntity(
+ departmentInfo.getIdDepartment(),
+ departmentInfo.getNmDepartment(),
+ 0,
+ new HeadquartersEntity(
+ departmentInfo.getIdHeadquarters(),
+ departmentInfo.getNmHeadquarters(),
+ 0
+ )
+ ),
+ new HeadquartersEntity(
+ departmentInfo.getIdHeadquarters(),
+ departmentInfo.getNmHeadquarters(),
+ 0
+ )
+
+ );
+ }
+
+ /**
+ * EmployeeDepartmentEntity(DataAccess層依存) を EmployeeInfo(BusinessLogic層依存) に変換します。
+ *
+ * @param employeeDepartmentEntity EmployeeDepartmentEntity のインスタンス
+ * @return EmployeeInfo のインスタンス
+ */
+ public static AllDepartmentInfo createDepartmentInfo(DepartmentInfoEntity departmentInfoEntity) {
+
+ // コンストラクタを使って書くとSetterを使用するより簡略化出来ます。
+ // 混乱してしまう人は落ち着いて EmployeeInfo のフィールドを見に行って、
+ // どうしてこの書き方が出来るのかを理解できる様になりましょう。
+ return new AllDepartmentInfo(
+ new Division(
+ departmentInfoEntity.getDivision()
+ == null ? null : departmentInfoEntity.getDivision().getIdDivision(),
+ departmentInfoEntity.getDivision()
+ == null ? null : departmentInfoEntity.getDivision().getNmDivision(),
+ departmentInfoEntity.getDivision()
+ == null ? null : departmentInfoEntity.getDivision().getIsDisplay(),
+ departmentInfoEntity.getDepartment()
+ == null ? null : departmentInfoEntity.getDepartment().getIdDepartment()
+ ),
+ new Department(
+ departmentInfoEntity.getDepartment()
+ == null ? null : departmentInfoEntity.getDepartment().getIdDepartment(),
+ departmentInfoEntity.getDepartment()
+ == null ? null : departmentInfoEntity.getDepartment().getNmDepartment(),
+ departmentInfoEntity.getDepartment()
+ == null ? null : departmentInfoEntity.getDepartment().getIsDisplay(),
+ departmentInfoEntity.getHeadquarters()
+ == null ? null : departmentInfoEntity.getHeadquarters().getIdHeadquarters()
+ ),
+ new Headquarters(
+ departmentInfoEntity.getHeadquarters()
+ == null ? null : departmentInfoEntity.getHeadquarters().getIdHeadquarters(),
+ departmentInfoEntity.getHeadquarters()
+ == null ? null : departmentInfoEntity.getHeadquarters().getNmHeadquarters(),
+ departmentInfoEntity.getHeadquarters()
+ == null ? null : departmentInfoEntity.getHeadquarters().getIsDisplay()
+ )
+ );
+
+ }
+
+ /**
+ * EmployeeDepartmentEntity(DataAccess層依存) を EmployeeInfo(BusinessLogic層依存) に変換します。
+ * (リスト版)
+ *
+ * @param employeeDepartmentEntityList EmployeeDepartmentEntity インスタンスのリスト
+ * @return EmployeeInfo インスタンスのリスト
+ */
+ public static List createDepartmentInfoList(List departmentInfoEntity) {
+
+ // StreamAPI を使うとこうなります。
+ return departmentInfoEntity.stream().map(DepartmentInfoEntity::createDepartmentInfo).toList();
+
+ }
+
+
+ public static AllDepartmentInfo createDepartmentInfo(DivisionEntity divisionEntity) {
+
+ // コンストラクタを使って書くとSetterを使用するより簡略化出来ます。
+ // 混乱してしまう人は落ち着いて EmployeeInfo のフィールドを見に行って、
+ // どうしてこの書き方が出来るのかを理解できる様になりましょう。
+ return new AllDepartmentInfo(
+ new Division(
+ divisionEntity.getIdDivision(),
+ divisionEntity.getNmDivision(),
+ divisionEntity.getIsDisplay(),
+ divisionEntity.getDepartment().getIdDepartment()
+ ),
+ new Department(
+ divisionEntity.getDepartment()
+ == null ? null : divisionEntity.getDepartment().getIdDepartment(),
+ divisionEntity.getDepartment()
+ == null ? null : divisionEntity.getDepartment().getNmDepartment(),
+ divisionEntity.getDepartment()
+ == null ? null : divisionEntity.getDepartment().getIsDisplay(),
+ divisionEntity.getDepartment().getHeadquarters()
+ == null ? null : divisionEntity.getDepartment().getHeadquarters().getIdHeadquarters()
+ ),
+ new Headquarters(
+ divisionEntity.getDepartment().getHeadquarters()
+ == null ? null : divisionEntity.getDepartment().getHeadquarters().getIdHeadquarters(),
+ divisionEntity.getDepartment().getHeadquarters()
+ == null ? null : divisionEntity.getDepartment().getHeadquarters().getNmHeadquarters(),
+ divisionEntity.getDepartment().getHeadquarters()
+ == null ? null : divisionEntity.getDepartment().getHeadquarters().getIsDisplay()
+ )
+ );
+
+ }
+ public static List AfterSearchCreateDepartmentInfoList(List divisionEntity) {
+
+ // StreamAPI を使うとこうなります。
+ return divisionEntity.stream().map(DepartmentInfoEntity::createDepartmentInfo).toList();
+
+ }
+
+}
diff --git a/EM-System/src/main/java/com/example/rhizome/app/infra/entity/DivisionEntity.java b/EM-System/src/main/java/com/example/rhizome/app/infra/entity/DivisionEntity.java
new file mode 100644
index 0000000..97d6c18
--- /dev/null
+++ b/EM-System/src/main/java/com/example/rhizome/app/infra/entity/DivisionEntity.java
@@ -0,0 +1,102 @@
+package com.example.rhizome.app.infra.entity;
+
+import java.util.List;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+import org.hibernate.annotations.Fetch;
+import org.hibernate.annotations.FetchMode;
+
+import com.example.rhizome.app.domain.model.DepartmentInfo;
+import com.example.rhizome.app.domain.model.Division;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Entity
+@Table(name = "division")
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class DivisionEntity {
+ /**
+ * 課ID
+ */
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "id_division", nullable = false)
+ private Integer idDivision;
+ /**
+ * 課名
+ */
+ @Column(name = "nm_division", nullable = false)
+ private String nmDivision;
+ /**
+ * 表示・非表示フラグ
+ */
+ @Column(name = "is_display", nullable = false)
+ private Integer isDisplay;
+
+ @ManyToOne(cascade = CascadeType.ALL)
+ @JoinColumn(name = "id_department")
+ @Fetch(FetchMode.JOIN)
+ private DepartmentEntity department;
+
+
+
+ public static DivisionEntity convertFrom(DepartmentInfo departmentInfo) {
+ return new DivisionEntity(
+ departmentInfo.getIdDivision(),
+ departmentInfo.getNmDivision(),
+ (Integer)0,
+ new DepartmentEntity(
+ departmentInfo.getIdDepartment(),
+ departmentInfo.getNmDepartment(),
+ (Integer)0,
+ new HeadquartersEntity(
+ departmentInfo.getIdHeadquarters(),
+ departmentInfo.getNmHeadquarters(),
+ (Integer)0
+ )
+ )
+ );
+ }
+
+
+ public static Division createDivision(DivisionEntity divisionEntity) {
+ // 値を既に持ったインスタンスの生成に、コンストラクタを使用するとこうなります。
+ return new Division(
+ divisionEntity.getIdDivision(),
+ divisionEntity.getNmDivision(),
+ divisionEntity.getIsDisplay(),
+ divisionEntity.getDepartment().getIdDepartment()
+
+ );
+ }
+
+
+
+ public static List createDivisionList(List divisionEntityList) {
+
+ return divisionEntityList
+ .stream()
+ .map(DivisionEntity ::createDivision ).toList();
+ }
+
+
+
+
+
+
+
+
+}
diff --git a/EM-System/src/main/java/com/example/rhizome/app/infra/entity/HeadquartersEntity.java b/EM-System/src/main/java/com/example/rhizome/app/infra/entity/HeadquartersEntity.java
new file mode 100644
index 0000000..89384a4
--- /dev/null
+++ b/EM-System/src/main/java/com/example/rhizome/app/infra/entity/HeadquartersEntity.java
@@ -0,0 +1,70 @@
+package com.example.rhizome.app.infra.entity;
+
+import java.util.List;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+import com.example.rhizome.app.domain.model.DepartmentInfo;
+import com.example.rhizome.app.domain.model.Headquarters;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Entity
+@Table(name = "headquarters")
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class HeadquartersEntity {
+ /**
+ * 本部ID
+ */
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "id_headquarters", nullable = false)
+ private Integer idHeadquarters;
+ /**
+ * 本部名
+ */
+ @Column(name = "nm_headquarters", nullable = false)
+ private String nmHeadquarters;
+ /**
+ * 表示・非表示フラグ
+ */
+ @Column(name = "is_display", nullable = false)
+ private Integer isDisplay;
+
+
+
+ public static Headquarters createHeadquarters(HeadquartersEntity headquartersEntity) {
+ // 値を既に持ったインスタンスの生成に、コンストラクタを使用するとこうなります。
+ return new Headquarters(
+ headquartersEntity.getIdHeadquarters(),
+ headquartersEntity.getNmHeadquarters(),
+ headquartersEntity.getIsDisplay()
+ );
+ }
+
+
+
+ public static List createHeadquartersList(List headquartersEntityList) {
+
+ return headquartersEntityList
+ .stream()
+ .map(HeadquartersEntity ::createHeadquarters ).toList();
+ }
+
+ public static HeadquartersEntity convertFrom(DepartmentInfo departmentInfo) {
+ return new HeadquartersEntity(
+ departmentInfo.getIdHeadquarters(),
+ departmentInfo.getNmHeadquarters(),
+ (Integer)0
+ );
+ }
+}
diff --git a/EM-System/src/main/java/com/example/rhizome/app/infra/entity/InsertEmployeeEntity.java b/EM-System/src/main/java/com/example/rhizome/app/infra/entity/InsertEmployeeEntity.java
new file mode 100644
index 0000000..3c2fce8
--- /dev/null
+++ b/EM-System/src/main/java/com/example/rhizome/app/infra/entity/InsertEmployeeEntity.java
@@ -0,0 +1,100 @@
+package com.example.rhizome.app.infra.entity;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+import com.example.rhizome.app.domain.model.Employee;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * EmployeeテーブルのEntity
+ *
+ * @author IT-College
+ */
+@Entity
+@Table(name = "employee")
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+
+public class InsertEmployeeEntity {
+
+
+ /**
+ * 社員ID
+ */
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "id_employee", nullable = false)
+ private Integer idEmployee;
+
+ /**
+ * 社員名
+ */
+ @Column(name = "nm_employee", nullable = false)
+ private String nmEmployee;
+
+ /**
+ * 社員名カナ
+ */
+ @Column(name = "kn_employee", nullable = false)
+ private String knEmployee;
+
+ /**
+ * メールアドレス
+ */
+ @Column(name = "mail_address", nullable = false)
+ private String mailAddress;
+
+ /**
+ * パスワード
+ */
+ @Column(name = "password", nullable = false)
+ private String password;
+
+ /**
+ * 入社年月日
+ */
+ @Column(name = "hire_Date", nullable = false)
+ private String hireDate;
+ /**
+ * 管理者権限
+ */
+ @Column(name = "admin_auth", nullable = false)
+ private Integer adminAuth;
+
+ /**
+ * 部署ID
+ */
+ @Column(name = "id_division", nullable = false)
+ private Integer idDivision;
+
+
+ /**
+ * Employee(BusinessLogic 依存)を EmployeeEntity(DataAccess層依存)に変換します。
+ *
+ * @param employee Employee Table の中身
+ * @return EmployeeEntity のインスタンス(1レコード分)
+ */
+ public static InsertEmployeeEntity convertFrom(Employee employee) {
+ // 値を既に持ったインスタンスの生成に、コンストラクタを使用するとこうなります。
+ return new InsertEmployeeEntity(
+ employee.getIdEmployee(),
+ employee.getNmEmployee(),
+ employee.getKnEmployee(),
+ employee.getMailAddress(),
+ employee.getPassword(),
+ employee.getHireDate(),
+ employee.getAdminAuth(),
+ employee.getIdDivision()
+ );
+ }
+
+}
diff --git a/EM-System/src/main/java/com/example/rhizome/app/infra/entity/RegisterDepartmentEntity.java b/EM-System/src/main/java/com/example/rhizome/app/infra/entity/RegisterDepartmentEntity.java
new file mode 100644
index 0000000..a35e32b
--- /dev/null
+++ b/EM-System/src/main/java/com/example/rhizome/app/infra/entity/RegisterDepartmentEntity.java
@@ -0,0 +1,51 @@
+package com.example.rhizome.app.infra.entity;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * Department テーブルの Entity
+ *
+ * @author IT-College
+ */
+@Entity
+@Table(name = "department")
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+//@NamedEntityGraph(
+// name = "department_with_headquarters",
+// includeAllAttributes = true
+//)
+public class RegisterDepartmentEntity {
+
+ /**
+ * 部ID
+ */
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "id_department", nullable = false)
+ private Integer idDepartment;
+ /**
+ * 部名
+ */
+ @Column(name = "nm_department", nullable = false)
+ private String nmDepartment;
+ /**
+ * 表示・非表示フラグ
+ */
+ @Column(name = "is_display", nullable = false)
+ private Integer isDisplay;
+
+ @Column(name = "id_headquarters",nullable = false)
+ private Integer idHeadquarters;
+
+}
+
diff --git a/EM-System/src/main/java/com/example/rhizome/app/infra/repository/DepartmentInfoRepository.java b/EM-System/src/main/java/com/example/rhizome/app/infra/repository/DepartmentInfoRepository.java
new file mode 100644
index 0000000..40e4a7f
--- /dev/null
+++ b/EM-System/src/main/java/com/example/rhizome/app/infra/repository/DepartmentInfoRepository.java
@@ -0,0 +1,86 @@
+package com.example.rhizome.app.infra.repository;
+
+import java.util.List;
+
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.data.jpa.repository.EntityGraph;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.lang.Nullable;
+import org.springframework.stereotype.Repository;
+
+import com.example.rhizome.app.infra.entity.DepartmentInfoEntity;
+import com.example.rhizome.app.infra.entity.DivisionEntity;
+
+@Repository
+public interface DepartmentInfoRepository
+ extends JpaRepository, JpaSpecificationExecutor {
+
+ static Specification idDivisionEqual(Integer idDivision) {
+ return idDivision == null ? null :
+ // 戻り値の型 Specification にキャスト
+ (Specification)
+ // ラムダ式で記載しているが書いてあることは criteriaBuilder を使って Where句の後の "'idEmployee' = idEmployee(変数)"
+ // を作成している
+ (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder.equal(root.get("idDivision"), idDivision);
+ }
+
+ static Specification nmDivisionEqual(String nmDivision) {
+ return (nmDivision == null || nmDivision.isEmpty()) ? null
+ : (Specification) (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder
+ .equal(root.get("nmDivision"), nmDivision);
+ }
+
+ static Specification nmDepartmentEqual(String nmDepartment) {
+ return (nmDepartment == null || nmDepartment.isEmpty()) ? null
+ : (Specification) (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder
+ .equal(root.join("department").get("nmDepartment"), nmDepartment);
+ }
+
+ static Specification nmHeadquartersEqual(String nmHeadquarters) {
+ return (nmHeadquarters == null || nmHeadquarters.isEmpty()) ? null
+ : (Specification) (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder
+ .equal(root.join("department").join("headquarters").get("nmHeadquarters"), nmHeadquarters);
+ }
+
+ @Query("SELECT DISTINCT new com.example.rhizome.app.infra.entity.DepartmentInfoEntity(di,de,h)FROM DivisionEntity di "
+ + "INNER JOIN di.department de "
+ + "INNER JOIN de.headquarters h ")
+ List searchAllDepartmentTable();
+
+ @EntityGraph(attributePaths = { "department", "department.headquarters" })
+ List findAll(@Nullable Specification spec);
+
+ @EntityGraph(attributePaths = { "department", "department.headquarters" })
+ void save(@Nullable Specification spec);
+
+
+ @Query("SELECT DISTINCT new com.example.rhizome.app.infra.entity.DepartmentInfoEntity(di,de,h)FROM DivisionEntity di "
+ + "INNER JOIN di.department de "
+ + "INNER JOIN de.headquarters h "
+ + "WHERE di.nmDivision = :nmDivision "
+ + "AND de.nmDepartment = :nmDepartment "
+ + "AND h.nmHeadquarters = :nmHeadquarters"
+ + "")
+ List searchAllDepartmentTable(
+ @Param("nmHeadquarters") String nmHeadquarters,
+ @Param("nmDepartment") String nmDepartment,
+ @Param("nmDivision") String nmDivision);
+
+ @Query("SELECT DISTINCT new com.example.rhizome.app.infra.entity.DepartmentInfoEntity(di,de,h)FROM DivisionEntity di "
+ + "INNER JOIN di.department de "
+ + "INNER JOIN de.headquarters h "
+ + "WHERE di.idDivision = :idDivision "
+ + "AND de.idDepartment = :idDepartment "
+ + "AND h.idHeadquarters = :idHeadquarters"
+ + "")
+ List searchAllDepartmentTable(
+ @Param("idHeadquarters") Integer idHeadquarters,
+ @Param("idDepartment") Integer idDepartment,
+ @Param("idDivision") Integer idDivision);
+
+
+
+}
\ No newline at end of file
diff --git a/EM-System/src/main/java/com/example/rhizome/app/infra/repository/DivisionRepository.java b/EM-System/src/main/java/com/example/rhizome/app/infra/repository/DivisionRepository.java
new file mode 100644
index 0000000..34e8cc0
--- /dev/null
+++ b/EM-System/src/main/java/com/example/rhizome/app/infra/repository/DivisionRepository.java
@@ -0,0 +1,39 @@
+package com.example.rhizome.app.infra.repository;
+
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+import com.example.rhizome.app.infra.entity.DivisionEntity;
+
+@Repository
+public interface DivisionRepository extends JpaRepository, JpaSpecificationExecutor{
+
+ static Specification idDivisionEqual(Integer idDivision) {
+ return idDivision == null ?
+ null :
+ // 戻り値の型 Specification にキャスト
+ (Specification)
+ // ラムダ式で記載しているが書いてあることは criteriaBuilder を使って Where句の後の "'idDepartment' = idDepartment(変数)"
+ // を作成している
+ (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder.equal(root.get("idDivision"), idDivision);
+ }
+
+ static Specification nmDivisionEqual(String nmDivision) {
+ return (nmDivision == null || nmDivision.isEmpty()) ?
+ null :
+ (Specification)
+ (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder.like(root.get("nmDivision"), nmDivision);
+ }
+ static Specification idDepartmentEqual(Integer idDepartment) {
+ return idDepartment == null ?
+ null :
+ // 戻り値の型 Specification にキャスト
+ (Specification)
+ // ラムダ式で記載しているが書いてあることは criteriaBuilder を使って Where句の後の "'idDepartment' = idDepartment(変数)"
+ // を作成している
+ (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder.equal(root.get("idDepartment"), idDepartment);
+ }
+
+}
diff --git a/EM-System/src/main/java/com/example/rhizome/app/infra/repository/HeadquartersRepository.java b/EM-System/src/main/java/com/example/rhizome/app/infra/repository/HeadquartersRepository.java
new file mode 100644
index 0000000..6f402a2
--- /dev/null
+++ b/EM-System/src/main/java/com/example/rhizome/app/infra/repository/HeadquartersRepository.java
@@ -0,0 +1,31 @@
+package com.example.rhizome.app.infra.repository;
+
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+import com.example.rhizome.app.infra.entity.HeadquartersEntity;
+
+@Repository
+public interface HeadquartersRepository extends JpaRepository, JpaSpecificationExecutor{
+ static Specification idHeadquartersEqual(Integer idHeadquarters) {
+ return idHeadquarters == null ?
+ null :
+ // 戻り値の型 Specification にキャスト
+ (Specification)
+ // ラムダ式で記載しているが書いてあることは criteriaBuilder を使って Where句の後の "'idDepartment' = idDepartment(変数)"
+ // を作成している
+ (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder.equal(root.get("idHeadquarters"), idHeadquarters);
+ }
+
+ static Specification nmHeadquartersEqual(String nmHeadquarters) {
+ return (nmHeadquarters == null || nmHeadquarters.isEmpty()) ?
+ null :
+ (Specification)
+ (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder.like(root.get("nmHeadquarters"), nmHeadquarters);
+ }
+
+
+ HeadquartersEntity findByNmHeadquarters(String nmHeadquarters);
+}
diff --git a/EM-System/src/main/java/com/example/rhizome/app/infra/repository/RegisterDepartmentRepository.java b/EM-System/src/main/java/com/example/rhizome/app/infra/repository/RegisterDepartmentRepository.java
new file mode 100644
index 0000000..5c7b826
--- /dev/null
+++ b/EM-System/src/main/java/com/example/rhizome/app/infra/repository/RegisterDepartmentRepository.java
@@ -0,0 +1,23 @@
+package com.example.rhizome.app.infra.repository;
+
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+import com.example.rhizome.app.infra.entity.RegisterDepartmentEntity;
+@Repository
+public interface RegisterDepartmentRepository extends JpaRepository, JpaSpecificationExecutor {
+ static Specification idHeadquartersEqual(Integer idHeadquarters) {
+
+ System.out.println("RegisterDepartmentRepository=>5");
+
+ return idHeadquarters == null ?
+ null :
+ //戻り値の型 Specification にキャスト
+ (Specification)
+
+ (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder.equal(root.get("idHeadquarters"), idHeadquarters);
+ }
+
+}
diff --git a/EM-System/src/main/java/com/example/rhizome/app/presentation/controller/InsertEmployeeConfirmController.java b/EM-System/src/main/java/com/example/rhizome/app/presentation/controller/InsertEmployeeConfirmController.java
index 7c61786..144f2af 100644
--- a/EM-System/src/main/java/com/example/rhizome/app/presentation/controller/InsertEmployeeConfirmController.java
+++ b/EM-System/src/main/java/com/example/rhizome/app/presentation/controller/InsertEmployeeConfirmController.java
@@ -110,6 +110,17 @@ public class InsertEmployeeConfirmController {
// 登録画面に遷移
return TransitionTargetPageNameKeyword.INSERT_EMPLOYEE_INPUT_HTML;
}
+
+
+ final String DEPARTMENT_VALID ="部署情報の組み合わせが違います。";
+ if(!searchDepartment.searchAllDepartmentTable(
+ insertEmployeeForm.getIdHeadquarters()
+ ,insertEmployeeForm.getIdDepartment()
+ ,insertEmployeeForm.getIdDivision())) {
+ model.addAttribute(PageReturnAttributeKeyword.MESSAGE_ERROR, new MessageForm(DEPARTMENT_VALID));
+ model.addAttribute(PageReturnAttributeKeyword.INSERT_EMPLOYEE_FORM, insertEmployeeForm);
+ return TransitionTargetPageNameKeyword.INSERT_EMPLOYEE_INPUT_HTML;
+ }
// 登録確認ページに遷移
model.addAttribute(PageReturnAttributeKeyword.INSERT_EMPLOYEE_FORM, insertEmployeeForm);
diff --git a/EM-System/src/main/java/com/example/rhizome/app/presentation/controller/InsertEmployeeController.java b/EM-System/src/main/java/com/example/rhizome/app/presentation/controller/InsertEmployeeController.java
index 35ae327..deabb66 100644
--- a/EM-System/src/main/java/com/example/rhizome/app/presentation/controller/InsertEmployeeController.java
+++ b/EM-System/src/main/java/com/example/rhizome/app/presentation/controller/InsertEmployeeController.java
@@ -95,6 +95,16 @@ public class InsertEmployeeController {
// 登録画面に遷移
return TransitionTargetPageNameKeyword.INSERT_EMPLOYEE_INPUT_HTML;
}
+
+ final String DEPARTMENT_VALID ="部署情報の組み合わせが違います。";
+ if(!searchDepartment.searchAllDepartmentTable(
+ insertEmployeeForm.getIdHeadquarters()
+ ,insertEmployeeForm.getIdDepartment()
+ ,insertEmployeeForm.getIdDivision())) {
+ model.addAttribute(PageReturnAttributeKeyword.MESSAGE_ERROR, new MessageForm(DEPARTMENT_VALID));
+ model.addAttribute(PageReturnAttributeKeyword.INSERT_EMPLOYEE_FORM, insertEmployeeForm);
+ return TransitionTargetPageNameKeyword.INSERT_EMPLOYEE_INPUT_HTML;
+ }
// 登録処理
registerEmployee.registerEmployee(InsertEmployeeForm.convertTo(insertEmployeeForm));
diff --git a/EM-System/src/main/java/com/example/rhizome/app/presentation/controller/InsertEmployeeInputController.java b/EM-System/src/main/java/com/example/rhizome/app/presentation/controller/InsertEmployeeInputController.java
index 63c235f..0601db0 100644
--- a/EM-System/src/main/java/com/example/rhizome/app/presentation/controller/InsertEmployeeInputController.java
+++ b/EM-System/src/main/java/com/example/rhizome/app/presentation/controller/InsertEmployeeInputController.java
@@ -2,7 +2,6 @@ package com.example.rhizome.app.presentation.controller;
import static com.example.rhizome.app.presentation.controller.pageproperty.TransitionTargetPageNameKeyword.*;
-import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -11,12 +10,9 @@ import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
import com.example.rhizome.aop.aspect.PermissionCheck;
import com.example.rhizome.aop.aspect.SessionCheck;
@@ -24,9 +20,7 @@ import com.example.rhizome.app.domain.service.RegisterEmployee;
import com.example.rhizome.app.domain.service.SearchDepartment;
import com.example.rhizome.app.presentation.controller.pageproperty.PageReturnAttributeKeyword;
import com.example.rhizome.app.presentation.controller.pageproperty.TransitionTargetPageNameKeyword;
-import com.example.rhizome.app.presentation.form.DepartmentInfoForm;
-import com.example.rhizome.app.presentation.form.DivisionInfoForm;
-import com.example.rhizome.app.presentation.form.HeadquartersInfoForm;
+import com.example.rhizome.app.presentation.form.DepartmentForm;
import com.example.rhizome.app.presentation.form.InsertEmployeeForm;
/**
@@ -73,7 +67,7 @@ public class InsertEmployeeInputController {
try {
// 部署コードリストを作成し、画面に返す値としてセット
model.addAttribute(PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST
- ,HeadquartersInfoForm.convertFrom(
+ ,DepartmentForm.convertFrom(
searchDepartment.searchAllDepartmentTable()));
// パラメータをセット
@@ -94,45 +88,75 @@ public class InsertEmployeeInputController {
return TransitionTargetPageNameKeyword.ERROR_HTML;
}
}
+ //プルダウン絞り込み実装用
+// @SessionCheck
+// @PermissionCheck
+// @RequestMapping(value = INSERT_EMPLOYEE_INPUT, method = RequestMethod.POST)
+// public String insertInput(InsertEmployeeForm insertEmployeeForm, Model model) {
+//
+// try {
+// // 部署コードリストを作成し、画面に返す値としてセット
+// model.addAttribute(PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST
+// ,HeadquartersInfoForm.convertFrom(
+// searchDepartment.searchAllDepartmentTable()));
+//
+// // パラメータをセット
+// model.addAttribute(PageReturnAttributeKeyword.INSERT_EMPLOYEE_FORM, insertEmployeeForm);
+//
+// // 登録画面に遷移
+// return TransitionTargetPageNameKeyword.INSERT_EMPLOYEE_INPUT_HTML;
+//
+// } catch (Exception e) {
+// // ログイン情報の破棄
+// httpSession.invalidate();
+//
+// e.printStackTrace();
+//
+// // エラーログ出力
+// LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e);
+// // エラー画面遷移
+// return TransitionTargetPageNameKeyword.ERROR_HTML;
+// }
+// }
- @GetMapping("insertEmployeeInput/searchDepartment" )
- @ResponseBody
- public ListdepartmentsByHeadquarters(
- @RequestParam("id_headquarters")Integer idHeadquarters){
- System.out.println("koko");
-
- List departmentByHeadquarters=
- DepartmentInfoForm.convertFrom(
- searchDepartment.searchByIdHeadquarters(idHeadquarters));
- System.out.println("2");
- return departmentByHeadquarters
- .stream()
- .map(DepartmentInfoForm-> new DepartmentInfoForm(
- DepartmentInfoForm.getIdDepartment(),
- DepartmentInfoForm.getNmDepartment()))
- .distinct()
- .toList();
-
-
- }
- @GetMapping("/insertEmployeeInput/searchDepartment/searchDivision")
- @ResponseBody
- public ListdivisionBydepartment(
- @RequestParam("idDepartment")Integer idDepartment){
- List divisionBydepartment=
- DivisionInfoForm.convertFrom(
- searchDepartment.searchByIdDepartment(idDepartment));
-
- return divisionBydepartment
- .stream()
- .map(DivisionInfoForm-> new DivisionInfoForm(
- DivisionInfoForm.getIdDivision(),
- DivisionInfoForm.getNmDivision()))
- .distinct()
- .toList();
-
-
- }
+// @GetMapping("insertEmployeeInput/searchDepartment" )
+// @ResponseBody
+// public ListdepartmentsByHeadquarters(
+// @RequestParam("id_headquarters")Integer idHeadquarters){
+// System.out.println("koko");
+//
+// List departmentByHeadquarters=
+// DepartmentInfoForm.convertFrom(
+// searchDepartment.searchByIdHeadquarters(idHeadquarters));
+// System.out.println("2");
+// return departmentByHeadquarters
+// .stream()
+// .map(DepartmentInfoForm-> new DepartmentInfoForm(
+// DepartmentInfoForm.getIdDepartment(),
+// DepartmentInfoForm.getNmDepartment()))
+// .distinct()
+// .toList();
+//
+//
+// }
+// @GetMapping("/insertEmployeeInput/searchDepartment/searchDivision")
+// @ResponseBody
+// public ListdivisionBydepartment(
+// @RequestParam("idDepartment")Integer idDepartment){
+// List divisionBydepartment=
+// DivisionInfoForm.convertFrom(
+// searchDepartment.searchByIdDepartment(idDepartment));
+//
+// return divisionBydepartment
+// .stream()
+// .map(DivisionInfoForm-> new DivisionInfoForm(
+// DivisionInfoForm.getIdDivision(),
+// DivisionInfoForm.getNmDivision()))
+// .distinct()
+// .toList();
+//
+//
+// }
}
diff --git a/EM-System/src/main/java/com/example/rhizome/app/presentation/form/DepartmentInfoForm.java b/EM-System/src/main/java/com/example/rhizome/app/presentation/form/DepartmentInfoForm.java
new file mode 100644
index 0000000..99f6367
--- /dev/null
+++ b/EM-System/src/main/java/com/example/rhizome/app/presentation/form/DepartmentInfoForm.java
@@ -0,0 +1,37 @@
+package com.example.rhizome.app.presentation.form;
+
+import java.util.List;
+
+import com.example.rhizome.app.domain.model.Department;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DepartmentInfoForm {
+ /**
+ * 部ID
+ */
+
+ private Integer idDepartment;
+ /**
+ * 部名
+ */
+
+ private String nmDepartment;
+
+
+ public static DepartmentInfoForm convertFrom(Department department) {
+ return new DepartmentInfoForm(
+ department.getIdDepartment(),
+ department.getNmDepartment()
+ );
+ }
+ public static List convertFrom(ListDepartmentList
+ ) {
+ return DepartmentList.stream().map(DepartmentInfoForm::convertFrom).toList();
+ }
+}
\ No newline at end of file
diff --git a/EM-System/src/main/java/com/example/rhizome/app/presentation/form/DivisionInfoForm.java b/EM-System/src/main/java/com/example/rhizome/app/presentation/form/DivisionInfoForm.java
new file mode 100644
index 0000000..2a0028e
--- /dev/null
+++ b/EM-System/src/main/java/com/example/rhizome/app/presentation/form/DivisionInfoForm.java
@@ -0,0 +1,35 @@
+package com.example.rhizome.app.presentation.form;
+
+import java.util.List;
+
+import com.example.rhizome.app.domain.model.Division;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DivisionInfoForm {
+ /**
+ * 課ID
+ */
+ private Integer idDivision;
+ /**
+ * 課名
+ */
+ private String nmDivision;
+
+
+ public static DivisionInfoForm convertFrom(Division division) {
+ return new DivisionInfoForm(
+ division.getIdDivision(),
+ division.getNmDivision()
+ );
+ }
+ public static List convertFrom(ListdivisionList
+ ) {
+ return divisionList.stream().map(DivisionInfoForm::convertFrom).toList();
+ }
+}
\ No newline at end of file
diff --git a/EM-System/src/main/java/com/example/rhizome/app/presentation/form/HeadquartersInfoForm.java b/EM-System/src/main/java/com/example/rhizome/app/presentation/form/HeadquartersInfoForm.java
new file mode 100644
index 0000000..64ef35e
--- /dev/null
+++ b/EM-System/src/main/java/com/example/rhizome/app/presentation/form/HeadquartersInfoForm.java
@@ -0,0 +1,36 @@
+package com.example.rhizome.app.presentation.form;
+
+import java.util.List;
+
+import com.example.rhizome.app.domain.model.AllDepartmentInfo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class HeadquartersInfoForm {
+ /**
+ * 本部ID
+ */
+ private Integer idHeadquarters;
+ /**
+ * 本部名
+ */
+ private String nmHeadquarters;
+
+
+
+ public static HeadquartersInfoForm convertFrom(AllDepartmentInfo allDepartmentInfo) {
+ return new HeadquartersInfoForm(
+ allDepartmentInfo.getHeadquarters().getIdHeadquarters(),
+ allDepartmentInfo.getHeadquarters().getNmHeadquarters()
+ );
+ }
+ public static List convertFrom(ListallDepartmentInfoList
+ ) {
+ return allDepartmentInfoList.stream().map(HeadquartersInfoForm::convertFrom).toList();
+ }
+}
\ No newline at end of file
diff --git a/EM-System/src/main/resources/templates/insertEmployeeInput.html b/EM-System/src/main/resources/templates/insertEmployeeInput.html
index 3dc68ff..e40c173 100644
--- a/EM-System/src/main/resources/templates/insertEmployeeInput.html
+++ b/EM-System/src/main/resources/templates/insertEmployeeInput.html
@@ -166,22 +166,44 @@
|
-
+
+
+
|
|
-
+
+
+
+
+
+
+
|
@@ -194,46 +216,47 @@
メニューに戻る