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 @@ + + + + + + + + + + + + 登録内容確認 + + + +

登録内容確認    +
+ ログイン者名: + +
+

+ +
+ +
+ +
+ + + + + + + + + + + + +
部署ID + +
部署名 + +
+ +
+ 登録内容の編集 | メニューに戻る +
+ + + + + \ 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 @@ + + + + + + + + + + + + 部署登録 + + + +

+ 部署登録    +
+ ログイン者名: + +
+

+
+ +
+ +
+ + + + + + + + + + + + + +
部署ID + +
部署名 + +
+ +
+
+メニューに戻る + + \ 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 @@ + + + + + + + + + + + + 登録内容確認 + + + +

登録内容確認    +
+ ログイン者名: + +
+

+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
社員ID + +
社員名 + +
社員名フリガナ + +
メールアドレス + +
パスワード + +
管理者権限 + + +
所属部署 + +
+ +
+ 登録内容の編集 | メニューに戻る +
+ + + + + \ 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 @@ + + + + + + + + + + + + 社員登録 + + + +

+ 社員登録    +
+ ログイン者名: + +
+

+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
社員ID + +
社員名 + +
社員名フリガナ + +
メールアドレス + +
パスワード + +
※半角英数字をそれぞれ1種類以上含む3-10文字 +
パスワード確認用 + +
管理者権限 + + +
所属部署 + +
+ +
+
+メニューに戻る + + \ 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 + +
部署名 + +
+ + + +
+
+
+メニューに戻る +
+

検索結果

+
+ + + +
+ + + + + + + + + + + + + + + + + +
部署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 + +
社員名 + +
社員名フリガナ + +
メールアドレス + +
所属部署 + +
+ + + +
+
+
+メニューに戻る +
+

検索結果

+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
社員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 @@ + + + + + + + + + + + + 社員情報更新 + + + +

+ 部署情報更新    +
+ ログイン者名: + +
+

+
+
+ +
+ + + + + + + + + + + + +
部署ID + +
部署名 + +
+ +
+
+一覧に戻る + + + + \ 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 @@ + + + + + + + + + + + + 社員情報更新 + + + +

+ 社員情報更新    +
+ ログイン者名: + +
+

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
社員ID + +
社員名 + +
社員名フリガナ + +
メールアドレス + +
パスワード + +
+ + ※半角英数字をそれぞれ1種類以上含む3-10文字 + +
パスワード確認用 + +
管理者権限 + + +
所属部署 + +
+ +
+
+一覧に戻る + + + + \ 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 @@ + + + + + + + + + + + + 社員情報更新 + + + +

+ 社員情報更新    +
+ ログイン者名: + +
+

+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
社員名 + +
社員名フリガナ + +
メールアドレス + +
パスワード + +
+ 更新する場合は入力してください
+ ※半角英数字をそれぞれ1種類以上含む3-10文字
+
パスワード確認 + +
+ +
+ +
+ + \ 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 @@ メニューに戻る - + \ No newline at end of file