--- src/main/java/kcc/web/MainController.java
+++ src/main/java/kcc/web/MainController.java
... | ... | @@ -10,6 +10,7 @@ |
| 10 | 10 |
import java.util.HashMap; |
| 11 | 11 |
import java.util.HashSet; |
| 12 | 12 |
import java.util.Iterator; |
| 13 |
+import java.util.LinkedList; |
|
| 13 | 14 |
import java.util.List; |
| 14 | 15 |
import java.util.Locale; |
| 15 | 16 |
import java.util.Map; |
... | ... | @@ -725,54 +726,40 @@ |
| 725 | 726 |
String depth1MenuNm = (String) paramMap.get("depth1MenuNm");
|
| 726 | 727 |
String depth2MenuNm = (String) paramMap.get("depth2MenuNm");
|
| 727 | 728 |
String depth3MenuNm = (String) paramMap.get("depth3MenuNm");
|
| 729 |
+ String proFn = (String) paramMap.get("proFn");
|
|
| 728 | 730 |
|
| 729 | 731 |
// 2. 전체 메뉴 조회 |
| 730 | 732 |
List<MenuManageJTreeVO> menuResultList = |
| 731 | 733 |
menuCreateManageService.selectMenuListJtree(new MenuManageJTreeVO()); |
| 732 | 734 |
|
| 733 |
- // 3. depth1 |
|
| 734 |
- List<MenuManageJTreeVO> depth1List = menuResultList.stream() |
|
| 735 |
- .filter(menu -> "1".equals(menu.getUpperMenuId())) |
|
| 736 |
- .peek(menu -> menu.setUrl("/web/content.do?proFn=" + menu.getMenuNo()))
|
|
| 737 |
- .collect(Collectors.toList()); |
|
| 735 |
+ // proFn(프로그램파일명)으로 현재 메뉴를 찾아 상위메뉴(1:사용자메뉴, 2:사용자메뉴(영문))까지 경로 구성 |
|
| 736 |
+ List<MenuManageJTreeVO> menuPath = getSubMenuPath(menuResultList, proFn); |
|
| 738 | 737 |
|
| 739 |
- MenuManageJTreeVO selectedDepth1 = depth1List.stream() |
|
| 740 |
- .filter(menu -> depth1MenuNm != null && |
|
| 741 |
- depth1MenuNm.equalsIgnoreCase(menu.getMenuNm())) |
|
| 742 |
- .findFirst() |
|
| 743 |
- .orElse(null); |
|
| 738 |
+ // 사용자메뉴 : 1, 사용자메뉴(영문) : 2 |
|
| 739 |
+ final String rootMenuNo; |
|
| 740 |
+ if (!menuPath.isEmpty()) {
|
|
| 741 |
+ rootMenuNo = menuPath.get(0).getUpperMenuId(); |
|
| 742 |
+ } else {
|
|
| 743 |
+ rootMenuNo = "ENG".equals(paramMap.get("menuUserType")) ? "2" : "1";
|
|
| 744 |
+ } |
|
| 745 |
+ |
|
| 746 |
+ // 3. depth1 |
|
| 747 |
+ List<MenuManageJTreeVO> depth1List = getSubMenuChildList(menuResultList, rootMenuNo); |
|
| 748 |
+ MenuManageJTreeVO selectedDepth1 = getSubMenuSelected(depth1List, menuPath, 0, depth1MenuNm); |
|
| 744 | 749 |
|
| 745 | 750 |
// 4. depth2 |
| 746 | 751 |
List<MenuManageJTreeVO> depth2List = new ArrayList<>(); |
| 747 |
- |
|
| 748 | 752 |
if (selectedDepth1 != null) {
|
| 749 |
- depth2List = menuResultList.stream() |
|
| 750 |
- .filter(menu -> selectedDepth1.getMenuNo().equals(menu.getUpperMenuId())) |
|
| 751 |
- .peek(menu -> menu.setUrl("/web/content.do?proFn=" + menu.getMenuNo()))
|
|
| 752 |
- .collect(Collectors.toList()); |
|
| 753 |
+ depth2List = getSubMenuChildList(menuResultList, selectedDepth1.getMenuNo()); |
|
| 753 | 754 |
} |
| 754 |
- |
|
| 755 |
- MenuManageJTreeVO selectedDepth2 = depth2List.stream() |
|
| 756 |
- .filter(menu -> depth2MenuNm != null && |
|
| 757 |
- depth2MenuNm.equalsIgnoreCase(menu.getMenuNm())) |
|
| 758 |
- .findFirst() |
|
| 759 |
- .orElse(null); |
|
| 755 |
+ MenuManageJTreeVO selectedDepth2 = getSubMenuSelected(depth2List, menuPath, 1, depth2MenuNm); |
|
| 760 | 756 |
|
| 761 | 757 |
// 5. depth3 |
| 762 | 758 |
List<MenuManageJTreeVO> depth3List = new ArrayList<>(); |
| 763 |
- |
|
| 764 | 759 |
if (selectedDepth2 != null) {
|
| 765 |
- depth3List = menuResultList.stream() |
|
| 766 |
- .filter(menu -> selectedDepth2.getMenuNo().equals(menu.getUpperMenuId())) |
|
| 767 |
- .peek(menu -> menu.setUrl("/web/content.do?proFn=" + menu.getMenuNo()))
|
|
| 768 |
- .collect(Collectors.toList()); |
|
| 760 |
+ depth3List = getSubMenuChildList(menuResultList, selectedDepth2.getMenuNo()); |
|
| 769 | 761 |
} |
| 770 |
- |
|
| 771 |
- MenuManageJTreeVO selectedDepth3 = depth3List.stream() |
|
| 772 |
- .filter(menu -> depth3MenuNm != null && |
|
| 773 |
- depth3MenuNm.equalsIgnoreCase(menu.getMenuNm())) |
|
| 774 |
- .findFirst() |
|
| 775 |
- .orElse(null); |
|
| 762 |
+ MenuManageJTreeVO selectedDepth3 = getSubMenuSelected(depth3List, menuPath, 2, depth3MenuNm); |
|
| 776 | 763 |
|
| 777 | 764 |
// 6. 결과 |
| 778 | 765 |
Map<String, Object> resultMap = new HashMap<>(); |
... | ... | @@ -786,7 +773,61 @@ |
| 786 | 773 |
RestResponse restResponse = new RestResponse(HttpStatus.OK, "", resultMap); |
| 787 | 774 |
return ResponseEntity.ok(restResponse); |
| 788 | 775 |
} |
| 789 |
- |
|
| 776 |
+ |
|
| 777 |
+ // proFn 으로 찾은 메뉴의 경로(1depth ~ 현재메뉴), 못 찾으면 빈 리스트 |
|
| 778 |
+ private List<MenuManageJTreeVO> getSubMenuPath(List<MenuManageJTreeVO> menuResultList, String proFn) {
|
|
| 779 |
+ LinkedList<MenuManageJTreeVO> menuPath = new LinkedList<>(); |
|
| 780 |
+ if (proFn == null || proFn.isEmpty() || "dir".equals(proFn)) {
|
|
| 781 |
+ return menuPath; |
|
| 782 |
+ } |
|
| 783 |
+ |
|
| 784 |
+ MenuManageJTreeVO current = menuResultList.stream() |
|
| 785 |
+ .filter(menu -> proFn.equals(menu.getProgrmFileNm())) |
|
| 786 |
+ .findFirst() |
|
| 787 |
+ .orElse(null); |
|
| 788 |
+ |
|
| 789 |
+ while (current != null && menuPath.size() < 10) {
|
|
| 790 |
+ menuPath.addFirst(current); |
|
| 791 |
+ String upperMenuId = current.getUpperMenuId(); |
|
| 792 |
+ if ("1".equals(upperMenuId) || "2".equals(upperMenuId)) {
|
|
| 793 |
+ return menuPath; |
|
| 794 |
+ } |
|
| 795 |
+ current = menuResultList.stream() |
|
| 796 |
+ .filter(menu -> upperMenuId != null && upperMenuId.equals(menu.getMenuNo())) |
|
| 797 |
+ .findFirst() |
|
| 798 |
+ .orElse(null); |
|
| 799 |
+ } |
|
| 800 |
+ return new LinkedList<>(); |
|
| 801 |
+ } |
|
| 802 |
+ |
|
| 803 |
+ private List<MenuManageJTreeVO> getSubMenuChildList(List<MenuManageJTreeVO> menuResultList, String upperMenuId) {
|
|
| 804 |
+ return menuResultList.stream() |
|
| 805 |
+ .filter(menu -> upperMenuId.equals(menu.getUpperMenuId())) |
|
| 806 |
+ .peek(menu -> menu.setUrl("/web/content.do?proFn="
|
|
| 807 |
+ + (menu.getProgrmFileNm() == null || "dir".equals(menu.getProgrmFileNm()) |
|
| 808 |
+ ? menu.getMenuNo() : menu.getProgrmFileNm()))) |
|
| 809 |
+ .collect(Collectors.toList()); |
|
| 810 |
+ } |
|
| 811 |
+ |
|
| 812 |
+ // 경로가 있으면 메뉴번호로, 없으면 메뉴명으로 선택 메뉴를 찾는다 |
|
| 813 |
+ private MenuManageJTreeVO getSubMenuSelected(List<MenuManageJTreeVO> depthList, List<MenuManageJTreeVO> menuPath, |
|
| 814 |
+ int depthIdx, String menuNm) {
|
|
| 815 |
+ if (!menuPath.isEmpty()) {
|
|
| 816 |
+ if (menuPath.size() <= depthIdx) {
|
|
| 817 |
+ return null; |
|
| 818 |
+ } |
|
| 819 |
+ String menuNo = menuPath.get(depthIdx).getMenuNo(); |
|
| 820 |
+ return depthList.stream() |
|
| 821 |
+ .filter(menu -> menuNo.equals(menu.getMenuNo())) |
|
| 822 |
+ .findFirst() |
|
| 823 |
+ .orElse(null); |
|
| 824 |
+ } |
|
| 825 |
+ return depthList.stream() |
|
| 826 |
+ .filter(menu -> menuNm != null && menuNm.equalsIgnoreCase(menu.getMenuNm())) |
|
| 827 |
+ .findFirst() |
|
| 828 |
+ .orElse(null); |
|
| 829 |
+ } |
|
| 830 |
+ |
|
| 790 | 831 |
|
| 791 | 832 |
/** |
| 792 | 833 |
* 사용자 좌측 매뉴 |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?