Skip to content

Commit ee1f7a5

Browse files
authored
Merge pull request #20 from DeepCodeLogicAI/sangjin
필터링
2 parents 4eadafa + e70add6 commit ee1f7a5

3 files changed

Lines changed: 87 additions & 15 deletions

File tree

legal/BackEnd/src/main/java/com/oracle/Legal/controller/MypageController.java

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,9 @@ public String mypageRootRedirect(
4646
public String mypageMain(
4747
Model model,
4848
@RequestParam(name="page", defaultValue="1") int page,
49-
@RequestParam(name="size", defaultValue="10") int size
49+
@RequestParam(name="size", defaultValue="10") int size,
50+
@RequestParam(name="serviceType", required=false) String serviceType
51+
5052
) {
5153
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
5254
AccountDto loginUser = (AccountDto) auth.getPrincipal();
@@ -55,7 +57,7 @@ public String mypageMain(
5557
int clientCode = loginUser.getClient_code();
5658

5759
HistoryPageDto result =
58-
myPageService.getHistoryPage(clientCode, page, size);
60+
myPageService.getHistoryPage(clientCode, page, size, serviceType);
5961

6062
//최신 이름 가져오기
6163
ClientDto user = clientService.getSingleClient(clientCode);
@@ -66,6 +68,8 @@ public String mypageMain(
6668
model.addAttribute("page", result.getPage());
6769
model.addAttribute("size", result.getSize());
6870
model.addAttribute("totalPages", result.getTotalPages());
71+
model.addAttribute("serviceType", serviceType);
72+
6973

7074
return "mypage/main";
7175
}
@@ -125,23 +129,29 @@ public String clientDel(
125129

126130
//이력 삭제
127131
@PostMapping("/history/delete")
128-
public String delete(@RequestParam(value="selectedKeys", required=false) List<String> selectedKeys) {
132+
public String delete(
133+
@RequestParam(value="selectedKeys", required=false) List<String> selectedKeys,
134+
@RequestParam(name="page", defaultValue="1") int page,
135+
@RequestParam(name="serviceType", required=false) String serviceType
136+
) {
129137
myPageService.bulkDelete(selectedKeys);
130-
return "redirect:/mypage";
138+
return "redirect:/mypage/main?page=" + page
139+
+ (serviceType != null && !serviceType.isBlank() ? "&serviceType=" + serviceType : "");
131140
}
132141

133142
//즐겨찾기
134143
@PostMapping("/history/mark/toggle")
135144
public String toggleMark(@RequestParam("serviceType") String serviceType,
136145
@RequestParam("serviceCode") int serviceCode,
137-
@RequestParam(value="page", defaultValue="1") int page,
138-
@RequestParam(value="serviceTypeFilter", required=false) String filter) {
146+
@RequestParam(name="page", defaultValue="1") int page,
147+
@RequestParam(name="serviceTypeFilter", required=false) String filter) {
139148

140149
myPageService.toggleMark(serviceType, serviceCode);
141150

142-
return "redirect:/mypage?page=" + page
151+
return "redirect:/mypage/main?page=" + page
143152
+ (filter != null && !filter.isBlank() ? "&serviceType=" + filter : "");
144153
}
145154

146155

156+
147157
}

legal/BackEnd/src/main/java/com/oracle/Legal/service/MyPageService.java

Lines changed: 69 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -77,24 +77,86 @@ public List<HistoryDto> getAllHistory(int client_code) {
7777
list.sort((a, b) -> b.getAnalysisDate().compareTo(a.getAnalysisDate())); return list;
7878
}
7979

80+
//타입별 조회
81+
private List<HistoryDto> getHistoryByType(int clientCode, String serviceType) {
82+
83+
List<HistoryDto> list = new ArrayList<>();
84+
String t = serviceType.toUpperCase();
85+
86+
switch (t) {
87+
case "LAW" -> lawRepository.findHistory(clientCode).forEach(l ->
88+
list.add(HistoryDto.builder()
89+
.serviceType("LAW")
90+
.serviceCode((long) l.getLaw_code())
91+
.analysisDate(java.sql.Timestamp.valueOf(l.getLaw_date()))
92+
.input(l.getLaw_input())
93+
.output(l.getLaw_output())
94+
.mark(l.getLaw_mark())
95+
.build())
96+
);
97+
98+
case "YUSA" -> yusaRepository.findHistory(clientCode).forEach(y ->
99+
list.add(HistoryDto.builder()
100+
.serviceType("YUSA")
101+
.serviceCode((long) y.getYusa_code())
102+
.analysisDate(java.sql.Timestamp.valueOf(y.getYusa_date()))
103+
.input(y.getYusa_input())
104+
.output(y.getYusa_output())
105+
.mark(y.getYusa_mark())
106+
.build())
107+
);
108+
109+
case "JOGI" -> jogiRepository.findHistory(clientCode).forEach(j ->
110+
list.add(HistoryDto.builder()
111+
.serviceType("JOGI")
112+
.serviceCode((long) j.getJogi_code())
113+
.analysisDate(java.sql.Timestamp.valueOf(j.getJogi_date()))
114+
.input(j.getJogi_input())
115+
.output(j.getJogi_output())
116+
.mark(j.getJogi_mark())
117+
.build())
118+
);
119+
120+
case "BOONJANG" -> boonjangRepository.findHistory(clientCode).forEach(b ->
121+
list.add(HistoryDto.builder()
122+
.serviceType("BOONJANG")
123+
.serviceCode((long) b.getBoonjang_code())
124+
.analysisDate(java.sql.Timestamp.valueOf(b.getBoonjang_date()))
125+
.input(b.getBoonjang_input())
126+
.output(b.getBoonjang_output())
127+
.mark(b.getBoonjang_mark())
128+
.build())
129+
);
130+
}
131+
132+
list.sort((a, b) -> b.getAnalysisDate().compareTo(a.getAnalysisDate()));
133+
return list;
134+
}
135+
136+
80137
//페이징
81-
public HistoryPageDto getHistoryPage(int client_code, int page, int size) {
82-
// 1) 전체 목록 만들기(지금 작성하신 getAllHistory 재사용)
83-
List<HistoryDto> all = getAllHistory(client_code);
138+
public HistoryPageDto getHistoryPage(int clientCode, int page, int size, String serviceType) {
139+
List<HistoryDto> source;
140+
141+
if (serviceType == null || serviceType.isBlank()) {
142+
source = getAllHistory(clientCode);
143+
} else {
144+
source = getHistoryByType(clientCode, serviceType);
145+
}
84146

85-
int totalCount = all.size();
147+
int totalCount = source.size();
86148
int totalPages = (int) Math.ceil((double) totalCount / size);
87149

88-
// page 보정(1~totalPages)
89150
if (page < 1) page = 1;
90151
if (totalPages > 0 && page > totalPages) page = totalPages;
91152

92153
int fromIndex = (page - 1) * size;
93154
int toIndex = Math.min(fromIndex + size, totalCount);
94155

95156
List<HistoryDto> content =
96-
(totalCount == 0) ? java.util.Collections.emptyList()
97-
: all.subList(fromIndex, toIndex);
157+
totalCount == 0
158+
? Collections.emptyList()
159+
: source.subList(fromIndex, toIndex);
98160

99161
return new HistoryPageDto(content, totalCount, page, size, totalPages);
100162
}

legal/BackEnd/src/main/webapp/WEB-INF/views/mypage/main.jsp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@
148148
<div class="d-flex flex-wrap gap-2 justify-content-between align-items-center mb-3">
149149
<div class="d-flex gap-2 align-items-center">
150150
<select class="form-select form-select-sm" style="width: 180px;"
151-
onchange="location.href='${pageContext.request.contextPath}/mypage?serviceType=' + this.value + '&page=1';">
151+
onchange="location.href='${pageContext.request.contextPath}/mypage/main?serviceType=' + this.value + '&page=1';">
152152
<option value="">전체</option>
153153
<option value="JOGI" ${param.serviceType == 'JOGI' ? 'selected' : ''}>조기위험</option>
154154
<option value="LAW" ${param.serviceType == 'LAW' ? 'selected' : ''}>법적위험</option>

0 commit comments

Comments
 (0)