diff --git a/pom.xml b/pom.xml
index 24be8c6..48a93e1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,6 +17,7 @@
Demo project for Spring Boot
17
+ 1.18.34
diff --git a/src/main/java/com/example/rhizome/app/domain/model/SearchConditionDepartment.java b/src/main/java/com/example/rhizome/app/domain/model/SearchConditionDepartment.java
index 1e365eb..006ae20 100644
--- a/src/main/java/com/example/rhizome/app/domain/model/SearchConditionDepartment.java
+++ b/src/main/java/com/example/rhizome/app/domain/model/SearchConditionDepartment.java
@@ -15,7 +15,15 @@ public class SearchConditionDepartment {
private final Integer idDepartment;
/**
* 部署名
+ *
*/
private final String nmDepartment;
+
+
+
+ public static SearchConditionDepartment convertTo(SearchConditionDepartment searchConditionDepartment) {
+ // TODO 自動生成されたメソッド・スタブ
+ return null;
+ }
}
diff --git a/src/main/java/com/example/rhizome/app/domain/service/SearchDepartment.java b/src/main/java/com/example/rhizome/app/domain/service/SearchDepartment.java
index 572dcee..26e2aab 100644
--- a/src/main/java/com/example/rhizome/app/domain/service/SearchDepartment.java
+++ b/src/main/java/com/example/rhizome/app/domain/service/SearchDepartment.java
@@ -1,10 +1,10 @@
package com.example.rhizome.app.domain.service;
+import java.util.List;
+
import com.example.rhizome.app.domain.model.Department;
import com.example.rhizome.app.domain.model.SearchConditionDepartment;
-import java.util.List;
-
public interface SearchDepartment {
List selectAll();
diff --git a/src/main/java/com/example/rhizome/app/domain/service/SearchDepartmentInfo.java b/src/main/java/com/example/rhizome/app/domain/service/SearchDepartmentInfo.java
new file mode 100644
index 0000000..7cb4503
--- /dev/null
+++ b/src/main/java/com/example/rhizome/app/domain/service/SearchDepartmentInfo.java
@@ -0,0 +1,7 @@
+package com.example.rhizome.app.domain.service;
+
+public interface SearchDepartmentInfo {
+// List selectAll();
+//
+// List searchBy(SearchConditionEmployee searchConditionEmployee);
+}
diff --git a/src/main/java/com/example/rhizome/app/domain/service/SearchDepartmentInfoImpl.java b/src/main/java/com/example/rhizome/app/domain/service/SearchDepartmentInfoImpl.java
new file mode 100644
index 0000000..e8129bf
--- /dev/null
+++ b/src/main/java/com/example/rhizome/app/domain/service/SearchDepartmentInfoImpl.java
@@ -0,0 +1,57 @@
+//package com.example.rhizome.app.domain.service;
+//
+//import java.util.List;
+//
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.data.jpa.domain.Specification;
+//import org.springframework.stereotype.Service;
+//import org.springframework.transaction.annotation.Transactional;
+//
+//import com.example.rhizome.app.domain.model.EmployeeInfo;
+//import com.example.rhizome.app.domain.model.SearchConditionEmployee;
+//import com.example.rhizome.app.infra.entity.EmployeeDepartmentEntity;
+//import com.example.rhizome.app.infra.repository.EmployeeInfoRepository;
+//
+//@Service
+//@Transactional
+//public class SearchDepartmentInfoImpl implements SearchDepartmentInfo{
+//
+// DepartmentInfoRepository departmentInfoRepository;
+//
+// @Autowired
+// public SearchDepartmentInfoImpl(EmployeeInfoRepository employeeInfoRepository) {
+// this.departmentInfoRepository = departmentInfoRepository;
+// }
+//
+//
+// /**
+// * EmployeeInfo (employee join department) のレコードを全件取得
+// *
+// * @return 取得したレコード全件
+// */
+// public List selectAll() {
+//
+// return EmployeeDepartmentEntity.createEmployeeInfoList(departmentInfoRepository.findAll());
+//
+// }
+//
+// /**
+// * SearchConditionEmployee の情報を元に EmployeeInfo (employee join department) のレコードを取得
+// *
+// * @param searchConditionEmployee 検索条件
+// * @return 検索結果のレコードリスト
+// */
+// public List searchBy(SearchConditionEmployee searchConditionEmployee) {
+// // 動的に検索条件を絞り込む
+// // Specification は Criteria API の Predicate をラップしたもの
+// return EmployeeDepartmentEntity
+// .createEmployeeInfoList(
+// employeeInfoRepository.findAll(Specification
+// .where(EmployeeInfoRepository.idEmployeeEqual(searchConditionEmployee.getIdEmployee()))
+// .and(EmployeeInfoRepository.nmEmployeeEqual(searchConditionEmployee.getNmEmployee()))
+//
+// )
+// );
+//
+// }
+// }
diff --git a/src/main/java/com/example/rhizome/app/presentation/controller/InsertDepartmentInputController.java b/src/main/java/com/example/rhizome/app/presentation/controller/InsertDepartmentInputController.java
new file mode 100644
index 0000000..f85f723
--- /dev/null
+++ b/src/main/java/com/example/rhizome/app/presentation/controller/InsertDepartmentInputController.java
@@ -0,0 +1,85 @@
+package com.example.rhizome.app.presentation.controller;
+
+import static com.example.rhizome.app.presentation.controller.pageproperty.TransitionTargetPageNameKeyword.*;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.servlet.http.HttpSession;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import com.example.rhizome.aop.aspect.PermissionCheck;
+import com.example.rhizome.aop.aspect.SessionCheck;
+import com.example.rhizome.app.domain.service.RegisterEmployee;
+import com.example.rhizome.app.domain.service.SearchDepartment;
+import com.example.rhizome.app.presentation.controller.pageproperty.TransitionTargetPageNameKeyword;
+import com.example.rhizome.app.presentation.form.InsertEmployeeForm;
+
+
+/**
+ * 登録画面表示用コントローラ
+ */
+@Controller
+public class InsertDepartmentInputController {
+
+
+ // ログ出力用インスタンス
+ private final static Logger LOGGER = Logger.getLogger(InsertEmployeeInputController.class.getName());
+
+ // エラーメッセージ用の定数フィールド
+ private final static String SEVERE_ERROR_MESSAGE = "エラーが発生しました!";
+
+ HttpSession httpSession;
+ RegisterEmployee registerEmployee;
+ SearchDepartment searchDepartment;
+
+ @Autowired
+ public InsertDepartmentInputController(HttpSession httpSession, RegisterEmployee registerEmployee, SearchDepartment searchDepartment) {
+ this.httpSession = httpSession;
+ this.registerEmployee = registerEmployee;
+ this.searchDepartment = searchDepartment;
+ }
+
+ @ModelAttribute
+ public InsertEmployeeForm insertEmployeeForm() {
+ return new InsertEmployeeForm();
+ }
+
+
+ /**
+ * 登録画面表示処理
+ *
+ * @param insertEmployeeForm 登録画面のフォーム
+ * @param model ビューにデータを渡すためのコンテナ
+ * @return 遷移先の画面
+ */
+ @SessionCheck
+ @PermissionCheck
+ @RequestMapping(value = INSERT_DEPARTMENT_INPUT, method = RequestMethod.POST)
+ public String insertInput() {
+
+ try {
+
+
+
+ // 登録画面に遷移
+ return TransitionTargetPageNameKeyword.INSERT_DEPARTMENT_INPUT_HTML;
+
+ } catch (Exception e) {
+ // ログイン情報の破棄
+ httpSession.invalidate();
+
+ e.printStackTrace();
+
+ // エラーログ出力
+ LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e);
+ // エラー画面遷移
+ return TransitionTargetPageNameKeyword.ERROR_HTML;
+ }
+ }
+ }
diff --git a/src/main/java/com/example/rhizome/app/presentation/controller/SelectDepartmentController.java b/src/main/java/com/example/rhizome/app/presentation/controller/SelectDepartmentController.java
new file mode 100644
index 0000000..16b8db5
--- /dev/null
+++ b/src/main/java/com/example/rhizome/app/presentation/controller/SelectDepartmentController.java
@@ -0,0 +1,132 @@
+package com.example.rhizome.app.presentation.controller;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+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.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import com.example.rhizome.aop.aspect.PermissionCheck;
+import com.example.rhizome.aop.aspect.SessionCheck;
+import com.example.rhizome.app.domain.model.SearchConditionDepartment;
+import com.example.rhizome.app.domain.service.SearchDepartment;
+import com.example.rhizome.app.domain.service.SearchEmployeeInfo;
+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.DepartmentForm;
+import com.example.rhizome.app.presentation.form.SearchConditionDepartmentForm;
+
+
+@Controller
+public class SelectDepartmentController {
+
+ // ログ出力用インスタンス
+ private final static Logger LOGGER = Logger.getLogger(SelectEmployeeController.class.getName());
+ // エラーメッセージ用の定数フィールド
+ private final static String SEVERE_ERROR_MESSAGE = "エラーが発生しました!";
+
+ HttpSession httpSession;
+ SearchDepartment searchDepartment;
+ SearchEmployeeInfo searchEmployeeInfo;
+
+ @Autowired
+ public SelectDepartmentController(HttpSession httpSession, SearchDepartment searchDepartment, SearchEmployeeInfo searchEmployeeInfo) {
+ this.httpSession = httpSession;
+ this.searchDepartment = searchDepartment;
+ this.searchEmployeeInfo = searchEmployeeInfo;
+ }
+
+ @ModelAttribute
+ public SearchConditionDepartmentForm searchConditionDepartmentForm() {
+ return new SearchConditionDepartmentForm();
+ }
+
+
+ /**
+ * 部署検索画面表示処理コントローラ
+ *
+ * @param searchConditionEmployeeForm 検索画面のフォーム
+ * @param model ビューにデータを渡すためのコンテナ
+ * @return 遷移先の画面
+ */
+
+ @PermissionCheck
+ @SessionCheck
+ @RequestMapping(value = TransitionTargetPageNameKeyword.SELECT_DEPARTMENT_INFO, method = RequestMethod.POST)
+ public String select(SearchConditionDepartment searchConditionDepartment, Model model) {
+
+ try {
+
+ // 部署一覧を取得し、画面に返す用のクラスに詰め替える
+ // 作成した部署一覧をセット
+// model.addAttribute(
+// PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST,
+// DepartmentForm.convertFrom(searchDepartment.selectAll())
+// );
+
+ // 検索条件を元に検索を実施
+ // 取得した EmployeeInfo( employee + department )の情報を画面に返す用の型に詰め替えてセット
+ model.addAttribute(
+ PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST,
+ DepartmentForm.convertFrom(searchDepartment.searchByWithLike(searchConditionDepartment)));
+ // 検索ページに遷移
+ return TransitionTargetPageNameKeyword.SELECT_DEPARTMENT_HTML;
+
+
+ } catch (Exception e) {
+ // ログイン情報の破棄
+ httpSession.invalidate();
+
+ e.printStackTrace();
+
+ // エラーログ出力
+ LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e);
+ // エラー画面遷移
+ return TransitionTargetPageNameKeyword.ERROR_HTML;
+ }
+
+ }
+
+
+
+ @PermissionCheck
+ @SessionCheck
+ @RequestMapping(value = TransitionTargetPageNameKeyword.SELECT_DEPARTMENT, method = RequestMethod.POST)
+ public String select1(SearchConditionDepartment searchConditionDepartment, Model model) {
+
+ try {
+
+ model.addAttribute(
+ PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST,
+ DepartmentForm.convertFrom(searchDepartment.selectAll())
+ );
+
+ // 検索ページに遷移
+ return TransitionTargetPageNameKeyword.SELECT_DEPARTMENT_HTML;
+
+
+ } catch (Exception e) {
+ // ログイン情報の破棄
+ httpSession.invalidate();
+
+ e.printStackTrace();
+
+ // エラーログ出力
+ LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e);
+ // エラー画面遷移
+ return TransitionTargetPageNameKeyword.ERROR_HTML;
+ }
+
+ }
+}
+
+
+
+
+
diff --git a/src/main/java/com/example/rhizome/app/presentation/controller/SelectEmployeeController.java b/src/main/java/com/example/rhizome/app/presentation/controller/SelectEmployeeController.java
index fa41f62..d2dd75f 100644
--- a/src/main/java/com/example/rhizome/app/presentation/controller/SelectEmployeeController.java
+++ b/src/main/java/com/example/rhizome/app/presentation/controller/SelectEmployeeController.java
@@ -1,5 +1,17 @@
package com.example.rhizome.app.presentation.controller;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+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.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
import com.example.rhizome.aop.aspect.PermissionCheck;
import com.example.rhizome.aop.aspect.SessionCheck;
import com.example.rhizome.app.domain.service.SearchDepartment;
@@ -9,16 +21,6 @@ import com.example.rhizome.app.presentation.controller.pageproperty.TransitionTa
import com.example.rhizome.app.presentation.form.DepartmentForm;
import com.example.rhizome.app.presentation.form.EmployeeInfoForm;
import com.example.rhizome.app.presentation.form.SearchConditionEmployeeForm;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.ModelAttribute;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-
-import javax.servlet.http.HttpSession;
-import java.util.logging.Level;
-import java.util.logging.Logger;
/**
* 社員検索画面用コントローラ リスト全件表示、検索表示、更新、削除が可能
@@ -70,7 +72,9 @@ public class SelectEmployeeController {
// 検索条件を元に検索を実施
// 取得した EmployeeInfo( employee + department )の情報を画面に返す用の型に詰め替えてセット
- model.addAttribute(PageReturnAttributeKeyword.EMPLOYEE_INFO_FORM_LIST, EmployeeInfoForm.convertFrom(searchEmployeeInfo.searchBy(SearchConditionEmployeeForm.convertTo(searchConditionEmployeeForm))));
+ model.addAttribute(
+ PageReturnAttributeKeyword.EMPLOYEE_INFO_FORM_LIST,
+ EmployeeInfoForm.convertFrom(searchEmployeeInfo.searchBy(SearchConditionEmployeeForm.convertTo(searchConditionEmployeeForm))));
// 検索ページに遷移
return TransitionTargetPageNameKeyword.SELECT_EMPLOYEE_HTML;
diff --git a/src/main/java/com/example/rhizome/app/presentation/controller/pageproperty/PageReturnAttributeKeyword.java b/src/main/java/com/example/rhizome/app/presentation/controller/pageproperty/PageReturnAttributeKeyword.java
index 5e9ec04..eb57db8 100644
--- a/src/main/java/com/example/rhizome/app/presentation/controller/pageproperty/PageReturnAttributeKeyword.java
+++ b/src/main/java/com/example/rhizome/app/presentation/controller/pageproperty/PageReturnAttributeKeyword.java
@@ -14,5 +14,6 @@ public class PageReturnAttributeKeyword {
public static final String LOGIN_INFO_FORM = "loginInfoForm";
public static final String UPDATE_PERSONAL_EMPLOYEE_USER_FORM = "updatePersonalEmployeeUserForm";
public static final String EMPLOYEE_INFO_FORM_LIST = "employeeInfoFormList";
+ public static final String DEPARTMENT_INFO_FORM_LIST = "departmentInfoFormList";
}
diff --git a/src/main/java/com/example/rhizome/app/presentation/controller/pageproperty/TransitionTargetPageNameKeyword.java b/src/main/java/com/example/rhizome/app/presentation/controller/pageproperty/TransitionTargetPageNameKeyword.java
index 90ded96..501ab19 100644
--- a/src/main/java/com/example/rhizome/app/presentation/controller/pageproperty/TransitionTargetPageNameKeyword.java
+++ b/src/main/java/com/example/rhizome/app/presentation/controller/pageproperty/TransitionTargetPageNameKeyword.java
@@ -17,9 +17,11 @@ public class TransitionTargetPageNameKeyword {
// 管理者向け
public static final String MENU_HTML = "menu";
public static final String SELECT_EMPLOYEE_HTML = "selectEmployee";
+ public static final String SELECT_DEPARTMENT_HTML = "selectDepartment";
public static final String INSERT_EMPLOYEE_INPUT_HTML = "insertEmployeeInput";
public static final String INSERT_EMPLOYEE_CONFIRM_HTML = "insertEmployeeConfirm";
public static final String INSERT_EMPLOYEE_RESULT_HTML = "insertEmployeeResult";
+ public static final String INSERT_DEPARTMENT_INPUT_HTML = "/insertDepartmentInput";
public static final String UPDATE_EMPLOYEE_INPUT_HTML = "updateEmployeeInput";
public static final String ERROR_HTML = "error";
@@ -39,8 +41,11 @@ public class TransitionTargetPageNameKeyword {
public static final String INSERT_EMPLOYEE_INPUT = "/insertEmployeeInput";
public static final String INSERT_EMPLOYEE_CONFIRM = "/insertEmployeeConfirm";
public static final String INSERT_EMPLOYEE = "/insertEmployee";
+ public static final String INSERT_DEPARTMENT_INPUT = "/insertDepartmentInput";
public static final String SHOW_MENU = "/showMenu";
public static final String SELECT_EMPLOYEE_INFO = "/selectEmployeeInfo";
+ public static final String SELECT_DEPARTMENT = "/selectDepartment";
+ public static final String SELECT_DEPARTMENT_INFO = "/selectDepartmentInfo";
public static final String SELECT_EMPLOYEE_INFO_FORM_EMPTY = "/selectAll";
public static final String SHOW_UPDATE_EMPLOYEE = "/showUpdateEmployee";
public static final String UPDATE_EMPLOYEE_RESULT = "/updateEmployeeResult";
@@ -66,8 +71,11 @@ public class TransitionTargetPageNameKeyword {
INSERT_EMPLOYEE_INPUT,
INSERT_EMPLOYEE_CONFIRM,
INSERT_EMPLOYEE,
+ INSERT_DEPARTMENT_INPUT,
SHOW_MENU,
SELECT_EMPLOYEE_INFO,
+ SELECT_DEPARTMENT,
+ SELECT_DEPARTMENT_INFO,
SELECT_EMPLOYEE_INFO_FORM_EMPTY,
SHOW_UPDATE_EMPLOYEE,
UPDATE_EMPLOYEE_RESULT
diff --git a/src/main/java/com/example/rhizome/app/presentation/form/SearchConditionDepartmentForm.java b/src/main/java/com/example/rhizome/app/presentation/form/SearchConditionDepartmentForm.java
new file mode 100644
index 0000000..c37b5fc
--- /dev/null
+++ b/src/main/java/com/example/rhizome/app/presentation/form/SearchConditionDepartmentForm.java
@@ -0,0 +1,35 @@
+package com.example.rhizome.app.presentation.form;
+
+import com.example.rhizome.app.domain.model.SearchConditionDepartment;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SearchConditionDepartmentForm {
+
+ private Integer idDepartment;
+
+ private String nmDepartment;
+
+
+
+ public static SearchConditionDepartmentForm convertFrom(SearchConditionDepartment searchConditionDepartment) {
+ return new SearchConditionDepartmentForm(
+ searchConditionDepartment.getIdDepartment(),
+ searchConditionDepartment.getNmDepartment()
+
+ );
+ }
+
+ public static SearchConditionDepartment convertTo(SearchConditionDepartmentForm searchConditionDepartmentForm) {
+ return new SearchConditionDepartment(
+ searchConditionDepartmentForm.getIdDepartment(),
+ searchConditionDepartmentForm.getNmDepartment()
+ );
+
+ }
+}
diff --git a/src/main/java/com/example/rhizome/app/presentation/form/SearchConditionEmployeeForm.java b/src/main/java/com/example/rhizome/app/presentation/form/SearchConditionEmployeeForm.java
index 3a03401..d6f93a8 100644
--- a/src/main/java/com/example/rhizome/app/presentation/form/SearchConditionEmployeeForm.java
+++ b/src/main/java/com/example/rhizome/app/presentation/form/SearchConditionEmployeeForm.java
@@ -1,6 +1,7 @@
package com.example.rhizome.app.presentation.form;
import com.example.rhizome.app.domain.model.SearchConditionEmployee;
+
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 88b15aa..22d6c87 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1,3 +1,3 @@
-spring.datasource.url=jdbc:mysql://localhost:3306/rezodb
+spring.datasource.url=jdbc:mysql://localhost:3306/rezospring
spring.datasource.username=rezouser
spring.datasource.password=Rezo_0000
diff --git a/src/main/resources/templates/insertDepartmentInput.html b/src/main/resources/templates/insertDepartmentInput.html
new file mode 100644
index 0000000..357fa97
--- /dev/null
+++ b/src/main/resources/templates/insertDepartmentInput.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+ 検索
+
+
+
+
+ 新規登録
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/templates/menu.html b/src/main/resources/templates/menu.html
index 6d0ee4a..9d213f8 100644
--- a/src/main/resources/templates/menu.html
+++ b/src/main/resources/templates/menu.html
@@ -34,6 +34,22 @@
+
+
+
+
+
+ 検索条件入力
+
+ ログイン者名:
+
+
+
+
+
+ メニューに戻る
+
+ 検索結果
+
+
+
+
+
+
+
+
+
+
+ | 社員ID |
+ 所属部署 |
+ 操作 |
+
+
+
+
+ |
+ |
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+ 検索結果はありません。
+
+